Please disclose if any significant portion of your mod was created 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 AutoPickupIgnorer v1.2.0
AutoPickupIgnorer.dll
Decompiled a week agousing 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"; }