Decompiled source of AutoPickupIgnorer v1.2.0

AutoPickupIgnorer.dll

Decompiled a week ago
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.IgnoreSymbolStoreSequencePoints)]
[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.2.0")]
[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");

		private static readonly Collider[] _colliders = (Collider[])(object)new Collider[100];

		[HarmonyPrefix]
		private static bool AutoPickupPrefix(Player __instance, float dt)
		{
			//IL_002d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0033: Expected O, but got Unknown
			//IL_005c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0061: Unknown result type (might be due to invalid IL or missing references)
			//IL_0066: Unknown result type (might be due to invalid IL or missing references)
			//IL_006b: 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_01c9: Unknown result type (might be due to invalid IL or missing references)
			//IL_01ce: Unknown result type (might be due to invalid IL or missing references)
			//IL_01fe: Unknown result type (might be due to invalid IL or missing references)
			//IL_0206: 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_021e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0224: Unknown result type (might be due to invalid IL or missing references)
			//IL_0229: Unknown result type (might be due to invalid IL or missing references)
			//IL_0233: Unknown result type (might be due to invalid IL or missing references)
			//IL_0238: Unknown result type (might be due to invalid IL or missing references)
			//IL_023a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0255: 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_025c: Unknown result type (might be due to invalid IL or missing references)
			try
			{
				bool flag = (bool)m_enableAutoPickupField.GetValue(__instance);
				int num = (int)m_autoPickupMaskField.GetValue(__instance);
				Inventory val = (Inventory)m_inventoryField.GetValue(__instance);
				if (((Character)__instance).IsTeleporting() || !flag)
				{
					return false;
				}
				if (_currentPickupBehavior == Common.PickupBehavior.IgnoreAll)
				{
					return false;
				}
				Vector3 val2 = ((Component)__instance).transform.position + Vector3.up;
				int num2 = Physics.OverlapSphereNonAlloc(val2, __instance.m_autoPickupRange, _colliders, num);
				for (int i = 0; i < num2; i++)
				{
					Collider val3 = _colliders[i];
					if (!Object.op_Implicit((Object)(object)val3.attachedRigidbody))
					{
						continue;
					}
					ItemDrop component = ((Component)val3.attachedRigidbody).GetComponent<ItemDrop>();
					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) && (Object)(object)val4.m_parent != (Object)null)
					{
						component = ((Component)val4.m_parent).gameObject.GetComponent<ItemDrop>();
					}
					if ((Object)(object)component == (Object)null || !component.m_autoPickup || component.IsPiece() || ((Humanoid)__instance).HaveUniqueKey(component.m_itemData.m_shared.m_name) || !((Component)component).GetComponent<ZNetView>().IsValid() || IgnoreItem(component.m_itemData))
					{
						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 * dt;
						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.2.0";

	private readonly Harmony harmony = new Harmony("Pip.AutoPickupIgnorer");

	private static ConfigEntry<string> AutoPickupIgnoreList;

	private static ConfigEntry<KeyboardShortcut> ToggleBehaviorHotkey;

	private static ConfigEntry<KeyboardShortcut> ReloadConfigHotkey;

	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_0041: 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)
		Game.isModded = true;
		AutoPickupIgnoreList = ((BaseUnityPlugin)this).Config.Bind<string>("General", "AutoPickupIgnoreList", "#Acorn, #Amber, #AmberPearl, #AncientCoin, #AncientGemstoneBlack, #AncientGemstoneGreen, #AncientGemstoneOrange, #AncientGemstonePurple, #AncientSeed, #ArmorAshlandsMediumChest, #ArmorAshlandsMediumlegs, #ArmorBerserkerChest, #ArmorBerserkerLegs, #ArmorBerserkerUndeadChest, #ArmorBerserkerUndeadLegs, #ArmorBronzeChest, #ArmorBronzeLegs, #ArmorCarapaceChest, #ArmorCarapaceLegs, #ArmorDeepNorthHeavyChest, #ArmorDeepNorthHeavylegs, #ArmorDeepNorthMageChest, #ArmorDeepNorthMagelegs, #ArmorDeepNorthMediumChest, #ArmorDeepNorthMediumlegs, #ArmorDress1, #ArmorDress10, #ArmorDress2, #ArmorDress3, #ArmorDress4, #ArmorDress5, #ArmorDress6, #ArmorDress7, #ArmorDress8, #ArmorDress9, #ArmorFenringChest, #ArmorFenringLegs, #ArmorFlametalChest, #ArmorFlametalLegs, #ArmorGoldHeavyChestUncooked, #ArmorGoldHeavyHelmetUncooked, #ArmorGoldHeavyLegsUncooked, #ArmorGoldMageChestUncooked, #ArmorGoldMageHelmetUncooked, #ArmorGoldMageLegsUncooked, #ArmorGoldMediumChestUncooked, #ArmorGoldMediumHelmetUncooked, #ArmorGoldMediumLegsUncooked, #ArmorHarvester1, #ArmorHarvester2, #ArmorIronChest, #ArmorIronLegs, #ArmorLeatherChest, #ArmorLeatherLegs, #ArmorLoxChest, #ArmorLoxLegs, #ArmorMageChest, #ArmorMageChest_Ashlands, #ArmorMageLegs, #ArmorMageLegs_Ashlands, #ArmorPaddedCuirass, #ArmorPaddedGreaves, #ArmorRagsChest, #ArmorRagsLegs, #ArmorRootChest, #ArmorRootLegs, #ArmorTrollLeatherChest, #ArmorTrollLeatherLegs, #ArmorTunic1, #ArmorTunic10, #ArmorTunic2, #ArmorTunic3, #ArmorTunic4, #ArmorTunic5, #ArmorTunic6, #ArmorTunic7, #ArmorTunic8, #ArmorTunic9, #ArmorWolfChest, #ArmorWolfLegs, #ArrowBloodGold, #ArrowBronze, #ArrowCarapace, #ArrowCharred, #ArrowFire, #ArrowFlint, #ArrowFrost, #ArrowIron, #ArrowNeedle, #ArrowObsidian, #ArrowPoison, #ArrowSilver, #ArrowWood, #AskBladder, #AskHide, #AsksvinCarrionNeck, #AsksvinCarrionPelvic, #AsksvinCarrionRibcage, #AsksvinCarrionSkull, #AsksvinEgg, #AsksvinMeat, #AtgeirBlackmetal, #AtgeirBronze, #AtgeirGold, #AtgeirGoldUncooked, #AtgeirGold_BloodLightning, #AtgeirGold_FrostFire, #AtgeirHimminAfl, #AtgeirIron, #AtgeirWood, #AxeBerzerkr, #AxeBerzerkrBlood, #AxeBerzerkrLightning, #AxeBerzerkrNature, #AxeBlackMetal, #AxeBronze, #AxeEarly, #AxeFlint, #AxeGold, #AxeGoldUncooked, #AxeGold_BloodLightning, #AxeGold_FrostFire, #AxeHead1, #AxeHead2, #AxeIron, #AxeJotunBane, #AxeStone, #AxeWood, #BakedPoteitr, #BakedPoteitrUncooked, #BarberKit, #BarkaBranch, #Barley, #BarleyFlour, #BarleyWine, #BarleyWineBase, #BarrelRings, #Battleaxe, #BattleaxeBlackmetal, #BattleaxeCrystal, #BattleaxeGold, #BattleaxeGoldUncooked, #BattleaxeGold_BloodLightning, #BattleaxeGold_FrostFire, #BattleaxeSkullSplittur, #BattleaxeWood, #BeechSeeds, #Bell, #BellFragment, #BeltStrength, #Bilebag, #BirchSeeds, #BjornHide, #BjornMeat, #BjornPaw, #BlackCore, #BlackMarble, #BlackMetal, #BlackMetalScrap, #BlackSoup, #Blackwood, #BlobVial, #Bloodbag, #BloodGoldKey, #BloodPudding, #Blueberries, #BoarJerky, #BoltBlackmetal, #BoltBloodGold, #BoltBone, #BoltCarapace, #BoltCharred, #BoltIron, #BombBile, #BombBlob_Frost, #BombBlob_Lava, #BombBlob_Morkhalla, #BombBlob_Poison, #BombBlob_PoisonElite, #BombBlob_Tar, #BombDynamite, #BombLava, #BombOoze, #BombSiege, #BombSmoke, #BoneFragments, #BoneMawSerpentMeat, #BonemawSerpentScale, #BonemawSerpentTooth, #Bow, #BowAshlands, #BowAshlandsBlood, #BowAshlandsRoot, #BowAshlandsStorm, #BowDraugrFang, #BowFineWood, #BowGold, #BowGoldUncooked, #BowGold_BloodLightning, #BowGold_FrostFire, #BowHuntsman, #BowSpineSnap, #Bread, #BreadDough, #Bronze, #BronzeNails, #BronzeScrap, #BugMeat, #CandleWick, #CapeAsh, #CapeAsksvin, #CapeDeepNorth, #CapeDeepNorthMage, #CapeDeerHide, #CapeFeather, #CapeLinen, #CapeLox, #CapeOdin, #CapeTrollHide, #CapeWolf, #Carapace, #Carrot, #CarrotSeeds, #CarrotSoup, #Catapult_ammo, #Catapult_Ammo_BloodGold, #CelestialFeather, #CeramicPlate, #Chain, #CharcoalResin, #CharredBone, #CharredCogwheel, #Charredskull, #chest_hildir1, #chest_hildir2, #chest_hildir3, #ChickenEgg, #ChickenMeat, #Chitin, #Cloudberry, #Club, #Coal, #Coins, #CookedAsksvinMeat, #CookedBjornMeat, #CookedBoneMawSerpentMeat, #CookedBugMeat, #CookedChickenMeat, #CookedDeerMeat, #CookedEgg, #CookedHareMeat, #CookedLoxMeat, #CookedMeat, #CookedMooseMeat, #CookedSealBlubber, #CookedVoltureMeat, #CookedWolfMeat, #Copper, #CopperOre, #CopperScrap, #CrossbowArbalest, #CrossbowGold, #CrossbowGoldUncooked, #CrossbowGold_BloodLightning, #CrossbowGold_FrostFire, #CrossbowRipper, #CrossbowRipperBlood, #CrossbowRipperLightning, #CrossbowRipperNature, #CrownJewel, #CryptKey, #Crystal, #Cultivator, #CuredSquirrelHamstring, #Dandelion, #DeerHide, #DeerMeat, #DeerStew, #Demister, #DragonEgg, #DragonTear, #DvergerArbalest, #DvergerArbalest_shoot, #DvergerArbalest_shootAshlands, #DvergerArbalest_shootDeepNorth, #DvergrKey, #DvergrKeyFragment, #DvergrNeedle, #DyrnwynBladeFragment, #DyrnwynHiltFragment, #DyrnwynTipFragment, #Ectoplasm, #Eitr, #ElakingHairBundle, #ElderBark, #Entrails, #Eyescream, #FaderDrop, #FaderEmber, #FeastAshlands, #FeastAshlands_Material, #FeastBlackforest, #FeastBlackforest_Material, #FeastDeepNorth, #FeastDeepNorth_Material, #Feaster, #FeastMeadows, #FeastMeadows_Material, #FeastMistlands, #FeastMistlands_Material, #FeastMountains, #FeastMountains_Material, #FeastOceans, #FeastOceans_Material, #FeastPlains, #FeastPlains_Material, #FeastSwamps, #FeastSwamps_Material, #Feathers, #Fiddleheadfern, #FierySvinstew, #FineWood, #FirCone, #FirConeFrost, #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, #FishSoup, #FishWraps, #FistBjornClaw, #FistBjornUndeadClaw, #FistFenrirClaw, #FistGold, #FistGoldUncooked, #FistGold_BloodLightning, #FistGold_FrostFire, #Flametal, #FlametalNew, #FlametalOre, #FlametalOreNew, #Flax, #Flint, #FragrantBundle, #FreezeGland, #FreshSeaweed, #FrostCore, #Frostwood, #FrozenFuel, #FrozenKingDrop, #GemstoneBlue, #GemstoneGreen, #GemstoneRed, #GenericMoldUncooked, #GiantBloodSack, #GlowWorm, #GoblinTotem, #Gold, #GoldOre, #GrapplingHook, #Grausten, #GreydwarfEye, #Guck, #Hammer, #HardAntler, #HareMeat, #HatefulBlood, #HelmetAshlandsMediumHood, #HelmetBerserkerHood, #HelmetBerserkerUndead, #HelmetBronze, #HelmetCarapace, #HelmetCelebration, #HelmetCrownofValheim, #HelmetDNHeavy, #HelmetDNMage, #HelmetDNMediumHood, #HelmetDrake, #HelmetDverger, #HelmetFenring, #HelmetFishingHat, #HelmetFlametal, #HelmetHat1, #HelmetHat10, #HelmetHat2, #HelmetHat3, #HelmetHat4, #HelmetHat5, #HelmetHat6, #HelmetHat7, #HelmetHat8, #HelmetHat9, #HelmetIron, #HelmetLeather, #HelmetLox, #HelmetMage, #HelmetMage_Ashlands, #HelmetMidsummerCrown, #HelmetOdin, #HelmetPadded, #HelmetPointyHat, #HelmetRoot, #HelmetRootCrown, #HelmetStrawHat, #HelmetSweatBand, #HelmetTrollLeather, #HelmetYule, #HildirKey_forestcrypt, #HildirKey_mountaincave, #HildirKey_plainsfortress, #Hoe, #Honey, #HoneyGlazedChicken, #HoneyGlazedChickenUncooked, #Hook, #Ice, #IceShoes, #IceSkates, #Iron, #IronNails, #IronOre, #Ironpit, #IronScrap, #JuteBlue, #JuteRed, #Kale, #KaleChips, #KaleChipsUncooked, #KaleSeeds, #KeysGoldUncooked, #KnifeBlackMetal, #KnifeButcher, #KnifeChitin, #KnifeCopper, #KnifeFlint, #KnifeGold, #KnifeGoldUncooked, #KnifeGold_BloodLightning, #KnifeGold_FrostFire, #KnifeSilver, #KnifeSkollAndHati, #KnifeVoid, #KnifeWood, #Lantern, #Lantern_DN, #Lantern_hooded, #Larva, #LastBossGate_RuneTile, #LeatherScraps, #Leatherstraps, #LinenThread, #Lingonberry, #Lingondricka, #LoxMeat, #LoxPelt, #LoxPie, #LoxPieUncooked, #MaceBronze, #MaceEldner, #MaceEldnerBlood, #MaceEldnerLightning, #MaceEldnerNature, #MaceGold, #MaceGoldUncooked, #MaceGold_BloodLightning, #MaceGold_FrostFire, #MaceIron, #MaceNeedle, #MaceSilver, #MaceWood, #MagicallyStuffedShroom, #MagicallyStuffedShroomUncooked, #Mandible, #MarinatedGreens, #MashedMeat, #MeadBaseBugRepellent, #MeadBaseBzerker, #MeadBaseEitrLingering, #MeadBaseEitrMinor, #MeadBaseFrostResist, #MeadBaseHasty, #MeadBaseHealthLingering, #MeadBaseHealthMajor, #MeadBaseHealthMedium, #MeadBaseHealthMinor, #MeadBaseLightFoot, #MeadBasePoisonResist, #MeadBaseStaminaLingering, #MeadBaseStaminaMedium, #MeadBaseStaminaMinor, #MeadBaseStrength, #MeadBaseSwimmer, #MeadBaseTamer, #MeadBaseTasty, #MeadBugRepellent, #MeadBzerker, #MeadEitrLingering, #MeadEitrMinor, #MeadFrostResist, #MeadHasty, #MeadHealthLingering, #MeadHealthMajor, #MeadHealthMedium, #MeadHealthMinor, #MeadLightfoot, #MeadPoisonResist, #MeadStaminaLingering, #MeadStaminaMedium, #MeadStaminaMinor, #MeadStrength, #MeadSwimmer, #MeadTamer, #MeadTasty, #MeadTrollPheromones, #MeatballsMashedPoteitr, #MeatPlatter, #MeatPlatterUncooked, #MechanicalSpring, #MemorialCoal, #MinceMeatSauce, #MisthareSupreme, #MisthareSupremeUncooked, #MoldArmorGoldChest, #MoldArmorGoldHelmet, #MoldArmorGoldLegs, #MoldArmorMageChest, #MoldArmorMageHelmet, #MoldArmorMageLegs, #MoldArmormediumChest, #MoldArmorMediumHelmet, #MoldArmorMediumLegs, #MoldAtgeir, #MoldAxe, #MoldAxe2H, #MoldBow, #MoldCrossbow, #MoldFistweapon, #MoldKeys, #MoldKnife, #MoldMace, #MoldMace2H, #MoldShieldBuckler, #MoldShieldRound, #MoldShieldTower, #MoldSmallParts, #MoldSpear, #MoldStafffrostorbs, #MoldStaffOrbofAhri, #MoldStaffspiritcaller, #MoldStaffthunderblood, #MoldSword, #MoldSword2H, #MoleClaws, #MoltenCore, #MooseHide, #MooseKebab, #MooseMeat, #MooseSinew, #MorgenHeart, #MorgenSinew, #Mushroom, #MushroomBlue, #MushroomBzerker, #MushroomJotunPuffs, #MushroomMagecap, #MushroomOmelette, #MushroomSmokePuff, #MushroomYellow, #NeckTail, #NeckTailGrilled, #Needle, #NornThread, #Oat, #OatFlour, #OatmealLingonberryJam, #OatMilk, #OatSeeds, #Obsidian, #Onion, #OnionSeeds, #OnionSoup, #Ooze, #OozeMork, #OrbFrostFire, #OrbThunderBlood, #OvenPancake, #OvenPancakeUncooked, #Pancakes, #PickaxeAntler, #PickaxeBlackMetal, #PickaxeBronze, #PickaxeIron, #PickaxeStone, #PineCone, #PiquantPie, #PiquantPieUncooked, #Poteitr, #PoteitrSeeds, #Pot_Shard_Green, #Pot_Shard_Red, #PowderedDragonEgg, #ProustitePowder, #Pukeberries, #PulledBear, #PungentPebbles, #QueenBee, #QueenDrop, #QueensJam, #Raspberry, #RawMeat, #Resin, #RoastedCrustPie, #RoastedCrustPieUncooked, #Root, #RottenMeat, #RoundLog, #RoyalJelly, #Ruby, #SaddleAsksvin, #SaddleLox, #SaddleMoose, #Salad, #Sap, #Sausages, #ScaleHide, #ScorchingMedley, #Scythe, #ScytheHandle, #SealBlubber, #SealHide, #SealSoup, #SeekerAspic, #SerpentMeat, #SerpentMeatCooked, #SerpentScale, #SerpentStew, #SharpeningStone, #ShieldBanded, #ShieldBlackmetal, #ShieldBlackmetalTower, #ShieldBoneTower, #ShieldBronzeBuckler, #ShieldBucklerGoldUncooked, #ShieldCarapace, #ShieldCarapaceBuckler, #ShieldCore, #ShieldFlametal, #ShieldFlametalTower, #ShieldGold, #ShieldGoldBuckler, #ShieldGoldTower, #ShieldIronBuckler, #ShieldIronSquare, #ShieldIronTower, #ShieldKnight, #ShieldRoots, #ShieldRoundGoldUncooked, #ShieldSerpentscale, #ShieldSilver, #ShieldTowerGoldUncooked, #ShieldWood, #ShieldWoodTower, #ShocklateSmoothie, #Shovel, #Silver, #SilverNecklace, #SilverOre, #SizzlingBerryBroth, #SledgeDemolisher, #SledgeGold, #SledgeGoldUncooked, #SledgeGold_BloodLightning, #SledgeGold_FrostFire, #SledgeIron, #SledgeStagbreaker, #SledgeWood, #SmallPartsGoldUncooked, #SmokedFish, #SmokedMooseMeat, #Snowball, #Softtissue, #Sparkler, #SparklingShroomshake, #SpearBronze, #SpearCarapace, #SpearChitin, #SpearElderbark, #SpearFlint, #SpearGold, #SpearGoldUncooked, #SpearGold_BloodLightning, #SpearGold_FrostFire, #SpearSplitner, #SpearSplitner_Blood, #SpearSplitner_Lightning, #SpearSplitner_Nature, #SpearWolfFang, #SpearWood, #SpiceAshlands, #SpiceDeepNorth, #SpiceForests, #SpiceMistlands, #SpiceMountains, #SpiceOceans, #SpicePlains, #SpicyMarmalade, #SP_ArmorBronzeChest, #SP_ArmorBronzeLegs, #SP_ArmorDress1, #SP_ArmorFenringChest, #SP_ArmorFenringLegs, #SP_ArmorLeatherLegs, #SP_ArmorMageChest, #SP_ArmorMageChest_Ashlands, #SP_ArmorMageLegs, #SP_ArmorMageLegs_Ashlands, #SP_ArmorPaddedCuirass, #SP_ArmorPaddedGreaves, #SP_ArmorTrollLeatherChest, #SP_ArmorTrollLeatherLegs, #SP_ArmorTunic5, #SP_AxeBronze, #SP_BattleaxeCrystal, #SP_BowDraugrFang, #SP_CapeLinen, #SP_CapeTrollHide, #SP_CapeWolf, #SP_HelmetBronze, #SP_KnifeSilver, #SP_KnifeSkollAndHati, #SP_ShieldBlackmetalTower, #SP_StaffFireball, #SP_StaffLightning, #SP_SwordBlackmetal, #StaffClusterbomb, #StaffFireball, #StaffFrostOrbs, #StaffFrostOrbsUncooked, #StaffGreenRoots, #StaffIceShards, #StaffLightning, #StaffOrbofAhri, #StaffOrbofAhriUncooked, #StaffRedTroll, #StaffShield, #StaffSkeleton, #StaffSpiritCaller, #StaffSpiritCallerUncooked, #StaffThunderBlood, #StaffThunderbloodUncooked, #Stone, #StoneRock, #SulfurStone, #SurtlingCore, #SwordBlackmetal, #SwordBronze, #SwordDyrnwyn, #SwordGold, #SwordGoldUncooked, #SwordGold_BloodLightning, #SwordGold_FrostFire, #SwordIron, #SwordIronFire, #SwordMistwalker, #SwordNiedhogg, #SwordNiedhoggBlood, #SwordNiedhoggLightning, #SwordNiedhoggNature, #SwordSilver, #SwordWood, #Tankard, #TankardAnniversary, #TankardOdin, #Tankard_dvergr, #Tar, #Thistle, #THSwordGold, #THSwordGoldUncooked, #THSwordGold_BloodLightning, #THSwordGold_FrostFire, #THSwordKrom, #THSwordSlayer, #THSwordSlayerBlood, #THSwordSlayerLightning, #THSwordSlayerNature, #THSwordWood, #Thunderstone, #Tin, #TinOre, #Torch, #TorchMist, #TrinketBlackDamageHealth, #TrinketBlackStamina, #TrinketBloodGoldHealth, #TrinketBloodGoldStamina, #TrinketBronzeHealth, #TrinketBronzeStamina, #TrinketCarapaceEitr, #TrinketChitinSwim, #TrinketFlametalEitr, #TrinketFlametalStaminaHealth, #TrinketIronHealth, #TrinketIronStamina, #TrinketScaleStaminaDamage, #TrinketSilverDamage, #TrinketSilverResist, #TrollHide, #TrophyAbomination, #TrophyAsksvin, #TrophyBarka, #TrophyBjorn, #TrophyBjornUndead, #TrophyBlob, #TrophyBlob_Frost, #TrophyBlob_Lava, #TrophyBlob_Morkhalla, #TrophyBoar, #TrophyBonemass, #TrophyBonemawSerpent, #TrophyCharredArcher, #TrophyCharredMage, #TrophyCharredMelee, #TrophyCultist, #TrophyCultist_Hildir, #TrophyDeathsquito, #TrophyDeer, #TrophyDeerWhite, #TrophyDragonQueen, #TrophyDraugr, #TrophyDraugrElite, #TrophyDraugrFem, #TrophyDvergr, #TrophyEikthyr, #TrophyElaking, #TrophyFader, #TrophyFallenValkyrie, #TrophyFenring, #TrophyForestTroll, #TrophyFrostTroll, #TrophyGhost, #TrophyGjall, #TrophyGoblin, #TrophyGoblinBrute, #TrophyGoblinBruteBrosBrute, #TrophyGoblinBruteBrosShaman, #TrophyGoblinKing, #TrophyGoblinShaman, #TrophyGreydwarf, #TrophyGreydwarfBrute, #TrophyGreydwarfShaman, #TrophyGrowth, #TrophyHare, #TrophyHatchling, #TrophyJotunWarrior, #TrophyJotunWitch, #TrophyKvastur, #TrophyLeech, #TrophyLox, #TrophyMole, #TrophyMoose, #TrophyMorgen, #TrophyNeck, #TrophySeal, #TrophySeeker, #TrophySeekerBrute, #TrophySeekerQueen, #TrophySerpent, #TrophySGolem, #TrophySkeleton, #TrophySkeletonHildir, #TrophySkeletonPoison, #TrophySurtling, #TrophyTheElder, #TrophyTick, #TrophyUlv, #TrophyVolture, #TrophyWolf, #TrophyWraith, #TrophyWrithan, #Turnip, #TurnipSeeds, #TurnipStew, #TurretBolt, #TurretBoltBloodgold, #TurretBoltBone, #TurretBoltFlametal, #TurretBoltWood, #UndeadBjornRibcage, #Upgrader0Armor, #Upgrader0Weapon, #Upgrader1Armor, #Upgrader1Weapon, #Upgrader2Armor, #Upgrader2Weapon, #Upgrader3Armor, #Upgrader3Weapon, #Upgrader4Armor, #Upgrader4Weapon, #Upgrader5Armor, #Upgrader5Weapon, #Upgrader6Armor, #Upgrader6Weapon, #Upgrader7Armor, #Upgrader7Weapon, #VikingCupcake, #VikingCupcakeUncooked, #Vineberry, #VineberrySeeds, #VineGreenSeeds, #Voidplasm, #VoltureEgg, #VoltureMeat, #Wishbone, #Wisp, #WitheredBone, #WolfClaw, #WolfFang, #WolfHairBundle, #WolfJerky, #WolfMeat, #WolfMeatSkewer, #WolfPelt, #Wood, #WrithanRoots, #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");
		ReloadConfigHotkey = ((BaseUnityPlugin)this).Config.Bind<KeyboardShortcut>("General", "ReloadConfigHotkey", new KeyboardShortcut((KeyCode)61, Array.Empty<KeyCode>()), "Hotkey to re-read this file from disk, so changes to the ignore list take effect without relaunching");
		RebuildIgnoreList();
		((BaseUnityPlugin)this).Config.ConfigReloaded += delegate
		{
			RebuildIgnoreList();
		};
		harmony.PatchAll();
	}

	private static void RebuildIgnoreList()
	{
		SortIgnoreList();
		_ignoreList = (from i in AutoPickupIgnoreList.Value.Split(new char[1] { ',' })
			select i.Trim() into i
			where !i.StartsWith("#")
			select i).ToList();
	}

	private void ReloadModConfig()
	{
		try
		{
			((BaseUnityPlugin)this).Config.Reload();
			Debug.Log((object)("AutoPickupIgnorer config reloaded from " + ((BaseUnityPlugin)this).Config.ConfigFilePath));
			MessageHud messageHud = _messageHud;
			if (messageHud != null)
			{
				messageHud.ShowMessage((MessageType)1, "Auto-pickup ignore list reloaded", 0, (Sprite)null, false, true);
			}
		}
		catch (Exception ex)
		{
			Debug.LogError((object)("AutoPickupIgnorer config reload failed, keeping the values already loaded - " + ex.Message));
			MessageHud messageHud2 = _messageHud;
			if (messageHud2 != null)
			{
				messageHud2.ShowMessage((MessageType)1, "Auto-pickup ignore list reload FAILED - see log", 0, (Sprite)null, false, true);
			}
		}
	}

	private static void SortIgnoreList()
	{
		IOrderedEnumerable<string> values = (from g in (from i in AutoPickupIgnoreList.Value.Split(new char[1] { ',' })
				select i.Trim() into i
				where i.TrimStart(new char[1] { '#' }).Length > 0
				select i).GroupBy<string, string>((string i) => i.TrimStart(new char[1] { '#' }).Trim(), StringComparer.OrdinalIgnoreCase)
			select g.FirstOrDefault((string i) => !i.StartsWith("#")) ?? g.First()).OrderBy<string, string>((string i) => i.TrimStart(new char[1] { '#' }).Trim(), StringComparer.OrdinalIgnoreCase);
		string text = string.Join(", ", values);
		if (text != AutoPickupIgnoreList.Value)
		{
			AutoPickupIgnoreList.Value = text;
		}
	}

	private static bool IsTypingText()
	{
		if (Console.IsVisible() || TextInput.IsVisible() || Minimap.InTextInput() || PlayerCustomizaton.IsBarberGuiVisible())
		{
			return true;
		}
		if ((Object)(object)Chat.instance != (Object)null && Chat.instance.HasFocus())
		{
			return true;
		}
		BuildUi val = (((Object)(object)Hud.instance != (Object)null) ? Hud.instance.m_buildUi : null);
		if ((Object)(object)val != (Object)null)
		{
			return val.SearchFieldFocused;
		}
		return false;
	}

	private static bool HotkeyDown(ConfigEntry<KeyboardShortcut> hotkey)
	{
		//IL_0004: Unknown result type (might be due to invalid IL or missing references)
		//IL_0009: Unknown result type (might be due to invalid IL or missing references)
		if (hotkey != null)
		{
			KeyboardShortcut value = hotkey.Value;
			if (((KeyboardShortcut)(ref value)).IsDown())
			{
				return !IsTypingText();
			}
		}
		return false;
	}

	private void Update()
	{
		if (HotkeyDown(ReloadConfigHotkey))
		{
			ReloadModConfig();
		}
		if (HotkeyDown(ToggleBehaviorHotkey))
		{
			switch (_currentPickupBehavior)
			{
			case Common.PickupBehavior.Custom:
				_currentPickupBehavior = Common.PickupBehavior.IgnoreAll;
				_messageHud.ShowMessage((MessageType)1, "Ignoring all items", 0, (Sprite)null, false, true);
				break;
			case Common.PickupBehavior.IgnoreAll:
				_currentPickupBehavior = Common.PickupBehavior.Default;
				_messageHud.ShowMessage((MessageType)1, "Default pickup behavior", 0, (Sprite)null, false, true);
				break;
			case Common.PickupBehavior.Default:
				_currentPickupBehavior = Common.PickupBehavior.Custom;
				_messageHud.ShowMessage((MessageType)1, "Ignoring custom items", 0, (Sprite)null, false, true);
				break;
			default:
				_currentPickupBehavior = Common.PickupBehavior.Custom;
				_messageHud.ShowMessage((MessageType)1, "Ignoring custom items", 0, (Sprite)null, false, true);
				break;
			}
		}
	}

	public static bool IgnoreItem(ItemData itemData)
	{
		if (itemData == null || (Object)(object)itemData.m_dropPrefab == (Object)null)
		{
			return false;
		}
		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, #AncientCoin, #AncientGemstoneBlack, #AncientGemstoneGreen, #AncientGemstoneOrange, #AncientGemstonePurple, #AncientSeed, #ArmorAshlandsMediumChest, #ArmorAshlandsMediumlegs, #ArmorBerserkerChest, #ArmorBerserkerLegs, #ArmorBerserkerUndeadChest, #ArmorBerserkerUndeadLegs, #ArmorBronzeChest, #ArmorBronzeLegs, #ArmorCarapaceChest, #ArmorCarapaceLegs, #ArmorDeepNorthHeavyChest, #ArmorDeepNorthHeavylegs, #ArmorDeepNorthMageChest, #ArmorDeepNorthMagelegs, #ArmorDeepNorthMediumChest, #ArmorDeepNorthMediumlegs, #ArmorDress1, #ArmorDress10, #ArmorDress2, #ArmorDress3, #ArmorDress4, #ArmorDress5, #ArmorDress6, #ArmorDress7, #ArmorDress8, #ArmorDress9, #ArmorFenringChest, #ArmorFenringLegs, #ArmorFlametalChest, #ArmorFlametalLegs, #ArmorGoldHeavyChestUncooked, #ArmorGoldHeavyHelmetUncooked, #ArmorGoldHeavyLegsUncooked, #ArmorGoldMageChestUncooked, #ArmorGoldMageHelmetUncooked, #ArmorGoldMageLegsUncooked, #ArmorGoldMediumChestUncooked, #ArmorGoldMediumHelmetUncooked, #ArmorGoldMediumLegsUncooked, #ArmorHarvester1, #ArmorHarvester2, #ArmorIronChest, #ArmorIronLegs, #ArmorLeatherChest, #ArmorLeatherLegs, #ArmorLoxChest, #ArmorLoxLegs, #ArmorMageChest, #ArmorMageChest_Ashlands, #ArmorMageLegs, #ArmorMageLegs_Ashlands, #ArmorPaddedCuirass, #ArmorPaddedGreaves, #ArmorRagsChest, #ArmorRagsLegs, #ArmorRootChest, #ArmorRootLegs, #ArmorTrollLeatherChest, #ArmorTrollLeatherLegs, #ArmorTunic1, #ArmorTunic10, #ArmorTunic2, #ArmorTunic3, #ArmorTunic4, #ArmorTunic5, #ArmorTunic6, #ArmorTunic7, #ArmorTunic8, #ArmorTunic9, #ArmorWolfChest, #ArmorWolfLegs, #ArrowBloodGold, #ArrowBronze, #ArrowCarapace, #ArrowCharred, #ArrowFire, #ArrowFlint, #ArrowFrost, #ArrowIron, #ArrowNeedle, #ArrowObsidian, #ArrowPoison, #ArrowSilver, #ArrowWood, #AskBladder, #AskHide, #AsksvinCarrionNeck, #AsksvinCarrionPelvic, #AsksvinCarrionRibcage, #AsksvinCarrionSkull, #AsksvinEgg, #AsksvinMeat, #AtgeirBlackmetal, #AtgeirBronze, #AtgeirGold, #AtgeirGoldUncooked, #AtgeirGold_BloodLightning, #AtgeirGold_FrostFire, #AtgeirHimminAfl, #AtgeirIron, #AtgeirWood, #AxeBerzerkr, #AxeBerzerkrBlood, #AxeBerzerkrLightning, #AxeBerzerkrNature, #AxeBlackMetal, #AxeBronze, #AxeEarly, #AxeFlint, #AxeGold, #AxeGoldUncooked, #AxeGold_BloodLightning, #AxeGold_FrostFire, #AxeHead1, #AxeHead2, #AxeIron, #AxeJotunBane, #AxeStone, #AxeWood, #BakedPoteitr, #BakedPoteitrUncooked, #BarberKit, #BarkaBranch, #Barley, #BarleyFlour, #BarleyWine, #BarleyWineBase, #BarrelRings, #Battleaxe, #BattleaxeBlackmetal, #BattleaxeCrystal, #BattleaxeGold, #BattleaxeGoldUncooked, #BattleaxeGold_BloodLightning, #BattleaxeGold_FrostFire, #BattleaxeSkullSplittur, #BattleaxeWood, #BeechSeeds, #Bell, #BellFragment, #BeltStrength, #Bilebag, #BirchSeeds, #BjornHide, #BjornMeat, #BjornPaw, #BlackCore, #BlackMarble, #BlackMetal, #BlackMetalScrap, #BlackSoup, #Blackwood, #BlobVial, #Bloodbag, #BloodGoldKey, #BloodPudding, #Blueberries, #BoarJerky, #BoltBlackmetal, #BoltBloodGold, #BoltBone, #BoltCarapace, #BoltCharred, #BoltIron, #BombBile, #BombBlob_Frost, #BombBlob_Lava, #BombBlob_Morkhalla, #BombBlob_Poison, #BombBlob_PoisonElite, #BombBlob_Tar, #BombDynamite, #BombLava, #BombOoze, #BombSiege, #BombSmoke, #BoneFragments, #BoneMawSerpentMeat, #BonemawSerpentScale, #BonemawSerpentTooth, #Bow, #BowAshlands, #BowAshlandsBlood, #BowAshlandsRoot, #BowAshlandsStorm, #BowDraugrFang, #BowFineWood, #BowGold, #BowGoldUncooked, #BowGold_BloodLightning, #BowGold_FrostFire, #BowHuntsman, #BowSpineSnap, #Bread, #BreadDough, #Bronze, #BronzeNails, #BronzeScrap, #BugMeat, #CandleWick, #CapeAsh, #CapeAsksvin, #CapeDeepNorth, #CapeDeepNorthMage, #CapeDeerHide, #CapeFeather, #CapeLinen, #CapeLox, #CapeOdin, #CapeTrollHide, #CapeWolf, #Carapace, #Carrot, #CarrotSeeds, #CarrotSoup, #Catapult_ammo, #Catapult_Ammo_BloodGold, #CelestialFeather, #CeramicPlate, #Chain, #CharcoalResin, #CharredBone, #CharredCogwheel, #Charredskull, #chest_hildir1, #chest_hildir2, #chest_hildir3, #ChickenEgg, #ChickenMeat, #Chitin, #Cloudberry, #Club, #Coal, #Coins, #CookedAsksvinMeat, #CookedBjornMeat, #CookedBoneMawSerpentMeat, #CookedBugMeat, #CookedChickenMeat, #CookedDeerMeat, #CookedEgg, #CookedHareMeat, #CookedLoxMeat, #CookedMeat, #CookedMooseMeat, #CookedSealBlubber, #CookedVoltureMeat, #CookedWolfMeat, #Copper, #CopperOre, #CopperScrap, #CrossbowArbalest, #CrossbowGold, #CrossbowGoldUncooked, #CrossbowGold_BloodLightning, #CrossbowGold_FrostFire, #CrossbowRipper, #CrossbowRipperBlood, #CrossbowRipperLightning, #CrossbowRipperNature, #CrownJewel, #CryptKey, #Crystal, #Cultivator, #CuredSquirrelHamstring, #Dandelion, #DeerHide, #DeerMeat, #DeerStew, #Demister, #DragonEgg, #DragonTear, #DvergerArbalest, #DvergerArbalest_shoot, #DvergerArbalest_shootAshlands, #DvergerArbalest_shootDeepNorth, #DvergrKey, #DvergrKeyFragment, #DvergrNeedle, #DyrnwynBladeFragment, #DyrnwynHiltFragment, #DyrnwynTipFragment, #Ectoplasm, #Eitr, #ElakingHairBundle, #ElderBark, #Entrails, #Eyescream, #FaderDrop, #FaderEmber, #FeastAshlands, #FeastAshlands_Material, #FeastBlackforest, #FeastBlackforest_Material, #FeastDeepNorth, #FeastDeepNorth_Material, #Feaster, #FeastMeadows, #FeastMeadows_Material, #FeastMistlands, #FeastMistlands_Material, #FeastMountains, #FeastMountains_Material, #FeastOceans, #FeastOceans_Material, #FeastPlains, #FeastPlains_Material, #FeastSwamps, #FeastSwamps_Material, #Feathers, #Fiddleheadfern, #FierySvinstew, #FineWood, #FirCone, #FirConeFrost, #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, #FishSoup, #FishWraps, #FistBjornClaw, #FistBjornUndeadClaw, #FistFenrirClaw, #FistGold, #FistGoldUncooked, #FistGold_BloodLightning, #FistGold_FrostFire, #Flametal, #FlametalNew, #FlametalOre, #FlametalOreNew, #Flax, #Flint, #FragrantBundle, #FreezeGland, #FreshSeaweed, #FrostCore, #Frostwood, #FrozenFuel, #FrozenKingDrop, #GemstoneBlue, #GemstoneGreen, #GemstoneRed, #GenericMoldUncooked, #GiantBloodSack, #GlowWorm, #GoblinTotem, #Gold, #GoldOre, #GrapplingHook, #Grausten, #GreydwarfEye, #Guck, #Hammer, #HardAntler, #HareMeat, #HatefulBlood, #HelmetAshlandsMediumHood, #HelmetBerserkerHood, #HelmetBerserkerUndead, #HelmetBronze, #HelmetCarapace, #HelmetCelebration, #HelmetCrownofValheim, #HelmetDNHeavy, #HelmetDNMage, #HelmetDNMediumHood, #HelmetDrake, #HelmetDverger, #HelmetFenring, #HelmetFishingHat, #HelmetFlametal, #HelmetHat1, #HelmetHat10, #HelmetHat2, #HelmetHat3, #HelmetHat4, #HelmetHat5, #HelmetHat6, #HelmetHat7, #HelmetHat8, #HelmetHat9, #HelmetIron, #HelmetLeather, #HelmetLox, #HelmetMage, #HelmetMage_Ashlands, #HelmetMidsummerCrown, #HelmetOdin, #HelmetPadded, #HelmetPointyHat, #HelmetRoot, #HelmetRootCrown, #HelmetStrawHat, #HelmetSweatBand, #HelmetTrollLeather, #HelmetYule, #HildirKey_forestcrypt, #HildirKey_mountaincave, #HildirKey_plainsfortress, #Hoe, #Honey, #HoneyGlazedChicken, #HoneyGlazedChickenUncooked, #Hook, #Ice, #IceShoes, #IceSkates, #Iron, #IronNails, #IronOre, #Ironpit, #IronScrap, #JuteBlue, #JuteRed, #Kale, #KaleChips, #KaleChipsUncooked, #KaleSeeds, #KeysGoldUncooked, #KnifeBlackMetal, #KnifeButcher, #KnifeChitin, #KnifeCopper, #KnifeFlint, #KnifeGold, #KnifeGoldUncooked, #KnifeGold_BloodLightning, #KnifeGold_FrostFire, #KnifeSilver, #KnifeSkollAndHati, #KnifeVoid, #KnifeWood, #Lantern, #Lantern_DN, #Lantern_hooded, #Larva, #LastBossGate_RuneTile, #LeatherScraps, #Leatherstraps, #LinenThread, #Lingonberry, #Lingondricka, #LoxMeat, #LoxPelt, #LoxPie, #LoxPieUncooked, #MaceBronze, #MaceEldner, #MaceEldnerBlood, #MaceEldnerLightning, #MaceEldnerNature, #MaceGold, #MaceGoldUncooked, #MaceGold_BloodLightning, #MaceGold_FrostFire, #MaceIron, #MaceNeedle, #MaceSilver, #MaceWood, #MagicallyStuffedShroom, #MagicallyStuffedShroomUncooked, #Mandible, #MarinatedGreens, #MashedMeat, #MeadBaseBugRepellent, #MeadBaseBzerker, #MeadBaseEitrLingering, #MeadBaseEitrMinor, #MeadBaseFrostResist, #MeadBaseHasty, #MeadBaseHealthLingering, #MeadBaseHealthMajor, #MeadBaseHealthMedium, #MeadBaseHealthMinor, #MeadBaseLightFoot, #MeadBasePoisonResist, #MeadBaseStaminaLingering, #MeadBaseStaminaMedium, #MeadBaseStaminaMinor, #MeadBaseStrength, #MeadBaseSwimmer, #MeadBaseTamer, #MeadBaseTasty, #MeadBugRepellent, #MeadBzerker, #MeadEitrLingering, #MeadEitrMinor, #MeadFrostResist, #MeadHasty, #MeadHealthLingering, #MeadHealthMajor, #MeadHealthMedium, #MeadHealthMinor, #MeadLightfoot, #MeadPoisonResist, #MeadStaminaLingering, #MeadStaminaMedium, #MeadStaminaMinor, #MeadStrength, #MeadSwimmer, #MeadTamer, #MeadTasty, #MeadTrollPheromones, #MeatballsMashedPoteitr, #MeatPlatter, #MeatPlatterUncooked, #MechanicalSpring, #MemorialCoal, #MinceMeatSauce, #MisthareSupreme, #MisthareSupremeUncooked, #MoldArmorGoldChest, #MoldArmorGoldHelmet, #MoldArmorGoldLegs, #MoldArmorMageChest, #MoldArmorMageHelmet, #MoldArmorMageLegs, #MoldArmormediumChest, #MoldArmorMediumHelmet, #MoldArmorMediumLegs, #MoldAtgeir, #MoldAxe, #MoldAxe2H, #MoldBow, #MoldCrossbow, #MoldFistweapon, #MoldKeys, #MoldKnife, #MoldMace, #MoldMace2H, #MoldShieldBuckler, #MoldShieldRound, #MoldShieldTower, #MoldSmallParts, #MoldSpear, #MoldStafffrostorbs, #MoldStaffOrbofAhri, #MoldStaffspiritcaller, #MoldStaffthunderblood, #MoldSword, #MoldSword2H, #MoleClaws, #MoltenCore, #MooseHide, #MooseKebab, #MooseMeat, #MooseSinew, #MorgenHeart, #MorgenSinew, #Mushroom, #MushroomBlue, #MushroomBzerker, #MushroomJotunPuffs, #MushroomMagecap, #MushroomOmelette, #MushroomSmokePuff, #MushroomYellow, #NeckTail, #NeckTailGrilled, #Needle, #NornThread, #Oat, #OatFlour, #OatmealLingonberryJam, #OatMilk, #OatSeeds, #Obsidian, #Onion, #OnionSeeds, #OnionSoup, #Ooze, #OozeMork, #OrbFrostFire, #OrbThunderBlood, #OvenPancake, #OvenPancakeUncooked, #Pancakes, #PickaxeAntler, #PickaxeBlackMetal, #PickaxeBronze, #PickaxeIron, #PickaxeStone, #PineCone, #PiquantPie, #PiquantPieUncooked, #Poteitr, #PoteitrSeeds, #Pot_Shard_Green, #Pot_Shard_Red, #PowderedDragonEgg, #ProustitePowder, #Pukeberries, #PulledBear, #PungentPebbles, #QueenBee, #QueenDrop, #QueensJam, #Raspberry, #RawMeat, #Resin, #RoastedCrustPie, #RoastedCrustPieUncooked, #Root, #RottenMeat, #RoundLog, #RoyalJelly, #Ruby, #SaddleAsksvin, #SaddleLox, #SaddleMoose, #Salad, #Sap, #Sausages, #ScaleHide, #ScorchingMedley, #Scythe, #ScytheHandle, #SealBlubber, #SealHide, #SealSoup, #SeekerAspic, #SerpentMeat, #SerpentMeatCooked, #SerpentScale, #SerpentStew, #SharpeningStone, #ShieldBanded, #ShieldBlackmetal, #ShieldBlackmetalTower, #ShieldBoneTower, #ShieldBronzeBuckler, #ShieldBucklerGoldUncooked, #ShieldCarapace, #ShieldCarapaceBuckler, #ShieldCore, #ShieldFlametal, #ShieldFlametalTower, #ShieldGold, #ShieldGoldBuckler, #ShieldGoldTower, #ShieldIronBuckler, #ShieldIronSquare, #ShieldIronTower, #ShieldKnight, #ShieldRoots, #ShieldRoundGoldUncooked, #ShieldSerpentscale, #ShieldSilver, #ShieldTowerGoldUncooked, #ShieldWood, #ShieldWoodTower, #ShocklateSmoothie, #Shovel, #Silver, #SilverNecklace, #SilverOre, #SizzlingBerryBroth, #SledgeDemolisher, #SledgeGold, #SledgeGoldUncooked, #SledgeGold_BloodLightning, #SledgeGold_FrostFire, #SledgeIron, #SledgeStagbreaker, #SledgeWood, #SmallPartsGoldUncooked, #SmokedFish, #SmokedMooseMeat, #Snowball, #Softtissue, #Sparkler, #SparklingShroomshake, #SpearBronze, #SpearCarapace, #SpearChitin, #SpearElderbark, #SpearFlint, #SpearGold, #SpearGoldUncooked, #SpearGold_BloodLightning, #SpearGold_FrostFire, #SpearSplitner, #SpearSplitner_Blood, #SpearSplitner_Lightning, #SpearSplitner_Nature, #SpearWolfFang, #SpearWood, #SpiceAshlands, #SpiceDeepNorth, #SpiceForests, #SpiceMistlands, #SpiceMountains, #SpiceOceans, #SpicePlains, #SpicyMarmalade, #SP_ArmorBronzeChest, #SP_ArmorBronzeLegs, #SP_ArmorDress1, #SP_ArmorFenringChest, #SP_ArmorFenringLegs, #SP_ArmorLeatherLegs, #SP_ArmorMageChest, #SP_ArmorMageChest_Ashlands, #SP_ArmorMageLegs, #SP_ArmorMageLegs_Ashlands, #SP_ArmorPaddedCuirass, #SP_ArmorPaddedGreaves, #SP_ArmorTrollLeatherChest, #SP_ArmorTrollLeatherLegs, #SP_ArmorTunic5, #SP_AxeBronze, #SP_BattleaxeCrystal, #SP_BowDraugrFang, #SP_CapeLinen, #SP_CapeTrollHide, #SP_CapeWolf, #SP_HelmetBronze, #SP_KnifeSilver, #SP_KnifeSkollAndHati, #SP_ShieldBlackmetalTower, #SP_StaffFireball, #SP_StaffLightning, #SP_SwordBlackmetal, #StaffClusterbomb, #StaffFireball, #StaffFrostOrbs, #StaffFrostOrbsUncooked, #StaffGreenRoots, #StaffIceShards, #StaffLightning, #StaffOrbofAhri, #StaffOrbofAhriUncooked, #StaffRedTroll, #StaffShield, #StaffSkeleton, #StaffSpiritCaller, #StaffSpiritCallerUncooked, #StaffThunderBlood, #StaffThunderbloodUncooked, #Stone, #StoneRock, #SulfurStone, #SurtlingCore, #SwordBlackmetal, #SwordBronze, #SwordDyrnwyn, #SwordGold, #SwordGoldUncooked, #SwordGold_BloodLightning, #SwordGold_FrostFire, #SwordIron, #SwordIronFire, #SwordMistwalker, #SwordNiedhogg, #SwordNiedhoggBlood, #SwordNiedhoggLightning, #SwordNiedhoggNature, #SwordSilver, #SwordWood, #Tankard, #TankardAnniversary, #TankardOdin, #Tankard_dvergr, #Tar, #Thistle, #THSwordGold, #THSwordGoldUncooked, #THSwordGold_BloodLightning, #THSwordGold_FrostFire, #THSwordKrom, #THSwordSlayer, #THSwordSlayerBlood, #THSwordSlayerLightning, #THSwordSlayerNature, #THSwordWood, #Thunderstone, #Tin, #TinOre, #Torch, #TorchMist, #TrinketBlackDamageHealth, #TrinketBlackStamina, #TrinketBloodGoldHealth, #TrinketBloodGoldStamina, #TrinketBronzeHealth, #TrinketBronzeStamina, #TrinketCarapaceEitr, #TrinketChitinSwim, #TrinketFlametalEitr, #TrinketFlametalStaminaHealth, #TrinketIronHealth, #TrinketIronStamina, #TrinketScaleStaminaDamage, #TrinketSilverDamage, #TrinketSilverResist, #TrollHide, #TrophyAbomination, #TrophyAsksvin, #TrophyBarka, #TrophyBjorn, #TrophyBjornUndead, #TrophyBlob, #TrophyBlob_Frost, #TrophyBlob_Lava, #TrophyBlob_Morkhalla, #TrophyBoar, #TrophyBonemass, #TrophyBonemawSerpent, #TrophyCharredArcher, #TrophyCharredMage, #TrophyCharredMelee, #TrophyCultist, #TrophyCultist_Hildir, #TrophyDeathsquito, #TrophyDeer, #TrophyDeerWhite, #TrophyDragonQueen, #TrophyDraugr, #TrophyDraugrElite, #TrophyDraugrFem, #TrophyDvergr, #TrophyEikthyr, #TrophyElaking, #TrophyFader, #TrophyFallenValkyrie, #TrophyFenring, #TrophyForestTroll, #TrophyFrostTroll, #TrophyGhost, #TrophyGjall, #TrophyGoblin, #TrophyGoblinBrute, #TrophyGoblinBruteBrosBrute, #TrophyGoblinBruteBrosShaman, #TrophyGoblinKing, #TrophyGoblinShaman, #TrophyGreydwarf, #TrophyGreydwarfBrute, #TrophyGreydwarfShaman, #TrophyGrowth, #TrophyHare, #TrophyHatchling, #TrophyJotunWarrior, #TrophyJotunWitch, #TrophyKvastur, #TrophyLeech, #TrophyLox, #TrophyMole, #TrophyMoose, #TrophyMorgen, #TrophyNeck, #TrophySeal, #TrophySeeker, #TrophySeekerBrute, #TrophySeekerQueen, #TrophySerpent, #TrophySGolem, #TrophySkeleton, #TrophySkeletonHildir, #TrophySkeletonPoison, #TrophySurtling, #TrophyTheElder, #TrophyTick, #TrophyUlv, #TrophyVolture, #TrophyWolf, #TrophyWraith, #TrophyWrithan, #Turnip, #TurnipSeeds, #TurnipStew, #TurretBolt, #TurretBoltBloodgold, #TurretBoltBone, #TurretBoltFlametal, #TurretBoltWood, #UndeadBjornRibcage, #Upgrader0Armor, #Upgrader0Weapon, #Upgrader1Armor, #Upgrader1Weapon, #Upgrader2Armor, #Upgrader2Weapon, #Upgrader3Armor, #Upgrader3Weapon, #Upgrader4Armor, #Upgrader4Weapon, #Upgrader5Armor, #Upgrader5Weapon, #Upgrader6Armor, #Upgrader6Weapon, #Upgrader7Armor, #Upgrader7Weapon, #VikingCupcake, #VikingCupcakeUncooked, #Vineberry, #VineberrySeeds, #VineGreenSeeds, #Voidplasm, #VoltureEgg, #VoltureMeat, #Wishbone, #Wisp, #WitheredBone, #WolfClaw, #WolfFang, #WolfHairBundle, #WolfJerky, #WolfMeat, #WolfMeatSkewer, #WolfPelt, #Wood, #WrithanRoots, #YagluthDrop, #YggdrasilPorridge, #YggdrasilWood, #YmirRemains";
}