using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Runtime.Versioning;
using BepInEx;
using BepInEx.Configuration;
using HarmonyLib;
using UnityEngine;
[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)]
[assembly: AssemblyTitle("AutoPickupIgnorer")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("AutoPickupIgnorer")]
[assembly: AssemblyCopyright("Copyright © 2023")]
[assembly: AssemblyTrademark("")]
[assembly: ComVisible(false)]
[assembly: Guid("dc3c126d-5fde-49f1-8712-20c5a6d97768")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: TargetFramework(".NETFramework,Version=v4.7.2", FrameworkDisplayName = ".NET Framework 4.7.2")]
[assembly: AssemblyVersion("1.0.0.0")]
namespace AutoPickupIgnorer;
[BepInPlugin("Pip.AutoPickupIgnorer", "Pip's Auto-pickup Ignorer", "1.0.11")]
[BepInProcess("valheim.exe")]
public class AutoPickupIgnorer : BaseUnityPlugin
{
[HarmonyPatch(typeof(MessageHud), "Awake")]
private class MessageHud_Awake_Patch
{
[HarmonyPostfix]
private static void GetMessageHud(ref MessageHud ___m_instance)
{
_messageHud = ___m_instance;
}
}
[HarmonyPatch(typeof(Player), "AutoPickup")]
public static class Player_AutoPickup_Patch
{
private static readonly FieldInfo m_enableAutoPickupField = AccessTools.Field(typeof(Player), "m_enableAutoPickup");
private static readonly FieldInfo m_autoPickupMaskField = AccessTools.Field(typeof(Player), "m_autoPickupMask");
private static readonly FieldInfo m_inventoryField = AccessTools.Field(typeof(Humanoid), "m_inventory");
[HarmonyPrefix]
private static bool AutoPickupPrefix(Player __instance, MethodBase __originalMethod, params object[] __args)
{
//IL_0038: Unknown result type (might be due to invalid IL or missing references)
//IL_003e: Expected O, but got Unknown
//IL_0062: Unknown result type (might be due to invalid IL or missing references)
//IL_0067: Unknown result type (might be due to invalid IL or missing references)
//IL_006c: Unknown result type (might be due to invalid IL or missing references)
//IL_0071: Unknown result type (might be due to invalid IL or missing references)
//IL_0073: Unknown result type (might be due to invalid IL or missing references)
//IL_009f: Unknown result type (might be due to invalid IL or missing references)
//IL_00a9: Expected O, but got Unknown
//IL_00bf: Unknown result type (might be due to invalid IL or missing references)
//IL_0105: Unknown result type (might be due to invalid IL or missing references)
//IL_020b: Unknown result type (might be due to invalid IL or missing references)
//IL_0210: Unknown result type (might be due to invalid IL or missing references)
//IL_0251: Unknown result type (might be due to invalid IL or missing references)
//IL_025a: Unknown result type (might be due to invalid IL or missing references)
//IL_025f: Unknown result type (might be due to invalid IL or missing references)
//IL_0264: Unknown result type (might be due to invalid IL or missing references)
//IL_0269: Unknown result type (might be due to invalid IL or missing references)
//IL_0272: Unknown result type (might be due to invalid IL or missing references)
//IL_0276: Unknown result type (might be due to invalid IL or missing references)
//IL_027c: Unknown result type (might be due to invalid IL or missing references)
//IL_0281: Unknown result type (might be due to invalid IL or missing references)
//IL_028b: Unknown result type (might be due to invalid IL or missing references)
//IL_0290: Unknown result type (might be due to invalid IL or missing references)
//IL_0292: Unknown result type (might be due to invalid IL or missing references)
//IL_02b3: Unknown result type (might be due to invalid IL or missing references)
//IL_02b8: Unknown result type (might be due to invalid IL or missing references)
//IL_02ba: Unknown result type (might be due to invalid IL or missing references)
float num = (float)__args[0];
try
{
bool flag = (bool)m_enableAutoPickupField.GetValue(__instance);
int num2 = (int)m_autoPickupMaskField.GetValue(__instance);
Inventory val = (Inventory)m_inventoryField.GetValue(__instance);
if (((Character)__instance).IsTeleporting() || !flag)
{
return false;
}
Vector3 val2 = ((Component)__instance).transform.position + Vector3.up;
Collider[] array = Physics.OverlapSphere(val2, __instance.m_autoPickupRange, num2);
Collider[] array2 = array;
foreach (Collider val3 in array2)
{
if (!Object.op_Implicit((Object)val3.attachedRigidbody))
{
continue;
}
ItemDrop component = ((Component)val3.attachedRigidbody).GetComponent<ItemDrop>();
if (_currentPickupBehavior == Common.PickupBehavior.IgnoreAll || IgnoreItem(component.m_itemData))
{
return false;
}
FloatingTerrainDummy val4 = null;
if ((Object)(object)component == (Object)null && Object.op_Implicit((Object)(object)(val4 = ((Component)val3.attachedRigidbody).gameObject.GetComponent<FloatingTerrainDummy>())) && Object.op_Implicit((Object)(object)val4))
{
component = ((Component)val4.m_parent).gameObject.GetComponent<ItemDrop>();
}
if ((Object)(object)component == (Object)null || !component.m_autoPickup || ((Humanoid)__instance).HaveUniqueKey(component.m_itemData.m_shared.m_name) || !((Component)component).GetComponent<ZNetView>().IsValid())
{
continue;
}
if (!component.CanPickup(true))
{
component.RequestOwn();
}
else
{
if (component.InTar())
{
continue;
}
component.Load();
if (!val.CanAddItem(component.m_itemData, -1) || component.m_itemData.GetWeight(-1) + val.GetTotalWeight() > __instance.GetMaxCarryWeight())
{
continue;
}
float num3 = Vector3.Distance(((Component)component).transform.position, val2);
if (num3 > __instance.m_autoPickupRange)
{
continue;
}
if (num3 < 0.3f)
{
((Humanoid)__instance).Pickup(((Component)component).gameObject, true, true);
continue;
}
Vector3 val5 = Vector3.Normalize(val2 - ((Component)component).transform.position);
float num4 = 15f;
Vector3 val6 = val5 * num4 * num;
Transform transform = ((Component)component).transform;
transform.position += val6;
if (Object.op_Implicit((Object)(object)val4))
{
Transform transform2 = ((Component)val4).transform;
transform2.position += val6;
}
}
}
return false;
}
catch (NullReferenceException)
{
return false;
}
catch (Exception ex2)
{
Debug.unityLogger.Log((object)($"{DateTime.Now:MM/dd/yyyy HH:mm:ss}: Exception in AutoPickupIgnorer: " + ex2.Message));
return false;
}
}
}
private const string modGUID = "Pip.AutoPickupIgnorer";
private const string modName = "Pip's Auto-pickup Ignorer";
private const string modVersion = "1.0.11";
private readonly Harmony harmony = new Harmony("Pip.AutoPickupIgnorer");
private static ConfigEntry<string> AutoPickupIgnoreList;
private static ConfigEntry<KeyboardShortcut> ToggleBehaviorHotkey;
private static List<string> _ignoreList;
private static Common.PickupBehavior _currentPickupBehavior = Common.PickupBehavior.Custom;
private static MessageHud _messageHud;
private static List<ItemTracking> _itemTracking = new List<ItemTracking>();
private void Awake()
{
//IL_0042: Unknown result type (might be due to invalid IL or missing references)
Game.isModded = true;
AutoPickupIgnoreList = ((BaseUnityPlugin)this).Config.Bind<string>("General", "AutoPickupIgnoreList", "#Acorn, #Amber, #AmberPearl, #AncientSeed, #ArmorBronzeChest, #ArmorBronzeLegs, #ArmorCarapaceChest, #ArmorCarapaceLegs, #ArmorDress1, #ArmorDress10, #ArmorDress2, #ArmorDress3, #ArmorDress4, #ArmorDress5, #ArmorDress6, #ArmorDress7, #ArmorDress8, #ArmorDress9, #ArmorFenringChest, #ArmorFenringLegs, #ArmorIronChest, #ArmorIronLegs, #ArmorLeatherChest, #ArmorLeatherLegs, #ArmorMageChest, #ArmorMageLegs, #ArmorPaddedCuirass, #ArmorPaddedGreaves, #ArmorRagsChest, #ArmorRagsLegs, #ArmorRootChest, #ArmorRootLegs, #ArmorTrollLeatherChest, #ArmorTrollLeatherLegs, #ArmorTunic1, #ArmorTunic10, #ArmorTunic2, #ArmorTunic3, #ArmorTunic4, #ArmorTunic5, #ArmorTunic6, #ArmorTunic7, #ArmorTunic8, #ArmorTunic9, #ArmorWolfChest, #ArmorWolfLegs, #ArrowBronze, #ArrowCarapace, #ArrowFire, #ArrowFlint, #ArrowFrost, #ArrowIron, #ArrowNeedle, #ArrowObsidian, #ArrowPoison, #ArrowSilver, #ArrowWood, #AtgeirBlackmetal, #AtgeirBronze, #AtgeirHimminAfl, #AtgeirIron, #AxeBlackMetal, #AxeBronze, #AxeFlint, #AxeIron, #AxeJotunBane, #AxeStone, #BarberKit, #Barley, #BarleyFlour, #BarleyWine, #BarleyWineBase, #Battleaxe, #BattleaxeCrystal, #BeechSeeds, #BeltStrength, #Bilebag, #BirchSeeds, #BlackCore, #BlackMarble, #BlackMetal, #BlackMetalScrap, #BlackSoup, #Bloodbag, #BloodPudding, #Blueberries, #BoarJerky, #BoltBlackmetal, #BoltBone, #BoltCarapace, #BoltIron, #BombBile, #BombOoze, #BoneFragments, #Bow, #BowDraugrFang, #BowFineWood, #BowHuntsman, #BowSpineSnap, #Bread, #BreadDough, #Bronze, #BronzeNails, #BronzeScrap, #BugMeat, #CapeDeerHide, #CapeFeather, #CapeLinen, #CapeLox, #CapeOdin, #CapeTrollHide, #CapeWolf, #Carapace, #Carrot, #CarrotSeeds, #CarrotSoup, #Chain, #chest_hildir1, #chest_hildir2, #chest_hildir3, #ChickenEgg, #ChickenMeat, #Chitin, #Cloudberry, #Club, #Coal, #Coins, #CookedBugMeat, #CookedChickenMeat, #CookedDeerMeat, #CookedEgg, #CookedHareMeat, #CookedLoxMeat, #CookedMeat, #CookedWolfMeat, #Copper, #CopperOre, #CopperScrap, #CrossbowArbalest, #CryptKey, #Crystal, #Cultivator, #Dandelion, #DeerHide, #DeerMeat, #DeerStew, #Demister, #DragonEgg, #DragonTear, #DvergerArbalest, #DvergerArbalest_shoot, #DvergrKey, #DvergrKeyFragment, #DvergrNeedle, #Eitr, #ElderBark, #Entrails, #Eyescream, #Feathers, #FineWood, #FirCone, #FireworksRocket_Blue, #FireworksRocket_Cyan, #FireworksRocket_Green, #FireworksRocket_Purple, #FireworksRocket_Red, #FireworksRocket_White, #FireworksRocket_Yellow, #Fish1, #Fish10, #Fish11, #Fish12, #Fish2, #Fish3, #Fish4_cave, #Fish5, #Fish6, #Fish7, #Fish8, #Fish9, #FishAndBread, #FishAndBreadUncooked, #FishAnglerRaw, #FishCooked, #FishingBait, #FishingBaitAshlands, #FishingBaitCave, #FishingBaitDeepNorth, #FishingBaitForest, #FishingBaitMistlands, #FishingBaitOcean, #FishingBaitPlains, #FishingBaitSwamp, #FishingRod, #FishRaw, #FishWraps, #FistFenrirClaw, #Flametal, #FlametalOre, #Flax, #Flint, #FreezeGland, #GiantBloodSack, #GoblinTotem, #GreydwarfEye, #Guck, #Hammer, #HardAntler, #HareMeat, #HelmetBronze, #HelmetCarapace, #HelmetDrake, #HelmetDverger, #HelmetFenring, #HelmetFishingHat, #HelmetHat1, #HelmetHat10, #HelmetHat2, #HelmetHat3, #HelmetHat4, #HelmetHat5, #HelmetHat6, #HelmetHat7, #HelmetHat8, #HelmetHat9, #HelmetIron, #HelmetLeather, #HelmetMage, #HelmetMidsummerCrown, #HelmetOdin, #HelmetPadded, #HelmetRoot, #HelmetTrollLeather, #HelmetYule, #HildirKey_forestcrypt, #HildirKey_mountaincave, #HildirKey_plainsfortress, #Hoe, #Honey, #HoneyGlazedChicken, #HoneyGlazedChickenUncooked, #Iron, #IronNails, #IronOre, #Ironpit, #IronScrap, #JuteBlue, #JuteRed, #KnifeBlackMetal, #KnifeButcher, #KnifeChitin, #KnifeCopper, #KnifeFlint, #KnifeSilver, #KnifeSkollAndHati, #Lantern, #Larva, #LeatherScraps, #LinenThread, #LoxMeat, #LoxPelt, #LoxPie, #LoxPieUncooked, #MaceBronze, #MaceIron, #MaceNeedle, #MaceSilver, #MagicallyStuffedShroom, #MagicallyStuffedShroomUncooked, #Mandible, #MeadBaseEitrMinor, #MeadBaseFrostResist, #MeadBaseHealthMajor, #MeadBaseHealthMedium, #MeadBaseHealthMinor, #MeadBasePoisonResist, #MeadBaseStaminaLingering, #MeadBaseStaminaMedium, #MeadBaseStaminaMinor, #MeadBaseTasty, #MeadEitrMinor, #MeadFrostResist, #MeadHealthMajor, #MeadHealthMedium, #MeadHealthMinor, #MeadPoisonResist, #MeadStaminaLingering, #MeadStaminaMedium, #MeadStaminaMinor, #MeadTasty, #MeatPlatter, #MeatPlatterUncooked, #MechanicalSpring, #MinceMeatSauce, #MisthareSupreme, #MisthareSupremeUncooked, #Mushroom, #MushroomBlue, #MushroomJotunPuffs, #MushroomMagecap, #MushroomOmelette, #MushroomYellow, #NeckTail, #NeckTailGrilled, #Needle, #Obsidian, #Onion, #OnionSeeds, #OnionSoup, #Ooze, #PickaxeAntler, #PickaxeBlackMetal, #PickaxeBronze, #PickaxeIron, #PickaxeStone, #PineCone, #Pukeberries, #QueenBee, #QueenDrop, #QueensJam, #Raspberry, #RawMeat, #Resin, #Root, #RottenMeat, #RoundLog, #RoyalJelly, #Ruby, #SaddleLox, #Salad, #Sap, #Sausages, #ScaleHide, #SeekerAspic, #SerpentMeat, #SerpentMeatCooked, #SerpentScale, #SerpentStew, #SharpeningStone, #ShieldBanded, #ShieldBlackmetal, #ShieldBlackmetalTower, #ShieldBoneTower, #ShieldBronzeBuckler, #ShieldCarapace, #ShieldCarapaceBuckler, #ShieldIronBuckler, #ShieldIronSquare, #ShieldIronTower, #ShieldKnight, #ShieldSerpentscale, #ShieldSilver, #ShieldWood, #ShieldWoodTower, #ShocklateSmoothie, #Silver, #SilverNecklace, #SilverOre, #SledgeDemolisher, #SledgeIron, #SledgeStagbreaker, #Softtissue, #Sparkler, #SpearBronze, #SpearCarapace, #SpearChitin, #SpearElderbark, #SpearFlint, #SpearWolfFang, #StaffFireball, #StaffIceShards, #StaffShield, #StaffSkeleton, #Stone, #SurtlingCore, #SwordBlackmetal, #SwordBronze, #SwordIron, #SwordIronFire, #SwordMistwalker, #SwordSilver, #Tankard, #Tankard_dvergr, #TankardAnniversary, #TankardOdin, #Tar, #Thistle, #THSwordKrom, #Thunderstone, #Tin, #TinOre, #Torch, #TorchMist, #TrollHide, #TrophyAbomination, #TrophyBlob, #TrophyBoar, #TrophyBonemass, #TrophyCultist, #TrophyCultist_Hildir, #TrophyDeathsquito, #TrophyDeer, #TrophyDragonQueen, #TrophyDraugr, #TrophyDraugrElite, #TrophyDraugrFem, #TrophyDvergr, #TrophyEikthyr, #TrophyFenring, #TrophyForestTroll, #TrophyFrostTroll, #TrophyGjall, #TrophyGoblin, #TrophyGoblinBrute, #TrophyGoblinBruteBrosBrute, #TrophyGoblinBruteBrosShaman, #TrophyGoblinKing, #TrophyGoblinShaman, #TrophyGreydwarf, #TrophyGreydwarfBrute, #TrophyGreydwarfShaman, #TrophyGrowth, #TrophyHare, #TrophyHatchling, #TrophyLeech, #TrophyLox, #TrophyNeck, #TrophySeeker, #TrophySeekerBrute, #TrophySeekerQueen, #TrophySerpent, #TrophySGolem, #TrophySkeleton, #TrophySkeletonHildir, #TrophySkeletonPoison, #TrophySurtling, #TrophyTheElder, #TrophyTick, #TrophyUlv, #TrophyWolf, #TrophyWraith, #Turnip, #TurnipSeeds, #TurnipStew, #TurretBolt, #TurretBoltWood, #Wishbone, #Wisp, #WitheredBone, #WolfClaw, #WolfFang, #WolfHairBundle, #WolfJerky, #WolfMeat, #WolfMeatSkewer, #WolfPelt, #Wood, #YagluthDrop, #YggdrasilPorridge, #YggdrasilWood, #YmirRemains", "Comma-separated list of items to ignore auto-pickup. Remove # before item to add to ignore list.");
ToggleBehaviorHotkey = ((BaseUnityPlugin)this).Config.Bind<KeyboardShortcut>("General", "BehaviorHotkey", new KeyboardShortcut((KeyCode)39, Array.Empty<KeyCode>()), "Hotkey to change pickup behavior between custom ignore, ignore all, and default behavior");
_ignoreList = (from i in AutoPickupIgnoreList.Value.Split(new char[1] { ',' })
select i.Trim() into i
where !i.StartsWith("#")
select i).ToList();
harmony.PatchAll();
}
private void Update()
{
//IL_0006: Unknown result type (might be due to invalid IL or missing references)
//IL_000b: Unknown result type (might be due to invalid IL or missing references)
KeyboardShortcut value = ToggleBehaviorHotkey.Value;
if (((KeyboardShortcut)(ref value)).IsDown())
{
switch (_currentPickupBehavior)
{
case Common.PickupBehavior.Custom:
_currentPickupBehavior = Common.PickupBehavior.IgnoreAll;
_messageHud.ShowMessage((MessageType)1, "Ignoring all items", 0, (Sprite)null);
break;
case Common.PickupBehavior.IgnoreAll:
_currentPickupBehavior = Common.PickupBehavior.Default;
_messageHud.ShowMessage((MessageType)1, "Default pickup behavior", 0, (Sprite)null);
break;
case Common.PickupBehavior.Default:
_currentPickupBehavior = Common.PickupBehavior.Custom;
_messageHud.ShowMessage((MessageType)1, "Ignoring custom items", 0, (Sprite)null);
break;
default:
_currentPickupBehavior = Common.PickupBehavior.Custom;
_messageHud.ShowMessage((MessageType)1, "Ignoring custom items", 0, (Sprite)null);
break;
}
}
}
public static bool IgnoreItem(ItemData itemData)
{
if (_currentPickupBehavior == Common.PickupBehavior.Custom && _ignoreList.Contains(((Object)itemData.m_dropPrefab).name))
{
ItemTracking itemTracking = _itemTracking.Find((ItemTracking i) => i.ItemName == ((Object)itemData.m_dropPrefab).name);
if (itemTracking != null)
{
if ((DateTime.Now - itemTracking.LastPickupTime).TotalSeconds > 30.0)
{
Debug.unityLogger.Log((object)$"{DateTime.Now:MM/dd/yyyy HH:mm:ss}: Ignoring item: {((Object)itemData.m_dropPrefab).name}");
itemTracking.LastPickupTime = DateTime.Now;
}
}
else
{
Debug.unityLogger.Log((object)$"{DateTime.Now:MM/dd/yyyy HH:mm:ss}: Ignoring item: {((Object)itemData.m_dropPrefab).name}");
_itemTracking.Add(new ItemTracking
{
ItemName = ((Object)itemData.m_dropPrefab).name,
LastPickupTime = DateTime.Now
});
}
return true;
}
return false;
}
}
public class ItemTracking
{
public string ItemName { get; set; }
public DateTime LastPickupTime { get; set; }
}
internal class Common
{
public enum PickupBehavior
{
Custom,
IgnoreAll,
Default
}
public const string _defaultItemList = "#Acorn, #Amber, #AmberPearl, #AncientSeed, #ArmorBronzeChest, #ArmorBronzeLegs, #ArmorCarapaceChest, #ArmorCarapaceLegs, #ArmorDress1, #ArmorDress10, #ArmorDress2, #ArmorDress3, #ArmorDress4, #ArmorDress5, #ArmorDress6, #ArmorDress7, #ArmorDress8, #ArmorDress9, #ArmorFenringChest, #ArmorFenringLegs, #ArmorIronChest, #ArmorIronLegs, #ArmorLeatherChest, #ArmorLeatherLegs, #ArmorMageChest, #ArmorMageLegs, #ArmorPaddedCuirass, #ArmorPaddedGreaves, #ArmorRagsChest, #ArmorRagsLegs, #ArmorRootChest, #ArmorRootLegs, #ArmorTrollLeatherChest, #ArmorTrollLeatherLegs, #ArmorTunic1, #ArmorTunic10, #ArmorTunic2, #ArmorTunic3, #ArmorTunic4, #ArmorTunic5, #ArmorTunic6, #ArmorTunic7, #ArmorTunic8, #ArmorTunic9, #ArmorWolfChest, #ArmorWolfLegs, #ArrowBronze, #ArrowCarapace, #ArrowFire, #ArrowFlint, #ArrowFrost, #ArrowIron, #ArrowNeedle, #ArrowObsidian, #ArrowPoison, #ArrowSilver, #ArrowWood, #AtgeirBlackmetal, #AtgeirBronze, #AtgeirHimminAfl, #AtgeirIron, #AxeBlackMetal, #AxeBronze, #AxeFlint, #AxeIron, #AxeJotunBane, #AxeStone, #BarberKit, #Barley, #BarleyFlour, #BarleyWine, #BarleyWineBase, #Battleaxe, #BattleaxeCrystal, #BeechSeeds, #BeltStrength, #Bilebag, #BirchSeeds, #BlackCore, #BlackMarble, #BlackMetal, #BlackMetalScrap, #BlackSoup, #Bloodbag, #BloodPudding, #Blueberries, #BoarJerky, #BoltBlackmetal, #BoltBone, #BoltCarapace, #BoltIron, #BombBile, #BombOoze, #BoneFragments, #Bow, #BowDraugrFang, #BowFineWood, #BowHuntsman, #BowSpineSnap, #Bread, #BreadDough, #Bronze, #BronzeNails, #BronzeScrap, #BugMeat, #CapeDeerHide, #CapeFeather, #CapeLinen, #CapeLox, #CapeOdin, #CapeTrollHide, #CapeWolf, #Carapace, #Carrot, #CarrotSeeds, #CarrotSoup, #Chain, #chest_hildir1, #chest_hildir2, #chest_hildir3, #ChickenEgg, #ChickenMeat, #Chitin, #Cloudberry, #Club, #Coal, #Coins, #CookedBugMeat, #CookedChickenMeat, #CookedDeerMeat, #CookedEgg, #CookedHareMeat, #CookedLoxMeat, #CookedMeat, #CookedWolfMeat, #Copper, #CopperOre, #CopperScrap, #CrossbowArbalest, #CryptKey, #Crystal, #Cultivator, #Dandelion, #DeerHide, #DeerMeat, #DeerStew, #Demister, #DragonEgg, #DragonTear, #DvergerArbalest, #DvergerArbalest_shoot, #DvergrKey, #DvergrKeyFragment, #DvergrNeedle, #Eitr, #ElderBark, #Entrails, #Eyescream, #Feathers, #FineWood, #FirCone, #FireworksRocket_Blue, #FireworksRocket_Cyan, #FireworksRocket_Green, #FireworksRocket_Purple, #FireworksRocket_Red, #FireworksRocket_White, #FireworksRocket_Yellow, #Fish1, #Fish10, #Fish11, #Fish12, #Fish2, #Fish3, #Fish4_cave, #Fish5, #Fish6, #Fish7, #Fish8, #Fish9, #FishAndBread, #FishAndBreadUncooked, #FishAnglerRaw, #FishCooked, #FishingBait, #FishingBaitAshlands, #FishingBaitCave, #FishingBaitDeepNorth, #FishingBaitForest, #FishingBaitMistlands, #FishingBaitOcean, #FishingBaitPlains, #FishingBaitSwamp, #FishingRod, #FishRaw, #FishWraps, #FistFenrirClaw, #Flametal, #FlametalOre, #Flax, #Flint, #FreezeGland, #GiantBloodSack, #GoblinTotem, #GreydwarfEye, #Guck, #Hammer, #HardAntler, #HareMeat, #HelmetBronze, #HelmetCarapace, #HelmetDrake, #HelmetDverger, #HelmetFenring, #HelmetFishingHat, #HelmetHat1, #HelmetHat10, #HelmetHat2, #HelmetHat3, #HelmetHat4, #HelmetHat5, #HelmetHat6, #HelmetHat7, #HelmetHat8, #HelmetHat9, #HelmetIron, #HelmetLeather, #HelmetMage, #HelmetMidsummerCrown, #HelmetOdin, #HelmetPadded, #HelmetRoot, #HelmetTrollLeather, #HelmetYule, #HildirKey_forestcrypt, #HildirKey_mountaincave, #HildirKey_plainsfortress, #Hoe, #Honey, #HoneyGlazedChicken, #HoneyGlazedChickenUncooked, #Iron, #IronNails, #IronOre, #Ironpit, #IronScrap, #JuteBlue, #JuteRed, #KnifeBlackMetal, #KnifeButcher, #KnifeChitin, #KnifeCopper, #KnifeFlint, #KnifeSilver, #KnifeSkollAndHati, #Lantern, #Larva, #LeatherScraps, #LinenThread, #LoxMeat, #LoxPelt, #LoxPie, #LoxPieUncooked, #MaceBronze, #MaceIron, #MaceNeedle, #MaceSilver, #MagicallyStuffedShroom, #MagicallyStuffedShroomUncooked, #Mandible, #MeadBaseEitrMinor, #MeadBaseFrostResist, #MeadBaseHealthMajor, #MeadBaseHealthMedium, #MeadBaseHealthMinor, #MeadBasePoisonResist, #MeadBaseStaminaLingering, #MeadBaseStaminaMedium, #MeadBaseStaminaMinor, #MeadBaseTasty, #MeadEitrMinor, #MeadFrostResist, #MeadHealthMajor, #MeadHealthMedium, #MeadHealthMinor, #MeadPoisonResist, #MeadStaminaLingering, #MeadStaminaMedium, #MeadStaminaMinor, #MeadTasty, #MeatPlatter, #MeatPlatterUncooked, #MechanicalSpring, #MinceMeatSauce, #MisthareSupreme, #MisthareSupremeUncooked, #Mushroom, #MushroomBlue, #MushroomJotunPuffs, #MushroomMagecap, #MushroomOmelette, #MushroomYellow, #NeckTail, #NeckTailGrilled, #Needle, #Obsidian, #Onion, #OnionSeeds, #OnionSoup, #Ooze, #PickaxeAntler, #PickaxeBlackMetal, #PickaxeBronze, #PickaxeIron, #PickaxeStone, #PineCone, #Pukeberries, #QueenBee, #QueenDrop, #QueensJam, #Raspberry, #RawMeat, #Resin, #Root, #RottenMeat, #RoundLog, #RoyalJelly, #Ruby, #SaddleLox, #Salad, #Sap, #Sausages, #ScaleHide, #SeekerAspic, #SerpentMeat, #SerpentMeatCooked, #SerpentScale, #SerpentStew, #SharpeningStone, #ShieldBanded, #ShieldBlackmetal, #ShieldBlackmetalTower, #ShieldBoneTower, #ShieldBronzeBuckler, #ShieldCarapace, #ShieldCarapaceBuckler, #ShieldIronBuckler, #ShieldIronSquare, #ShieldIronTower, #ShieldKnight, #ShieldSerpentscale, #ShieldSilver, #ShieldWood, #ShieldWoodTower, #ShocklateSmoothie, #Silver, #SilverNecklace, #SilverOre, #SledgeDemolisher, #SledgeIron, #SledgeStagbreaker, #Softtissue, #Sparkler, #SpearBronze, #SpearCarapace, #SpearChitin, #SpearElderbark, #SpearFlint, #SpearWolfFang, #StaffFireball, #StaffIceShards, #StaffShield, #StaffSkeleton, #Stone, #SurtlingCore, #SwordBlackmetal, #SwordBronze, #SwordIron, #SwordIronFire, #SwordMistwalker, #SwordSilver, #Tankard, #Tankard_dvergr, #TankardAnniversary, #TankardOdin, #Tar, #Thistle, #THSwordKrom, #Thunderstone, #Tin, #TinOre, #Torch, #TorchMist, #TrollHide, #TrophyAbomination, #TrophyBlob, #TrophyBoar, #TrophyBonemass, #TrophyCultist, #TrophyCultist_Hildir, #TrophyDeathsquito, #TrophyDeer, #TrophyDragonQueen, #TrophyDraugr, #TrophyDraugrElite, #TrophyDraugrFem, #TrophyDvergr, #TrophyEikthyr, #TrophyFenring, #TrophyForestTroll, #TrophyFrostTroll, #TrophyGjall, #TrophyGoblin, #TrophyGoblinBrute, #TrophyGoblinBruteBrosBrute, #TrophyGoblinBruteBrosShaman, #TrophyGoblinKing, #TrophyGoblinShaman, #TrophyGreydwarf, #TrophyGreydwarfBrute, #TrophyGreydwarfShaman, #TrophyGrowth, #TrophyHare, #TrophyHatchling, #TrophyLeech, #TrophyLox, #TrophyNeck, #TrophySeeker, #TrophySeekerBrute, #TrophySeekerQueen, #TrophySerpent, #TrophySGolem, #TrophySkeleton, #TrophySkeletonHildir, #TrophySkeletonPoison, #TrophySurtling, #TrophyTheElder, #TrophyTick, #TrophyUlv, #TrophyWolf, #TrophyWraith, #Turnip, #TurnipSeeds, #TurnipStew, #TurretBolt, #TurretBoltWood, #Wishbone, #Wisp, #WitheredBone, #WolfClaw, #WolfFang, #WolfHairBundle, #WolfJerky, #WolfMeat, #WolfMeatSkewer, #WolfPelt, #Wood, #YagluthDrop, #YggdrasilPorridge, #YggdrasilWood, #YmirRemains";
}