Please disclose if your mod was created primarily using AI tools by adding the 'AI Generated' category. Failing to do so may result in the mod being removed from Thunderstore.
Decompiled source of Bounties v3.0.21
plugins/Digitalroot.Valheim.Bounties.dll
Decompiled a year 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,