Decompiled source of AutoPickupIgnorer v1.0.2

AutoPickupIgnorer.dll

Decompiled 2 years ago
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Reflection;
using System.Reflection.Emit;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Runtime.Versioning;
using BepInEx;
using BepInEx.Configuration;
using HarmonyLib;
using HarmonyLib.Tools;
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("PipMod.AutoPickupIgnorer", "Pip's Auto-pickup Ignorer", "1.0.0.1")]
[BepInProcess("valheim.exe")]
public class AutoPickupIgnorer : BaseUnityPlugin
{
	private enum PickupBehavior
	{
		Custom,
		IgnoreAll,
		Default
	}

	[HarmonyPatch(typeof(Game), "Awake")]
	private class Game_Awake_Patch
	{
		private static void Postfix(ref bool ___isModded)
		{
			___isModded = true;
		}
	}

	[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")]
	[HarmonyDebug]
	public static class Player_AutoPickup_Patch
	{
		[HarmonyTranspiler]
		private static IEnumerable<CodeInstruction> AutoPickupTranspiler(IEnumerable<CodeInstruction> instructions)
		{
			//IL_0091: Unknown result type (might be due to invalid IL or missing references)
			//IL_009b: Expected O, but got Unknown
			//IL_00b7: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c1: Expected O, but got Unknown
			//IL_00f1: Unknown result type (might be due to invalid IL or missing references)
			//IL_00fb: Expected O, but got Unknown
			//IL_0104: Unknown result type (might be due to invalid IL or missing references)
			//IL_010e: Expected O, but got Unknown
			List<CodeInstruction> list = new List<CodeInstruction>(instructions);
			for (int i = 0; i < list.Count; i++)
			{
				if (list[i].opcode == OpCodes.Stloc_S && list[i].operand.GetType() == typeof(LocalBuilder) && ((LocalBuilder)list[i].operand).LocalIndex == 4)
				{
					object operand = list[i - 4].operand;
					List<CodeInstruction> list2 = new List<CodeInstruction>();
					list2.Add(new CodeInstruction(OpCodes.Ldloc_S, (object)4));
					list2.Add(new CodeInstruction(OpCodes.Ldfld, (object)AccessTools.Field(typeof(ItemDrop), "m_itemData")));
					list2.Add(new CodeInstruction(OpCodes.Callvirt, (object)AccessTools.Method(typeof(AutoPickupIgnorer), "IgnoreItem", new Type[1] { typeof(ItemData) }, (Type[])null)));
					list2.Add(new CodeInstruction(OpCodes.Brtrue, operand));
					List<CodeInstruction> collection = list2;
					list.InsertRange(i + 5, collection);
				}
			}
			return list.AsEnumerable();
		}
	}

	private const string modGUID = "PipMod.AutoPickupIgnorer";

	private const string modName = "Pip's Auto-pickup Ignorer";

	private const string modVersion = "1.0.0.1";

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

	private static ConfigEntry<string> AutoPickupIgnoreList;

	private static List<string> IgnoreList;

	private static ConfigEntry<KeyboardShortcut> ToggleBehaviorHotkey;

	private static PickupBehavior CurrentPickupBehavior;

	private static MessageHud MessageHud;

	private 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";

	private void Awake()
	{
		//IL_0084: Unknown result type (might be due to invalid IL or missing references)
		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.");
		IgnoreList = (from i in AutoPickupIgnoreList.Value.Split(new char[1] { ',' })
			where !i.Trim().StartsWith("#")
			select i).ToList();
		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");
		HarmonyFileLog.Enabled = true;
		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 PickupBehavior.Custom:
				CurrentPickupBehavior = PickupBehavior.IgnoreAll;
				MessageHud.ShowMessage((MessageType)2, "Ignoring all items", 0, (Sprite)null);
				break;
			case PickupBehavior.IgnoreAll:
				CurrentPickupBehavior = PickupBehavior.Default;
				MessageHud.ShowMessage((MessageType)2, "Default pickup behavior", 0, (Sprite)null);
				break;
			case PickupBehavior.Default:
				CurrentPickupBehavior = PickupBehavior.Custom;
				MessageHud.ShowMessage((MessageType)2, "Ignoring custom items", 0, (Sprite)null);
				break;
			default:
				CurrentPickupBehavior = PickupBehavior.Custom;
				MessageHud.ShowMessage((MessageType)2, "Ignoring custom items", 0, (Sprite)null);
				break;
			}
		}
	}

	public static bool IgnoreItem(ItemData itemData)
	{
		return CurrentPickupBehavior == PickupBehavior.IgnoreAll || (CurrentPickupBehavior == PickupBehavior.Custom && IgnoreList.Contains(((Object)itemData.m_dropPrefab).name));
	}
}
internal class ValheimItem
{
	public string Item { get; set; }

	public string Token { get; set; }

	public string Name { get; set; }

	public string Type { get; set; }
}