Decompiled source of Modded Bug Fix v1.3.0

ModdedBugFix.dll

Decompiled 5 days ago
using System;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using BepInEx;
using BepInEx.Bootstrap;
using Dungeonator;
using Gungeon;
using HarmonyLib;
using Microsoft.CodeAnalysis;
using ModdedBugFix.Mods;
using Mono.Cecil;
using Mono.Cecil.Cil;
using Mono.Collections.Generic;
using MonoMod.Cil;
using MonoMod.Utils;
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("ModdedBugFix")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("N/A")]
[assembly: AssemblyProduct("ModdedBugFix")]
[assembly: AssemblyCopyright("Copyright © N/A 2024")]
[assembly: AssemblyTrademark("")]
[assembly: ComVisible(false)]
[assembly: Guid("b3366f76-a9d7-4941-918c-347c0111d8c6")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: AssemblyVersion("1.0.0.0")]
[module: RefSafetyRules(11)]
namespace Microsoft.CodeAnalysis
{
	[CompilerGenerated]
	[Microsoft.CodeAnalysis.Embedded]
	internal sealed class EmbeddedAttribute : Attribute
	{
	}
}
namespace System.Runtime.CompilerServices
{
	[CompilerGenerated]
	[Microsoft.CodeAnalysis.Embedded]
	[AttributeUsage(AttributeTargets.Module, AllowMultiple = false, Inherited = false)]
	internal sealed class RefSafetyRulesAttribute : Attribute
	{
		public readonly int Version;

		public RefSafetyRulesAttribute(int P_0)
		{
			Version = P_0;
		}
	}
}
namespace ModdedBugFix
{
	[HarmonyPatch]
	public static class GetByEncounterNameFix
	{
		public static Dictionary<string, PickupObject> EnglishItemNames = new Dictionary<string, PickupObject>
		{
			{
				"magic lamp",
				PickupObjectDatabase.GetById(0)
			},
			{
				"winchester",
				PickupObjectDatabase.GetById(1)
			},
			{
				"thompson sub-machinegun",
				PickupObjectDatabase.GetById(2)
			},
			{
				"screecher",
				PickupObjectDatabase.GetById(3)
			},
			{
				"sticky crossbow",
				PickupObjectDatabase.GetById(4)
			},
			{
				"a.w.p.",
				PickupObjectDatabase.GetById(5)
			},
			{
				"zorgun",
				PickupObjectDatabase.GetById(6)
			},
			{
				"barrel",
				PickupObjectDatabase.GetById(7)
			},
			{
				"bow",
				PickupObjectDatabase.GetById(8)
			},
			{
				"dueling pistol",
				PickupObjectDatabase.GetById(9)
			},
			{
				"mega douser",
				PickupObjectDatabase.GetById(10)
			},
			{
				"crossbow",
				PickupObjectDatabase.GetById(12)
			},
			{
				"thunderclap",
				PickupObjectDatabase.GetById(13)
			},
			{
				"bee hive",
				PickupObjectDatabase.GetById(14)
			},
			{
				"ak-47",
				PickupObjectDatabase.GetById(15)
			},
			{
				"yari launcher",
				PickupObjectDatabase.GetById(16)
			},
			{
				"heck blaster",
				PickupObjectDatabase.GetById(17)
			},
			{
				"blooper",
				PickupObjectDatabase.GetById(18)
			},
			{
				"grenade launcher",
				PickupObjectDatabase.GetById(19)
			},
			{
				"moonscraper",
				PickupObjectDatabase.GetById(20)
			},
			{
				"bsg",
				PickupObjectDatabase.GetById(21)
			},
			{
				"shades's revolver",
				PickupObjectDatabase.GetById(22)
			},
			{
				"dungeon eagle",
				PickupObjectDatabase.GetById(23)
			},
			{
				"dart gun",
				PickupObjectDatabase.GetById(24)
			},
			{
				"m1",
				PickupObjectDatabase.GetById(25)
			},
			{
				"nail gun",
				PickupObjectDatabase.GetById(26)
			},
			{
				"light gun",
				PickupObjectDatabase.GetById(27)
			},
			{
				"mailbox",
				PickupObjectDatabase.GetById(28)
			},
			{
				"vertebraek-47",
				PickupObjectDatabase.GetById(29)
			},
			{
				"m1911",
				PickupObjectDatabase.GetById(30)
			},
			{
				"klobbe",
				PickupObjectDatabase.GetById(31)
			},
			{
				"void marshal",
				PickupObjectDatabase.GetById(32)
			},
			{
				"tear jerker",
				PickupObjectDatabase.GetById(33)
			},
			{
				"smiley's revolver",
				PickupObjectDatabase.GetById(35)
			},
			{
				"megahand",
				PickupObjectDatabase.GetById(36)
			},
			{
				"serious cannon",
				PickupObjectDatabase.GetById(37)
			},
			{
				"magnum",
				PickupObjectDatabase.GetById(38)
			},
			{
				"rpg",
				PickupObjectDatabase.GetById(39)
			},
			{
				"freeze ray",
				PickupObjectDatabase.GetById(40)
			},
			{
				"heroine",
				PickupObjectDatabase.GetById(41)
			},
			{
				"trank gun",
				PickupObjectDatabase.GetById(42)
			},
			{
				"machine pistol",
				PickupObjectDatabase.GetById(43)
			},
			{
				"skull spitter",
				PickupObjectDatabase.GetById(45)
			},
			{
				"jolter",
				PickupObjectDatabase.GetById(47)
			},
			{
				"sniper rifle",
				PickupObjectDatabase.GetById(49)
			},
			{
				"saa",
				PickupObjectDatabase.GetById(50)
			},
			{
				"regular shotgun",
				PickupObjectDatabase.GetById(51)
			},
			{
				"crescent crossbow",
				PickupObjectDatabase.GetById(52)
			},
			{
				"au gun",
				PickupObjectDatabase.GetById(53)
			},
			{
				"laser rifle",
				PickupObjectDatabase.GetById(54)
			},
			{
				"void shotgun",
				PickupObjectDatabase.GetById(55)
			},
			{
				"38 special",
				PickupObjectDatabase.GetById(56)
			},
			{
				"alien sidearm",
				PickupObjectDatabase.GetById(57)
			},
			{
				"void core assault rifle",
				PickupObjectDatabase.GetById(58)
			},
			{
				"hegemony rifle",
				PickupObjectDatabase.GetById(59)
			},
			{
				"demon head",
				PickupObjectDatabase.GetById(60)
			},
			{
				"bundle of wands",
				PickupObjectDatabase.GetById(61)
			},
			{
				"colt 1851",
				PickupObjectDatabase.GetById(62)
			},
			{
				"medkit",
				PickupObjectDatabase.GetById(63)
			},
			{
				"potion of lead skin",
				PickupObjectDatabase.GetById(64)
			},
			{
				"knife shield",
				PickupObjectDatabase.GetById(65)
			},
			{
				"proximity mine",
				PickupObjectDatabase.GetById(66)
			},
			{
				"key",
				PickupObjectDatabase.GetById(67)
			},
			{
				"bullet time",
				PickupObjectDatabase.GetById(69)
			},
			{
				"decoy",
				PickupObjectDatabase.GetById(71)
			},
			{
				"half heart",
				PickupObjectDatabase.GetById(73)
			},
			{
				"supply drop",
				PickupObjectDatabase.GetById(77)
			},
			{
				"makarov",
				PickupObjectDatabase.GetById(79)
			},
			{
				"budget revolver",
				PickupObjectDatabase.GetById(80)
			},
			{
				"deck4rd",
				PickupObjectDatabase.GetById(81)
			},
			{
				"elephant gun",
				PickupObjectDatabase.GetById(82)
			},
			{
				"unfinished gun",
				PickupObjectDatabase.GetById(83)
			},
			{
				"vulcan cannon",
				PickupObjectDatabase.GetById(84)
			},
			{
				"full heart",
				PickupObjectDatabase.GetById(85)
			},
			{
				"marine sidearm",
				PickupObjectDatabase.GetById(86)
			},
			{
				"gamma ray",
				PickupObjectDatabase.GetById(87)
			},
			{
				"robot's right hand",
				PickupObjectDatabase.GetById(88)
			},
			{
				"rogue special",
				PickupObjectDatabase.GetById(89)
			},
			{
				"eye of the beholster",
				PickupObjectDatabase.GetById(90)
			},
			{
				"h4mmer",
				PickupObjectDatabase.GetById(91)
			},
			{
				"stinger",
				PickupObjectDatabase.GetById(92)
			},
			{
				"old goldie",
				PickupObjectDatabase.GetById(93)
			},
			{
				"mac10",
				PickupObjectDatabase.GetById(94)
			},
			{
				"akey-47",
				PickupObjectDatabase.GetById(95)
			},
			{
				"m16",
				PickupObjectDatabase.GetById(96)
			},
			{
				"polaris",
				PickupObjectDatabase.GetById(97)
			},
			{
				"patriot",
				PickupObjectDatabase.GetById(98)
			},
			{
				"rusty sidearm",
				PickupObjectDatabase.GetById(99)
			},
			{
				"unicorn horn",
				PickupObjectDatabase.GetById(100)
			},
			{
				"scope",
				PickupObjectDatabase.GetById(102)
			},
			{
				"ration",
				PickupObjectDatabase.GetById(104)
			},
			{
				"fortune's favor",
				PickupObjectDatabase.GetById(105)
			},
			{
				"jetpack",
				PickupObjectDatabase.GetById(106)
			},
			{
				"raiden coil",
				PickupObjectDatabase.GetById(107)
			},
			{
				"bomb",
				PickupObjectDatabase.GetById(108)
			},
			{
				"ice bomb",
				PickupObjectDatabase.GetById(109)
			},
			{
				"magic sweet",
				PickupObjectDatabase.GetById(110)
			},
			{
				"heavy bullets",
				PickupObjectDatabase.GetById(111)
			},
			{
				"cartographer's ring",
				PickupObjectDatabase.GetById(112)
			},
			{
				"rocket-powered bullets",
				PickupObjectDatabase.GetById(113)
			},
			{
				"bionic leg",
				PickupObjectDatabase.GetById(114)
			},
			{
				"ballot",
				PickupObjectDatabase.GetById(115)
			},
			{
				"ammo synthesizer",
				PickupObjectDatabase.GetById(116)
			},
			{
				"eyepatch",
				PickupObjectDatabase.GetById(118)
			},
			{
				"metronome",
				PickupObjectDatabase.GetById(119)
			},
			{
				"armor",
				PickupObjectDatabase.GetById(120)
			},
			{
				"disintegrator",
				PickupObjectDatabase.GetById(121)
			},
			{
				"blunderbuss",
				PickupObjectDatabase.GetById(122)
			},
			{
				"pulse cannon",
				PickupObjectDatabase.GetById(123)
			},
			{
				"cactus",
				PickupObjectDatabase.GetById(124)
			},
			{
				"flame hand",
				PickupObjectDatabase.GetById(125)
			},
			{
				"shotbow",
				PickupObjectDatabase.GetById(126)
			},
			{
				"junk",
				PickupObjectDatabase.GetById(127)
			},
			{
				"rube-adyne mk.ii",
				PickupObjectDatabase.GetById(128)
			},
			{
				"com4nd0",
				PickupObjectDatabase.GetById(129)
			},
			{
				"glacier",
				PickupObjectDatabase.GetById(130)
			},
			{
				"utility belt",
				PickupObjectDatabase.GetById(131)
			},
			{
				"ring of miserly protection",
				PickupObjectDatabase.GetById(132)
			},
			{
				"backpack",
				PickupObjectDatabase.GetById(133)
			},
			{
				"ammo belt",
				PickupObjectDatabase.GetById(134)
			},
			{
				"cog of battle",
				PickupObjectDatabase.GetById(135)
			},
			{
				"c4",
				PickupObjectDatabase.GetById(136)
			},
			{
				"map",
				PickupObjectDatabase.GetById(137)
			},
			{
				"honeycomb",
				PickupObjectDatabase.GetById(138)
			},
			{
				"master of unlocking",
				PickupObjectDatabase.GetById(140)
			},
			{
				"rube-adyne prototype",
				PickupObjectDatabase.GetById(142)
			},
			{
				"shotgun full of hate",
				PickupObjectDatabase.GetById(143)
			},
			{
				"witch pistol",
				PickupObjectDatabase.GetById(145)
			},
			{
				"dragunfire",
				PickupObjectDatabase.GetById(146)
			},
			{
				"lies",
				PickupObjectDatabase.GetById(148)
			},
			{
				"face melter",
				PickupObjectDatabase.GetById(149)
			},
			{
				"t-shirt cannon",
				PickupObjectDatabase.GetById(150)
			},
			{
				"the membrane",
				PickupObjectDatabase.GetById(151)
			},
			{
				"the kiln",
				PickupObjectDatabase.GetById(152)
			},
			{
				"shock rifle",
				PickupObjectDatabase.GetById(153)
			},
			{
				"trashcannon",
				PickupObjectDatabase.GetById(154)
			},
			{
				"singularity",
				PickupObjectDatabase.GetById(155)
			},
			{
				"laser lotus",
				PickupObjectDatabase.GetById(156)
			},
			{
				"big iron",
				PickupObjectDatabase.GetById(157)
			},
			{
				"amulet of the pit lord",
				PickupObjectDatabase.GetById(158)
			},
			{
				"gundromeda strain",
				PickupObjectDatabase.GetById(159)
			},
			{
				"gunknight helmet",
				PickupObjectDatabase.GetById(160)
			},
			{
				"gunknight greaves",
				PickupObjectDatabase.GetById(161)
			},
			{
				"gunknight gauntlet",
				PickupObjectDatabase.GetById(162)
			},
			{
				"gunknight armor",
				PickupObjectDatabase.GetById(163)
			},
			{
				"heart synthesizer",
				PickupObjectDatabase.GetById(164)
			},
			{
				"oiled cylinder",
				PickupObjectDatabase.GetById(165)
			},
			{
				"shelleton key",
				PickupObjectDatabase.GetById(166)
			},
			{
				"bloody eye",
				PickupObjectDatabase.GetById(167)
			},
			{
				"double vision",
				PickupObjectDatabase.GetById(168)
			},
			{
				"black hole gun",
				PickupObjectDatabase.GetById(169)
			},
			{
				"ice cube",
				PickupObjectDatabase.GetById(170)
			},
			{
				"ghost bullets",
				PickupObjectDatabase.GetById(172)
			},
			{
				"potion of gun friendship",
				PickupObjectDatabase.GetById(174)
			},
			{
				"tangler",
				PickupObjectDatabase.GetById(175)
			},
			{
				"gungeon ant",
				PickupObjectDatabase.GetById(176)
			},
			{
				"alien engine",
				PickupObjectDatabase.GetById(177)
			},
			{
				"crestfaller",
				PickupObjectDatabase.GetById(178)
			},
			{
				"proton backpack",
				PickupObjectDatabase.GetById(179)
			},
			{
				"grasschopper",
				PickupObjectDatabase.GetById(180)
			},
			{
				"winchester rifle",
				PickupObjectDatabase.GetById(181)
			},
			{
				"grey mauser",
				PickupObjectDatabase.GetById(182)
			},
			{
				"ser manuel's revolver",
				PickupObjectDatabase.GetById(183)
			},
			{
				"the judge",
				PickupObjectDatabase.GetById(184)
			},
			{
				"machine fist",
				PickupObjectDatabase.GetById(186)
			},
			{
				"disarming personality",
				PickupObjectDatabase.GetById(187)
			},
			{
				"rolling eye",
				PickupObjectDatabase.GetById(190)
			},
			{
				"ring of fire resistance",
				PickupObjectDatabase.GetById(191)
			},
			{
				"bug boots",
				PickupObjectDatabase.GetById(193)
			},
			{
				"fossilized gun",
				PickupObjectDatabase.GetById(196)
			},
			{
				"pea shooter",
				PickupObjectDatabase.GetById(197)
			},
			{
				"gunslinger's ashes",
				PickupObjectDatabase.GetById(198)
			},
			{
				"luxin cannon",
				PickupObjectDatabase.GetById(199)
			},
			{
				"charmed bow",
				PickupObjectDatabase.GetById(200)
			},
			{
				"portable turret",
				PickupObjectDatabase.GetById(201)
			},
			{
				"sawed-off",
				PickupObjectDatabase.GetById(202)
			},
			{
				"cigarettes",
				PickupObjectDatabase.GetById(203)
			},
			{
				"irradiated lead",
				PickupObjectDatabase.GetById(204)
			},
			{
				"poison vial",
				PickupObjectDatabase.GetById(205)
			},
			{
				"charm horn",
				PickupObjectDatabase.GetById(206)
			},
			{
				"plague pistol",
				PickupObjectDatabase.GetById(207)
			},
			{
				"plunger",
				PickupObjectDatabase.GetById(208)
			},
			{
				"sense of direction",
				PickupObjectDatabase.GetById(209)
			},
			{
				"gunbow",
				PickupObjectDatabase.GetById(210)
			},
			{
				"ballistic boots",
				PickupObjectDatabase.GetById(212)
			},
			{
				"lichy trigger finger",
				PickupObjectDatabase.GetById(213)
			},
			{
				"coin crown",
				PickupObjectDatabase.GetById(214)
			},
			{
				"box",
				PickupObjectDatabase.GetById(216)
			},
			{
				"old knight's shield",
				PickupObjectDatabase.GetById(219)
			},
			{
				"old knight's helm",
				PickupObjectDatabase.GetById(222)
			},
			{
				"cold 45",
				PickupObjectDatabase.GetById(223)
			},
			{
				"blank",
				PickupObjectDatabase.GetById(224)
			},
			{
				"ice breaker",
				PickupObjectDatabase.GetById(225)
			},
			{
				"wristbow",
				PickupObjectDatabase.GetById(227)
			},
			{
				"particulator",
				PickupObjectDatabase.GetById(228)
			},
			{
				"hegemony carbine",
				PickupObjectDatabase.GetById(229)
			},
			{
				"helix",
				PickupObjectDatabase.GetById(230)
			},
			{
				"gilded hydra",
				PickupObjectDatabase.GetById(231)
			},
			{
				"space friend",
				PickupObjectDatabase.GetById(232)
			},
			{
				"ibomb companion app",
				PickupObjectDatabase.GetById(234)
			},
			{
				"aged bell",
				PickupObjectDatabase.GetById(237)
			},
			{
				"duct tape",
				PickupObjectDatabase.GetById(239)
			},
			{
				"crutch",
				PickupObjectDatabase.GetById(240)
			},
			{
				"scattershot",
				PickupObjectDatabase.GetById(241)
			},
			{
				"napalm strike",
				PickupObjectDatabase.GetById(242)
			},
			{
				"infuriating note",
				PickupObjectDatabase.GetById(243)
			},
			{
				"owl",
				PickupObjectDatabase.GetById(249)
			},
			{
				"grappling hook",
				PickupObjectDatabase.GetById(250)
			},
			{
				"prize pistol",
				PickupObjectDatabase.GetById(251)
			},
			{
				"air strike",
				PickupObjectDatabase.GetById(252)
			},
			{
				"gungeon pepper",
				PickupObjectDatabase.GetById(253)
			},
			{
				"ring of chest friendship",
				PickupObjectDatabase.GetById(254)
			},
			{
				"ancient hero's bandana",
				PickupObjectDatabase.GetById(255)
			},
			{
				"heavy boots",
				PickupObjectDatabase.GetById(256)
			},
			{
				"broccoli",
				PickupObjectDatabase.GetById(258)
			},
			{
				"antibody",
				PickupObjectDatabase.GetById(259)
			},
			{
				"pink guon stone",
				PickupObjectDatabase.GetById(260)
			},
			{
				"white guon stone",
				PickupObjectDatabase.GetById(262)
			},
			{
				"orange guon stone",
				PickupObjectDatabase.GetById(263)
			},
			{
				"clear guon stone",
				PickupObjectDatabase.GetById(264)
			},
			{
				"old knight's flask",
				PickupObjectDatabase.GetById(267)
			},
			{
				"red guon stone",
				PickupObjectDatabase.GetById(269)
			},
			{
				"blue guon stone",
				PickupObjectDatabase.GetById(270)
			},
			{
				"riddle of lead",
				PickupObjectDatabase.GetById(271)
			},
			{
				"iron coin",
				PickupObjectDatabase.GetById(272)
			},
			{
				"laser sight",
				PickupObjectDatabase.GetById(273)
			},
			{
				"dark marker",
				PickupObjectDatabase.GetById(274)
			},
			{
				"flare gun",
				PickupObjectDatabase.GetById(275)
			},
			{
				"spice",
				PickupObjectDatabase.GetById(276)
			},
			{
				"fat bullets",
				PickupObjectDatabase.GetById(277)
			},
			{
				"frost bullets ",
				PickupObjectDatabase.GetById(278)
			},
			{
				"super hot watch",
				PickupObjectDatabase.GetById(279)
			},
			{
				"drum clip",
				PickupObjectDatabase.GetById(280)
			},
			{
				"gungeon blueprint",
				PickupObjectDatabase.GetById(281)
			},
			{
				"homing bullets",
				PickupObjectDatabase.GetById(284)
			},
			{
				"blood brooch",
				PickupObjectDatabase.GetById(285)
			},
			{
				"+1 bullets",
				PickupObjectDatabase.GetById(286)
			},
			{
				"backup gun",
				PickupObjectDatabase.GetById(287)
			},
			{
				"bouncy bullets",
				PickupObjectDatabase.GetById(288)
			},
			{
				"seven-leaf clover",
				PickupObjectDatabase.GetById(289)
			},
			{
				"sunglasses",
				PickupObjectDatabase.GetById(290)
			},
			{
				"meatbun",
				PickupObjectDatabase.GetById(291)
			},
			{
				"molotov launcher",
				PickupObjectDatabase.GetById(292)
			},
			{
				"mimic tooth necklace",
				PickupObjectDatabase.GetById(293)
			},
			{
				"ring of mimic friendship",
				PickupObjectDatabase.GetById(294)
			},
			{
				"hot lead",
				PickupObjectDatabase.GetById(295)
			},
			{
				"hegemony credit",
				PickupObjectDatabase.GetById(297)
			},
			{
				"shock rounds",
				PickupObjectDatabase.GetById(298)
			},
			{
				"super space turtle",
				PickupObjectDatabase.GetById(299)
			},
			{
				"dog",
				PickupObjectDatabase.GetById(300)
			},
			{
				"bullet that can kill the past",
				PickupObjectDatabase.GetById(303)
			},
			{
				"explosive rounds",
				PickupObjectDatabase.GetById(304)
			},
			{
				"old crest",
				PickupObjectDatabase.GetById(305)
			},
			{
				"escape rope",
				PickupObjectDatabase.GetById(306)
			},
			{
				"wax wings",
				PickupObjectDatabase.GetById(307)
			},
			{
				"cluster mine",
				PickupObjectDatabase.GetById(308)
			},
			{
				"cloranthy ring",
				PickupObjectDatabase.GetById(309)
			},
			{
				"fairy wings",
				PickupObjectDatabase.GetById(310)
			},
			{
				"clone",
				PickupObjectDatabase.GetById(311)
			},
			{
				"blast helmet",
				PickupObjectDatabase.GetById(312)
			},
			{
				"monster blood",
				PickupObjectDatabase.GetById(313)
			},
			{
				"nanomachines",
				PickupObjectDatabase.GetById(314)
			},
			{
				"gunboots",
				PickupObjectDatabase.GetById(315)
			},
			{
				"gnawed key",
				PickupObjectDatabase.GetById(316)
			},
			{
				"r2g2",
				PickupObjectDatabase.GetById(318)
			},
			{
				"ticket",
				PickupObjectDatabase.GetById(320)
			},
			{
				"gold ammolet",
				PickupObjectDatabase.GetById(321)
			},
			{
				"lodestone ammolet",
				PickupObjectDatabase.GetById(322)
			},
			{
				"angry bullets",
				PickupObjectDatabase.GetById(323)
			},
			{
				"chaos ammolet",
				PickupObjectDatabase.GetById(325)
			},
			{
				"number 2",
				PickupObjectDatabase.GetById(326)
			},
			{
				"corsair",
				PickupObjectDatabase.GetById(327)
			},
			{
				"charge shot",
				PickupObjectDatabase.GetById(328)
			},
			{
				"zilla shotgun",
				PickupObjectDatabase.GetById(329)
			},
			{
				"the emperor",
				PickupObjectDatabase.GetById(330)
			},
			{
				"science cannon",
				PickupObjectDatabase.GetById(331)
			},
			{
				"lil' bomber",
				PickupObjectDatabase.GetById(332)
			},
			{
				"mutation",
				PickupObjectDatabase.GetById(333)
			},
			{
				"wind up gun",
				PickupObjectDatabase.GetById(334)
			},
			{
				"silencer",
				PickupObjectDatabase.GetById(335)
			},
			{
				"pitchfork",
				PickupObjectDatabase.GetById(336)
			},
			{
				"composite gun",
				PickupObjectDatabase.GetById(337)
			},
			{
				"gunther",
				PickupObjectDatabase.GetById(338)
			},
			{
				"mahoguny",
				PickupObjectDatabase.GetById(339)
			},
			{
				"lower case r",
				PickupObjectDatabase.GetById(340)
			},
			{
				"buzzkill",
				PickupObjectDatabase.GetById(341)
			},
			{
				"uranium ammolet",
				PickupObjectDatabase.GetById(342)
			},
			{
				"copper ammolet",
				PickupObjectDatabase.GetById(343)
			},
			{
				"frost ammolet",
				PickupObjectDatabase.GetById(344)
			},
			{
				"fightsabre",
				PickupObjectDatabase.GetById(345)
			},
			{
				"huntsman",
				PickupObjectDatabase.GetById(346)
			},
			{
				"shotgrub",
				PickupObjectDatabase.GetById(347)
			},
			{
				"prime primer",
				PickupObjectDatabase.GetById(348)
			},
			{
				"planar lead",
				PickupObjectDatabase.GetById(349)
			},
			{
				"obsidian shell casing",
				PickupObjectDatabase.GetById(350)
			},
			{
				"arcane gunpowder",
				PickupObjectDatabase.GetById(351)
			},
			{
				"shadow bullets",
				PickupObjectDatabase.GetById(352)
			},
			{
				"enraging photo",
				PickupObjectDatabase.GetById(353)
			},
			{
				"military training",
				PickupObjectDatabase.GetById(354)
			},
			{
				"chromesteel assault rifle",
				PickupObjectDatabase.GetById(355)
			},
			{
				"trusty lockpicks",
				PickupObjectDatabase.GetById(356)
			},
			{
				"cat claw",
				PickupObjectDatabase.GetById(357)
			},
			{
				"railgun",
				PickupObjectDatabase.GetById(358)
			},
			{
				"compressed air tank",
				PickupObjectDatabase.GetById(359)
			},
			{
				"snakemaker",
				PickupObjectDatabase.GetById(360)
			},
			{
				"bullet bore",
				PickupObjectDatabase.GetById(362)
			},
			{
				"trick gun",
				PickupObjectDatabase.GetById(363)
			},
			{
				"heart of ice",
				PickupObjectDatabase.GetById(364)
			},
			{
				"mass shotgun",
				PickupObjectDatabase.GetById(365)
			},
			{
				"molotov",
				PickupObjectDatabase.GetById(366)
			},
			{
				"hunter's journal",
				PickupObjectDatabase.GetById(367)
			},
			{
				"el tigre",
				PickupObjectDatabase.GetById(368)
			},
			{
				"bait launcher",
				PickupObjectDatabase.GetById(369)
			},
			{
				"prototype railgun",
				PickupObjectDatabase.GetById(370)
			},
			{
				"rc rocket",
				PickupObjectDatabase.GetById(372)
			},
			{
				"alpha bullet",
				PickupObjectDatabase.GetById(373)
			},
			{
				"omega bullets",
				PickupObjectDatabase.GetById(374)
			},
			{
				"easy reload bullets",
				PickupObjectDatabase.GetById(375)
			},
			{
				"brick breaker",
				PickupObjectDatabase.GetById(376)
			},
			{
				"excaliber",
				PickupObjectDatabase.GetById(377)
			},
			{
				"derringer",
				PickupObjectDatabase.GetById(378)
			},
			{
				"shotgun full of love",
				PickupObjectDatabase.GetById(379)
			},
			{
				"betrayer's shield",
				PickupObjectDatabase.GetById(380)
			},
			{
				"triple crossbow",
				PickupObjectDatabase.GetById(381)
			},
			{
				"sling",
				PickupObjectDatabase.GetById(382)
			},
			{
				"flash ray",
				PickupObjectDatabase.GetById(383)
			},
			{
				"phoenix",
				PickupObjectDatabase.GetById(384)
			},
			{
				"hexagun",
				PickupObjectDatabase.GetById(385)
			},
			{
				"frost giant",
				PickupObjectDatabase.GetById(387)
			},
			{
				"cobalt hammer",
				PickupObjectDatabase.GetById(390)
			},
			{
				"cell key",
				PickupObjectDatabase.GetById(392)
			},
			{
				"anvillain",
				PickupObjectDatabase.GetById(393)
			},
			{
				"mine cutter",
				PickupObjectDatabase.GetById(394)
			},
			{
				"staff of firepower",
				PickupObjectDatabase.GetById(395)
			},
			{
				"table tech sight",
				PickupObjectDatabase.GetById(396)
			},
			{
				"table tech money",
				PickupObjectDatabase.GetById(397)
			},
			{
				"table tech rocket",
				PickupObjectDatabase.GetById(398)
			},
			{
				"table tech rage",
				PickupObjectDatabase.GetById(399)
			},
			{
				"table tech blanks",
				PickupObjectDatabase.GetById(400)
			},
			{
				"gungine",
				PickupObjectDatabase.GetById(401)
			},
			{
				"snowballer",
				PickupObjectDatabase.GetById(402)
			},
			{
				"melted rock",
				PickupObjectDatabase.GetById(403)
			},
			{
				"siren",
				PickupObjectDatabase.GetById(404)
			},
			{
				"rattler",
				PickupObjectDatabase.GetById(406)
			},
			{
				"sixth chamber",
				PickupObjectDatabase.GetById(407)
			},
			{
				"busted television",
				PickupObjectDatabase.GetById(409)
			},
			{
				"battery bullets",
				PickupObjectDatabase.GetById(410)
			},
			{
				"coolant leak",
				PickupObjectDatabase.GetById(411)
			},
			{
				"friendship cookie",
				PickupObjectDatabase.GetById(412)
			},
			{
				"hero's sword",
				PickupObjectDatabase.GetById(413)
			},
			{
				"live ammo",
				PickupObjectDatabase.GetById(414)
			},
			{
				"replacement arm",
				PickupObjectDatabase.GetById(415)
			},
			{
				"balloon!",
				PickupObjectDatabase.GetById(416)
			},
			{
				"blasphemy",
				PickupObjectDatabase.GetById(417)
			},
			{
				"heart holster",
				PickupObjectDatabase.GetById(421)
			},
			{
				"heart lunchbox",
				PickupObjectDatabase.GetById(422)
			},
			{
				"heart locket",
				PickupObjectDatabase.GetById(423)
			},
			{
				"heart bottle",
				PickupObjectDatabase.GetById(424)
			},
			{
				"heart purse",
				PickupObjectDatabase.GetById(425)
			},
			{
				"shotga cola",
				PickupObjectDatabase.GetById(426)
			},
			{
				"shotgun coffee",
				PickupObjectDatabase.GetById(427)
			},
			{
				"liquid valkyrie",
				PickupObjectDatabase.GetById(431)
			},
			{
				"jar of bees",
				PickupObjectDatabase.GetById(432)
			},
			{
				"stuffed star",
				PickupObjectDatabase.GetById(433)
			},
			{
				"bullet idol",
				PickupObjectDatabase.GetById(434)
			},
			{
				"mustache",
				PickupObjectDatabase.GetById(435)
			},
			{
				"bloodied scarf",
				PickupObjectDatabase.GetById(436)
			},
			{
				"muscle relaxant",
				PickupObjectDatabase.GetById(437)
			},
			{
				"explosive decoy",
				PickupObjectDatabase.GetById(438)
			},
			{
				"bracket key",
				PickupObjectDatabase.GetById(439)
			},
			{
				"ruby bracelet",
				PickupObjectDatabase.GetById(440)
			},
			{
				"emerald bracelet",
				PickupObjectDatabase.GetById(441)
			},
			{
				"badge",
				PickupObjectDatabase.GetById(442)
			},
			{
				"big boy",
				PickupObjectDatabase.GetById(443)
			},
			{
				"trident",
				PickupObjectDatabase.GetById(444)
			},
			{
				"the scrambler",
				PickupObjectDatabase.GetById(445)
			},
			{
				"shield of the maiden",
				PickupObjectDatabase.GetById(447)
			},
			{
				"boomerang",
				PickupObjectDatabase.GetById(448)
			},
			{
				"teleporter prototype",
				PickupObjectDatabase.GetById(449)
			},
			{
				"armor synthesizer",
				PickupObjectDatabase.GetById(450)
			},
			{
				"hero pig",
				PickupObjectDatabase.GetById(451)
			},
			{
				"sponge",
				PickupObjectDatabase.GetById(452)
			},
			{
				"gas mask",
				PickupObjectDatabase.GetById(453)
			},
			{
				"hazmat suit",
				PickupObjectDatabase.GetById(454)
			},
			{
				"ring of triggers",
				PickupObjectDatabase.GetById(456)
			},
			{
				"armor of thorns",
				PickupObjectDatabase.GetById(457)
			},
			{
				"ring of ethereal form",
				PickupObjectDatabase.GetById(458)
			},
			{
				"chaff grenade",
				PickupObjectDatabase.GetById(460)
			},
			{
				"blank companion's ring",
				PickupObjectDatabase.GetById(461)
			},
			{
				"smoke bomb",
				PickupObjectDatabase.GetById(462)
			},
			{
				"ring of the resourceful rat",
				PickupObjectDatabase.GetById(463)
			},
			{
				"shellegun",
				PickupObjectDatabase.GetById(464)
			},
			{
				"table tech stun",
				PickupObjectDatabase.GetById(465)
			},
			{
				"green guon stone",
				PickupObjectDatabase.GetById(466)
			},
			{
				"master round",
				PickupObjectDatabase.GetById(467)
			},
			{
				"hidden compartment",
				PickupObjectDatabase.GetById(473)
			},
			{
				"abyssal tentacle",
				PickupObjectDatabase.GetById(474)
			},
			{
				"quad laser",
				PickupObjectDatabase.GetById(475)
			},
			{
				"microtransaction gun",
				PickupObjectDatabase.GetById(476)
			},
			{
				"origuni",
				PickupObjectDatabase.GetById(477)
			},
			{
				"banana",
				PickupObjectDatabase.GetById(478)
			},
			{
				"super meat gun",
				PickupObjectDatabase.GetById(479)
			},
			{
				"makeshift cannon",
				PickupObjectDatabase.GetById(480)
			},
			{
				"camera",
				PickupObjectDatabase.GetById(481)
			},
			{
				"gunzheng",
				PickupObjectDatabase.GetById(482)
			},
			{
				"tetrominator",
				PickupObjectDatabase.GetById(483)
			},
			{
				"devolver",
				PickupObjectDatabase.GetById(484)
			},
			{
				"orange",
				PickupObjectDatabase.GetById(485)
			},
			{
				"items_string_not_found",
				PickupObjectDatabase.GetById(486)
			},
			{
				"book of chest anatomy",
				PickupObjectDatabase.GetById(487)
			},
			{
				"ring of chest vampirism",
				PickupObjectDatabase.GetById(488)
			},
			{
				"gun soul",
				PickupObjectDatabase.GetById(489)
			},
			{
				"brick of cash",
				PickupObjectDatabase.GetById(490)
			},
			{
				"wingman",
				PickupObjectDatabase.GetById(491)
			},
			{
				"wolf",
				PickupObjectDatabase.GetById(492)
			},
			{
				"briefcase of cash",
				PickupObjectDatabase.GetById(493)
			},
			{
				"galactic medal of valor",
				PickupObjectDatabase.GetById(494)
			},
			{
				"unity",
				PickupObjectDatabase.GetById(495)
			},
			{
				"elder blank",
				PickupObjectDatabase.GetById(499)
			},
			{
				"hip holster",
				PickupObjectDatabase.GetById(500)
			},
			{
				"bullet",
				PickupObjectDatabase.GetById(503)
			},
			{
				"hyper light blaster",
				PickupObjectDatabase.GetById(504)
			},
			{
				"really special lute",
				PickupObjectDatabase.GetById(506)
			},
			{
				"starpew",
				PickupObjectDatabase.GetById(507)
			},
			{
				"dueling laser",
				PickupObjectDatabase.GetById(508)
			},
			{
				"jk-47",
				PickupObjectDatabase.GetById(510)
			},
			{
				"3rd party controller",
				PickupObjectDatabase.GetById(511)
			},
			{
				"shell",
				PickupObjectDatabase.GetById(512)
			},
			{
				"poxcannon",
				PickupObjectDatabase.GetById(513)
			},
			{
				"directional pad",
				PickupObjectDatabase.GetById(514)
			},
			{
				"mourning star",
				PickupObjectDatabase.GetById(515)
			},
			{
				"triple gun",
				PickupObjectDatabase.GetById(516)
			},
			{
				"combined rifle",
				PickupObjectDatabase.GetById(519)
			},
			{
				"balloon gun",
				PickupObjectDatabase.GetById(520)
			},
			{
				"chance bullets",
				PickupObjectDatabase.GetById(521)
			},
			{
				"stout bullets",
				PickupObjectDatabase.GetById(523)
			},
			{
				"bloody 9mm",
				PickupObjectDatabase.GetById(524)
			},
			{
				"lament configurum",
				PickupObjectDatabase.GetById(525)
			},
			{
				"springheel boots",
				PickupObjectDatabase.GetById(526)
			},
			{
				"charming rounds",
				PickupObjectDatabase.GetById(527)
			},
			{
				"zombie bullets",
				PickupObjectDatabase.GetById(528)
			},
			{
				"battle standard",
				PickupObjectDatabase.GetById(529)
			},
			{
				"remote bullets",
				PickupObjectDatabase.GetById(530)
			},
			{
				"flak bullets",
				PickupObjectDatabase.GetById(531)
			},
			{
				"gilded bullets",
				PickupObjectDatabase.GetById(532)
			},
			{
				"magic bullets",
				PickupObjectDatabase.GetById(533)
			},
			{
				"relodestone",
				PickupObjectDatabase.GetById(536)
			},
			{
				"vorpal gun",
				PickupObjectDatabase.GetById(537)
			},
			{
				"silver bullets",
				PickupObjectDatabase.GetById(538)
			},
			{
				"boxing glove",
				PickupObjectDatabase.GetById(539)
			},
			{
				"glass cannon",
				PickupObjectDatabase.GetById(540)
			},
			{
				"casey",
				PickupObjectDatabase.GetById(541)
			},
			{
				"strafe® gun",
				PickupObjectDatabase.GetById(542)
			},
			{
				"the predator",
				PickupObjectDatabase.GetById(543)
			},
			{
				"ac-15",
				PickupObjectDatabase.GetById(545)
			},
			{
				"windgunner",
				PickupObjectDatabase.GetById(546)
			},
			{
				"knight's gun",
				PickupObjectDatabase.GetById(550)
			},
			{
				"crown of guns",
				PickupObjectDatabase.GetById(551)
			},
			{
				"bottle",
				PickupObjectDatabase.GetById(558)
			},
			{
				"the fat line",
				PickupObjectDatabase.GetById(562)
			},
			{
				"the exotic",
				PickupObjectDatabase.GetById(563)
			},
			{
				"full metal jacket",
				PickupObjectDatabase.GetById(564)
			},
			{
				"glass guon stone",
				PickupObjectDatabase.GetById(565)
			},
			{
				"rad gun",
				PickupObjectDatabase.GetById(566)
			},
			{
				"roll bomb",
				PickupObjectDatabase.GetById(567)
			},
			{
				"helix bullets",
				PickupObjectDatabase.GetById(568)
			},
			{
				"chaos bullets",
				PickupObjectDatabase.GetById(569)
			},
			{
				"yellow chamber",
				PickupObjectDatabase.GetById(570)
			},
			{
				"cursed bullets",
				PickupObjectDatabase.GetById(571)
			},
			{
				"chicken flute",
				PickupObjectDatabase.GetById(572)
			},
			{
				"chest teleporter",
				PickupObjectDatabase.GetById(573)
			},
			{
				"robot's left hand",
				PickupObjectDatabase.GetById(576)
			},
			{
				"turbo-gun",
				PickupObjectDatabase.GetById(577)
			},
			{
				"sprun",
				PickupObjectDatabase.GetById(578)
			},
			{
				"blank bullets",
				PickupObjectDatabase.GetById(579)
			},
			{
				"void core cannon",
				PickupObjectDatabase.GetById(593)
			},
			{
				"moonlight tiara",
				PickupObjectDatabase.GetById(594)
			},
			{
				"life orb",
				PickupObjectDatabase.GetById(595)
			},
			{
				"teapot",
				PickupObjectDatabase.GetById(596)
			},
			{
				"mr. accretion jr.",
				PickupObjectDatabase.GetById(597)
			},
			{
				"stone dome",
				PickupObjectDatabase.GetById(598)
			},
			{
				"bubble blaster",
				PickupObjectDatabase.GetById(599)
			},
			{
				"big shotgun",
				PickupObjectDatabase.GetById(601)
			},
			{
				"gunner",
				PickupObjectDatabase.GetById(602)
			},
			{
				"slinger",
				PickupObjectDatabase.GetById(604)
			},
			{
				"loot bag",
				PickupObjectDatabase.GetById(605)
			},
			{
				"clown mask",
				PickupObjectDatabase.GetById(607)
			},
			{
				"rubenstein's monster",
				PickupObjectDatabase.GetById(609)
			},
			{
				"wood beam",
				PickupObjectDatabase.GetById(610)
			},
			{
				"heroine (wave beam)",
				PickupObjectDatabase.GetById(612)
			},
			{
				"heroine (ice beam)",
				PickupObjectDatabase.GetById(613)
			},
			{
				"heroine (plasma beam)",
				PickupObjectDatabase.GetById(614)
			},
			{
				"heroine (hyper beam)",
				PickupObjectDatabase.GetById(615)
			},
			{
				"quick boomerang",
				PickupObjectDatabase.GetById(617)
			},
			{
				"time stopper",
				PickupObjectDatabase.GetById(618)
			},
			{
				"metal blade",
				PickupObjectDatabase.GetById(619)
			},
			{
				"leaf shield",
				PickupObjectDatabase.GetById(620)
			},
			{
				"atomic fire",
				PickupObjectDatabase.GetById(621)
			},
			{
				"bubble lead",
				PickupObjectDatabase.GetById(622)
			},
			{
				"air shooter",
				PickupObjectDatabase.GetById(623)
			},
			{
				"crash bomber",
				PickupObjectDatabase.GetById(624)
			},
			{
				"drill",
				PickupObjectDatabase.GetById(625)
			},
			{
				"elimentaler",
				PickupObjectDatabase.GetById(626)
			},
			{
				"platinum bullets",
				PickupObjectDatabase.GetById(627)
			},
			{
				"bumbullets",
				PickupObjectDatabase.GetById(630)
			},
			{
				"holey grail",
				PickupObjectDatabase.GetById(631)
			},
			{
				"turkey",
				PickupObjectDatabase.GetById(632)
			},
			{
				"table tech shotgun",
				PickupObjectDatabase.GetById(633)
			},
			{
				"crisis stone",
				PickupObjectDatabase.GetById(634)
			},
			{
				"snowballets",
				PickupObjectDatabase.GetById(636)
			},
			{
				"weird egg",
				PickupObjectDatabase.GetById(637)
			},
			{
				"devolver rounds",
				PickupObjectDatabase.GetById(638)
			},
			{
				"vorpal bullets",
				PickupObjectDatabase.GetById(640)
			},
			{
				"gold junk",
				PickupObjectDatabase.GetById(641)
			},
			{
				"daruma",
				PickupObjectDatabase.GetById(643)
			},
			{
				"portable table device",
				PickupObjectDatabase.GetById(644)
			},
			{
				"turtle problem",
				PickupObjectDatabase.GetById(645)
			},
			{
				"chamber gun",
				PickupObjectDatabase.GetById(647)
			},
			{
				"uppercase r",
				PickupObjectDatabase.GetById(649)
			},
			{
				"hungry bullets",
				PickupObjectDatabase.GetById(655)
			},
			{
				"kruller glaive",
				PickupObjectDatabase.GetById(656)
			},
			{
				"orbital bullets",
				PickupObjectDatabase.GetById(661)
			},
			{
				"partially-eaten cheese",
				PickupObjectDatabase.GetById(662)
			},
			{
				"resourceful sack",
				PickupObjectDatabase.GetById(663)
			},
			{
				"baby good mimic",
				PickupObjectDatabase.GetById(664)
			},
			{
				"macho brace",
				PickupObjectDatabase.GetById(665)
			},
			{
				"table tech heat",
				PickupObjectDatabase.GetById(666)
			},
			{
				"rat boots",
				PickupObjectDatabase.GetById(667)
			},
			{
				"high dragunfire",
				PickupObjectDatabase.GetById(670)
			},
			{
				"gunderfury",
				PickupObjectDatabase.GetById(732)
			},
			{
				"mimic",
				PickupObjectDatabase.GetById(734)
			},
			{
				"sunlight javelin",
				PickupObjectDatabase.GetById(748)
			},
			{
				"evolver",
				PickupObjectDatabase.GetById(755)
			},
			{
				"high kaliber",
				PickupObjectDatabase.GetById(761)
			},
			{
				"finished gun",
				PickupObjectDatabase.GetById(762)
			},
			{
				"magazine rack",
				PickupObjectDatabase.GetById(814)
			},
			{
				"lich's eye bullets",
				PickupObjectDatabase.GetById(815)
			},
			{
				"cat bullet king throne",
				PickupObjectDatabase.GetById(817)
			},
			{
				"baby good shelleton",
				PickupObjectDatabase.GetById(818)
			},
			{
				"shadow clone",
				PickupObjectDatabase.GetById(820)
			},
			{
				"scouter",
				PickupObjectDatabase.GetById(821)
			},
			{
				"katana bullets",
				PickupObjectDatabase.GetById(822)
			}
		};

		[HarmonyPatch(typeof(GunExt), "SetName", new Type[]
		{
			typeof(PickupObject),
			typeof(GungeonSupportedLanguages),
			typeof(string)
		})]
		[HarmonyPostfix]
		public static void RegisterEnglishName(PickupObject item, GungeonSupportedLanguages lang, string text)
		{
			//IL_0001: Unknown result type (might be due to invalid IL or missing references)
			//IL_0003: Invalid comparison between Unknown and I4
			if ((int)lang <= 0 && !EnglishItemNames.ContainsKey(text.ToLowerInvariant()) && !EnglishItemNames.ContainsValue(item))
			{
				EnglishItemNames[text.ToLowerInvariant()] = item;
			}
		}

		[HarmonyPatch(typeof(PickupObjectDatabase), "GetByEncounterName")]
		[HarmonyPrefix]
		public static bool MaybeGetByEnglishName(ref PickupObject __result, string name)
		{
			if (EnglishItemNames.TryGetValue(name.ToLowerInvariant(), out var value) && (Object)(object)value != (Object)null)
			{
				__result = value;
				return false;
			}
			return true;
		}
	}
	public static class ILTools
	{
		public static bool JumpToNext(this ILCursor crs, Func<Instruction, bool> match, int times = 1)
		{
			for (int i = 0; i < times; i++)
			{
				if (!crs.TryGotoNext((MoveType)2, new Func<Instruction, bool>[1] { match }))
				{
					return false;
				}
			}
			return true;
		}

		public static bool JumpBeforeNext(this ILCursor crs, Func<Instruction, bool> match, int times = 1)
		{
			for (int i = 0; i < times; i++)
			{
				if (!crs.TryGotoNext((MoveType)((i != times - 1) ? 2 : 0), new Func<Instruction, bool>[1] { match }))
				{
					return false;
				}
			}
			return true;
		}

		public static IEnumerable MatchAfter(this ILCursor crs, Func<Instruction, bool> match)
		{
			Instruction curr = crs.Next;
			crs.Index = 0;
			while (crs.JumpToNext(match))
			{
				yield return null;
			}
			crs.Next = curr;
		}

		public static IEnumerable MatchBefore(this ILCursor crs, Func<Instruction, bool> match)
		{
			Instruction curr = crs.Next;
			crs.Index = 0;
			while (crs.JumpBeforeNext(match))
			{
				Instruction c = crs.Next;
				yield return null;
				crs.Goto(c, (MoveType)2, false);
			}
			crs.Next = curr;
		}

		public static VariableDefinition DeclareLocal<T>(this ILContext ctx)
		{
			//IL_0011: Unknown result type (might be due to invalid IL or missing references)
			//IL_0017: Expected O, but got Unknown
			VariableDefinition val = new VariableDefinition(ctx.Import(typeof(T)));
			ctx.Body.Variables.Add(val);
			return val;
		}

		public static VariableDefinition DeclareLocal<T>(this ILCursor crs)
		{
			return crs.Context.DeclareLocal<T>();
		}

		public static bool TryGotoArg(this ILCursor crs, Instruction targetInstr, int argIndex, int instance = 0)
		{
			if (argIndex < 0)
			{
				return false;
			}
			if (instance < 0)
			{
				return false;
			}
			if (targetInstr == null)
			{
				return false;
			}
			List<Instruction> argumentInstructions = targetInstr.GetArgumentInstructions(crs.Context, argIndex);
			if (instance >= argumentInstructions.Count)
			{
				return false;
			}
			crs.Goto(argumentInstructions[instance], (MoveType)2, false);
			return true;
		}

		public static bool TryGotoArg(this ILCursor crs, int argIndex, int instance = 0)
		{
			return crs.TryGotoArg(crs.Next, argIndex, instance);
		}

		public static IEnumerable MatchArg(this ILCursor crs, Instruction targetInstr, int argIndex)
		{
			if (argIndex < 0 || targetInstr == null)
			{
				yield break;
			}
			Instruction curr = crs.Next;
			List<Instruction> argumentInstrs = targetInstr.GetArgumentInstructions(crs.Context, argIndex);
			foreach (Instruction arg in argumentInstrs)
			{
				crs.Goto(arg, (MoveType)2, false);
				yield return null;
			}
			crs.Next = curr;
		}

		public static IEnumerable MatchArg(this ILCursor crs, int argIndex)
		{
			return crs.MatchArg(crs.Next, argIndex);
		}

		private static List<Instruction> GetArgumentInstructions(this Instruction instruction, ILContext context, int argumentIndex)
		{
			int num = instruction.InputCount();
			int num2 = num - argumentIndex - 1;
			if (num2 < 0)
			{
				Debug.Log((object)$"Argument index {argumentIndex} is higher than the highest argument index ({num - 1})");
				return new List<Instruction>();
			}
			List<Instruction> list = instruction.PossiblePreviousInstructions(context);
			List<Instruction> list2 = new List<Instruction>();
			foreach (Instruction item in list)
			{
				BacktrackToArg(item, context, num2, list2);
			}
			list2.Sort((Instruction a, Instruction b) => context.IndexOf(a).CompareTo(context.IndexOf(b)));
			return list2;
		}

		private static void BacktrackToArg(Instruction current, ILContext ctx, int remainingMoves, List<Instruction> foundArgs)
		{
			if (remainingMoves <= 0 && current.OutputCount() > 0)
			{
				if (remainingMoves == 0)
				{
					foundArgs.Add(current);
				}
				return;
			}
			remainingMoves -= current.StackDelta();
			List<Instruction> list = current.PossiblePreviousInstructions(ctx);
			foreach (Instruction item in list)
			{
				BacktrackToArg(item, ctx, remainingMoves, foundArgs);
			}
		}

		public static int InputCount(this Instruction instr)
		{
			//IL_0011: Unknown result type (might be due to invalid IL or missing references)
			//IL_0016: Unknown result type (might be due to invalid IL or missing references)
			//IL_0019: Unknown result type (might be due to invalid IL or missing references)
			//IL_001f: Invalid comparison between Unknown and I4
			//IL_009f: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a4: Unknown result type (might be due to invalid IL or missing references)
			//IL_002c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0033: Expected O, but got Unknown
			//IL_0038: Unknown result type (might be due to invalid IL or missing references)
			//IL_003f: Invalid comparison between Unknown and I4
			//IL_00aa: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ad: Unknown result type (might be due to invalid IL or missing references)
			//IL_00f7: Expected I4, but got Unknown
			//IL_0083: Unknown result type (might be due to invalid IL or missing references)
			//IL_008a: Invalid comparison between Unknown and I4
			if (instr == null)
			{
				return 0;
			}
			OpCode opCode = instr.OpCode;
			if ((int)((OpCode)(ref opCode)).FlowControl == 2)
			{
				IMethodSignature val = (IMethodSignature)instr.Operand;
				int num = 0;
				if ((int)((OpCode)(ref opCode)).Code != 114 && val.HasThis && !val.ExplicitThis)
				{
					num++;
				}
				if (val.HasParameters)
				{
					num += val.Parameters.Count;
				}
				if ((int)((OpCode)(ref opCode)).Code == 40)
				{
					num++;
				}
				return num;
			}
			StackBehaviour stackBehaviourPop = ((OpCode)(ref opCode)).StackBehaviourPop;
			if (1 == 0)
			{
			}
			int result;
			switch (stackBehaviourPop - 1)
			{
			case 0:
			case 2:
			case 9:
				result = 1;
				break;
			case 1:
			case 3:
			case 4:
			case 5:
			case 7:
			case 8:
			case 10:
			case 11:
				result = 2;
				break;
			case 6:
			case 12:
			case 13:
			case 14:
			case 15:
			case 16:
				result = 3;
				break;
			default:
				result = 0;
				break;
			}
			if (1 == 0)
			{
			}
			return result;
		}

		public static int OutputCount(this Instruction instr)
		{
			//IL_0011: Unknown result type (might be due to invalid IL or missing references)
			//IL_0016: Unknown result type (might be due to invalid IL or missing references)
			//IL_0019: Unknown result type (might be due to invalid IL or missing references)
			//IL_001f: Invalid comparison between Unknown and I4
			//IL_0069: Unknown result type (might be due to invalid IL or missing references)
			//IL_006e: Unknown result type (might be due to invalid IL or missing references)
			//IL_002c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0033: Expected O, but got Unknown
			//IL_0038: Unknown result type (might be due to invalid IL or missing references)
			//IL_003f: Invalid comparison between Unknown and I4
			//IL_0074: Unknown result type (might be due to invalid IL or missing references)
			//IL_0078: Unknown result type (might be due to invalid IL or missing references)
			//IL_009a: Expected I4, but got Unknown
			//IL_0048: Unknown result type (might be due to invalid IL or missing references)
			//IL_004e: Invalid comparison between Unknown and I4
			if (instr == null)
			{
				return 0;
			}
			OpCode opCode = instr.OpCode;
			if ((int)((OpCode)(ref opCode)).FlowControl == 2)
			{
				IMethodSignature val = (IMethodSignature)instr.Operand;
				int num = 0;
				if ((int)((OpCode)(ref opCode)).Code == 114 || (int)val.ReturnType.MetadataType != 1)
				{
					num++;
				}
				return num;
			}
			StackBehaviour stackBehaviourPush = ((OpCode)(ref opCode)).StackBehaviourPush;
			if (1 == 0)
			{
			}
			int result;
			switch (stackBehaviourPush - 20)
			{
			case 0:
			case 2:
			case 3:
			case 4:
			case 5:
			case 6:
				result = 1;
				break;
			case 1:
				result = 2;
				break;
			default:
				result = 0;
				break;
			}
			if (1 == 0)
			{
			}
			return result;
		}

		public static int StackDelta(this Instruction instr)
		{
			return instr.OutputCount() - instr.InputCount();
		}

		public static List<Instruction> PossiblePreviousInstructions(this Instruction instr, ILContext ctx)
		{
			//IL_000e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0013: Unknown result type (might be due to invalid IL or missing references)
			List<Instruction> list = new List<Instruction>();
			Enumerator<Instruction> enumerator = ctx.Instrs.GetEnumerator();
			try
			{
				while (enumerator.MoveNext())
				{
					Instruction current = enumerator.Current;
					if (Array.IndexOf(current.PossibleNextInstructions(), instr) >= 0)
					{
						list.Add(current);
					}
				}
			}
			finally
			{
				((IDisposable)enumerator).Dispose();
			}
			return list;
		}

		public static Instruction[] PossibleNextInstructions(this Instruction instr)
		{
			//IL_0002: Unknown result type (might be due to invalid IL or missing references)
			//IL_0007: Unknown result type (might be due to invalid IL or missing references)
			//IL_000b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0010: Unknown result type (might be due to invalid IL or missing references)
			//IL_0015: Unknown result type (might be due to invalid IL or missing references)
			//IL_0033: Expected I4, but got Unknown
			OpCode opCode = instr.OpCode;
			FlowControl flowControl = ((OpCode)(ref opCode)).FlowControl;
			if (1 == 0)
			{
			}
			Instruction[] result;
			switch ((int)flowControl)
			{
			case 2:
			case 5:
				result = (Instruction[])(object)new Instruction[1] { instr.Next };
				break;
			case 0:
			{
				Instruction branchTarget2 = instr.GetBranchTarget();
				result = (Instruction[])(object)((branchTarget2 == null) ? new Instruction[0] : new Instruction[1] { branchTarget2 });
				break;
			}
			case 3:
			{
				Instruction branchTarget = instr.GetBranchTarget();
				result = (Instruction[])(object)((branchTarget == null) ? new Instruction[1] { instr.Next } : new Instruction[2] { instr.Next, branchTarget });
				break;
			}
			default:
				result = (Instruction[])(object)new Instruction[0];
				break;
			}
			if (1 == 0)
			{
			}
			return result;
		}

		public static Instruction GetBranchTarget(this Instruction branch)
		{
			object operand = branch.Operand;
			Instruction val = (Instruction)((operand is Instruction) ? operand : null);
			if (val != null)
			{
				return val;
			}
			object operand2 = branch.Operand;
			return ((ILLabel)(((operand2 is ILLabel) ? operand2 : null)?)).Target;
		}

		public static string InstructionToString(this Instruction c)
		{
			//IL_0012: Unknown result type (might be due to invalid IL or missing references)
			//IL_0017: Unknown result type (might be due to invalid IL or missing references)
			//IL_001b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0020: Unknown result type (might be due to invalid IL or missing references)
			//IL_0021: Unknown result type (might be due to invalid IL or missing references)
			//IL_0026: Unknown result type (might be due to invalid IL or missing references)
			//IL_0029: Invalid comparison between Unknown and I4
			//IL_008d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0092: Unknown result type (might be due to invalid IL or missing references)
			//IL_0096: Unknown result type (might be due to invalid IL or missing references)
			//IL_009d: Invalid comparison between Unknown and I4
			//IL_0063: Unknown result type (might be due to invalid IL or missing references)
			//IL_0068: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c9: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ce: Unknown result type (might be due to invalid IL or missing references)
			try
			{
				return ((object)c).ToString();
			}
			catch
			{
				try
				{
					OpCode opCode = c.OpCode;
					OperandType operandType = ((OpCode)(ref opCode)).OperandType;
					if (((int)operandType == 0 || (int)operandType == 15) ? true : false)
					{
						object operand = c.Operand;
						ILLabel val = (ILLabel)((operand is ILLabel) ? operand : null);
						if (val != null)
						{
							object arg = c.Offset;
							opCode = c.OpCode;
							return $"IL_{arg:x4}: {((OpCode)(ref opCode)).Name} IL_{val.Target.Offset:x4}";
						}
					}
					opCode = c.OpCode;
					if ((int)((OpCode)(ref opCode)).OperandType == 10 && c.Operand is IEnumerable<ILLabel> source)
					{
						object arg2 = c.Offset;
						opCode = c.OpCode;
						return string.Format("IL_{0:x4}: {1} {2}", arg2, ((OpCode)(ref opCode)).Name, string.Join(", ", source.Select((ILLabel x) => x.Target.Offset.ToString("x4")).ToArray()));
					}
				}
				catch
				{
				}
			}
			return "This shouldn't be happening";
		}

		public static T EnumeratorGetField<T>(this object obj, string name)
		{
			return (T)obj.GetType().EnumeratorField(name).GetValue(obj);
		}

		public static FieldInfo EnumeratorField(this MethodBase method, string name)
		{
			return method.DeclaringType.EnumeratorField(name);
		}

		public static FieldInfo EnumeratorField(this Type tp, string name)
		{
			return tp.GetFields(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic).First((FieldInfo x) => (object)x != null && x.Name != null && (x.Name.Contains("<" + name + ">") || x.Name == name));
		}
	}
	[HarmonyPatch]
	public static class GeneralPatches
	{
		[HarmonyPatch(typeof(AudioAnimatorListener), "Start")]
		[HarmonyPrefix]
		public static bool AudioAnimatorListenerFix_Start_Prefix(AudioAnimatorListener __instance)
		{
			if ((Object)(object)__instance == (Object)null || (Object)(object)((BraveBehaviour)__instance).spriteAnimator == (Object)null)
			{
				return false;
			}
			return true;
		}

		[HarmonyPatch(typeof(PlayerOrbital), "OnDestroy")]
		[HarmonyPrefix]
		public static bool PlayerOrbitalFix_OnDestroy_Prefix(PlayerOrbital __instance)
		{
			if ((Object)(object)__instance == (Object)null || (Object)(object)__instance.Owner == (Object)null || __instance.Owner.orbitals == null)
			{
				return false;
			}
			return true;
		}
	}
	public static class OnDestroyGeneralFix
	{
		public static MethodInfo odf_od_t = AccessTools.Method(typeof(OnDestroyGeneralFix), "OnDestroyFix_OnDestroy_Transpiler", (Type[])null, (Type[])null);

		public static MethodInfo odf_od_puc_1 = AccessTools.Method(typeof(OnDestroyGeneralFix), "OnDestroyFix_OnDestroy_PickedUpCheck_1", (Type[])null, (Type[])null);

		public static MethodInfo odf_od_puc_2 = AccessTools.Method(typeof(OnDestroyGeneralFix), "OnDestroyFix_OnDestroy_PickedUpCheck_2", (Type[])null, (Type[])null);

		public static MethodInfo odf_od_p = AccessTools.Method(typeof(OnDestroyGeneralFix), "OnDestroyFix_OnDestroy_Pop", (Type[])null, (Type[])null);

		public static MethodInfo odf_de_p = AccessTools.Method(typeof(OnDestroyGeneralFix), "OnDestroyFix_DisableEffect_Pop", (Type[])null, (Type[])null);

		public static void FixOnDestroy(string className)
		{
			//IL_0069: Unknown result type (might be due to invalid IL or missing references)
			//IL_0073: Expected O, but got Unknown
			//IL_0095: Unknown result type (might be due to invalid IL or missing references)
			//IL_009f: Expected O, but got Unknown
			Type type = AccessTools.TypeByName(className);
			if ((object)type != null)
			{
				MethodInfo methodInfo = AccessTools.Method(type, "OnDestroy", new Type[0], (Type[])null);
				MethodInfo methodInfo2 = AccessTools.Method(type, "DisableEffect", new Type[1] { typeof(PlayerController) }, (Type[])null);
				if ((object)methodInfo != null && AccessTools.IsDeclaredMember<MethodInfo>(methodInfo))
				{
					Plugin.HarmonyInstance.Patch((MethodBase)methodInfo, (HarmonyMethod)null, (HarmonyMethod)null, (HarmonyMethod)null, (HarmonyMethod)null, new HarmonyMethod(odf_od_t));
				}
				if ((object)methodInfo2 != null && AccessTools.IsDeclaredMember<MethodInfo>(methodInfo2))
				{
					Plugin.HarmonyInstance.Patch((MethodBase)methodInfo2, (HarmonyMethod)null, (HarmonyMethod)null, (HarmonyMethod)null, (HarmonyMethod)null, new HarmonyMethod(odf_od_t));
				}
			}
		}

		public static void OnDestroyFix_OnDestroy_Transpiler(ILContext ctx, MethodBase mthd)
		{
			//IL_002d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0033: Expected O, but got Unknown
			//IL_00b7: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c3: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d1: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e2: Unknown result type (might be due to invalid IL or missing references)
			//IL_0101: Unknown result type (might be due to invalid IL or missing references)
			//IL_010f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0120: Unknown result type (might be due to invalid IL or missing references)
			//IL_012e: Unknown result type (might be due to invalid IL or missing references)
			//IL_00f5: Unknown result type (might be due to invalid IL or missing references)
			//IL_0146: Unknown result type (might be due to invalid IL or missing references)
			//IL_01b5: Unknown result type (might be due to invalid IL or missing references)
			//IL_01c3: Unknown result type (might be due to invalid IL or missing references)
			//IL_01d4: Unknown result type (might be due to invalid IL or missing references)
			Type baseClass = mthd.DeclaringType.BaseType;
			if ((object)baseClass == null)
			{
				return;
			}
			ILCursor val = new ILCursor(ctx);
			bool flag = false;
			ILCursor[] array = default(ILCursor[]);
			if (!val.TryFindNext(ref array, new Func<Instruction, bool>[1]
			{
				(Instruction x) => ILPatternMatchingExt.MatchCall(x, baseClass, "OnDestroy")
			}) || array.Length == 0)
			{
				flag = true;
				if (!val.TryFindNext(ref array, new Func<Instruction, bool>[1]
				{
					(Instruction x) => ILPatternMatchingExt.MatchCall(x, typeof(PassiveItem), "DisableEffect")
				}))
				{
					return;
				}
			}
			Instruction next = array[0].Next;
			VariableDefinition val2 = val.DeclareLocal<int>();
			val.Emit(OpCodes.Ldarg_0);
			val.Emit(OpCodes.Ldloca, val2);
			val.Emit(OpCodes.Call, (MethodBase)odf_od_puc_1);
			val.Emit(OpCodes.Ldarg_0);
			if (flag)
			{
				val.Emit(OpCodes.Ldarg_1);
			}
			val.Emit(OpCodes.Ldloc, val2);
			val.Emit(OpCodes.Call, (MethodBase)odf_od_puc_2);
			val.Emit(OpCodes.Beq, next);
			val.Emit(OpCodes.Call, (MethodBase)odf_od_p);
			if (flag)
			{
				val.Emit(OpCodes.Call, (MethodBase)odf_de_p);
			}
			val.Goto(next, (MoveType)2, false);
			ILCursor[] array2 = default(ILCursor[]);
			if (val.TryFindNext(ref array2, new Func<Instruction, bool>[1]
			{
				(Instruction x) => ILPatternMatchingExt.MatchRet(x)
			}) && array2.Length != 0)
			{
				Instruction next2 = array2[^1].Next;
				val.Emit(OpCodes.Ldloc, val2);
				val.Emit(OpCodes.Call, (MethodBase)odf_od_puc_2);
				val.Emit(OpCodes.Beq, next2);
			}
		}

		public static void OnDestroyFix_OnDestroy_PickedUpCheck_1(PassiveItem item, out int pu)
		{
			pu = 1;
			if ((Object)(object)item == (Object)null)
			{
				pu = 1;
			}
			else if ((Object)(object)item.Owner == (Object)null)
			{
				pu = 0;
			}
		}

		public static int OnDestroyFix_OnDestroy_PickedUpCheck_2()
		{
			return 0;
		}

		public static void OnDestroyFix_OnDestroy_Pop(PassiveItem _)
		{
		}

		public static void OnDestroyFix_DisableEffect_Pop(PlayerController _)
		{
		}
	}
	[BepInPlugin("spapi.etg.moddedbugfix", "Modded Bugfix", "1.3.0")]
	public class Plugin : BaseUnityPlugin
	{
		public const string GUID = "spapi.etg.moddedbugfix";

		public const string NAME = "Modded Bugfix";

		public const string VERSION = "1.3.0";

		public static Harmony HarmonyInstance;

		public void Start()
		{
			//IL_0006: Unknown result type (might be due to invalid IL or missing references)
			//IL_0010: Expected O, but got Unknown
			HarmonyInstance = new Harmony("spapi.etg.moddedbugfix");
			try
			{
				HarmonyInstance.PatchAll();
			}
			catch (Exception arg)
			{
				((BaseUnityPlugin)this).Logger.LogError((object)$"Failed applying general patches: {arg}");
			}
			try
			{
				if (Chainloader.PluginInfos.ContainsKey("kp.etg.frostandgunfire"))
				{
					FrostAndGunfire.Patch();
				}
			}
			catch (Exception arg2)
			{
				((BaseUnityPlugin)this).Logger.LogError((object)$"Failed patching Frost and Gunfire: {arg2}");
			}
			try
			{
				if (Chainloader.PluginInfos.ContainsKey("blazeykat.etg.prismatism"))
				{
					Prismatism.Patch();
				}
			}
			catch (Exception arg3)
			{
				((BaseUnityPlugin)this).Logger.LogError((object)$"Failed patching Prismatism: {arg3}");
			}
			try
			{
				if (Chainloader.PluginInfos.ContainsKey("Retrash"))
				{
					RetrashItems.Patch();
				}
			}
			catch (Exception arg4)
			{
				((BaseUnityPlugin)this).Logger.LogError((object)$"Failed patching Retrash's Items: {arg4}");
			}
			try
			{
				if (Chainloader.PluginInfos.ContainsKey("bleak.etg.abip"))
				{
					Bleaker.Patch();
				}
			}
			catch (Exception arg5)
			{
				((BaseUnityPlugin)this).Logger.LogError((object)$"Failed patching A Bleaker Item Pack: {arg5}");
			}
			try
			{
				if (Chainloader.PluginInfos.ContainsKey("blazeykat.etg.oddments"))
				{
					Oddments.Patch();
				}
			}
			catch (Exception arg6)
			{
				((BaseUnityPlugin)this).Logger.LogError((object)$"Failed patching Oddments: {arg6}");
			}
		}
	}
}
namespace ModdedBugFix.Mods
{
	public static class Bleaker
	{
		public static MethodInfo cf_u_p = AccessTools.Method(typeof(Bleaker), "CarrotFix_Update_Prefix", (Type[])null, (Type[])null);

		public static MethodInfo cf_u_t = AccessTools.Method(typeof(Bleaker), "CarrotFix_Update_Transpiler", (Type[])null, (Type[])null);

		public static MethodInfo cf_u_cn = AccessTools.Method(typeof(Bleaker), "CarrotFix_Update_CameraNullcheck", (Type[])null, (Type[])null);

		public static MethodInfo coff_dtf_t = AccessTools.Method(typeof(Bleaker), "ChamberOfFrogsFix_DoTongueFlick_Transpiler", (Type[])null, (Type[])null);

		public static MethodInfo coff_dtf_cn = AccessTools.Method(typeof(Bleaker), "ChamberOfFrogsFix_DoTongueFlick_CheckNearest", (Type[])null, (Type[])null);

		public static MethodInfo coff_dtf_n = AccessTools.Method(typeof(Bleaker), "ChamberOfFrogsFix_DoTongueflick_Null", (Type[])null, (Type[])null);

		public static MethodInfo whf_u_t = AccessTools.Method(typeof(Bleaker), "WinchestersHatFix_Update_Transpiler", (Type[])null, (Type[])null);

		public static MethodInfo whf_u_n_1 = AccessTools.Method(typeof(Bleaker), "WinchestersHatFix_Update_Nullcheck_1", (Type[])null, (Type[])null);

		public static MethodInfo whf_u_n_2 = AccessTools.Method(typeof(Bleaker), "WinchestersHatFix_Update_Nullcheck_2", (Type[])null, (Type[])null);

		public static MethodInfo whf_sva_p = AccessTools.Method(typeof(Bleaker), "WinchestersHatFix_SpawnVFXAttached_Prefix", (Type[])null, (Type[])null);

		public static MethodInfo gcf_dmpm_t = AccessTools.Method(typeof(Bleaker), "GoldenCircletFix_DontMultPickupModifier_Transpiler", (Type[])null, (Type[])null);

		public static MethodInfo gcf_dmpm_rm = AccessTools.Method(typeof(Bleaker), "GoldenCircletFix_DontMultPickupModifier_ReplaceMult", (Type[])null, (Type[])null);

		public static MethodInfo hbf_u_p = AccessTools.Method(typeof(Bleaker), "HealthyBulletsFix_Unsubscribe_Prefix", (Type[])null, (Type[])null);

		public static MethodInfo lcf_od_t = AccessTools.Method(typeof(Bleaker), "LeadCrownFix_OnDestroy_Transpiler", (Type[])null, (Type[])null);

		public static MethodInfo lcf_od_puc = AccessTools.Method(typeof(Bleaker), "LeadCrownFix_OnDestroy_PickedUpCheck", (Type[])null, (Type[])null);

		public static MethodInfo lcf_od_p = AccessTools.Method(typeof(Bleaker), "LeadCrownFix_OnDestroy_Pop", (Type[])null, (Type[])null);

		public static MethodInfo oooodgf_od_t = AccessTools.Method(typeof(Bleaker), "OutOfOrderOnDestroyGeneralFix_OnDestroy_Transpiler", (Type[])null, (Type[])null);

		public static MethodInfo oooodgf_od_p = AccessTools.Method(typeof(Bleaker), "OutOfOrderOnDestroyGeneralFix_OnDestroy_Pop", (Type[])null, (Type[])null);

		public static void Patch()
		{
			//IL_003d: Unknown result type (might be due to invalid IL or missing references)
			//IL_004a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0054: Expected O, but got Unknown
			//IL_0054: Expected O, but got Unknown
			//IL_0096: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a0: 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_0163: Unknown result type (might be due to invalid IL or missing references)
			//IL_016d: Expected O, but got Unknown
			//IL_0113: Unknown result type (might be due to invalid IL or missing references)
			//IL_0121: Expected O, but got Unknown
			//IL_01be: Unknown result type (might be due to invalid IL or missing references)
			//IL_01cc: Expected O, but got Unknown
			//IL_0237: Unknown result type (might be due to invalid IL or missing references)
			//IL_0241: Expected O, but got Unknown
			//IL_01e4: Unknown result type (might be due to invalid IL or missing references)
			//IL_01f2: Expected O, but got Unknown
			//IL_035f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0369: Expected O, but got Unknown
			Type type = AccessTools.TypeByName("BleakMod.Carrot");
			if ((object)type != null)
			{
				MethodInfo methodInfo = AccessTools.Method(type, "Update", (Type[])null, (Type[])null);
				if ((object)methodInfo != null)
				{
					Plugin.HarmonyInstance.Patch((MethodBase)methodInfo, new HarmonyMethod(cf_u_p), (HarmonyMethod)null, (HarmonyMethod)null, (HarmonyMethod)null, new HarmonyMethod(cf_u_t));
				}
			}
			Type type2 = AccessTools.TypeByName("BleakMod.ChamberOfFrogs+FrogTongueBehavior");
			if ((object)type2 != null)
			{
				MethodInfo methodInfo2 = AccessTools.Method(type2, "DoTongueFlick", (Type[])null, (Type[])null);
				if ((object)methodInfo2 != null)
				{
					Plugin.HarmonyInstance.Patch((MethodBase)methodInfo2, (HarmonyMethod)null, (HarmonyMethod)null, (HarmonyMethod)null, (HarmonyMethod)null, new HarmonyMethod(coff_dtf_t));
				}
			}
			Type type3 = AccessTools.TypeByName("BleakMod.WinchestersHat");
			if ((object)type3 != null)
			{
				MethodInfo methodInfo3 = AccessTools.Method(type3, "Update", (Type[])null, (Type[])null);
				MethodInfo methodInfo4 = AccessTools.Method(type3, "SpawnVFXAttached", (Type[])null, (Type[])null);
				if ((object)methodInfo3 != null)
				{
					Plugin.HarmonyInstance.Patch((MethodBase)methodInfo3, (HarmonyMethod)null, (HarmonyMethod)null, (HarmonyMethod)null, (HarmonyMethod)null, new HarmonyMethod(whf_u_t));
				}
				if ((object)methodInfo4 != null)
				{
					Plugin.HarmonyInstance.Patch((MethodBase)methodInfo4, new HarmonyMethod(whf_sva_p), (HarmonyMethod)null, (HarmonyMethod)null, (HarmonyMethod)null, (HarmonyMethod)null);
				}
			}
			Type type4 = AccessTools.TypeByName("BleakMod.GoldenCirclet");
			if ((object)type4 != null)
			{
				MethodInfo methodInfo5 = AccessTools.Method(type4, "Pickup", (Type[])null, (Type[])null);
				if ((object)methodInfo5 != null)
				{
					Plugin.HarmonyInstance.Patch((MethodBase)methodInfo5, (HarmonyMethod)null, (HarmonyMethod)null, (HarmonyMethod)null, (HarmonyMethod)null, new HarmonyMethod(gcf_dmpm_t));
				}
			}
			Type type5 = AccessTools.TypeByName("BleakMod.HealthyBullets");
			if ((object)type5 != null)
			{
				MethodInfo methodInfo6 = AccessTools.Method(type5, "Drop", (Type[])null, (Type[])null);
				MethodInfo methodInfo7 = AccessTools.Method(type5, "OnDestroy", (Type[])null, (Type[])null);
				if ((object)methodInfo6 != null)
				{
					Plugin.HarmonyInstance.Patch((MethodBase)methodInfo6, new HarmonyMethod(hbf_u_p), (HarmonyMethod)null, (HarmonyMethod)null, (HarmonyMethod)null, (HarmonyMethod)null);
				}
				if ((object)methodInfo7 != null)
				{
					Plugin.HarmonyInstance.Patch((MethodBase)methodInfo7, new HarmonyMethod(hbf_u_p), (HarmonyMethod)null, (HarmonyMethod)null, (HarmonyMethod)null, (HarmonyMethod)null);
				}
			}
			Type type6 = AccessTools.TypeByName("BleakMod.LeadCrown");
			if ((object)type6 != null)
			{
				MethodInfo methodInfo8 = AccessTools.Method(type6, "OnDestroy", (Type[])null, (Type[])null);
				if ((object)methodInfo8 != null)
				{
					Plugin.HarmonyInstance.Patch((MethodBase)methodInfo8, (HarmonyMethod)null, (HarmonyMethod)null, (HarmonyMethod)null, (HarmonyMethod)null, new HarmonyMethod(lcf_od_t));
				}
			}
			string[] array = new string[21]
			{
				"ChamberOfFrogs", "CatchingMitts", "Protractor", "TrickShot", "FittedTankBarrel", "PendantOfTheFirstOrder", "GoldenCirclet", "CheeseAmmolet", "Distribullets", "GatlingGullets",
				"HungryClips", "HeroicCape", "Popcorn", "RepurposedShellCasing", "WhiteBulletCell", "StrawberryJam", "Bleaker", "WinchestersHat", "JammomancersHat", "ShowoffBullets",
				"FriendshipBracelet"
			};
			string[] array2 = array;
			foreach (string text in array2)
			{
				Type type7 = AccessTools.TypeByName("BleakMod." + text);
				if ((object)type7 != null)
				{
					MethodInfo methodInfo9 = AccessTools.Method(type7, "OnDestroy", (Type[])null, (Type[])null);
					if ((object)methodInfo9 != null)
					{
						Plugin.HarmonyInstance.Patch((MethodBase)methodInfo9, (HarmonyMethod)null, (HarmonyMethod)null, (HarmonyMethod)null, (HarmonyMethod)null, new HarmonyMethod(oooodgf_od_t));
					}
				}
			}
		}

		public static bool CarrotFix_Update_Prefix(PassiveItem __instance)
		{
			if ((Object)(object)__instance == (Object)null || !__instance.PickedUp || (Object)(object)__instance.Owner == (Object)null)
			{
				return false;
			}
			if (__instance.Owner.passiveItems == null || __instance.Owner.inventory == null || __instance.Owner.inventory.AllGuns == null)
			{
				return false;
			}
			return true;
		}

		public static void CarrotFix_Update_Transpiler(ILContext ctx)
		{
			//IL_0002: Unknown result type (might be due to invalid IL or missing references)
			//IL_0008: Expected O, but got Unknown
			//IL_0038: Unknown result type (might be due to invalid IL or missing references)
			ILCursor val = new ILCursor(ctx);
			if (val.JumpToNext((Instruction x) => ILPatternMatchingExt.MatchCallOrCallvirt<Object>(x, "op_Implicit")))
			{
				val.Emit(OpCodes.Call, (MethodBase)cf_u_cn);
			}
		}

		public static bool CarrotFix_Update_CameraNullcheck(bool curr)
		{
			return curr && (Object)(object)GameManager.Instance != (Object)null && (Object)(object)GameManager.Instance.MainCameraController != (Object)null;
		}

		public static void ChamberOfFrogsFix_DoTongueFlick_Transpiler(ILContext ctx)
		{
			//IL_0002: Unknown result type (might be due to invalid IL or missing references)
			//IL_0008: Expected O, but got Unknown
			//IL_0088: Unknown result type (might be due to invalid IL or missing references)
			//IL_0094: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a5: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b2: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c3: Unknown result type (might be due to invalid IL or missing references)
			ILCursor val = new ILCursor(ctx);
			ILCursor[] array = default(ILCursor[]);
			if (val.TryFindNext(ref array, new Func<Instruction, bool>[1]
			{
				(Instruction x) => ILPatternMatchingExt.MatchRet(x)
			}) && val.JumpToNext((Instruction x) => ILPatternMatchingExt.MatchStloc(x, 1)))
			{
				Instruction next = array[0].Next;
				Instruction next2 = val.Next;
				val.Emit(OpCodes.Ldloc_1);
				val.Emit(OpCodes.Call, (MethodBase)coff_dtf_cn);
				val.Emit(OpCodes.Brfalse, next2);
				val.Emit(OpCodes.Call, (MethodBase)coff_dtf_n);
				val.Emit(OpCodes.Br, next);
			}
		}

		public static bool ChamberOfFrogsFix_DoTongueFlick_CheckNearest(AIActor ai)
		{
			return (Object)(object)ai == (Object)null;
		}

		public static BeamController ChamberOfFrogsFix_DoTongueflick_Null()
		{
			return null;
		}

		public static void WinchestersHatFix_Update_Transpiler(ILContext ctx)
		{
			//IL_0008: Unknown result type (might be due to invalid IL or missing references)
			//IL_000e: Expected O, but got Unknown
			//IL_004d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0059: Unknown result type (might be due to invalid IL or missing references)
			//IL_006a: Unknown result type (might be due to invalid IL or missing references)
			//IL_007b: Unknown result type (might be due to invalid IL or missing references)
			ILCursor val = new ILCursor(ctx);
			ILLabel label = null;
			ILCursor[] array = default(ILCursor[]);
			if (val.TryFindNext(ref array, new Func<Instruction, bool>[1]
			{
				(Instruction x) => ILPatternMatchingExt.MatchBneUn(x, ref label)
			}) && label != null)
			{
				val.Emit(OpCodes.Ldarg_0);
				val.Emit(OpCodes.Call, (MethodBase)whf_u_n_1);
				val.Emit(OpCodes.Call, (MethodBase)whf_u_n_2);
				val.Emit(OpCodes.Beq, (object)label);
			}
		}

		public static int WinchestersHatFix_Update_Nullcheck_1(PassiveItem p)
		{
			if ((Object)(object)p == (Object)null || (Object)(object)p.Owner == (Object)null || (Object)(object)((GameActor)p.Owner).CurrentGun == (Object)null)
			{
				return 0;
			}
			return 1;
		}

		public static int WinchestersHatFix_Update_Nullcheck_2()
		{
			return 0;
		}

		public static bool WinchestersHatFix_SpawnVFXAttached_Prefix(PassiveItem __instance)
		{
			if ((Object)(object)__instance == (Object)null || (Object)(object)__instance.Owner == (Object)null)
			{
				return false;
			}
			if ((Object)(object)((BraveBehaviour)__instance.Owner).specRigidbody == (Object)null || ((BraveBehaviour)__instance.Owner).specRigidbody.PrimaryPixelCollider == null)
			{
				return false;
			}
			if ((Object)(object)PhysicsEngine.Instance == (Object)null)
			{
				return false;
			}
			return true;
		}

		public static void GoldenCircletFix_DontMultPickupModifier_Transpiler(ILContext ctx)
		{
			//IL_0002: Unknown result type (might be due to invalid IL or missing references)
			//IL_0008: Expected O, but got Unknown
			//IL_0038: Unknown result type (might be due to invalid IL or missing references)
			ILCursor val = new ILCursor(ctx);
			if (val.JumpToNext((Instruction x) => ILPatternMatchingExt.MatchLdcR4(x, 100f)))
			{
				val.Emit(OpCodes.Call, (MethodBase)gcf_dmpm_rm);
			}
		}

		public static float GoldenCircletFix_DontMultPickupModifier_ReplaceMult(float _)
		{
			return 1f;
		}

		public static void HealthyBulletsFix_Unsubscribe_Prefix(PassiveItem __instance)
		{
			if (!((Object)(object)__instance == (Object)null) && !((Object)(object)__instance.Owner == (Object)null))
			{
				Type type = ((object)__instance).GetType();
				Action value = (Action)Delegate.CreateDelegate(typeof(Action), __instance, "OnEnteredCombat");
				PlayerController owner = __instance.Owner;
				owner.OnEnteredCombat = (Action)Delegate.Remove(owner.OnEnteredCombat, value);
			}
		}

		public static void LeadCrownFix_OnDestroy_Transpiler(ILContext ctx, MethodBase mthd)
		{
			//IL_002d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0033: Expected O, but got Unknown
			//IL_00d3: Unknown result type (might be due to invalid IL or missing references)
			//IL_00df: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ed: Unknown result type (might be due to invalid IL or missing references)
			//IL_00fe: Unknown result type (might be due to invalid IL or missing references)
			//IL_010a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0118: Unknown result type (might be due to invalid IL or missing references)
			//IL_0126: Unknown result type (might be due to invalid IL or missing references)
			//IL_0142: Unknown result type (might be due to invalid IL or missing references)
			//IL_015b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0172: Unknown result type (might be due to invalid IL or missing references)
			//IL_018e: Unknown result type (might be due to invalid IL or missing references)
			//IL_019c: Unknown result type (might be due to invalid IL or missing references)
			Type baseClass = mthd.DeclaringType.BaseType;
			if ((object)baseClass != null)
			{
				ILCursor val = new ILCursor(ctx);
				ILCursor[] array = default(ILCursor[]);
				ILCursor[] array2 = default(ILCursor[]);
				if (val.TryFindNext(ref array, new Func<Instruction, bool>[1]
				{
					(Instruction x) => ILPatternMatchingExt.MatchCall(x, baseClass, "OnDestroy")
				}) && array.Length != 0 && val.TryFindNext(ref array2, new Func<Instruction, bool>[1]
				{
					(Instruction x) => ILPatternMatchingExt.MatchRet(x)
				}) && array2.Length != 0)
				{
					Instruction next = array[0].Next;
					Instruction next2 = array2[^1].Next;
					VariableDefinition val2 = val.DeclareLocal<bool>();
					ILLabel val3 = val.DefineLabel();
					val.Emit(OpCodes.Ldarg_0);
					val.Emit(OpCodes.Ldloca, val2);
					val.Emit(OpCodes.Call, (MethodBase)lcf_od_puc);
					val.Emit(OpCodes.Ldarg_0);
					val.Emit(OpCodes.Ldloc, val2);
					val.Emit(OpCodes.Brfalse, next);
					val.Emit(OpCodes.Call, (MethodBase)lcf_od_p);
					val.Goto(next, (MoveType)0, false);
					val.Emit(OpCodes.Br, (object)val3);
					val.Goto(next, (MoveType)2, false);
					val.Emit(OpCodes.Br, next2);
					val.MarkLabel(val3);
					val.Emit(OpCodes.Call, (MethodBase)lcf_od_p);
					val.Goto(next2, (MoveType)0, false);
					val.Emit(OpCodes.Ldloc, val2);
					val.Emit(OpCodes.Brtrue, next);
				}
			}
		}

		public static void LeadCrownFix_OnDestroy_PickedUpCheck(PassiveItem item, out bool pu)
		{
			pu = true;
			if ((Object)(object)item == (Object)null)
			{
				pu = true;
			}
			else if ((Object)(object)item.Owner == (Object)null)
			{
				pu = false;
			}
		}

		public static void LeadCrownFix_OnDestroy_Pop(PassiveItem _)
		{
		}

		public static void OutOfOrderOnDestroyGeneralFix_OnDestroy_Transpiler(ILContext ctx, MethodBase mthd)
		{
			//IL_002d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0033: Expected O, but got Unknown
			//IL_00b4: Unknown result type (might be due to invalid IL or missing references)
			//IL_00cc: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e3: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ff: Unknown result type (might be due to invalid IL or missing references)
			Type baseClass = mthd.DeclaringType.BaseType;
			if ((object)baseClass != null)
			{
				ILCursor val = new ILCursor(ctx);
				ILCursor[] array = default(ILCursor[]);
				if (val.JumpBeforeNext((Instruction x) => ILPatternMatchingExt.MatchCall(x, baseClass, "OnDestroy")) && val.TryFindNext(ref array, new Func<Instruction, bool>[1]
				{
					(Instruction x) => ILPatternMatchingExt.MatchRet(x)
				}) && array.Length != 0)
				{
					Instruction next = val.Next;
					Instruction next2 = array[^1].Next;
					ILLabel val2 = val.DefineLabel();
					val.Emit(OpCodes.Br, (object)val2);
					val.Goto(next, (MoveType)2, false);
					val.Emit(OpCodes.Br, next2);
					val.MarkLabel(val2);
					val.Emit(OpCodes.Call, (MethodBase)oooodgf_od_p);
					val.Goto(next2, (MoveType)0, false);
					val.Emit(OpCodes.Br, next);
				}
			}
		}

		public static void OutOfOrderOnDestroyGeneralFix_OnDestroy_Pop(PassiveItem _)
		{
		}
	}
	public static class FrostAndGunfire
	{
		public static MethodInfo bf_cbu_p = AccessTools.Method(typeof(FrostAndGunfire), "BarterFix_CanBeUsed_Prefix", (Type[])null, (Type[])null);

		public static MethodInfo bf_de_t = AccessTools.Method(typeof(FrostAndGunfire), "BarterFix_DoEffect_Transpiler", (Type[])null, (Type[])null);

		public static MethodInfo bf_de_sin = AccessTools.Method(typeof(FrostAndGunfire), "BarterFix_DoEffect_ShopItemNullcheck", (Type[])null, (Type[])null);

		public static MethodInfo bf_de_iln_f = AccessTools.Method(typeof(FrostAndGunfire), "BarterFix_DoEffect_ItemsListNullcheck", (Type[])null, (Type[])null);

		public static MethodInfo mmf_bp_p = AccessTools.Method(typeof(FrostAndGunfire), "MiniMushboomFix_BuildPrefab_Postfix", (Type[])null, (Type[])null);

		public static MethodInfo bkf_cbu_p = AccessTools.Method(typeof(FrostAndGunfire), "BloodiedKeyFix_CanBeUsed_Prefix", (Type[])null, (Type[])null);

		public static void Patch()
		{
			//IL_004c: Unknown result type (might be due to invalid IL or missing references)
			//IL_005a: Expected O, but got Unknown
			//IL_00bf: Unknown result type (might be due to invalid IL or missing references)
			//IL_00cc: Expected O, but got Unknown
			//IL_0076: Unknown result type (might be due to invalid IL or missing references)
			//IL_0080: Expected O, but got Unknown
			//IL_0110: Unknown result type (might be due to invalid IL or missing references)
			//IL_011e: Expected O, but got Unknown
			Type type = AccessTools.TypeByName("FrostAndGunfireItems.Barter");
			if ((object)type != null)
			{
				MethodInfo methodInfo = AccessTools.Method(type, "CanBeUsed", (Type[])null, (Type[])null);
				MethodInfo methodInfo2 = AccessTools.Method(type, "DoEffect", (Type[])null, (Type[])null);
				if ((object)methodInfo != null)
				{
					Plugin.HarmonyInstance.Patch((MethodBase)methodInfo, new HarmonyMethod(bf_cbu_p), (HarmonyMethod)null, (HarmonyMethod)null, (HarmonyMethod)null, (HarmonyMethod)null);
				}
				if ((object)methodInfo2 != null)
				{
					Plugin.HarmonyInstance.Patch((MethodBase)methodInfo2, (HarmonyMethod)null, (HarmonyMethod)null, (HarmonyMethod)null, (HarmonyMethod)null, new HarmonyMethod(bf_de_t));
				}
			}
			Type type2 = AccessTools.TypeByName("FrostAndGunfireItems.MiniMushboom");
			if ((object)type2 != null)
			{
				MethodInfo methodInfo3 = AccessTools.Method(type2, "BuildPrefab", (Type[])null, (Type[])null);
				if ((object)methodInfo3 != null)
				{
					Plugin.HarmonyInstance.Patch((MethodBase)methodInfo3, (HarmonyMethod)null, new HarmonyMethod(mmf_bp_p), (HarmonyMethod)null, (HarmonyMethod)null, (HarmonyMethod)null);
				}
				MiniMushboomFix_BuildPrefab_Postfix();
			}
			Type type3 = AccessTools.TypeByName("FrostAndGunfireItems.BloodiedKey");
			if ((object)type3 != null)
			{
				MethodInfo methodInfo4 = AccessTools.Method(type3, "CanBeUsed", (Type[])null, (Type[])null);
				if ((object)methodInfo4 != null)
				{
					Plugin.HarmonyInstance.Patch((MethodBase)methodInfo4, new HarmonyMethod(bkf_cbu_p), (HarmonyMethod)null, (HarmonyMethod)null, (HarmonyMethod)null, (HarmonyMethod)null);
				}
			}
			string[] array = new string[7] { "SlimeyGuonStone", "Pods", "Greed", "Sack", "BulletSponge2", "GeminiGuonStone", "MirrorGuon" };
			string[] array2 = array;
			foreach (string text in array2)
			{
				OnDestroyGeneralFix.FixOnDestroy("FrostAndGunfireItems." + text);
			}
		}

		public static bool BarterFix_CanBeUsed_Prefix(ref bool __result, PlayerController user)
		{
			if ((Object)(object)user == (Object)null || user.CurrentRoom == null || user.carriedConsumables == null)
			{
				__result = false;
				return false;
			}
			return true;
		}

		public static void BarterFix_DoEffect_Transpiler(ILContext ctx)
		{
			//IL_0002: Unknown result type (might be due to invalid IL or missing references)
			//IL_0008: Expected O, but got Unknown
			//IL_0034: Unknown result type (might be due to invalid IL or missing references)
			//IL_0079: Unknown result type (might be due to invalid IL or missing references)
			//IL_0086: Unknown result type (might be due to invalid IL or missing references)
			ILCursor val = new ILCursor(ctx);
			if (val.JumpBeforeNext((Instruction x) => ILPatternMatchingExt.MatchStloc(x, 2)))
			{
				val.Emit(OpCodes.Call, (MethodBase)bf_de_iln_f);
			}
			val.Index = 0;
			if (val.JumpToNext((Instruction x) => ILPatternMatchingExt.MatchCallOrCallvirt<Object>(x, "op_Inequality")))
			{
				val.Emit(OpCodes.Ldloc_S, (byte)4);
				val.Emit(OpCodes.Call, (MethodBase)bf_de_sin);
			}
		}

		public static List<ShopItemController> BarterFix_DoEffect_ItemsListNullcheck(List<ShopItemController> itm)
		{
			return itm ?? new List<ShopItemController>();
		}

		public static bool BarterFix_DoEffect_ShopItemNullcheck(bool curr, ShopItemController sic)
		{
			return curr && (Object)(object)sic != (Object)null && (Object)(object)sic.item != (Object)null;
		}

		public static void MiniMushboomFix_BuildPrefab_Postfix()
		{
			//IL_00b9: Unknown result type (might be due to invalid IL or missing references)
			if (!Game.Enemies.ContainsID("kp:mini_mushboom"))
			{
				return;
			}
			AIActor val = Game.Enemies["kp:mini_mushboom"];
			if (!((Object)(object)val == (Object)null) && !((Object)(object)((BraveBehaviour)val).aiAnimator == (Object)null))
			{
				AIAnimator aiAnimator = ((BraveBehaviour)val).aiAnimator;
				if (aiAnimator.IdleAnimation != null && (aiAnimator.IdleAnimation.AnimNames == null || aiAnimator.IdleAnimation.AnimNames.Length < 2))
				{
					aiAnimator.IdleAnimation.AnimNames = new string[2] { "idle", "idle" };
				}
				if (aiAnimator.HitAnimation != null)
				{
					aiAnimator.HitAnimation.Type = (DirectionType)0;
				}
			}
		}

		public static bool BloodiedKeyFix_CanBeUsed_Prefix(ref bool __result, PlayerController user)
		{
			if ((Object)(object)user != (Object)null && user.CurrentRoom != null && (Object)(object)((BraveBehaviour)user).healthHaver != (Object)null)
			{
				return true;
			}
			__result = false;
			return false;
		}
	}
	public static class Oddments
	{
		public static MethodInfo sbf_u_t = AccessTools.Method(typeof(Oddments), "SpiderBootsFix_Update_Transpiler", (Type[])null, (Type[])null);

		public static MethodInfo sbf_u_dn = AccessTools.Method(typeof(Oddments), "SpiderBootsFix_Update_DungeonNullcheck", (Type[])null, (Type[])null);

		public static MethodInfo gef_t = AccessTools.Method(typeof(Oddments), "GoopEffectsFix_Transpiler", (Type[])null, (Type[])null);

		public static MethodInfo gef_aan_1 = AccessTools.Method(typeof(Oddments), "GoopEffectsFix_AIAnimatorNullcheck_1", (Type[])null, (Type[])null);

		public static MethodInfo gef_aan_2 = AccessTools.Method(typeof(Oddments), "GoopEffectsFix_AIAnimatorNullcheck_2", (Type[])null, (Type[])null);

		public static MethodInfo gef_an = AccessTools.Method(typeof(Oddments), "GoopEffectsFix_ActorNullcheck", (Type[])null, (Type[])null);

		public static void Patch()
		{
			//IL_003f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0049: Expected O, but got Unknown
			//IL_008b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0095: Expected O, but got Unknown
			Type type = AccessTools.TypeByName("Oddments.SpiderBoots");
			if ((object)type != null)
			{
				MethodInfo methodInfo = AccessTools.Method(type, "Update", (Type[])null, (Type[])null);
				if ((object)methodInfo != null)
				{
					Plugin.HarmonyInstance.Patch((MethodBase)methodInfo, (HarmonyMethod)null, (HarmonyMethod)null, (HarmonyMethod)null, (HarmonyMethod)null, new HarmonyMethod(sbf_u_t));
				}
			}
			Type type2 = AccessTools.TypeByName("Oddments.CustomGoopEffectDoer");
			if ((object)type2 != null)
			{
				MethodInfo methodInfo2 = AccessTools.Method(type2, "CoolNewCustomGoopEffects", (Type[])null, (Type[])null);
				if ((object)methodInfo2 != null)
				{
					Plugin.HarmonyInstance.Patch((MethodBase)methodInfo2, (HarmonyMethod)null, (HarmonyMethod)null, (HarmonyMethod)null, (HarmonyMethod)null, new HarmonyMethod(gef_t));
				}
			}
			string[] array = new string[13]
			{
				"HookWormItem", "GungeonVeins", "PulsingBulletsItem", "RightfulCurtsy", "SonarBullets", "SpaceParasiteItem", "FuckyBarrelItem", "ToothyBullets", "DoubleHealingItem", "HellfireRounds",
				"IceLeech", "WhollyGhost", "MinCasingIncreaserItem+MemberCard"
			};
			string[] array2 = array;
			foreach (string text in array2)
			{
				OnDestroyGeneralFix.FixOnDestroy("Oddments." + text);
			}
		}

		public static void SpiderBootsFix_Update_Transpiler(ILContext ctx)
		{
			//IL_0002: Unknown result type (might be due to invalid IL or missing references)
			//IL_0008: Expected O, but got Unknown
			//IL_0038: Unknown result type (might be due to invalid IL or missing references)
			ILCursor val = new ILCursor(ctx);
			if (val.JumpToNext((Instruction x) => ILPatternMatchingExt.MatchCallOrCallvirt<Object>(x, "op_Implicit")))
			{
				val.Emit(OpCodes.Call, (MethodBase)sbf_u_dn);
			}
		}

		public static bool SpiderBootsFix_Update_DungeonNullcheck(bool curr)
		{
			if (!GameManager.HasInstance || (Object)(object)GameManager.Instance.Dungeon == (Object)null)
			{
				return false;
			}
			if (Dungeon.IsGenerating)
			{
				return false;
			}
			return curr;
		}

		public static void GoopEffectsFix_Transpiler(ILContext ctx)
		{
			//IL_0002: Unknown result type (might be due to invalid IL or missing references)
			//IL_0008: Expected O, but got Unknown
			//IL_003d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0049: Unknown result type (might be due to invalid IL or missing references)
			//IL_00fa: Unknown result type (might be due to invalid IL or missing references)
			//IL_0106: Unknown result type (might be due to invalid IL or missing references)
			//IL_0117: Unknown result type (might be due to invalid IL or missing references)
			//IL_0128: Unknown result type (might be due to invalid IL or missing references)
			ILCursor val = new ILCursor(ctx);
			TypeReference val6 = default(TypeReference);
			if (!val.JumpToNext((Instruction x) => ILPatternMatchingExt.MatchIsinst(x, ref val6), 2))
			{
				return;
			}
			val.Emit(OpCodes.Ldarg_1);
			val.Emit(OpCodes.Call, (MethodBase)gef_an);
			ILLabel val5 = default(ILLabel);
			ILCursor[] array = default(ILCursor[]);
			ILLabel val4 = default(ILLabel);
			if (val.JumpToNext((Instruction x) => ILPatternMatchingExt.MatchBrfalse(x, ref val5), 3) && val.TryFindNext(ref array, new Func<Instruction, bool>[1]
			{
				(Instruction x) => ILPatternMatchingExt.MatchBrfalse(x, ref val4)
			}) && array.Length != 0)
			{
				ILCursor val2 = array[0];
				ILLabel val3 = default(ILLabel);
				if (val2 != null && val2.Next != null && ILPatternMatchingExt.MatchBrfalse(val2.Next, ref val3))
				{
					val.Emit(OpCodes.Ldarg_1);
					val.Emit(OpCodes.Call, (MethodBase)gef_aan_1);
					val.Emit(OpCodes.Call, (MethodBase)gef_aan_2);
					val.Emit(OpCodes.Beq, (object)val3);
				}
			}
		}

		public static AIActor GoopEffectsFix_ActorNullcheck(AIActor curr, GameActor actor)
		{
			return ((Object)(object)actor == (Object)null) ? null : curr;
		}

		public static int GoopEffectsFix_AIAnimatorNullcheck_1(GameActor actor)
		{
			if ((Object)(object)actor == (Object)null)
			{
				return 0;
			}
			if ((Object)(object)((BraveBehaviour)actor).aiAnimator != (Object)null)
			{
				return 0;
			}
			return 1;
		}

		public static int GoopEffectsFix_AIAnimatorNullcheck_2()
		{
			return 1;
		}
	}
	public static class Prismatism
	{
		public static MethodInfo pff_cbu_p = AccessTools.Method(typeof(Prismatism), "ParrotsFeatherFix_CanBeUsed_Prefix", (Type[])null, (Type[])null);

		public static MethodInfo bf_ec_p = AccessTools.Method(typeof(Prismatism), "BraveryFix_EnemiesCheck_Prefix", (Type[])null, (Type[])null);

		public static MethodInfo mpf_oph_t = AccessTools.Method(typeof(Prismatism), "MaidenPlatingFix_OnPlayerHit_Transpiler", (Type[])null, (Type[])null);

		public static MethodInfo mpf_oph_rp = AccessTools.Method(typeof(Prismatism), "MaidenPlatingFix_OnPlayerHit_ReplaceProjectile", (Type[])null, (Type[])null);

		public static MethodInfo caf_od_t = AccessTools.Method(typeof(Prismatism), "ColdAmmoFix_OnDestroy_Transpiler", (Type[])null, (Type[])null);

		public static MethodInfo caf_od_u = AccessTools.Method(typeof(Prismatism), "ColdAmmoFix_OnDestroy_Unsubscribe", (Type[])null, (Type[])null);

		public static void Patch()
		{
			//IL_003d: Unknown result type (might be due to invalid IL or missing references)
			//IL_004b: Expected O, but got Unknown
			//IL_0089: Unknown result type (might be due to invalid IL or missing references)
			//IL_0097: Expected O, but got Unknown
			//IL_00d9: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e3: Expected O, but got Unknown
			//IL_0125: Unknown result type (might be due to invalid IL or missing references)
			//IL_012f: Expected O, but got Unknown
			Type type = AccessTools.TypeByName("katmod.ParrotsFeather");
			if ((object)type != null)
			{
				MethodInfo methodInfo = AccessTools.Method(type, "CanBeUsed", (Type[])null, (Type[])null);
				if ((object)methodInfo != null)
				{
					Plugin.HarmonyInstance.Patch((MethodBase)methodInfo, new HarmonyMethod(pff_cbu_p), (HarmonyMethod)null, (HarmonyMethod)null, (HarmonyMethod)null, (HarmonyMethod)null);
				}
			}
			Type type2 = AccessTools.TypeByName("katmod.Bravery");
			if ((object)type2 != null)
			{
				MethodInfo methodInfo2 = AccessTools.Method(type2, "EnemiesCheck", (Type[])null, (Type[])null);
				if ((object)methodInfo2 != null)
				{
					Plugin.HarmonyInstance.Patch((MethodBase)methodInfo2, new HarmonyMethod(bf_ec_p), (HarmonyMethod)null, (HarmonyMethod)null, (HarmonyMethod)null, (HarmonyMethod)null);
				}
			}
			Type type3 = AccessTools.TypeByName("katmod.MaidenPlating");
			if ((object)type3 != null)
			{
				MethodInfo methodInfo3 = AccessTools.Method(type3, "OnPlayerHit", (Type[])null, (Type[])null);
				if ((object)methodInfo3 != null)
				{
					Plugin.HarmonyInstance.Patch((MethodBase)methodInfo3, (HarmonyMethod)null, (HarmonyMethod)null, (HarmonyMethod)null, (HarmonyMethod)null, new HarmonyMethod(mpf_oph_t));
				}
			}
			Type type4 = AccessTools.TypeByName("katmod.ColdAmmo");
			if ((object)type4 != null)
			{
				MethodInfo methodInfo4 = AccessTools.Method(type4, "OnDestroy", (Type[])null, (Type[])null);
				if ((object)methodInfo4 != null)
				{
					Plugin.HarmonyInstance.Patch((MethodBase)methodInfo4, (HarmonyMethod)null, (HarmonyMethod)null, (HarmonyMethod)null, (HarmonyMethod)null, new HarmonyMethod(caf_od_t));
				}
			}
			string[] array = new string[1] { "TwoOfHearts" };
			string[] array2 = array;
			foreach (string text in array2)
			{
				OnDestroyGeneralFix.FixOnDestroy("katmod." + text);
			}
		}

		public static bool ParrotsFeatherFix_CanBeUsed_Prefix(ref bool __result, PlayerController user)
		{
			if ((Object)(object)user == (Object)null || user.CurrentRoom == null || (Object)(object)Camera.main == (Object)null)
			{
				__result = false;
				return false;
			}
			return true;
		}

		public static bool BraveryFix_EnemiesCheck_Prefix(PassiveItem __instance)
		{
			if ((Object)(object)__instance == (Object)null || (Object)(object)__instance.Owner == (Object)null || __instance.Owner.CurrentRoom == null)
			{
				return false;
			}
			if (__instance.Owner.CurrentRoom.GetActiveEnemies((ActiveEnemyType)0) == null)
			{
				return false;
			}
			return true;
		}

		public static void MaidenPlatingFix_OnPlayerHit_Transpiler(ILContext ctx)
		{
			//IL_0002: Unknown result type (might be due to invalid IL or missing references)
			//IL_0008: Expected O, but got Unknown
			//IL_0038: Unknown result type (might be due to invalid IL or missing references)
			//IL_0044: Unknown result type (might be due to invalid IL or missing references)
			ILCursor val = new ILCursor(ctx);
			if (val.JumpToNext((Instruction x) => ILPatternMatchingExt.MatchCallOrCallvirt<BraveBehaviour>(x, "get_projectile")))
			{
				val.Emit(OpCodes.Ldloc_2);
				val.Emit(OpCodes.Call, (MethodBase)mpf_oph_rp);
			}
		}

		public static Projectile MaidenPlatingFix_OnPlayerHit_ReplaceProjectile(Projectile _, Projectile proj)
		{
			return proj;
		}

		public static void ColdAmmoFix_OnDestroy_Transpiler(ILContext ctx)
		{
			//IL_0002: Unknown result type (might be due to invalid IL or missing references)
			//IL_0008: Expected O, but got Unknown
			//IL_0046: 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)
			ILCursor val = new ILCursor(ctx);
			if (val.JumpToNext((Instruction x) => ILPatternMatchingExt.MatchCallOrCallvirt<PlayerController>(x, "add_GunChanged")))
			{
				Instruction prev = val.Prev;
				ILLabel val2 = val.MarkLabel();
				val.Emit(OpCodes.Call, (MethodBase)caf_od_u);
				val.Goto(prev, (MoveType)0, false);
				val.Emit(OpCodes.Br, (object)val2);
			}
		}

		public static void ColdAmmoFix_OnDestroy_Unsubscribe(PlayerController player, Action<Gun, Gun, bool> act)
		{
			if (!((Object)(object)player == (Object)null))
			{
				player.GunChanged -= act;
			}
		}
	}
	public static class RetrashItems
	{
		public static MethodInfo cbf_sh_t = AccessTools.Method(typeof(RetrashItems), "CrystalBallFix_SoulHook_Transpiler", (Type[])null, (Type[])null);

		public static MethodInfo cbf_sh_n = AccessTools.Method(typeof(RetrashItems), "CrystalBallFix_SoulHook_Nullcheck", (Type[])null, (Type[])null);

		public static MethodInfo cbf_sh_rp1 = AccessTools.Method(typeof(RetrashItems), "CrystalBallFix_SoulHook_ReplaceP1", (Type[])null, (Type[])null);

		public static MethodInfo cbf_sh_rp2 = AccessTools.Method(typeof(RetrashItems), "CrystalBallFix_SoulHook_ReplaceP2", (Type[])null, (Type[])null);

		public static void Patch()
		{
			//IL_003a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0044: Expected O, but got Unknown
			Type type = AccessTools.TypeByName("Blunderbeast.CrystalBall");
			if ((object)type != null)
			{
				MethodInfo methodInfo = AccessTools.Method(type, "SoulHook", (Type[])null, (Type[])null);
				if ((object)methodInfo != null)
				{
					Plugin.HarmonyInstance.Patch((MethodBase)methodInfo, (HarmonyMethod)null, (HarmonyMethod)null, (HarmonyMethod)null, (HarmonyMethod)null, new HarmonyMethod(cbf_sh_t));
				}
			}
		}

		public static void CrystalBallFix_SoulHook_Transpiler(ILContext ctx)
		{
			//IL_0002: Unknown result type (might be due to invalid IL or missing references)
			//IL_0008: Expected O, but got Unknown
			//IL_0082: Unknown result type (might be due to invalid IL or missing references)
			//IL_008e: Unknown result type (might be due to invalid IL or missing references)
			//IL_009f: Unknown result type (might be due to invalid IL or missing references)
			//IL_00dd: Unknown result type (might be due to invalid IL or missing references)
			//IL_011f: Unknown result type (might be due to invalid IL or missing references)
			ILCursor val = new ILCursor(ctx);
			ILCursor[] array = default(ILCursor[]);
			MethodReference val2 = default(MethodReference);
			if (!val.TryFindNext(ref array, new Func<Instruction, bool>[1]
			{
				(Instruction x) => ILPatternMatchingExt.MatchRet(x)
			}) || !val.JumpToNext((Instruction x) => ILPatternMatchingExt.MatchCallOrCallvirt(x, ref val2) && Extensions.Is((MemberReference)(object)((MemberReference)val2).DeclaringType, (MemberInfo)typeof(Action<LifeOrbGunModifier, bool>)) && ((MemberReference)val2).Name == "Invoke"))
			{
				return;
			}
			Instruction next = array[0].Next;
			val.Emit(OpCodes.Ldarg_1);
			val.Emit(OpCodes.Call, (MethodBase)cbf_sh_n);
			val.Emit(OpCodes.Brtrue, next);
			if (val.JumpBeforeNext((Instruction x) => ILPatternMatchingExt.MatchStloc(x, 0)))
			{
				val.Emit(OpCodes.Call, (MethodBase)cbf_sh_rp1);
				if (val.JumpBeforeNext((Instruction x) => ILPatternMatchingExt.MatchStloc(x, 1)))
				{
					val.Emit(OpCodes.Call, (MethodBase)cbf_sh_rp2);
				}
			}
		}

		public static bool CrystalBallFix_SoulHook_Nullcheck(LifeOrbGunModifier orb)
		{
			if ((Object)(object)orb == (Object)null)
			{
				return true;
			}
			if ((Object)(object)GameManager.Instance == (Object)null)
			{
				return true;
			}
			bool flag = (Object)(object)GameManager.Instance.PrimaryPlayer != (Object)null && (Object)(object)((GameActor)GameManager.Instance.PrimaryPlayer).CurrentGun != (Object)null;
			bool flag2 = (Object)(object)GameManager.Instance.SecondaryPlayer != (Object)null && (Object)(object)((GameActor)GameManager.Instance.SecondaryPlayer).CurrentGun != (Object)null;
			if (!flag && !flag2)
			{
				return true;
			}
			return false;
		}

		public static PlayerController CrystalBallFix_SoulHook_ReplaceP1(PlayerController curr)
		{
			if ((Object)(object)curr != (Object)null && (Object)(object)((GameActor)curr).CurrentGun != (Object)null)
			{
				return curr;
			}
			if ((Object)(object)GameManager.Instance == (Object)null || (Object)(object)GameManager.Instance.SecondaryPlayer == (Object)null || (Object)(object)((GameActor)GameManager.Instance.SecondaryPlayer).CurrentGun == (Object)null)
			{
				return curr;
			}
			return GameManager.Instance.SecondaryPlayer;
		}

		public static PlayerController CrystalBallFix_SoulHook_ReplaceP2(PlayerController curr)
		{
			if ((Object)(object)curr != (Object)null && (Object)(object)((GameActor)curr).CurrentGun != (Object)null)
			{
				return curr;
			}
			if ((Object)(object)GameManager.Instance == (Object)null || (Object)(object)GameManager.Instance.PrimaryPlayer == (Object)null || (Object)(object)((GameActor)GameManager.Instance.PrimaryPlayer).CurrentGun == (Object)null)
			{
				return curr;
			}
			return GameManager.Instance.PrimaryPlayer;
		}
	}
}