Decompiled source of Bounties v3.0.21
plugins/Digitalroot.Valheim.Bounties.dll
Decompiled a day ago
The result has been truncated due to the large size, download it to view full contents!
using System; using System.Collections.Generic; using System.Diagnostics; using System.IO; using System.Linq; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using System.Text; using System.Threading; using BepInEx; using BepInEx.Bootstrap; using BepInEx.Configuration; using BepInEx.Logging; using Common; using Digitalroot.Valheim.Bounties.CMB; using Digitalroot.Valheim.Bounties.Extensions; using Digitalroot.Valheim.Bounties.Providers; using Digitalroot.Valheim.Common; using Digitalroot.Valheim.Common.Json; using Digitalroot.Valheim.Common.Names.BearsMod; using Digitalroot.Valheim.Common.Names.FriendliesMod; using Digitalroot.Valheim.Common.Names.MonsterLabZMod; using Digitalroot.Valheim.Common.Names.MonsternomiconMod; using Digitalroot.Valheim.Common.Names.RRRMod; using Digitalroot.Valheim.Common.Names.SupplementalRaidsMod; using Digitalroot.Valheim.Common.Names.Vanilla; using EpicLoot; using EpicLoot.Adventure; using EpicLoot.Adventure.Feature; using EpicLoot.Patching; using HarmonyLib; using JetBrains.Annotations; using SimpleJson; using UnityEngine; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: AssemblyTitle("Digitalroot.ValheimBounties")] [assembly: AssemblyDescription("Digitalroot's Bounties")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("Digitalroot Technologies")] [assembly: AssemblyProduct("Digitalroot Valheim Mods")] [assembly: AssemblyCopyright("Copyright © Digitalroot Technologies 2021 - 2024")] [assembly: AssemblyTrademark("")] [assembly: ComVisible(false)] [assembly: Guid("3ccc4dc1-5b17-47c1-b996-ca03b8639a61")] [assembly: AssemblyFileVersion("3.0.21")] [assembly: TargetFramework(".NETFramework,Version=v4.8", FrameworkDisplayName = ".NET Framework 4.8")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("3.0.21.0")] [module: UnverifiableCode] namespace Digitalroot.Valheim.Bounties { [BepInPlugin("digitalroot.mods.bounties", "Digitalroot's Bounties", "3.0.21")] [BepInDependency("randyknapp.mods.epicloot", "0.9.39")] [BepInDependency(/*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.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] public class Main : BaseUnityPlugin, ITraceableLogging { private Harmony _harmony; [UsedImplicitly] public static ConfigEntry<int> NexusId; public static Main Instance; private int _bountiesCount; private readonly List<AbstractBounties> _bountiesList = new List<AbstractBounties>(); private readonly string _patchPath; public const string MonsterLabZ = "MonsterLabZ"; public const string Bears = "som.Bears"; public const string SpawnThat = "asharppen.valheim.spawn_that"; public const string RRRCore = "com.alexanderstrada.rrrcore"; public const string RRRNpcs = "com.alexanderstrada.rrrnpcs"; public const string RRRMonsters = "com.alexanderstrada.rrrmonsters"; private bool _isBearsBountiesEnabled = true; private bool _isFriendliesBountiesEnabled = true; private bool _isMonsterLabZBountiesEnabled = true; private bool _isMonsternomiconBountiesEnabled = true; private bool _isRRRMonsterBountiesEnabled = true; private bool _isSupplementalRaidsBountiesEnabled = true; private bool _isVanillaBountiesEnabled = true; public const string Version = "3.0.21"; public const string Name = "Digitalroot's Bounties"; public const string Guid = "digitalroot.mods.bounties"; public const string Namespace = "Digitalroot.ValheimBounties"; private static List<BountyTargetConfig> Bounties => AdventureDataManager.Config.Bounties.Targets; public SoftDependencies SoftDependencies { get; private set; } public string Source => "Digitalroot.ValheimBounties"; public bool EnableTrace { get; } public Main() { Instance = this; EnableTrace = false; Log.RegisterSource(Instance); Log.Trace(Instance, "Digitalroot.ValheimBounties." + MethodBase.GetCurrentMethod()?.DeclaringType?.Name + "." + MethodBase.GetCurrentMethod()?.Name); _patchPath = Path.Combine(Paths.ConfigPath, "EpicLoot", "patches", "Digitalroot", "Bounties"); } [UsedImplicitly] private void Awake() { try { Log.Trace(Instance, "Digitalroot.ValheimBounties." + MethodBase.GetCurrentMethod()?.DeclaringType?.Name + "." + MethodBase.GetCurrentMethod()?.Name); NexusId = ((BaseUnityPlugin)this).Config.Bind<int>("General", "NexusID", 1401, "Nexus mod ID for updates"); SoftDependencies = new SoftDependencies(); _harmony = Harmony.CreateAndPatchAll(typeof(Main).Assembly, "digitalroot.mods.bounties"); Log.Trace(Instance, "_patchPath: " + _patchPath); } catch (Exception e) { Log.Error(Instance, e); } } [UsedImplicitly] private void OnDestroy() { try { Log.Trace(Instance, "Digitalroot.ValheimBounties." + MethodBase.GetCurrentMethod()?.DeclaringType?.Name + "." + MethodBase.GetCurrentMethod()?.Name); Harmony harmony = _harmony; if (harmony != null) { harmony.UnpatchSelf(); } } catch (Exception e) { Log.Error(Instance, e); } } public void AddToBountiesCollection(AbstractBounties bounties) { try { Log.Trace(Instance, "Digitalroot.ValheimBounties." + MethodBase.GetCurrentMethod()?.DeclaringType?.Name + "." + MethodBase.GetCurrentMethod()?.Name); if (!_bountiesList.Any((AbstractBounties bountiesItem) => bountiesItem.GetType().Name == bounties.GetType().Name)) { _bountiesList.Add(bounties); } } catch (Exception e) { Log.Error(Instance, e); } } public void ConfigureBounties() { try { Log.Trace(Instance, "Digitalroot.ValheimBounties." + MethodBase.GetCurrentMethod()?.DeclaringType?.Name + "." + MethodBase.GetCurrentMethod()?.Name); lock (Instance) { Log.Trace(Instance, "********** [Bounties Enabled] **********"); Log.Trace(Instance, $"_isBearsBountiesEnabled : {_isBearsBountiesEnabled}"); Log.Trace(Instance, $"_isFriendliesBountiesEnabled : {_isFriendliesBountiesEnabled}"); Log.Trace(Instance, $"_isMonsterLabZBountiesEnabled : {_isMonsterLabZBountiesEnabled}"); Log.Trace(Instance, $"_isMonsternomiconBountiesEnabled : {_isMonsternomiconBountiesEnabled}"); Log.Trace(Instance, $"_isRRRMonsterBountiesEnabled : {_isRRRMonsterBountiesEnabled}"); Log.Trace(Instance, $"_isSupplementalRaidsBountiesEnabled : {_isSupplementalRaidsBountiesEnabled}"); Log.Trace(Instance, $"_isVanillaBountiesEnabled : {_isVanillaBountiesEnabled}"); Log.Debug(Instance, SoftDependencies.ToString()); Log.Trace(Instance, "********** [Bounties Enabled] **********"); Log.Trace(Instance, $"[{MethodBase.GetCurrentMethod()?.DeclaringType?.Name}] _bountiesList.Count : {_bountiesList.Count}"); if (_isBearsBountiesEnabled) { AddToBountiesCollection(new BearsBounties()); } if (_isMonsterLabZBountiesEnabled) { AddToBountiesCollection(new MonsterLabZBounties()); } if (_isMonsternomiconBountiesEnabled) { AddToBountiesCollection(new MonsternomiconBounties()); } if (_isRRRMonsterBountiesEnabled) { AddToBountiesCollection(new RRRMonsterBounties()); } if (_isSupplementalRaidsBountiesEnabled) { AddToBountiesCollection(new SupplementalRaidsBounties()); } if (_isVanillaBountiesEnabled) { AddToBountiesCollection(new VanillaBounties()); } CreateBountiesPatchs(); } } catch (Exception ex) { Log.Error(Instance, ex.Message); Log.Error(Instance, ex); } } public void OnPatchZNetSceneAwake(ref ZNetScene zNetScene) { try { Log.Trace(Instance, "Digitalroot.ValheimBounties." + MethodBase.GetCurrentMethod()?.DeclaringType?.Name + "." + MethodBase.GetCurrentMethod()?.Name); ConfigureBounties(); } catch (Exception e) { Log.Error(Instance, e); } } public void DisableBearsBounties() { _isBearsBountiesEnabled = false; } public void DisableFriendliesBounties() { _isFriendliesBountiesEnabled = false; } public void DisableMonsterLabZBounties() { _isMonsterLabZBountiesEnabled = false; } public void DisableMonsternomiconBounties() { _isMonsternomiconBountiesEnabled = false; } public void DisableRRRMonsterBounties() { _isRRRMonsterBountiesEnabled = false; } public void DisableSupplementalRaidsBounties() { _isSupplementalRaidsBountiesEnabled = false; } public void DisableVanillaBounties() { _isVanillaBountiesEnabled = false; } [UsedImplicitly] public void DisabledAllBuiltinBounties() { try { Log.Trace(Instance, "Digitalroot.ValheimBounties." + MethodBase.GetCurrentMethod()?.DeclaringType?.Name + "." + MethodBase.GetCurrentMethod()?.Name); DisableBearsBounties(); DisableFriendliesBounties(); DisableMonsterLabZBounties(); DisableMonsternomiconBounties(); DisableRRRMonsterBounties(); DisableSupplementalRaidsBounties(); DisableVanillaBounties(); } catch (Exception e) { Log.Error(Instance, e); } } private void CreateBountiesPatchs() { //IL_018d: Unknown result type (might be due to invalid IL or missing references) //IL_0192: Unknown result type (might be due to invalid IL or missing references) //IL_0195: Unknown result type (might be due to invalid IL or missing references) //IL_01c7: Unknown result type (might be due to invalid IL or missing references) try { Log.Trace(Instance, "Digitalroot.ValheimBounties." + MethodBase.GetCurrentMethod()?.DeclaringType?.Name + "." + MethodBase.GetCurrentMethod()?.Name); string text = "adventuredata.json"; Log.Debug(Instance, "Creating Patch files for bounties."); Log.Trace(Instance, $"_bountiesList == null : {_bountiesList == null}"); if (_bountiesList == null) { return; } Log.Trace(Instance, $"_bountiesList.Count : {_bountiesList.Count}"); foreach (AbstractBounties bounties in _bountiesList) { Log.Trace(Instance, "bountiesCollection.GetType().FullName : " + bounties.GetType().FullName); Log.Trace(Instance, $"bountiesCollection.IsDependenciesResolved : {bounties.IsDependenciesResolved}"); if (!bounties.IsDependenciesResolved) { continue; } FileInfo fileInfo = new FileInfo(Path.Combine(_patchPath, bounties.GetType().Name + "_" + text)); BountyTargetConfigExtensions.DigitalrootPatchFile digitalrootPatchFile = new BountyTargetConfigExtensions.DigitalrootPatchFile { Author = "Digitalroot", TargetFile = text, Priority = 100, RequireAll = true, Patches = new List<BountyTargetConfigExtensions.DigitalrootPatch>() }; foreach (Biome item in Enum.GetValues(typeof(Biome)).Cast<Biome>()) { List<BountyTargetConfig> list = bounties.GetBounties(item)?.ToList(); if (list == null) { continue; } Log.Debug(Instance, $"Adding {list.Count} bounties for {item}"); foreach (BountyTargetConfig item2 in list.Where((BountyTargetConfig b) => !b.TargetID.StartsWith("RRRN_"))) { digitalrootPatchFile.Patches.Add(item2.ToPatch((PatchAction)4)); } } if (!Directory.Exists(fileInfo.DirectoryName)) { Directory.CreateDirectory(fileInfo.DirectoryName ?? throw new InvalidOperationException("DirectoryName is null.")); } File.WriteAllText(fileInfo.FullName, digitalrootPatchFile.ToJson()); Log.Debug(Instance, $"Wrote {digitalrootPatchFile.Patches.Count} bounties to {fileInfo.FullName}."); } } catch (Exception e) { Log.Error(Instance, e); } } [Conditional("DEBUG")] [UsedImplicitly] private static void PrintBounties() { //IL_00b6: Unknown result type (might be due to invalid IL or missing references) try { Log.Trace(Instance, "Digitalroot.ValheimBounties." + MethodBase.GetCurrentMethod()?.DeclaringType?.Name + "." + MethodBase.GetCurrentMethod()?.Name); Log.Trace(Instance, $"Loaded Bounties: {Bounties.Count}"); Log.Trace(Instance, "*******************************"); foreach (BountyTargetConfig bounty in Bounties) { Log.Trace(Instance, "TargetID: " + bounty.TargetID); Log.Trace(Instance, $"Biome: {bounty.Biome}"); Log.Trace(Instance, $"RewardCoins: {bounty.RewardCoins}"); Log.Trace(Instance, $"RewardIron: {bounty.RewardIron}"); Log.Trace(Instance, $"RewardGold: {bounty.RewardGold}"); Log.Trace(Instance, "[Adds]"); Log.Trace(Instance, $"Adds.Count: {bounty.Adds.Count}"); foreach (BountyTargetAddConfig add in bounty.Adds) { Log.Trace(Instance, "Add.ID: " + add.ID); Log.Trace(Instance, $"Add.Count: {add.Count}"); } Log.Trace(Instance, "*******************************"); } } catch (Exception e) { Log.Error(Instance, e); } } [Conditional("DEBUG")] [UsedImplicitly] private static void PrintBountiesTable() { //IL_00a0: Unknown result type (might be due to invalid IL or missing references) //IL_00a5: Unknown result type (might be due to invalid IL or missing references) //IL_00b5: Unknown result type (might be due to invalid IL or missing references) try { Log.Trace(Instance, "Digitalroot.ValheimBounties." + MethodBase.GetCurrentMethod()?.DeclaringType?.Name + "." + MethodBase.GetCurrentMethod()?.Name); Log.Trace(Instance, $"Loaded Bounties: {Bounties.Count}"); Log.Trace(Instance, "*******************************"); foreach (Biome biome in Enum.GetValues(typeof(Biome)).Cast<Biome>()) { Log.Trace(Instance, $"## {biome}"); Log.Trace(Instance, "<table>"); Log.Trace(Instance, "<tr><th>TargetID</th><th>Iron</th><th>Gold</th><th>Coins</th><th>Adds</th></tr>"); foreach (BountyTargetConfig item in Bounties.Where((BountyTargetConfig b) => b.Biome == biome)) { Log.Trace(Instance, string.Format("<tr><td>{0}</td><td>{1}</td><td>{2}</td><td>{3}</td><td>{4}</td></tr>", item.TargetID, item.RewardIron, item.RewardGold, item.RewardCoins, (item.Adds.Count == 0) ? ":x:" : ":heavy_check_mark:")); } Log.Trace(Instance, "</table>"); Log.Trace(Instance, Environment.NewLine); } Log.Trace(Instance, "*******************************"); } catch (Exception e) { Log.Error(Instance, e); } } [Obsolete] private void AddBounties() { //IL_015e: Unknown result type (might be due to invalid IL or missing references) //IL_0163: Unknown result type (might be due to invalid IL or missing references) //IL_0165: Unknown result type (might be due to invalid IL or missing references) //IL_0193: Unknown result type (might be due to invalid IL or missing references) try { Log.Trace(Instance, "Digitalroot.ValheimBounties." + MethodBase.GetCurrentMethod()?.DeclaringType?.Name + "." + MethodBase.GetCurrentMethod()?.Name); if (!EpicLoot.IsAdventureModeEnabled()) { return; } Log.Debug(Instance, "Adding Bounties to EpicLoot"); Log.Trace(Instance, $"_bountiesList == null : {_bountiesList == null}"); if (_bountiesList == null) { return; } Log.Trace(Instance, $"_bountiesList.Count : {_bountiesList.Count}"); foreach (AbstractBounties bounties in _bountiesList) { Log.Trace(Instance, "bountiesCollection.GetType().FullName : " + bounties.GetType().FullName); Log.Trace(Instance, $"bountiesCollection.IsDependenciesResolved : {bounties.IsDependenciesResolved}"); Log.Trace(Instance, $"bountiesCollection.IsLoaded : {bounties.IsLoaded}"); if (bounties.IsLoaded || !bounties.IsDependenciesResolved) { continue; } foreach (Biome item in Enum.GetValues(typeof(Biome)).Cast<Biome>()) { List<BountyTargetConfig> list = bounties.GetBounties(item)?.ToList(); if (list != null) { Log.Debug(Instance, $"Adding {list.Count} bounties for {item}"); Bounties.AddRange(list.Where((BountyTargetConfig b) => !b.TargetID.StartsWith("RRRN_"))); } } bounties.OnLoaded(); } _bountiesCount = Bounties.Count; Log.Debug(Instance, $"Loaded Bounties: {_bountiesCount}"); } catch (Exception e) { Log.Error(Instance, e); } } [Obsolete] private void ClearBounties() { try { Log.Trace(Instance, "Digitalroot.ValheimBounties." + MethodBase.GetCurrentMethod()?.DeclaringType?.Name + "." + MethodBase.GetCurrentMethod()?.Name); Log.Debug(Instance, $"Removing default bounties: {Bounties.Count}"); Bounties.Clear(); Log.Debug(Instance, $"Bounties should be cleared: {Bounties.Count}"); Log.Debug(Instance, $"Removing bounties from internal _bountiesList: {_bountiesList.Count}"); _bountiesList.Clear(); Log.Debug(Instance, $"_bountiesList should be cleared: {_bountiesList.Count}"); } catch (Exception e) { Log.Error(Instance, e); } } [Obsolete] private bool IsBountyListCurrent(out IEnumerable<AbstractBounties> missingBounties) { try { Log.Trace(Instance, "Digitalroot.ValheimBounties." + MethodBase.GetCurrentMethod()?.DeclaringType?.Name + "." + MethodBase.GetCurrentMethod()?.Name); Log.Trace(Instance, $"[{MethodBase.GetCurrentMethod()?.DeclaringType?.Name}] _bountiesCount == 0 : {_bountiesCount == 0}"); Log.Trace(Instance, $"[{MethodBase.GetCurrentMethod()?.DeclaringType?.Name}] _bountiesCount != Bounties.Count : {_bountiesCount != Bounties.Count}"); Log.Trace(Instance, $"[{MethodBase.GetCurrentMethod()?.DeclaringType?.Name}] _bountiesCount : {_bountiesCount}"); Log.Trace(Instance, $"[{MethodBase.GetCurrentMethod()?.DeclaringType?.Name}] Bounties.Count : {Bounties.Count}"); Log.Trace(Instance, $"[{MethodBase.GetCurrentMethod()?.DeclaringType?.Name}] _bountiesList.Any(bounties => !bounties.IsLoaded && bounties.IsDependenciesResolved) : {_bountiesList.Any((AbstractBounties bounties) => !bounties.IsLoaded && bounties.IsDependenciesResolved)}"); missingBounties = _bountiesList.Where((AbstractBounties bounties) => !bounties.IsLoaded && bounties.IsDependenciesResolved); foreach (AbstractBounties missingBounty in missingBounties) { Log.Trace(Instance, "[" + MethodBase.GetCurrentMethod()?.DeclaringType?.Name + "] Missing bounties for : " + missingBounty.GetType().Name); } if (_bountiesList.Any((AbstractBounties bounties) => !bounties.IsLoaded && bounties.IsDependenciesResolved)) { return false; } return _bountiesCount != 0 && _bountiesCount == Bounties.Count; } catch (Exception e) { Log.Error(Instance, e); } missingBounties = null; return false; } [Obsolete] public void OnStoreGuiShow(ref StoreGui storeGui) { try { Log.Trace(Instance, "Digitalroot.ValheimBounties." + MethodBase.GetCurrentMethod()?.DeclaringType?.Name + "." + MethodBase.GetCurrentMethod()?.Name); Transform val = ((Component)storeGui).transform.Find("MerchantPanel"); if ((Object)(object)val == (Object)null) { Log.Debug(Instance, "[" + MethodBase.GetCurrentMethod()?.DeclaringType?.Name + "] MerchantPanel not ready - skipping"); } else { GameObjectExtensions.RequireComponent<MerchantPanelLoader>(((Component)val).gameObject).MerchantPanelCmb = ((Component)val).GetComponent<MerchantPanel>(); } } catch (Exception e) { Log.Error(Instance, e); } } } [UsedImplicitly] public class Patch { [HarmonyBefore(new string[] { "org.bepinex.plugins.foodstaminaregen" })] [HarmonyAfter(new string[] { "randyknapp.mods.epicloot", "som.Bears", "DYBAssets" })] [HarmonyPatch(typeof(ZNetScene), "Awake")] public class PatchZNetSceneAwake { [UsedImplicitly] [HarmonyPostfix] [HarmonyPriority(400)] public static void Postfix([NotNull] ref ZNetScene __instance) { try { Log.Trace(Main.Instance, "Digitalroot.ValheimBounties." + MethodBase.GetCurrentMethod()?.DeclaringType?.Name + "." + MethodBase.GetCurrentMethod()?.Name); if (!Utils.IsZNetSceneReady()) { Log.Debug(Main.Instance, "[" + MethodBase.GetCurrentMethod()?.DeclaringType?.Name + "] ObjectDB not ready - skipping"); } else { Main.Instance.OnPatchZNetSceneAwake(ref __instance); } } catch (Exception e) { Log.Error(Main.Instance, e); } } } } public class SoftDependencies { public bool Bears { get; } public bool Friendlies { get { if ((Object)(object)ZNetScene.instance != (Object)null) { return (Object)(object)ZNetScene.instance.GetPrefab(Digitalroot.Valheim.Common.Names.FriendliesMod.PrefabNames.Ashe) != (Object)null; } return false; } } public bool MonsterLabZ { get; } public bool Monsternomicon => (Object)(object)ZNetScene.instance.GetPrefab(Digitalroot.Valheim.Common.Names.MonsternomiconMod.PrefabNames.AngryFrozenCorpse) != (Object)null; public bool RRRCore { get; } public bool RRRMonsters { get; } public bool RRRNpcs { get; } public bool SpawnThat { get; } public bool SupplementalRaids { get { if ((Object)(object)ZNetScene.instance != (Object)null) { return (Object)(object)ZNetScene.instance.GetPrefab(Digitalroot.Valheim.Common.Names.SupplementalRaidsMod.PrefabNames.EikthyrBoar) != (Object)null; } return false; } } public SoftDependencies() { Bears = Utils.DoesPluginExist("som.Bears"); MonsterLabZ = Utils.DoesPluginExist("MonsterLabZ"); RRRCore = Utils.DoesPluginExist("com.alexanderstrada.rrrcore"); RRRNpcs = Utils.DoesPluginExist("com.alexanderstrada.rrrnpcs"); RRRMonsters = Utils.DoesPluginExist("com.alexanderstrada.rrrmonsters"); SpawnThat = Utils.DoesPluginExist("asharppen.valheim.spawn_that"); } public override string ToString() { return "Soft Dependencies " + Environment.NewLine + string.Format("{0} : {1}{2}", "Bears", Bears, Environment.NewLine) + string.Format("{0} : {1}{2}", "Friendlies", Friendlies, Environment.NewLine) + string.Format("{0} : {1}{2}", "MonsterLabZ", MonsterLabZ, Environment.NewLine) + string.Format("{0} : {1}{2}", "Monsternomicon", Monsternomicon, Environment.NewLine) + string.Format("{0} : {1}{2}", "RRRCore", RRRCore, Environment.NewLine) + string.Format("{0} : {1}{2}", "RRRNpcs", RRRNpcs, Environment.NewLine) + string.Format("{0} : {1}{2}", "RRRMonsters", RRRMonsters, Environment.NewLine) + string.Format("{0} : {1}{2}", "SpawnThat", SpawnThat, Environment.NewLine) + string.Format("{0} : {1}{2}", "SupplementalRaids", SupplementalRaids, Environment.NewLine); } } } namespace Digitalroot.Valheim.Bounties.Providers { public abstract class AbstractBounties { private readonly Func<Biome, IEnumerable<string>> _bossNames; private readonly Func<Biome, IEnumerable<string>> _enemyNames; public virtual bool IsDependenciesResolved { get; protected set; } public bool IsLoaded { get; private set; } protected AbstractBounties() { } protected AbstractBounties(Func<Biome, IEnumerable<string>> enemyNames = null, Func<Biome, IEnumerable<string>> bossNames = null) { _enemyNames = enemyNames; _bossNames = bossNames; } public void OnLoaded() { Log.Trace(Main.Instance, "Digitalroot.ValheimBounties." + MethodBase.GetCurrentMethod()?.DeclaringType?.Name + "." + MethodBase.GetCurrentMethod()?.Name); IsLoaded = true; } protected virtual int GetCoins(Biome biome, uint add = 0u) { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_0003: Invalid comparison between Unknown and I4 //IL_003b: Unknown result type (might be due to invalid IL or missing references) //IL_003e: Invalid comparison between Unknown and I4 //IL_0005: Unknown result type (might be due to invalid IL or missing references) //IL_002f: Expected I4, but got Unknown //IL_0040: Unknown result type (might be due to invalid IL or missing references) //IL_0046: Invalid comparison between Unknown and I4 //IL_002f: Unknown result type (might be due to invalid IL or missing references) //IL_0032: Invalid comparison between Unknown and I4 //IL_0048: Unknown result type (might be due to invalid IL or missing references) //IL_004e: Invalid comparison between Unknown and I4 //IL_0034: Unknown result type (might be due to invalid IL or missing references) //IL_0037: Invalid comparison between Unknown and I4 int num; if ((int)biome <= 32) { switch ((int)biome) { case 1: goto IL_0052; case 8: goto IL_0057; case 2: goto IL_005c; case 4: goto IL_0061; case 0: goto IL_007f; case 3: case 5: case 6: case 7: goto IL_0083; } if ((int)biome != 16) { if ((int)biome != 32) { goto IL_0083; } num = 70; } else { num = 50; } } else if ((int)biome != 64) { if ((int)biome != 256) { if ((int)biome != 512) { goto IL_0083; } num = 60; } else { num = 30; } } else { num = 80; } goto IL_0085; IL_005c: num = 30; goto IL_0085; IL_007f: num = 1; goto IL_0085; IL_0052: num = 10; goto IL_0085; IL_0085: int num2 = num; return Convert.ToInt16(add) + num2; IL_0083: num = 1; goto IL_0085; IL_0057: num = 20; goto IL_0085; IL_0061: num = 40; goto IL_0085; } protected virtual int GetIron(Biome biome, uint add = 0u) { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_0003: Invalid comparison between Unknown and I4 //IL_003b: Unknown result type (might be due to invalid IL or missing references) //IL_003e: Invalid comparison between Unknown and I4 //IL_0005: Unknown result type (might be due to invalid IL or missing references) //IL_002f: Expected I4, but got Unknown //IL_0040: Unknown result type (might be due to invalid IL or missing references) //IL_0046: Invalid comparison between Unknown and I4 //IL_002f: Unknown result type (might be due to invalid IL or missing references) //IL_0032: Invalid comparison between Unknown and I4 //IL_0048: Unknown result type (might be due to invalid IL or missing references) //IL_004e: Invalid comparison between Unknown and I4 //IL_0034: Unknown result type (might be due to invalid IL or missing references) //IL_0037: Invalid comparison between Unknown and I4 int num; if ((int)biome <= 32) { switch ((int)biome) { case 1: goto IL_0052; case 8: goto IL_0056; case 2: goto IL_005a; case 4: goto IL_005e; case 0: goto IL_0076; case 3: case 5: case 6: case 7: goto IL_007a; } if ((int)biome != 16) { if ((int)biome != 32) { goto IL_007a; } num = 6; } else { num = 5; } } else if ((int)biome != 64) { if ((int)biome != 256) { if ((int)biome != 512) { goto IL_007a; } num = 5; } else { num = 4; } } else { num = 7; } goto IL_007c; IL_005a: num = 3; goto IL_007c; IL_0076: num = 0; goto IL_007c; IL_0052: num = 1; goto IL_007c; IL_007c: int num2 = num; return Convert.ToInt16(add) + num2; IL_007a: num = 0; goto IL_007c; IL_0056: num = 2; goto IL_007c; IL_005e: num = 4; goto IL_007c; } protected virtual int GetGold(Biome biome, uint add = 0u) { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_0003: Invalid comparison between Unknown and I4 //IL_003b: Unknown result type (might be due to invalid IL or missing references) //IL_003e: Invalid comparison between Unknown and I4 //IL_0005: Unknown result type (might be due to invalid IL or missing references) //IL_002f: Expected I4, but got Unknown //IL_0040: Unknown result type (might be due to invalid IL or missing references) //IL_0046: Invalid comparison between Unknown and I4 //IL_002f: Unknown result type (might be due to invalid IL or missing references) //IL_0032: Invalid comparison between Unknown and I4 //IL_0048: Unknown result type (might be due to invalid IL or missing references) //IL_004e: Invalid comparison between Unknown and I4 //IL_0034: Unknown result type (might be due to invalid IL or missing references) //IL_0037: Invalid comparison between Unknown and I4 int num; if ((int)biome <= 32) { switch ((int)biome) { case 1: goto IL_0052; case 8: goto IL_0056; case 2: goto IL_005a; case 4: goto IL_005e; case 0: goto IL_0076; case 3: case 5: case 6: case 7: goto IL_007a; } if ((int)biome != 16) { if ((int)biome != 32) { goto IL_007a; } num = 2; } else { num = 1; } } else if ((int)biome != 64) { if ((int)biome != 256) { if ((int)biome != 512) { goto IL_007a; } num = 1; } else { num = 0; } } else { num = 2; } goto IL_007c; IL_005a: num = 0; goto IL_007c; IL_0076: num = 0; goto IL_007c; IL_0052: num = 0; goto IL_007c; IL_007c: int num2 = num; return Convert.ToInt16(add) + num2; IL_007a: num = 0; goto IL_007c; IL_0056: num = 0; goto IL_007c; IL_005e: num = 0; goto IL_007c; } public IEnumerable<BountyTargetConfig> GetBounties(Biome biome) { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_0003: Invalid comparison between Unknown and I4 //IL_003b: Unknown result type (might be due to invalid IL or missing references) //IL_003e: Invalid comparison between Unknown and I4 //IL_0005: Unknown result type (might be due to invalid IL or missing references) //IL_002f: Expected I4, but got Unknown //IL_0040: Unknown result type (might be due to invalid IL or missing references) //IL_0046: Invalid comparison between Unknown and I4 //IL_002f: Unknown result type (might be due to invalid IL or missing references) //IL_0032: Invalid comparison between Unknown and I4 //IL_0048: Unknown result type (might be due to invalid IL or missing references) //IL_004e: Invalid comparison between Unknown and I4 //IL_0034: Unknown result type (might be due to invalid IL or missing references) //IL_0037: Invalid comparison between Unknown and I4 if ((int)biome <= 32) { switch ((int)biome) { default: if ((int)biome != 16) { if ((int)biome != 32) { break; } return GetAshLandsBounties(); } return GetPlainsBounties(); case 1: return GetMeadowsBounties(); case 8: return GetBlackForestBounties(); case 2: return GetSwampBounties(); case 4: return GetMountainBounties(); case 0: return null; case 3: case 5: case 6: case 7: break; } } else { if ((int)biome == 64) { return GetDeepNorthBounties(); } if ((int)biome == 256) { return GetOceanBounties(); } if ((int)biome == 512) { return GetMistlandsBounties(); } } return null; } private IEnumerable<BountyTargetConfig> GetBountiesByBiome(Biome biome) { //IL_000f: Unknown result type (might be due to invalid IL or missing references) //IL_0010: Unknown result type (might be due to invalid IL or missing references) if (_enemyNames != null) { foreach (string item in _enemyNames(biome)) { yield return new BountyTargetConfig { TargetID = item, Biome = biome, RewardCoins = GetCoins(biome), RewardIron = GetIron(biome), RewardGold = GetGold(biome) }; } } if (_bossNames == null) { yield break; } foreach (string item2 in _bossNames(biome)) { yield return new BountyTargetConfig { TargetID = item2, Biome = biome, RewardCoins = GetCoins(biome), RewardIron = GetIron(biome), RewardGold = GetGold(biome) }; } } protected virtual IEnumerable<BountyTargetConfig> FilterResults(IEnumerable<BountyTargetConfig> bountyTargetConfigs) { return bountyTargetConfigs; } protected virtual IEnumerable<BountyTargetConfig> GetMeadowsBounties() { return FilterResults(GetBountiesByBiome((Biome)1)); } protected virtual IEnumerable<BountyTargetConfig> GetBlackForestBounties() { return FilterResults(GetBountiesByBiome((Biome)8)); } protected virtual IEnumerable<BountyTargetConfig> GetSwampBounties() { return FilterResults(GetBountiesByBiome((Biome)2)); } protected virtual IEnumerable<BountyTargetConfig> GetMountainBounties() { return FilterResults(GetBountiesByBiome((Biome)4)); } protected virtual IEnumerable<BountyTargetConfig> GetPlainsBounties() { return FilterResults(GetBountiesByBiome((Biome)16)); } protected virtual IEnumerable<BountyTargetConfig> GetOceanBounties() { return FilterResults(GetBountiesByBiome((Biome)256)); } protected virtual IEnumerable<BountyTargetConfig> GetMistlandsBounties() { return FilterResults(GetBountiesByBiome((Biome)512)); } protected virtual IEnumerable<BountyTargetConfig> GetAshLandsBounties() { return FilterResults(GetBountiesByBiome((Biome)32)); } protected virtual IEnumerable<BountyTargetConfig> GetDeepNorthBounties() { return FilterResults(GetBountiesByBiome((Biome)64)); } } public class BearsBounties : AbstractBounties { public override bool IsDependenciesResolved => Main.Instance.SoftDependencies.Bears; public BearsBounties() : base(Digitalroot.Valheim.Common.Names.BearsMod.EnemyNames.AllNamesByBiome) { } protected override IEnumerable<BountyTargetConfig> GetMountainBounties() { for (int i = 0; i < 3; i++) { yield return new BountyTargetConfig { TargetID = Digitalroot.Valheim.Common.Names.BearsMod.EnemyNames.Bear, Biome = (Biome)4, RewardCoins = GetCoins((Biome)4, 10u), RewardIron = GetIron((Biome)4), RewardGold = GetGold((Biome)4) }; } yield return new BountyTargetConfig { TargetID = Digitalroot.Valheim.Common.Names.BearsMod.EnemyNames.Bear, Biome = (Biome)4, RewardCoins = GetCoins((Biome)4), RewardIron = GetIron((Biome)4, 1u), RewardGold = GetGold((Biome)4), Adds = new List<BountyTargetAddConfig> { new BountyTargetAddConfig { ID = Digitalroot.Valheim.Common.Names.BearsMod.EnemyNames.BearCub, Count = 2 } } }; yield return new BountyTargetConfig { TargetID = Digitalroot.Valheim.Common.Names.BearsMod.EnemyNames.Bear, Biome = (Biome)4, RewardCoins = GetCoins((Biome)4), RewardIron = GetIron((Biome)4), RewardGold = GetGold((Biome)4, 1u), Adds = new List<BountyTargetAddConfig> { new BountyTargetAddConfig { ID = Digitalroot.Valheim.Common.Names.BearsMod.EnemyNames.Bear, Count = 1 }, new BountyTargetAddConfig { ID = Digitalroot.Valheim.Common.Names.BearsMod.EnemyNames.BearCub, Count = 4 } } }; } protected override IEnumerable<BountyTargetConfig> GetDeepNorthBounties() { for (int i = 0; i < 2; i++) { yield return new BountyTargetConfig { TargetID = Digitalroot.Valheim.Common.Names.BearsMod.EnemyNames.Bear, Biome = (Biome)64, RewardCoins = GetCoins((Biome)64, 10u), RewardIron = GetIron((Biome)64), RewardGold = GetGold((Biome)64) }; } yield return new BountyTargetConfig { TargetID = Digitalroot.Valheim.Common.Names.BearsMod.EnemyNames.Bear, Biome = (Biome)64, RewardCoins = GetCoins((Biome)64), RewardIron = GetIron((Biome)64, 1u), RewardGold = GetGold((Biome)64), Adds = new List<BountyTargetAddConfig> { new BountyTargetAddConfig { ID = Digitalroot.Valheim.Common.Names.BearsMod.EnemyNames.BearCub, Count = 2 } } }; yield return new BountyTargetConfig { TargetID = Digitalroot.Valheim.Common.Names.BearsMod.EnemyNames.Bear, Biome = (Biome)64, RewardCoins = GetCoins((Biome)64), RewardIron = GetIron((Biome)64), RewardGold = GetGold((Biome)64, 1u), Adds = new List<BountyTargetAddConfig> { new BountyTargetAddConfig { ID = Digitalroot.Valheim.Common.Names.BearsMod.EnemyNames.Bear, Count = 1 }, new BountyTargetAddConfig { ID = Digitalroot.Valheim.Common.Names.BearsMod.EnemyNames.BearCub, Count = 4 } } }; } } public class DebugBounties : AbstractBounties { public override bool IsDependenciesResolved => true; protected override IEnumerable<BountyTargetConfig> FilterResults(IEnumerable<BountyTargetConfig> bountyTargetConfigs) { return null; } [UsedImplicitly] private BountyTargetConfig CreateBountyTargetConfig(Biome biome, string name) { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_0005: Unknown result type (might be due to invalid IL or missing references) //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_000c: Unknown result type (might be due to invalid IL or missing references) //IL_0013: Unknown result type (might be due to invalid IL or missing references) //IL_001a: Unknown result type (might be due to invalid IL or missing references) //IL_0021: Unknown result type (might be due to invalid IL or missing references) //IL_0029: Expected O, but got Unknown return new BountyTargetConfig { Biome = biome, RewardCoins = 0, RewardGold = 0, RewardIron = 0, TargetID = name }; } } public class MonsterLabZBounties : AbstractBounties { public override bool IsDependenciesResolved => Main.Instance.SoftDependencies.MonsterLabZ; public MonsterLabZBounties() : base(Digitalroot.Valheim.Common.Names.MonsterLabZMod.EnemyNames.AllNamesByBiome, Digitalroot.Valheim.Common.Names.MonsterLabZMod.BossNames.AllNamesByBiome) { } protected override IEnumerable<BountyTargetConfig> FilterResults(IEnumerable<BountyTargetConfig> bountyTargetConfigs) { return from target in bountyTargetConfigs where !target.TargetID.Equals(Digitalroot.Valheim.Common.Names.MonsterLabZMod.EnemyNames.RainbowButterfly) where !target.TargetID.Equals(Digitalroot.Valheim.Common.Names.MonsterLabZMod.EnemyNames.SilkwormButterfly) where !target.TargetID.Equals(Digitalroot.Valheim.Common.Names.MonsterLabZMod.EnemyNames.BlackSpider) where !target.TargetID.Equals(Digitalroot.Valheim.Common.Names.MonsterLabZMod.EnemyNames.GoblinBoat) where !target.TargetID.Equals(Digitalroot.Valheim.Common.Names.MonsterLabZMod.EnemyNames.GoblinShip2) select target; } } public class MonsternomiconBounties : AbstractBounties { public override bool IsDependenciesResolved => Main.Instance.SoftDependencies.Monsternomicon; public MonsternomiconBounties() : base(Digitalroot.Valheim.Common.Names.MonsternomiconMod.EnemyNames.AllNamesByBiome, Digitalroot.Valheim.Common.Names.MonsternomiconMod.BossNames.AllNamesByBiome) { } protected override IEnumerable<BountyTargetConfig> FilterResults(IEnumerable<BountyTargetConfig> bountyTargetConfigs) { return from target in bountyTargetConfigs where !target.TargetID.Equals(Digitalroot.Valheim.Common.Names.MonsternomiconMod.EnemyNames.AngrySpirit) where !target.TargetID.Equals(Digitalroot.Valheim.Common.Names.MonsternomiconMod.EnemyNames.CalmSpirit) select target; } } public class RRRMonsterBounties : AbstractBounties { public override bool IsDependenciesResolved { get { if (Main.Instance.SoftDependencies.RRRCore) { return Main.Instance.SoftDependencies.RRRMonsters; } return false; } } public RRRMonsterBounties() : base(Digitalroot.Valheim.Common.Names.RRRMod.EnemyNames.AllNamesByBiome) { } protected override IEnumerable<BountyTargetConfig> GetBlackForestBounties() { foreach (BountyTargetConfig blackForestBounty in base.GetBlackForestBounties()) { blackForestBounty.RewardCoins = GetCoins((Biome)8, 10u); blackForestBounty.RewardIron = GetIron((Biome)8, 1u); yield return blackForestBounty; } } protected override IEnumerable<BountyTargetConfig> GetMistlandsBounties() { foreach (BountyTargetConfig mistlandsBounty in base.GetMistlandsBounties()) { mistlandsBounty.RewardCoins = GetCoins((Biome)512, 40u); mistlandsBounty.RewardIron = GetIron((Biome)512, 2u); mistlandsBounty.RewardGold = GetGold((Biome)512, 1u); yield return mistlandsBounty; } } } public class SupplementalRaidsBounties : AbstractBounties { public override bool IsDependenciesResolved => Main.Instance.SoftDependencies.SupplementalRaids; public SupplementalRaidsBounties() : base(Digitalroot.Valheim.Common.Names.SupplementalRaidsMod.EnemyNames.AllNamesByBiome, Digitalroot.Valheim.Common.Names.SupplementalRaidsMod.BossNames.AllNamesByBiome) { } } public class VanillaBounties : AbstractBounties { public override bool IsDependenciesResolved => true; public VanillaBounties() : base(Digitalroot.Valheim.Common.Names.Vanilla.EnemyNames.AllNamesByBiome, Digitalroot.Valheim.Common.Names.Vanilla.BossNames.AllNamesByBiome) { } protected override IEnumerable<BountyTargetConfig> GetMeadowsBounties() { foreach (BountyTargetConfig meadowsBounty in base.GetMeadowsBounties()) { yield return meadowsBounty; } yield return new BountyTargetConfig { TargetID = Digitalroot.Valheim.Common.Names.Vanilla.EnemyNames.Deer, Biome = (Biome)1, RewardCoins = GetCoins((Biome)1), RewardIron = GetIron((Biome)1), RewardGold = GetGold((Biome)1) }; yield return new BountyTargetConfig { TargetID = Digitalroot.Valheim.Common.Names.Vanilla.EnemyNames.Boar, Biome = (Biome)1, RewardCoins = GetCoins((Biome)1), RewardIron = GetIron((Biome)1), RewardGold = GetGold((Biome)1) }; yield return new BountyTargetConfig { TargetID = Digitalroot.Valheim.Common.Names.Vanilla.EnemyNames.Boar, Biome = (Biome)1, RewardCoins = GetCoins((Biome)1), RewardIron = GetIron((Biome)1), RewardGold = GetGold((Biome)1) }; yield return new BountyTargetConfig { TargetID = Digitalroot.Valheim.Common.Names.Vanilla.EnemyNames.Neck, Biome = (Biome)1, RewardCoins = GetCoins((Biome)1), RewardIron = GetIron((Biome)1), RewardGold = GetGold((Biome)1) }; yield return new BountyTargetConfig { TargetID = Digitalroot.Valheim.Common.Names.Vanilla.EnemyNames.Neck, Biome = (Biome)1, RewardCoins = GetCoins((Biome)1), RewardIron = GetIron((Biome)1), RewardGold = GetGold((Biome)1) }; yield return new BountyTargetConfig { TargetID = Digitalroot.Valheim.Common.Names.Vanilla.EnemyNames.Greyling, Biome = (Biome)1, RewardCoins = GetCoins((Biome)1), RewardIron = GetIron((Biome)1), RewardGold = GetGold((Biome)1) }; yield return new BountyTargetConfig { TargetID = Digitalroot.Valheim.Common.Names.Vanilla.EnemyNames.Greyling, Biome = (Biome)1, RewardCoins = GetCoins((Biome)1), RewardIron = GetIron((Biome)1), RewardGold = GetGold((Biome)1) }; yield return new BountyTargetConfig { TargetID = Digitalroot.Valheim.Common.Names.Vanilla.EnemyNames.Boar, Biome = (Biome)1, RewardCoins = GetCoins((Biome)1, 5u), RewardIron = GetIron((Biome)1, 1u), RewardGold = GetGold((Biome)1), Adds = new List<BountyTargetAddConfig> { new BountyTargetAddConfig { ID = Digitalroot.Valheim.Common.Names.Vanilla.EnemyNames.Boar, Count = 2 } } }; yield return new BountyTargetConfig { TargetID = Digitalroot.Valheim.Common.Names.Vanilla.EnemyNames.Neck, Biome = (Biome)1, RewardCoins = GetCoins((Biome)1, 5u), RewardIron = GetIron((Biome)1, 1u), RewardGold = GetGold((Biome)1), Adds = new List<BountyTargetAddConfig> { new BountyTargetAddConfig { ID = Digitalroot.Valheim.Common.Names.Vanilla.EnemyNames.Neck, Count = 2 } } }; yield return new BountyTargetConfig { TargetID = Digitalroot.Valheim.Common.Names.Vanilla.EnemyNames.GreydwarfShaman, Biome = (Biome)1, RewardCoins = GetCoins((Biome)1, 15u), RewardIron = GetIron((Biome)1, 1u), RewardGold = GetGold((Biome)1, 1u), Adds = new List<BountyTargetAddConfig> { new BountyTargetAddConfig { ID = Digitalroot.Valheim.Common.Names.Vanilla.EnemyNames.Greyling, Count = 4 } } }; yield return new BountyTargetConfig { TargetID = Digitalroot.Valheim.Common.Names.Vanilla.EnemyNames.GreydwarfElite, Biome = (Biome)1, RewardCoins = GetCoins((Biome)1, 90u), RewardIron = GetIron((Biome)1, 9u), RewardGold = GetGold((Biome)1, 3u), Adds = new List<BountyTargetAddConfig> { new BountyTargetAddConfig { ID = Digitalroot.Valheim.Common.Names.Vanilla.EnemyNames.GreydwarfShaman, Count = 2 }, new BountyTargetAddConfig { ID = Digitalroot.Valheim.Common.Names.Vanilla.EnemyNames.Greydwarf, Count = 4 }, new BountyTargetAddConfig { ID = Digitalroot.Valheim.Common.Names.Vanilla.EnemyNames.Greyling, Count = 5 } } }; yield return new BountyTargetConfig { TargetID = Digitalroot.Valheim.Common.Names.Vanilla.EnemyNames.BlobElite, Biome = (Biome)1, RewardCoins = GetCoins((Biome)1, 15u), RewardIron = 0, RewardGold = GetGold((Biome)1, 1u) }; yield return new BountyTargetConfig { TargetID = Digitalroot.Valheim.Common.Names.Vanilla.EnemyNames.SkeletonPoison, Biome = (Biome)1, RewardCoins = GetCoins((Biome)1, 15u), RewardIron = GetIron((Biome)1, 4u), RewardGold = GetGold((Biome)1) }; yield return new BountyTargetConfig { TargetID = Digitalroot.Valheim.Common.Names.Vanilla.EnemyNames.SkeletonPoison, Biome = (Biome)1, RewardCoins = GetCoins((Biome)1, 20u), RewardIron = GetIron((Biome)1), RewardGold = GetGold((Biome)1, 1u), Adds = new List<BountyTargetAddConfig> { new BountyTargetAddConfig { ID = Digitalroot.Valheim.Common.Names.Vanilla.EnemyNames.Skeleton, Count = 4 } } }; yield return new BountyTargetConfig { TargetID = Digitalroot.Valheim.Common.Names.Vanilla.EnemyNames.Troll, Biome = (Biome)1, RewardCoins = GetCoins((Biome)1, 40u), RewardIron = 0, RewardGold = GetGold((Biome)1, 1u) }; yield return new BountyTargetConfig { TargetID = Digitalroot.Valheim.Common.Names.Vanilla.EnemyNames.Ghost, Biome = (Biome)1, RewardCoins = GetCoins((Biome)1, 10u), RewardIron = GetIron((Biome)1), RewardGold = GetGold((Biome)1) }; yield return new BountyTargetConfig { TargetID = Digitalroot.Valheim.Common.Names.Vanilla.EnemyNames.Ghost, Biome = (Biome)1, RewardCoins = GetCoins((Biome)1, 10u), RewardIron = GetIron((Biome)1), RewardGold = GetGold((Biome)1) }; yield return new BountyTargetConfig { TargetID = Digitalroot.Valheim.Common.Names.Vanilla.EnemyNames.Wraith, Biome = (Biome)1, RewardCoins = GetCoins((Biome)1, 40u), RewardIron = 0, RewardGold = GetGold((Biome)1, 1u) }; yield return new BountyTargetConfig { TargetID = Digitalroot.Valheim.Common.Names.Vanilla.EnemyNames.Lox, Biome = (Biome)1, RewardCoins = GetCoins((Biome)1, 40u), RewardIron = GetIron((Biome)1, 2u), RewardGold = GetGold((Biome)1) }; yield return new BountyTargetConfig { TargetID = Digitalroot.Valheim.Common.Names.Vanilla.BossNames.Eikthyr, Biome = (Biome)1, RewardCoins = GetCoins((Biome)1, 90u), RewardIron = GetIron((Biome)1, 2u), RewardGold = GetGold((Biome)1, 2u) }; yield return new BountyTargetConfig { TargetID = Digitalroot.Valheim.Common.Names.Vanilla.BossNames.Eikthyr, Biome = (Biome)1, RewardCoins = GetCoins((Biome)1, 110u), RewardIron = GetIron((Biome)1, 4u), RewardGold = GetGold((Biome)1, 2u), Adds = new List<BountyTargetAddConfig> { new BountyTargetAddConfig { ID = Digitalroot.Valheim.Common.Names.Vanilla.BossNames.Eikthyr, Count = 2 } } }; yield return new BountyTargetConfig { TargetID = Digitalroot.Valheim.Common.Names.Vanilla.BossNames.Eikthyr, Biome = (Biome)1, RewardCoins = GetCoins((Biome)1, 110u), RewardIron = GetIron((Biome)1, 4u), RewardGold = GetGold((Biome)1, 3u), Adds = new List<BountyTargetAddConfig> { new BountyTargetAddConfig { ID = Digitalroot.Valheim.Common.Names.Vanilla.EnemyNames.Boar, Count = 5 }, new BountyTargetAddConfig { ID = Digitalroot.Valheim.Common.Names.Vanilla.EnemyNames.Neck, Count = 5 } } }; yield return new BountyTargetConfig { TargetID = Digitalroot.Valheim.Common.Names.Vanilla.BossNames.Eikthyr, Biome = (Biome)1, RewardCoins = GetCoins((Biome)1, 150u), RewardIron = GetIron((Biome)1, 7u), RewardGold = GetGold((Biome)1, 5u), Adds = new List<BountyTargetAddConfig> { new BountyTargetAddConfig { ID = Digitalroot.Valheim.Common.Names.Vanilla.EnemyNames.Boar, Count = 5 }, new BountyTargetAddConfig { ID = Digitalroot.Valheim.Common.Names.Vanilla.EnemyNames.Neck, Count = 5 }, new BountyTargetAddConfig { ID = Digitalroot.Valheim.Common.Names.Vanilla.BossNames.Eikthyr, Count = 2 } } }; } protected override IEnumerable<BountyTargetConfig> GetBlackForestBounties() { Biome biome = (Biome)8; foreach (BountyTargetConfig blackForestBounty in base.GetBlackForestBounties()) { yield return blackForestBounty; } yield return new BountyTargetConfig { TargetID = Digitalroot.Valheim.Common.Names.Vanilla.EnemyNames.Greydwarf, Biome = biome, RewardCoins = GetCoins(biome), RewardIron = GetIron(biome), RewardGold = GetGold(biome) }; yield return new BountyTargetConfig { TargetID = Digitalroot.Valheim.Common.Names.Vanilla.EnemyNames.Greydwarf, Biome = biome, RewardCoins = GetCoins(biome), RewardIron = GetIron(biome), RewardGold = GetGold(biome) }; yield return new BountyTargetConfig { TargetID = Digitalroot.Valheim.Common.Names.Vanilla.EnemyNames.Skeleton, Biome = biome, RewardCoins = GetCoins(biome), RewardIron = GetIron(biome), RewardGold = GetGold(biome) }; yield return new BountyTargetConfig { TargetID = Digitalroot.Valheim.Common.Names.Vanilla.EnemyNames.Skeleton, Biome = biome, RewardCoins = GetCoins(biome), RewardIron = GetIron(biome), RewardGold = GetGold(biome) }; yield return new BountyTargetConfig { TargetID = Digitalroot.Valheim.Common.Names.Vanilla.EnemyNames.Ghost, Biome = biome, RewardCoins = GetCoins(biome, 5u), RewardIron = GetIron(biome), RewardGold = GetGold(biome) }; yield return new BountyTargetConfig { TargetID = Digitalroot.Valheim.Common.Names.Vanilla.EnemyNames.GreydwarfShaman, Biome = biome, RewardCoins = GetCoins(biome, 10u), RewardIron = GetIron(biome, 1u), RewardGold = GetGold(biome) }; yield return new BountyTargetConfig { TargetID = Digitalroot.Valheim.Common.Names.Vanilla.EnemyNames.Skeleton, Biome = biome, RewardCoins = GetCoins(biome, 15u), RewardIron = GetIron(biome, 2u), RewardGold = GetGold(biome), Adds = new List<BountyTargetAddConfig> { new BountyTargetAddConfig { ID = Digitalroot.Valheim.Common.Names.Vanilla.EnemyNames.Skeleton, Count = 3 } } }; yield return new BountyTargetConfig { TargetID = Digitalroot.Valheim.Common.Names.Vanilla.EnemyNames.GreydwarfElite, Biome = biome, RewardCoins = GetCoins(biome, 5u), RewardIron = 0, RewardGold = GetGold(biome, 1u) }; yield return new BountyTargetConfig { TargetID = Digitalroot.Valheim.Common.Names.Vanilla.EnemyNames.Troll, Biome = biome, RewardCoins = GetCoins(biome, 35u), RewardIron = 0, RewardGold = GetGold(biome, 1u) }; yield return new BountyTargetConfig { TargetID = Digitalroot.Valheim.Common.Names.Vanilla.EnemyNames.GreydwarfShaman, Biome = biome, RewardCoins = GetCoins(biome, 25u), RewardIron = GetIron(biome, 2u), RewardGold = GetGold(biome, 1u), Adds = new List<BountyTargetAddConfig> { new BountyTargetAddConfig { ID = Digitalroot.Valheim.Common.Names.Vanilla.EnemyNames.Greydwarf, Count = 3 } } }; yield return new BountyTargetConfig { TargetID = Digitalroot.Valheim.Common.Names.Vanilla.BossNames.TheElder, Biome = biome, RewardCoins = GetCoins(biome, 165u), RewardIron = GetIron(biome, 3u), RewardGold = GetGold(biome, 2u) }; yield return new BountyTargetConfig { TargetID = Digitalroot.Valheim.Common.Names.Vanilla.BossNames.TheElder, Biome = biome, RewardCoins = GetCoins(biome, 185u), RewardIron = GetIron(biome, 5u), RewardGold = GetGold(biome, 2u), Adds = new List<BountyTargetAddConfig> { new BountyTargetAddConfig { ID = Digitalroot.Valheim.Common.Names.Vanilla.BossNames.Eikthyr, Count = 1 } } }; yield return new BountyTargetConfig { TargetID = Digitalroot.Valheim.Common.Names.Vanilla.BossNames.TheElder, Biome = biome, RewardCoins = GetCoins(biome, 205u), RewardIron = GetIron(biome, 7u), RewardGold = GetGold(biome, 3u), Adds = new List<BountyTargetAddConfig> { new BountyTargetAddConfig { ID = Digitalroot.Valheim.Common.Names.Vanilla.BossNames.Eikthyr, Count = 2 } } }; yield return new BountyTargetConfig { TargetID = Digitalroot.Valheim.Common.Names.Vanilla.BossNames.TheElder, Biome = biome, RewardCoins = GetCoins(biome, 205u), RewardIron = GetIron(biome, 7u), RewardGold = GetGold(biome, 3u), Adds = new List<BountyTargetAddConfig> { new BountyTargetAddConfig { ID = Digitalroot.Valheim.Common.Names.Vanilla.BossNames.TheElder, Count = 1 } } }; yield return new BountyTargetConfig { TargetID = Digitalroot.Valheim.Common.Names.Vanilla.BossNames.TheElder, Biome = biome, RewardCoins = GetCoins(biome, 235u), RewardIron = GetIron(biome, 10u), RewardGold = GetGold(biome, 3u), Adds = new List<BountyTargetAddConfig> { new BountyTargetAddConfig { ID = Digitalroot.Valheim.Common.Names.Vanilla.BossNames.TheElder, Count = 1 }, new BountyTargetAddConfig { ID = Digitalroot.Valheim.Common.Names.Vanilla.BossNames.Eikthyr, Count = 1 } } }; } protected override IEnumerable<BountyTargetConfig> GetSwampBounties() { foreach (BountyTargetConfig swampBounty in base.GetSwampBounties()) { yield return swampBounty; } yield return new BountyTargetConfig { TargetID = Digitalroot.Valheim.Common.Names.Vanilla.EnemyNames.Blob, Biome = (Biome)2, RewardCoins = GetCoins((Biome)2, 5u), RewardIron = GetIron((Biome)2), RewardGold = GetGold((Biome)2) }; yield return new BountyTargetConfig { TargetID = Digitalroot.Valheim.Common.Names.Vanilla.EnemyNames.BlobElite, Biome = (Biome)2, RewardCoins = GetCoins((Biome)2, 10u), RewardIron = GetIron((Biome)2, 1u), RewardGold = GetGold((Biome)2) }; yield return new BountyTargetConfig { TargetID = Digitalroot.Valheim.Common.Names.Vanilla.EnemyNames.BlobElite, Biome = (Biome)2, RewardCoins = GetCoins((Biome)2, 15u), RewardIron = GetIron((Biome)2, 2u), RewardGold = GetGold((Biome)2), Adds = new List<BountyTargetAddConfig> { new BountyTargetAddConfig { ID = Digitalroot.Valheim.Common.Names.Vanilla.EnemyNames.Blob, Count = 2 } } }; yield return new BountyTargetConfig { TargetID = Digitalroot.Valheim.Common.Names.Vanilla.EnemyNames.BlobElite, Biome = (Biome)2, RewardCoins = GetCoins((Biome)2, 15u), RewardIron = GetIron((Biome)2, 2u), RewardGold = GetGold((Biome)2), Adds = new List<BountyTargetAddConfig> { new BountyTargetAddConfig { ID = Digitalroot.Valheim.Common.Names.Vanilla.EnemyNames.Blob, Count = 1 }, new BountyTargetAddConfig { ID = Digitalroot.Valheim.Common.Names.Vanilla.EnemyNames.Skeleton, Count = 1 } } }; yield return new BountyTargetConfig { TargetID = Digitalroot.Valheim.Common.Names.Vanilla.EnemyNames.BlobElite, Biome = (Biome)2, RewardCoins = GetCoins((Biome)2, 15u), RewardIron = GetIron((Biome)2, 2u), RewardGold = GetGold((Biome)2), Adds = new List<BountyTargetAddConfig> { new BountyTargetAddConfig { ID = Digitalroot.Valheim.Common.Names.Vanilla.EnemyNames.Skeleton, Count = 2 } } }; yield return new BountyTargetConfig { TargetID = Digitalroot.Valheim.Common.Names.Vanilla.EnemyNames.BlobElite, Biome = (Biome)2, RewardCoins = GetCoins((Biome)2, 20u), RewardIron = GetIron((Biome)2, 3u), RewardGold = GetGold((Biome)2), Adds = new List<BountyTargetAddConfig> { new BountyTargetAddConfig { ID = Digitalroot.Valheim.Common.Names.Vanilla.EnemyNames.Skeleton, Count = 2 }, new BountyTargetAddConfig { ID = Digitalroot.Valheim.Common.Names.Vanilla.EnemyNames.SkeletonPoison, Count = 1 } } }; yield return new BountyTargetConfig { TargetID = Digitalroot.Valheim.Common.Names.Vanilla.EnemyNames.BlobElite, Biome = (Biome)2, RewardCoins = GetCoins((Biome)2, 15u), RewardIron = GetIron((Biome)2, 2u), RewardGold = GetGold((Biome)2), Adds = new List<BountyTargetAddConfig> { new BountyTargetAddConfig { ID = Digitalroot.Valheim.Common.Names.Vanilla.EnemyNames.Ghost, Count = 2 } } }; yield return new BountyTargetConfig { TargetID = Digitalroot.Valheim.Common.Names.Vanilla.EnemyNames.BlobElite, Biome = (Biome)2, RewardCoins = GetCoins((Biome)2, 15u), RewardIron = GetIron((Biome)2, 2u), RewardGold = GetGold((Biome)2), Adds = new List<BountyTargetAddConfig> { new BountyTargetAddConfig { ID = Digitalroot.Valheim.Common.Names.Vanilla.EnemyNames.Draugr, Count = 2 } } }; yield return new BountyTargetConfig { TargetID = Digitalroot.Valheim.Common.Names.Vanilla.EnemyNames.BlobElite, Biome = (Biome)2, RewardCoins = GetCoins((Biome)2, 15u), RewardIron = GetIron((Biome)2, 2u), RewardGold = GetGold((Biome)2), Adds = new List<BountyTargetAddConfig> { new BountyTargetAddConfig { ID = Digitalroot.Valheim.Common.Names.Vanilla.EnemyNames.DraugrRanged, Count = 2 } } }; yield return new BountyTargetConfig { TargetID = Digitalroot.Valheim.Common.Names.Vanilla.EnemyNames.BlobElite, Biome = (Biome)2, RewardCoins = GetCoins((Biome)2, 15u), RewardIron = GetIron((Biome)2, 2u), RewardGold = GetGold((Biome)2), Adds = new List<BountyTargetAddConfig> { new BountyTargetAddConfig { ID = Digitalroot.Valheim.Common.Names.Vanilla.EnemyNames.Draugr, Count = 1 }, new BountyTargetAddConfig { ID = Digitalroot.Valheim.Common.Names.Vanilla.EnemyNames.DraugrRanged, Count = 1 } } }; yield return new BountyTargetConfig { TargetID = Digitalroot.Valheim.Common.Names.Vanilla.EnemyNames.Skeleton, Biome = (Biome)2, RewardCoins = GetCoins((Biome)2), RewardIron = GetIron((Biome)2), RewardGold = GetGold((Biome)2) }; yield return new BountyTargetConfig { TargetID = Digitalroot.Valheim.Common.Names.Vanilla.EnemyNames.Leech, Biome = (Biome)2, RewardCoins = GetCoins((Biome)2), RewardIron = GetIron((Biome)2), RewardGold = GetGold((Biome)2) }; yield return new BountyTargetConfig { TargetID = Digitalroot.Valheim.Common.Names.Vanilla.EnemyNames.Ghost, Biome = (Biome)2, RewardCoins = GetCoins((Biome)2), RewardIron = 0, RewardGold = GetGold((Biome)2) }; yield return new BountyTargetConfig { TargetID = Digitalroot.Valheim.Common.Names.Vanilla.EnemyNames.Draugr, Biome = (Biome)2, RewardCoins = GetCoins((Biome)2, 10u), RewardIron = GetIron((Biome)2), RewardGold = GetGold((Biome)2) }; yield return new BountyTargetConfig { TargetID = Digitalroot.Valheim.Common.Names.Vanilla.EnemyNames.Surtling, Biome = (Biome)2, RewardCoins = GetCoins((Biome)2), RewardIron = GetIron((Biome)2), RewardGold = GetGold((Biome)2) }; yield return new BountyTargetConfig { TargetID = Digitalroot.Valheim.Common.Names.Vanilla.EnemyNames.Surtling, Biome = (Biome)2, RewardCoins = GetCoins((Biome)2, 10u), RewardIron = GetIron((Biome)2, 1u), RewardGold = GetGold((Biome)2), Adds = new List<BountyTargetAddConfig> { new BountyTargetAddConfig { ID = Digitalroot.Valheim.Common.Names.Vanilla.EnemyNames.Surtling, Count = 2 } } }; yield return new BountyTargetConfig { TargetID = Digitalroot.Valheim.Common.Names.Vanilla.EnemyNames.Wraith, Biome = (Biome)2, RewardCoins = GetCoins((Biome)2, 30u), RewardIron = 0, RewardGold = GetGold((Biome)2, 1u) }; yield return new BountyTargetConfig { TargetID = Digitalroot.Valheim.Common.Names.Vanilla.EnemyNames.Wraith, Biome = (Biome)2, RewardCoins = GetCoins((Biome)2, 50u), RewardIron = GetIron((Biome)2), RewardGold = GetGold((Biome)2, 1u), Adds = new List<BountyTargetAddConfig> { new BountyTargetAddConfig { ID = Digitalroot.Valheim.Common.Names.Vanilla.EnemyNames.Ghost, Count = 2 } } }; yield return new BountyTargetConfig { TargetID = Digitalroot.Valheim.Common.Names.Vanilla.EnemyNames.DraugrElite, Biome = (Biome)2, RewardCoins = GetCoins((Biome)2, 30u), RewardIron = 0, RewardGold = GetGold((Biome)2, 1u) }; yield return new BountyTargetConfig { TargetID = Digitalroot.Valheim.Common.Names.Vanilla.EnemyNames.DraugrElite, Biome = (Biome)2, RewardCoins = GetCoins((Biome)2, 60u), RewardIron = GetIron((Biome)2, 2u), RewardGold = GetGold((Biome)2, 1u), Adds = new List<BountyTargetAddConfig> { new BountyTargetAddConfig { ID = Digitalroot.Valheim.Common.Names.Vanilla.EnemyNames.Draugr, Count = 3 } } }; yield return new BountyTargetConfig { TargetID = Digitalroot.Valheim.Common.Names.Vanilla.EnemyNames.DraugrElite, Biome = (Biome)2, RewardCoins = GetCoins((Biome)2, 60u), RewardIron = GetIron((Biome)2, 2u), RewardGold = GetGold((Biome)2, 1u), Adds = new List<BountyTargetAddConfig> { new BountyTargetAddConfig { ID = Digitalroot.Valheim.Common.Names.Vanilla.EnemyNames.DraugrRanged, Count = 2 }, new BountyTargetAddConfig { ID = Digitalroot.Valheim.Common.Names.Vanilla.EnemyNames.Draugr, Count = 1 } } }; yield return new BountyTargetConfig { TargetID = Digitalroot.Valheim.Common.Names.Vanilla.EnemyNames.DraugrElite, Biome = (Biome)2, RewardCoins = GetCoins((Biome)2, 60u), RewardIron = GetIron((Biome)2, 2u), RewardGold = GetGold((Biome)2, 1u), Adds = new List<BountyTargetAddConfig> { new BountyTargetAddConfig { ID = Digitalroot.Valheim.Common.Names.Vanilla.EnemyNames.DraugrRanged, Count = 3 } } }; yield return new BountyTargetConfig { TargetID = Digitalroot.Valheim.Common.Names.Vanilla.EnemyNames.DraugrElite, Biome = (Biome)2, RewardCoins = GetCoins((Biome)2, 60u), RewardIron = GetIron((Biome)2, 2u), RewardGold = GetGold((Biome)2, 1u), Adds = new List<BountyTargetAddConfig> { new BountyTargetAddConfig { ID = Digitalroot.Valheim.Common.Names.Vanilla.EnemyNames.DraugrRanged, Count = 1 }, new BountyTargetAddConfig { ID = Digitalroot.Valheim.Common.Names.Vanilla.EnemyNames.Draugr, Count = 2 } } }; yield return new BountyTargetConfig { TargetID = Digitalroot.Valheim.Common.Names.Vanilla.EnemyNames.Skeleton, Biome = (Biome)2, RewardCoins = GetCoins((Biome)2, 30u), RewardIron = GetIron((Biome)2, 2u), RewardGold = GetGold((Biome)2, 1u), Adds = new List<BountyTargetAddConfig> { new BountyTargetAddConfig { ID = Digitalroot.Valheim.Common.Names.Vanilla.EnemyNames.Skeleton, Count = 5 } } }; yield return new BountyTargetConfig { TargetID = Digitalroot.Valheim.Common.Names.Vanilla.EnemyNames.SkeletonPoison, Biome = (Biome)2, RewardCoins = GetCoins((Biome)2, 40u), RewardIron = GetIron((Biome)2, 2u), RewardGold = GetGold((Biome)2, 1u), Adds = new List<BountyTargetAddConfig> { new BountyTargetAddConfig { ID = Digitalroot.Valheim.Common.Names.Vanilla.EnemyNames.Skeleton, Count = 5 } } }; yield return new BountyTargetConfig { TargetID = Digitalroot.Valheim.Common.Names.Vanilla.BossNames.Bonemass, Biome = (Biome)2, RewardCoins = GetCoins((Biome)2, 160u), RewardIron = GetIron((Biome)2, 3u), RewardGold = GetGold((Biome)2, 2u) }; yield return new BountyTargetConfig { TargetID = Digitalroot.Valheim.Common.Names.Vanilla.BossNames.Eikthyr, Biome = (Biome)2, RewardCoins = GetCoins((Biome)2, 100u), RewardIron = GetIron((Biome)2, 2u), RewardGold = GetGold((Biome)2, 1u) }; yield return new BountyTargetConfig { TargetID = Digitalroot.Valheim.Common.Names.Vanilla.BossNames.TheElder, Biome = (Biome)2, RewardCoins = GetCoins((Biome)2, 120u), RewardIron = GetIron((Biome)2, 2u), RewardGold = GetGold((Biome)2, 1u) }; yield return new BountyTargetConfig { TargetID = Digitalroot.Valheim.Common.Names.Vanilla.BossNames.Bonemass, Biome = (Biome)2, RewardCoins = GetCoins((Biome)2, 180u), RewardIron = GetIron((Biome)2, 4u), RewardGold = GetGold((Biome)2, 2u), Adds = new List<BountyTargetAddConfig> { new BountyTargetAddConfig { ID = Digitalroot.Valheim.Common.Names.Vanilla.BossNames.Eikthyr, Count = 1 } } }; yield return new BountyTargetConfig { TargetID = Digitalroot.Valheim.Common.Names.Vanilla.BossNames.Bonemass, Biome = (Biome)2, RewardCoins = GetCoins((Biome)2, 190u), RewardIron = GetIron((Biome)2, 5u), RewardGold = GetGold((Biome)2, 2u), Adds = new List<BountyTargetAddConfig> { new BountyTargetAddConfig { ID = Digitalroot.Valheim.Common.Names.Vanilla.EnemyNames.DraugrElite, Count = 2 } } }; yield return new BountyTargetConfig { TargetID = Digitalroot.Valheim.Common.Names.Vanilla.BossNames.Bonemass, Biome = (Biome)2, RewardCoins = GetCoins((Biome)2, 200u), RewardIron = GetIron((Biome)2, 6u), RewardGold = GetGold((Biome)2, 2u), Adds = new List<BountyTargetAddConfig> { new BountyTargetAddConfig { ID = Digitalroot.Valheim.Common.Names.Vanilla.BossNames.Eikthyr, Count = 2 } } }; yield return new BountyTargetConfig { TargetID = Digitalroot.Valheim.Common.Names.Vanilla.BossNames.Bonemass, Biome = (Biome)2, RewardCoins = GetCoins((Biome)2, 190u), RewardIron = GetIron((Biome)2, 5u), RewardGold = GetGold((Biome)2, 4u), Adds = new List<BountyTargetAddConfig> { new BountyTargetAddConfig { ID = Digitalroot.Valheim.Common.Names.Vanilla.BossNames.TheElder, Count = 1 } } }; yield return new BountyTargetConfig { TargetID = Digitalroot.Valheim.Common.Names.Vanilla.BossNames.Bonemass, Biome = (Biome)2, RewardCoins = GetCoins((Biome)2, 220u), RewardIron = GetIron((Biome)2, 8u), RewardGold = GetGold((Biome)2, 4u), Adds = new List<BountyTargetAddConfig> { new BountyTargetAddConfig { ID = Digitalroot.Valheim.Common.Names.Vanilla.BossNames.Eikthyr, Count = 1 }, new BountyTargetAddConfig { ID = Digitalroot.Valheim.Common.Names.Vanilla.BossNames.TheElder, Count = 1 } } }; } protected override IEnumerable<BountyTargetConfig> GetMountainBounties() { foreach (BountyTargetConfig mountainBounty in base.GetMountainBounties()) { yield return mountainBounty; } yield return new BountyTargetConfig { TargetID = Digitalroot.Valheim.Common.Names.Vanilla.EnemyNames.Wolf, Biome = (Biome)4, RewardCoins = GetCoins((Biome)4), RewardIron = GetIron((Biome)4), RewardGold = GetGold((Biome)4) }; yield return new BountyTargetConfig { TargetID = Digitalroot.Valheim.Common.Names.Vanilla.EnemyNames.Wolf, Biome = (Biome)4, RewardCoins = GetCoins((Biome)4), RewardIron = GetIron((Biome)4), RewardGold = GetGold((Biome)4) }; yield return new BountyTargetConfig { TargetID = Digitalroot.Valheim.Common.Names.Vanilla.EnemyNames.Drake, Biome = (Biome)4, RewardCoins = GetCoins((Biome)4), RewardIron = GetIron((Biome)4), RewardGold = GetGold((Biome)4) }; yield return new BountyTargetConfig { TargetID = Digitalroot.Valheim.Common.Names.Vanilla.EnemyNames.Drake, Biome = (Biome)4, RewardCoins = GetCoins((Biome)4), RewardIron = GetIron((Biome)4), RewardGold = GetGold((Biome)4) }; yield return new BountyTargetConfig { TargetID = Digitalroot.Valheim.Common.Names.Vanilla.EnemyNames.Skeleton, Biome = (Biome)4, RewardCoins = GetCoins((Biome)4), RewardIron = GetIron((Biome)4), RewardGold = GetGold((Biome)4) }; yield return new BountyTargetConfig { TargetID = Digitalroot.Valheim.Common.Names.Vanilla.EnemyNames.Skeleton, Biome = (Biome)4, RewardCoins = GetCoins((Biome)4), RewardIron = GetIron((Biome)4), RewardGold = GetGold((Biome)4) }; yield return new BountyTargetConfig { TargetID = Digitalroot.Valheim.Common.Names.Vanilla.EnemyNames.Surtling, Biome = (Biome)4, RewardCoins = GetCoins((Biome)4), RewardIron = GetIron((Biome)4), RewardGold = GetGold((Biome)4) }; yield return new BountyTargetConfig { TargetID = Digitalroot.Valheim.Common.Names.Vanilla.EnemyNames.DraugrRanged, Biome = (Biome)4, RewardCoins = GetCoins((Biome)4), RewardIron = GetIron((Biome)4), RewardGold = GetGold((Biome)4) }; yield return new BountyTargetConfig { TargetID = Digitalroot.Valheim.Common.Names.Vanilla.EnemyNames.Skeleton, Biome = (Biome)4, RewardCoins = GetCoins((Biome)4, 10u), RewardIron = GetIron((Biome)4, 1u), RewardGold = GetGold((Biome)4), Adds = new List<BountyTargetAddConfig> { new BountyTargetAddConfig { ID = Digitalroot.Valheim.Common.Names.Vanilla.EnemyNames.Skeleton, Count = 3 } } }; yield return new BountyTargetConfig { TargetID = Digitalroot.Valheim.Common.Names.Vanilla.EnemyNames.Fenring, Biome = (Biome)4, RewardCoins = GetCoins((Biome)4, 20u), RewardIron = 0, RewardGold = GetGold((Biome)4, 2u) }; yield return new BountyTargetConfig { TargetID = Digitalroot.Valheim.Common.Names.Vanilla.EnemyNames.Fenring, Biome = (Biome)4, RewardCoins = GetCoins((Biome)4, 70u), RewardIron = GetIron((Biome)4, 1u), RewardGold = GetGold((Biome)4, 2u), Adds = new List<BountyTargetAddConfig> { new BountyTargetAddConfig { ID = Digitalroot.Valheim.Common.Names.Vanilla.EnemyNames.Wolf, Count = 3 } } }; yield return new BountyTargetConfig { TargetID = Digitalroot.Valheim.Common.Names.Vanilla.EnemyNames.Wolf, Biome = (Biome)4, RewardCoins = GetCoins((Biome)4, 40u), RewardIron = GetIron((Biome)4, 1u), RewardGold = GetGold((Biome)4, 1u), Adds = new List<BountyTargetAddConfig> { new BountyTargetAddConfig { ID = Digitalroot.Valheim.Common.Names.Vanilla.EnemyNames.Wolf, Count = 2 } } }; yield return new BountyTargetConfig { TargetID = Digitalroot.Valheim.Common.Names.Vanilla.EnemyNames.StoneGolem, Biome = (Biome)4, RewardCoins = GetCoins((Biome)4, 50u), RewardIron = 0, RewardGold = GetGold((Biome)4, 2u) }; yield return new BountyTargetConfig { TargetID = Digitalroot.Valheim.Common.Names.Vanilla.EnemyNames.StoneGolem, Biome = (Biome)4, RewardCoins = GetCoins((Biome)4, 130u), RewardIron = GetIron((Biome)4, 3u), RewardGold = GetGold((Biome)4, 3u), Adds = new List<BountyTargetAddConfig> { new BountyTargetAddConfig { ID = Digitalroot.Valheim.Common.Names.Vanilla.EnemyNames.StoneGolem, Count = 2 } } }; yield return new BountyTargetConfig { TargetID = Digitalroot.Valheim.Common.Names.Vanilla.EnemyNames.Ghost, Biome = (Biome)4, RewardCoins = GetCoins((Biome)4, 10u), RewardIron = GetIron((Biome)4), RewardGold = GetGold((Biome)4) }; yield return new BountyTargetConfig { TargetID = Digitalroot.Valheim.Common.Names.Vanilla.EnemyNames.Ghost, Biome = (Biome)4, RewardCoins = GetCoins((Biome)4, 10u), RewardIron = GetIron((Biome)4), RewardGold = GetGold((Biome)4) }; yield return new BountyTargetConfig { TargetID = Digitalroot.Valheim.Common.Names.Vanilla.EnemyNames.Wraith, Biome = (Biome)4, RewardCoins = GetCoins((Biome)4, 15u), RewardIron = GetIron((Biome)4), RewardGold = GetGold((Biome)4) }; yield return new BountyTargetConfig { TargetID = Digitalroot.Valheim.Common.Names.Vanilla.EnemyNames.Wraith, Biome = (Biome)4, RewardCoins = GetCoins((Biome)4, 15u), RewardIron = GetIron((Biome)4), RewardGold = GetGold((Biome)4) }; yield return new BountyTargetConfig { TargetID = Digitalroot.Valheim.Common.Names.Vanilla.BossNames.Eikthyr, Biome = (Biome)4, RewardCoins = GetCoins((Biome)4, 90u), RewardIron = GetIron((Biome)4, 2u), RewardGold = GetGold((Biome)4, 1u) }; yield return new BountyTargetConfig { TargetID = Digitalroot.Valheim.Common.Names.Vanilla.BossNames.TheElder, Biome = (Biome)4, RewardCoins = GetCoins((Biome)4, 110u), RewardIron = GetIron((Biome)4, 3u), RewardGold = GetGold((Biome)4, 1u) }; yield return new BountyTargetConfig { TargetID = Digitalroot.Valheim.Common.Names.Vanilla.BossNames.Moder, Biome = (Biome)4, RewardCoins = GetCoins((Biome)4, 180u), RewardIron = GetIron((Biome)4, 3u), RewardGold = GetGold((Biome)4, 2u) }; yield return new BountyTargetConfig { TargetID = Digitalroot.Valheim.Common.Names.Vanilla.BossNames.Moder, Biome = (Biome)4, RewardCoins = GetCoins((Biome)4, 200u), RewardIron = GetIron((Biome)4, 4u), RewardGold = GetGold((Biome)4, 2u), Adds = new List<BountyTargetAddConfig> { new BountyTargetAddConfig { ID = Digitalroot.Valheim.Common.Names.Vanilla.EnemyNames.Drake, Count = 2 } } }; yield return new BountyTargetConfig { TargetID = Digitalroot.Valheim.Common.Names.Vanilla.BossNames.Moder, Biome = (Biome)4, RewardCoins = GetCoins((Biome)4, 200u), RewardIron = GetIron((Biome)4, 4u), RewardGold = GetGold((Biome)4, 2u), Adds = new List<BountyTargetAddConfig> { new BountyTargetAddConfig { ID = Digitalroot.Valheim.Common.Names.Vanilla.EnemyNames.StoneGolem, Count = 1 } } }; yield return new BountyTargetConfig { TargetID = Digitalroot.Valheim.Common.Names.Vanilla.BossNames.Moder, Biome = (Biome)4, RewardCoins = GetCoins((Biome)4, 220u), RewardIron = GetIron((Biome)4, 6u), RewardGold = GetGold((Biome)4, 2u), Adds = new List<BountyTargetAddConfig> { new BountyTargetAddConfig { ID = Digitalroot.Valheim.Common.Names.Vanilla.EnemyNames.Drake, Count = 4 } } }; yield return new BountyTargetConfig { TargetID = Digitalroot.Valheim.Common.Names.Vanilla.BossNames.Moder, Biome = (Biome)4, RewardCoins = GetCoins((Biome)4, 220u), RewardIron = GetIron((Biome)4, 6u), RewardGold = GetGold((Biome)4, 2u), Adds = new List<BountyTargetAddConfig> { new BountyTargetAddConfig { ID = Digitalroot.Valheim.Common.Names.Vanilla.EnemyNames.DraugrRanged, Count = 3 } } }; yield return new BountyTargetConfig { TargetID = Digitalroot.Valheim.Common.Names.Vanilla.BossNames.Moder, Biome = (Biome)4, RewardCoins = GetCoins((Biome)4, 210u), RewardIron = GetIron((Biome)4, 5u), RewardGold = GetGold((Biome)4, 2u), Adds = new List<BountyTargetAddConfig> { new BountyTargetAddConfig { ID = Digitalroot.Valheim.Common.Names.Vanilla.BossNames.Eikthyr, Count = 1 } } }; yield return new BountyTargetConfig { TargetID = Digitalroot.Valheim.Common.Names.Vanilla.BossNames.Moder, Biome = (Biome)4, RewardCoins = GetCoins((Biome)4, 250u), RewardIron = GetIron((Biome)4, 7u), RewardGold = GetGold((Biome)4, 3u), Adds = new List<BountyTargetAddConfig> { new BountyTargetAddConfig { ID = Digitalroot.Valheim.Common.Names.Vanilla.BossNames.TheElder, Count = 1 } } }; } protected override IEnumerable<BountyTargetConfig> GetPlainsBounties() { foreach (BountyTargetConfig plainsBounty in base.GetPlainsBounties()) { yield return plainsBounty; } yield return new BountyTargetConfig { TargetID = Digitalroot.Valheim.Common.Names.Vanilla.EnemyNames.Goblin, Biome = (Biome)16, RewardCoins = GetCoins((Biome)16, 15u), RewardIron = GetIron((Biome)16), RewardGold = GetGold((Biome)16) }; yield return new BountyTargetConfig { TargetID = Digitalroot.Valheim.Common.Names.Vanilla.EnemyNames.Goblin, Biome = (Biome)16, RewardCoins = GetCoins((Biome)16, 15u), RewardIron = GetIron((Biome)16), RewardGold = GetGold((Biome)16) }; yield return new BountyTargetConfig { TargetID = Digitalroot.Valheim.Common.Names.Vanilla.EnemyNames.Goblin, Biome = (Biome)16, RewardCoins = GetCoins((Biome)16, 15u), RewardIron = GetIron((Biome)16), RewardGold = GetGold((Biome)16) }; yield return new BountyTargetConfig { TargetID = Digitalroot.Valheim.Common.Names.Vanilla.EnemyNames.Drake, Biome = (Biome)16, RewardCoins = GetCoins((Biome)16), RewardIron = GetIron((Biome)16), RewardGold = GetGold((Biome)16) }; yield return new BountyTargetConfig { TargetID = Digitalroot.Valheim.Common.Names.Vanilla.EnemyNames.Skeleton, Biome = (Biome)16, RewardCoins = GetCoins((Biome)16), RewardIron = GetIron((Biome)16), RewardGold = GetGold((Biome)16) }; yield return new BountyTargetConfig { TargetID = Digitalroot.Valheim.Common.Names.Vanilla.EnemyNames.Lox, Biome = (Biome)16, RewardCoins = GetCoins((Biome)16, 45u), RewardIron = GetIron((Biome)16), RewardGold = GetGold((Biome)16) }; yield return new BountyTargetConfig { TargetID = Digitalroot.Valheim.Common.Names.Vanilla.EnemyNames.Surtling, Biome = (Biome)16, RewardCoins = GetCoins((Biome)16), RewardIron = GetIron((Biome)16), RewardGold = GetGold((Biome)16) }; yield return new BountyTargetConfig { TargetID = Digitalroot.Valheim.Common.Names.Vanilla.EnemyNames.DraugrRanged, Biome = (Biome)16, RewardCoins = GetCoins((Biome)16), RewardIron = GetIron((Biome)16), RewardGold = GetGold((Biome)16) }; yield return new BountyTargetConfig { TargetID = Digitalroot.Valheim.Common.Names.Vanilla.EnemyNames.Skeleton, Biome = (Biome)16, RewardCoins = GetCoins((Biome)16, 10u), RewardIron = GetIron((Biome)16, 1u), RewardGold = GetGold((Biome)16), Adds = new List<BountyTargetAddConfig> { new BountyTargetAddConfig { ID = Digitalroot.Valheim.Common.Names.Vanilla.EnemyNames.Skeleton, Count = 3 } } }; yield return new BountyTargetConfig { TargetID = Digitalroot.Valheim.Common.Names.Vanilla.EnemyNames.Deathsquito, Biome = (Biome)16, RewardCoins = GetCoins((Biome)16), RewardIron = GetIron((Biome)16), RewardGold = GetGold((Biome)16) }; yield return new BountyTargetConfig { TargetID = Digitalroot.Valheim.Common.Names.Vanilla.EnemyNames.Deathsquito, Biome = (Biome)16, RewardCoins = GetCoins((Biome)16), RewardIron = GetIron((Biome)16), RewardGold = GetGold((Biome)16) }; yield return new BountyTargetConfig { TargetID = Digitalroot.Valheim.Common.Names.Vanilla.EnemyNames.Deathsquito, Biome = (Biome)16, RewardCoins = GetCoins((Biome)16, 15u), RewardIron = GetIron((Biome)16, 3u), RewardGold = GetGold((Biome)16, 3u), Adds = new List<BountyTargetAddConfig> { new BountyTargetAddConfig { ID = Digitalroot.Valheim.Common.Names.Vanilla.EnemyNames.Deathsquito, Count = 2 } } }; yield return new BountyTargetConfig { TargetID = Digitalroot.Valheim.Common.Names.Vanilla.EnemyNames.GoblinBrute, Biome = (Biome)16, RewardCoins = GetCoins((Biome)16, 45u), RewardIron = 0, RewardGold = GetGold((Biome)16, 3u) }; yield return new BountyTargetConfig { TargetID = Digitalroot.Valheim.Common.Names.Vanilla.EnemyNames.GoblinBrute, Biome = (Biome)16, RewardCoins = GetCoins((Biome)16, 85u), RewardIron = GetIron((Biome)16, 3u), RewardGold = GetGold((Biome)16, 3u), Adds = new List<BountyTargetAddConfig> { new BountyTargetAddConfig { ID = Digitalroot.Valheim.Common.Names.Vanilla.EnemyNames.Goblin, Count = 2 } } }; yield return new BountyTargetConfig { TargetID = Digitalroot.Valheim.Common.Names.Vanilla.EnemyNames.GoblinBrute, Biome = (Biome)16, RewardCoins = GetCoins((Biome)16, 145u), RewardIron = GetIron((Biome)16, 5u), RewardGold = GetGold((Biome)16, 3u), Adds = new List<BountyTargetAddConfig> { new BountyTargetAddConfig { ID = Digitalroot.Valheim.Common.Names.Vanilla.EnemyNames.Goblin, Count = 3 } } }; yield return new BountyTargetConfig { TargetID = Digitalroot.Valheim.Common.Names.Vanilla.EnemyNames.GoblinShaman, Biome = (Biome)16, RewardCoins = GetCoins((Biome)16, 165u), RewardIron = GetIron((Biome)16, 5u), RewardGold = GetGold((Biome)16, 3u), Adds = new List<BountyTargetAddConfig> { new BountyTargetAddConfig { ID = Digitalroot.Valheim.Common.Names.Vanilla.EnemyNames.Goblin, Count = 3 } } }; yield return new BountyTargetConfig { TargetID = Digitalroot.Valheim.Common.Names.Vanilla.EnemyNames.GoblinShaman, Biome = (Biome)16, RewardCoins = GetCoins((Biome)16, 215u), RewardIron = GetIron((Biome)16, 10u), RewardGold = GetGold((Biome)16, 4u), Adds = new List<BountyTargetAddConfig> { new BountyTargetAddConfig { ID = Digitalroot.Valheim.Common.Names.Vanilla.EnemyNames.GoblinBrute, Count = 1 }, new BountyTargetAddConfig { ID = Digitalroot.Valheim.Common.Names.Vanilla.EnemyNames.Goblin, Count = 2 } } }; yield return new BountyTargetConfig { TargetID = Digitalroot.Valheim.Common.Names.Vanilla.EnemyNames.Ghost, Biome = (Biome)16, RewardCoins = GetCoins((Biome)16), RewardIron = GetIron((Biome)16), RewardGold = GetGold((Biome)16) }; yield return new BountyTargetConfig { TargetID = Digitalroot.Valheim.Common.Names.Vanilla.EnemyNames.Ghost, Biome = (Biome)16, RewardCoins = GetCoins((Biome)16), RewardIron = GetIron((Biome)16), RewardGold = GetGold((Biome)16) }; yield return new BountyTargetConfig { TargetID = Digitalroot.Valheim.Common.Names.Vanilla.EnemyNames.Wraith, Biome = (Biome)16, RewardCoins = GetCoins((Biome)16), RewardIron = GetIron((Biome)16), RewardGold = GetGold((Biome)16) }; yield return new BountyTargetConfig { TargetID = Digitalroot.Valheim.Common.Names.Vanilla.EnemyNames.Wraith, Biome = (Biome)16, RewardCoins = GetCoins((Biome)16), RewardIron = GetIron((Biome)16), RewardGold = GetGold((Biome)16) }; yield return new BountyTargetConfig { TargetID = Digitalroot.Valheim.Common.Names.Vanilla.BossNames.Eikthyr, Biome = (Biome)16, RewardCoins = GetCoins((Biome)16, 30u), RewardIron = GetIron((Biome)16), RewardGold = GetGold((Biome)16, 1u) }; yield return new BountyTargetConfig { TargetID = Digitalroot.Valheim.Common.Names.Vanilla.BossNames.TheElder, Biome = (Biome)16, RewardCoins = GetCoins((Biome)16, 40u), RewardIron = GetIron((Biome)16, 3u), RewardGold = GetGold((Biome)16, 1u) }; yield return new BountyTargetConfig { TargetID = Digitalroot.Valheim.Common.Names.Vanilla.BossNames.TheElder, Biome = (Biome)16, RewardCoins = GetCoins((Biome)16, 50u), RewardIron = GetIron((Biome)16, 5u), RewardGold = GetGold((Biome)16, 2u), Adds = new List<BountyTargetAddConfig> { new BountyTargetAddConfig { ID = Digitalroot.Valheim.Common.Names.Vanilla.BossNames.Eikthyr, Count = 2 } } }; yield return new BountyTargetConfig { TargetID = Digitalroot.Valheim.Common.Names.Vanilla.BossNames.Moder, Biome = (Biome)16, RewardCoins = GetCoins((Biome)16, 180u), RewardIron = GetIron((Biome)16, 4u), RewardGold = GetGold((Biome)16, 2u), Adds = new List<BountyTargetAddConfig> { new BountyTargetAddConfig { ID = Digitalroot.Valheim.Common.Names.Vanilla.EnemyNames.Drake, Count = 2 } } }; yield return new BountyTargetConfig { TargetID = Digitalroot.Valheim.Common.Names.Vanilla.BossNames.Moder, Biome = (Biome)16, RewardCoins = GetCoins((Biome)16, 250u), RewardIron = GetIron((Biome)16, 7u), RewardGold = GetGold((Biome)16, 3u), Adds = new List<BountyTargetAddConfig> { new BountyTargetAddConfig { ID = Digitalroot.Valheim.Common.Names.Vanilla.BossNames.TheElder, Count = 1 } } }; yield return new BountyTargetConfig { TargetID = Digitalroot.Valheim.Common.Names.Vanilla.BossNames.Moder, Biome = (Biome)16, RewardCoins = GetCoins((Biome)16, 350u), RewardIron = GetIron((Biome)16, 10u), RewardGold = GetGold((Biome)16, 6u), Adds = new List<BountyTargetAddConfig> { new BountyTargetAddConfig { ID = Digitalroot.Valheim.Common.Names.Vanilla.BossNames.Bonemass, Count = 1 } } }; yield return new BountyTargetConfig { TargetID = Digitalroot.Valheim.Common.Names.Vanilla.BossNames.Bonemass, Biome = (Biome)16, RewardCoins = GetCoins((Biome)16, 350u), RewardIron = GetIron((Biome)16, 10u), RewardGold = GetGold((Biome)16, 6u), Adds = new List<BountyTargetAddConfig> { new BountyTargetAddConfig { ID = Digitalroot.Valheim.Common.Names.Vanilla.BossNames.Moder, Count = 1 } } }; yield return new BountyTargetConfig { TargetID = Digitalroot.Valheim.Common.Names.Vanilla.BossNames.Bonemass, Biome = (Biome)16, RewardCoins = GetCoins((Biome)16, 300u), RewardIron = GetIron((Biome)16, 10u), RewardGold = GetGold((Biome)16, 4u), Adds = new List<BountyTargetAddConfig> { new BountyTargetAddConfig { ID = Digitalroot.Valheim.Common.Names.Vanilla.BossNames.TheElder, Count = 1 } } }; yield return new BountyTargetConfig { TargetID = Digitalroot.Valheim.Common.Names.Vanilla.BossNames.Bonemass, Biome = (Biome)16, RewardCoins = GetCoins((Biome)16, 320u), RewardIron = GetIron((Biome)16, 15u), RewardGold = GetGold((Biome)16, 5u), Adds = new List<BountyTargetAddConfig> { new BountyTargetAddConfig { ID = Digitalroot.Valheim.Common.Names.Vanilla.BossNames.TheElder, Count = 1 }, new BountyTargetAddConfig { ID = Digitalroot.Valheim.Common.Names.Vanilla.BossNames.Eikthyr, Count = 1 } } }; yield return new BountyTargetConfig { TargetID = Digitalroot.Valheim.Common.Names.Vanilla.BossNames.Bonemass, Biome = (Biome)16, RewardCoins = GetCoins((Biome)16, 500u), RewardIron = GetIron((Biome)16, 20u), RewardGold = GetGold((Biome)16, 6u), Adds = new List<BountyTargetAddConfig> { new BountyTargetAddConfig { ID = Digitalroot.Valheim.Common.Names.Vanilla.BossNames.TheElder, Count = 1 }, new BountyTargetAddConfig { ID = Digitalroot.Valheim.Common.Names.Vanilla.BossNames.Moder, Count = 1 } } }; yield return new BountyTargetConfig { TargetID = Digitalroot.Valheim.Common.Names.Vanilla.BossNames.Yagluth, Biome = (Biome)16, RewardCoins = GetCoins((Biome)16, 500u), RewardIron = GetIron((Biome)16, 10u), RewardGold = GetGold((Biome)16, 3u) }; yield return new BountyTargetConfig { TargetID = Digitalroot.Valheim.Common.Names.Vanilla.BossNames.Yagluth, Biome = (Biome)16, RewardCoins = GetCoins((Biome)16, 530u), RewardIron = GetIron((Biome)16, 12u), RewardGold = GetGold((Biome)16, 3u), Adds = new List<BountyTargetAddConfig> { new BountyTargetAddConfig { ID = Digitalroot.Valheim.Common.Names.Vanilla.BossNames.Eikthyr, Count = 1 } } }; yield return new BountyTargetConfig { TargetID = Digitalroot.Valheim.Common.Names.Vanilla.BossNames.Yagluth, Biome = (Biome)16, RewardCoins = GetCoins((Biome)16, 600u), RewardIron = GetIron((Biome)16, 20u), RewardGold = GetGold((Biome)16, 4u), Adds = new List<BountyTargetAddConfig> { new BountyTargetAddConfig { ID = Digitalroot.Valheim.Common.Names.Vanilla.BossNames.TheElder, Count = 1 } } }; yield return new BountyTargetConfig { TargetID = Digitalroot.Valheim.Common.Names.Vanilla.BossNames.Yagluth, Biome = (Biome)16, RewardCoins = GetCoins((Biome)16, 800u), RewardIron = GetIron((Biome)16, 30u), RewardGold = GetGold((Biome)16, 8u), Adds = new List<BountyTargetAddConfig> { new BountyTargetAddConfig { ID = Digitalroot.Valheim.Common.Names.Vanilla.BossNames.Bonemass, Count = 1 } } }; yield return new BountyTargetConfig { TargetID = Digitalroot.Valheim.Common.Names.Vanilla.BossNames.Yagluth, Biome = (Biome)16, RewardCoins = GetCoins((Biome)16, 800u), RewardIron = GetIron((Biome)16, 30u), RewardGold = GetGold((Biome)16, 8u), Adds = new List<BountyTargetAddConfig> { new BountyTargetAddConfig { ID = Digitalroot.Valheim.Common.Names.Vanilla.BossNames.Moder, Count = 1 } } }; yield return new BountyTargetConfig { TargetID = Digitalroot.Valheim.Common.Names.Vanilla.BossNames.Yagluth, Biome = (Biome)16, RewardCoins = GetCoins((Biome)16, 1000u), RewardIron = GetIron((Biome)16, 40u), RewardGold = GetGold((Biome)16, 10u), Adds = new List<BountyTargetAddConfig> { new BountyTargetAddConfig { ID = Digitalroot.Valheim.Common.Names.Vanilla.BossNames.Moder, Count = 1 }, new BountyTargetAddConfig { ID = Digitalroot.Valheim.Common.Names.Vanilla.BossNames.TheElder, Count = 1 } } }; yield return new BountyTargetConfig { TargetID = Digitalroot.Valheim.Common.Names.Vanilla.BossNames.Yagluth, Biome = (Biome)16, RewardCoins = GetCoins((Biome)16, 1000u), RewardIron = GetIron((Biome)16, 40u), RewardGold = GetGold((Biome)16, 10u), Adds = new List<BountyTargetAddConfig> { new BountyTargetAddConfig { ID = Digitalroot.Valheim.Common.Names.Vanilla.BossNames.Bonemass, Count = 1 }, new BountyTargetAddConfig { ID = Digitalroot.Valheim.Common.Names.Vanilla.BossNames.TheElder, Count = 1 } } }; yield return new BountyTargetConfig { TargetID = Digitalroot.Valheim.Common.Names.Vanilla.BossNames.Yagluth, Biome = (Biome)16, RewardCoins = GetCoins((Biome)16, 1200u), RewardIron = GetIron((Biome)16, 50u), RewardGold = GetGold((Biome)16, 12u), Adds = new List<BountyTargetAddConfig> { new BountyTargetAddConfig { ID = Digitalroot.Valheim.Common.Names.Vanilla.BossNames.Moder, Count = 1 }, new BountyTargetAddConfig { ID = Digitalroot.Valheim.Common.Names.Vanilla.BossNames.Bonemass, Count = 1 } } }; yield return new BountyTargetConfig { TargetID = Digitalroot.Valheim.Common.Names.Vanilla.BossNames.Yagluth, Biome = (Biome)16, RewardCoins = GetCoins((Biome)16, 1250u), RewardIron = GetIron((Biome)16, 60u), RewardGold = GetGold((Biome)16, 13u), Adds = new List<BountyTargetAddConfig> { new BountyTargetAddConfig { ID = Digitalroot.Valheim.Common.Names.Vanilla.BossNames.Moder, Count = 1 }, new BountyTargetAddConfig { ID = Digitalroot.Valheim.Common.Names.Vanilla.BossNames.Bonemass, Count = 1 }, new BountyTargetAddConfig { ID = Digitalroot.Valheim.Common.Names.Vanilla.BossNames.Eikthyr, Count = 1 } } }; yield return new BountyTargetConfig { TargetID = Digitalroot.Valheim.Common.Names.Vanilla.BossNames.Yagluth, Biome = (Biome)16, RewardCoins = GetCoins((Biome)16, 1400u), RewardIron = GetIron((Biome)16, 70u), RewardGold = GetGold((Biome)16, 15u), Adds = new List<BountyTargetAddConfig> { new BountyTargetAddConfig { ID = Digitalroot.Valheim.Common.Names.Vanilla.BossNames.Moder, Count = 1 }, new BountyTargetAddConfig { ID = Digitalroot.Valheim.Common.Names.Vanilla.BossNames.Bonemass, Count = 1 }, new BountyTargetAddConfig { ID = Digitalroot.Valheim.Common.Names.Vanilla.BossNames.TheElder, Count = 1 } } }; yield return new BountyTargetConfig { TargetID = Digitalroot.Valheim.Common.Names.Vanilla.BossNames.Yagluth, Biome = (Biome)16, RewardCoins = GetCoins((Biome)16, 2000u), RewardIron = GetIron((Biome)16, 75u), RewardGold = GetGold((Biome)16, 15u), Adds = new List<BountyTargetAddConfig> { new BountyTargetAddConfig { ID = Digitalroot.Valheim.Common.Names.Vanilla.BossNames.Moder, Count = 1 }, new BountyTargetAddConfig { ID = Digitalroot.Valheim.Common.Names.Vanilla.BossNames.Bonemass, Count = 1 }, new BountyTargetAddConfig { ID = Digitalroot.Valheim.Common.Names.Vanilla.BossNames.TheElder, Count = 1 }, new BountyTargetAddConfig { ID = Digitalroot.Valheim.Common.Names.Vanilla.BossNames.Eikthyr, Count = 1 } } }; } protected override IEnumerable<BountyTargetConfig> GetOceanBounties() { foreach (BountyTargetConfig oceanBounty in base.GetOceanBounties()) { yield return oceanBounty; } yield return new BountyTargetConfig { TargetID = Digitalroot.Valheim.Common.Names.Vanilla.EnemyNames.Serpent, Biome = (Biome)256, RewardCoins = GetCoins((Biome)256), RewardIron = GetIron((Biome)256, 2u), RewardGold = GetGold((Biome)256, 1u) }; } protected override IEnumerable<BountyTargetConfig> GetMistlandsBounties() { foreach (BountyTargetConfig mistlandsBounty in base.GetMistlandsBounties()) { yield return mistlandsBounty; } yield return new BountyTargetConfig { TargetID = Digitalroot.Valheim.Common.Names.Vanilla.EnemyNames.Ghost, Biome = (Biome)512, RewardCoins = GetCoins((Biome)512), RewardIron = GetIron((Biome)512), RewardGold = GetGold((Biome)512), Adds = new List<BountyTargetAddConfig> { new BountyTargetAddConfig { ID = Digitalroot.Valheim.Common.Names.Vanilla.EnemyNames.Wraith, Count = 2 }, new BountyTargetAddConfig { ID = Digitalroot.Valheim.Common.Names.Vanilla.EnemyNames.Skeleton, Count = 2 } } }; yield return new BountyTargetConfig { TargetID = Digitalroot.Valheim.Common.Names.Vanilla.EnemyNames.Ghost, Biome = (Biome)512, RewardCoins = GetCoins((Biome)512), RewardIron = GetIron((Biome)512), RewardGold = GetGold((Biome)512), Adds = new List<BountyTargetAddConfig> { new BountyTargetAddConfig { ID = Digitalroot.Valheim.Common.Names.Vanilla.EnemyNames.Wraith, Count = 2 }, new BountyTargetAddConfig { ID = Digitalroot.Valheim.Common.Names.Vanilla.EnemyNames.Skeleton, Count = 2 } } }; yield return new BountyTargetConfig { TargetID = Digitalroot.Valheim.Common.Names.Vanilla.EnemyNames.Wraith, Biome = (Biome)512, RewardCoins = GetCoins((Biome)512), RewardIron = GetIron((Biome)512), RewardGold = GetGold((Biome)512), Adds = new List<BountyTargetAddConfig> { new BountyTargetAddConfig { ID = Digitalroot.Valheim.Common.Names.Vanilla.EnemyNames.Ghost, Count = 4 } } }; yield return new BountyTargetConfig { TargetID = Digitalroot.Valheim.Common.Names.Vanilla.EnemyNames.Wraith, Biome = (Biome)512, RewardCoins = GetCoins((Biome)512), RewardIron = GetIron((Biome)512), RewardGold = GetGold((Biome)512), Adds = new List<BountyTargetAddConfig> { new BountyTargetAddConfig { ID = Digitalroot.Valheim.Common.Names.Vanilla.EnemyNames.Ghost, Count = 2 }, new BountyTargetAddConfig { ID = Digitalroot.Valheim.Common.Names.Vanilla.EnemyNames.Skeleton, Count = 2 } } }; yield return new BountyTargetConfig { TargetID = Digitalroot.Valheim.Common.Names.Vanilla.BossNames.Eikthyr, Biome = (Biome)512, RewardCoins = GetCoins((Biome)512, 30u), RewardIron = GetIron((Biome)512), RewardGold = GetGold((Biome)512), Adds = new List<BountyTargetAddConfig> { new BountyTargetAddConfig { ID = Digitalroot.Valheim.Common.Names.Vanilla.BossNames.Eikthyr, Count = 5 } } }; yield return new BountyTargetConfig { TargetID = Digitalroot.Valheim.Common.Names.Vanilla.BossNames.SeekerQueen, Biome = (Biome)512, RewardCoins = GetCoins((Biome)512, 30u), RewardIron = GetIron((Biome)512), RewardGold = GetGold((Biome)512), Adds = new List<BountyTargetAddConfig> { new BountyTargetAddConfig { ID = Digitalroot.Valheim.Common.Names.Vanilla.BossNames.Eikthyr, Count = 5 } } }; yield return new BountyTargetConfig { TargetID = Digitalroot.Valheim.Common.Names.Vanilla.BossNames.SeekerQueen, Biome = (Biome)512, RewardCoins = GetCoins((Biome)512, 30u), RewardIron = GetIron((Biome)512), RewardGold = GetGold((Biome)512), Adds = new List<BountyTargetAddConfig> { new BountyTargetAddConfig { ID = Digitalroot.Valheim.Common.Names.Vanilla.BossNames.Bonemass, Count = 1 } } }; } protected override IEnumerable<BountyTargetConfig> GetDeepNorthBounties() { foreach (BountyTargetConfig deepNorthBounty in base.GetDeepNorthBounties()) { yield return deepNorthBounty; } yield return new BountyTargetConfig { TargetID = Digitalroot.Valheim.Common.Names.Vanilla.EnemyNames.Troll, Biome = (Biome)64, RewardCoins = GetCoins((Biome)64), RewardIron = GetIron((Biome)64), RewardGold = GetGold((Biome)64) }; yield return new BountyTargetConfig { TargetID = Digitalroot.Valheim.Common.Names.Vanilla.EnemyNames.Troll, Biome = (Biome)64, RewardCoins = GetCoins((Biome)64, 10u), RewardIron = GetIron((Biome)64, 1u), RewardGold = GetGold((Biome)64, 1u), Adds = new List<BountyTargetAddConfig> { new BountyTargetAddConfig { ID = Digitalroot.Valheim.Common.Names.Vanilla.EnemyNames.Troll, Count = 1 } } }; yield return new BountyTargetConfig { TargetID = Digitalroot.Valheim.Common.Names.Vanilla.EnemyNames.Troll, Biome = (Biome)64, RewardCoins = GetCoins((Biome)64, 20u), RewardIron = GetIron((Biome)64, 3u), RewardGold = GetGold((Biome)64, 1u), Adds = new List<BountyTargetAddConfig> { new BountyTargetAddConfig { ID = Digitalroot.Valheim.Common.Names.Vanilla.EnemyNames.Troll, Count = 2 } } }; yield return new BountyTargetConfig { TargetID = Digitalroot.Valheim.Common.Names.Vanilla.EnemyNames.Troll,