Decompiled source of DegenerateItems v1.0.0

DegenerateItems.dll

Decompiled 5 days ago
using System;
using System.Diagnostics;
using System.IO;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.Versioning;
using System.Security;
using System.Security.Permissions;
using BepInEx;
using BepInEx.Logging;
using HG.Reflection;
using IL.RoR2;
using Microsoft.CodeAnalysis;
using Mono.Cecil;
using Mono.Cecil.Cil;
using MonoMod.Cil;
using R2API;
using RoR2;
using RoR2.Items;
using RoR2BepInExPack.GameAssetPaths.Version_1_39_0;
using ShaderSwapper;
using UnityEngine;
using UnityEngine.AddressableAssets;

[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)]
[assembly: OptIn]
[assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")]
[assembly: AssemblyCompany("DegenerateItems")]
[assembly: AssemblyConfiguration("Release")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: AssemblyInformationalVersion("1.0.0+57a5fd3f5b7771a9971c4662098712c06a558f8f")]
[assembly: AssemblyProduct("DegenerateItems")]
[assembly: AssemblyTitle("DegenerateItems")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("1.0.0.0")]
[module: UnverifiableCode]
[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 DegenerateItems
{
	internal class BunnyEars
	{
		public class BunnyEarsBehavior : BaseItemBodyBehavior
		{
			[ItemDefAssociation(useOnServer = true, useOnClient = true)]
			private static ItemDef GetItemDef()
			{
				return BunnyEarsDef;
			}

			private int GetStackCount()
			{
				return base.stack;
			}
		}

		[CompilerGenerated]
		private static class <>O
		{
			public static StatHookEventHandler <0>__RecalculateStatsAPI_GetStatCoefficients;
		}

		[Serializable]
		[CompilerGenerated]
		private sealed class <>c
		{
			public static readonly <>c <>9 = new <>c();

			public static Func<Instruction, bool> <>9__1_1;

			public static Func<Instruction, bool> <>9__1_2;

			public static Func<Instruction, bool> <>9__1_3;

			public static Func<Instruction, bool> <>9__1_4;

			public static Func<HealthComponent, DamageInfo, float, float> <>9__1_5;

			public static Manipulator <>9__1_0;

			internal void <Init>b__1_0(ILContext il)
			{
				//IL_0001: Unknown result type (might be due to invalid IL or missing references)
				//IL_0007: Expected O, but got Unknown
				//IL_009f: Unknown result type (might be due to invalid IL or missing references)
				//IL_00ab: Unknown result type (might be due to invalid IL or missing references)
				//IL_00b7: Unknown result type (might be due to invalid IL or missing references)
				//IL_00eb: Unknown result type (might be due to invalid IL or missing references)
				ILCursor val = new ILCursor(il);
				if (val.TryGotoNext((MoveType)1, new Func<Instruction, bool>[4]
				{
					(Instruction x) => ILPatternMatchingExt.MatchLdloc(x, 1),
					(Instruction x) => ILPatternMatchingExt.MatchCallvirt<CharacterMaster>(x, "get_inventory"),
					(Instruction x) => ILPatternMatchingExt.MatchLdsfld(x, typeof(Items), "NearbyDamageBonus"),
					(Instruction x) => ILPatternMatchingExt.MatchCallvirt<Inventory>(x, "GetItemCountEffective")
				}))
				{
					val.Emit(OpCodes.Ldarg_0);
					val.Emit(OpCodes.Ldarg_1);
					val.Emit(OpCodes.Ldloc_S, (byte)10);
					val.EmitDelegate<Func<HealthComponent, DamageInfo, float, float>>((Func<HealthComponent, DamageInfo, float, float>)delegate(HealthComponent self, DamageInfo damageInfo, float accumulatedDamage)
					{
						//IL_003a: Unknown result type (might be due to invalid IL or missing references)
						//IL_0040: Unknown result type (might be due to invalid IL or missing references)
						//IL_0045: 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_005a: Unknown result type (might be due to invalid IL or missing references)
						//IL_0074: Unknown result type (might be due to invalid IL or missing references)
						//IL_008f: Unknown result type (might be due to invalid IL or missing references)
						//IL_009a: 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)
						CharacterBody component = damageInfo.attacker.GetComponent<CharacterBody>();
						if ((Object)(object)component != (Object)null)
						{
							int num = (Object.op_Implicit((Object)(object)component.inventory) ? component.inventory.GetItemCount(BunnyEarsDef) : 0);
							Vector3 val2 = component.corePosition - damageInfo.position;
							if (num > 0 && damageInfo.attacker.transform.position.y > ((Component)self.body).gameObject.transform.position.y + self.body.radius)
							{
								damageInfo.damageColorIndex = (DamageColorIndex)10;
								EffectManager.SimpleImpactEffect(AssetReferences.diamondDamageBonusImpactEffectPrefab, damageInfo.position, val2, true);
								return accumulatedDamage * (1f + (float)num * 0.1f);
							}
						}
						return accumulatedDamage;
					});
					val.Emit(OpCodes.Stloc_S, (byte)10);
				}
				else
				{
					Log.Error(((MemberReference)il.Method).Name + " IL Hook failed!");
				}
			}

			internal bool <Init>b__1_1(Instruction x)
			{
				return ILPatternMatchingExt.MatchLdloc(x, 1);
			}

			internal bool <Init>b__1_2(Instruction x)
			{
				return ILPatternMatchingExt.MatchCallvirt<CharacterMaster>(x, "get_inventory");
			}

			internal bool <Init>b__1_3(Instruction x)
			{
				return ILPatternMatchingExt.MatchLdsfld(x, typeof(Items), "NearbyDamageBonus");
			}

			internal bool <Init>b__1_4(Instruction x)
			{
				return ILPatternMatchingExt.MatchCallvirt<Inventory>(x, "GetItemCountEffective");
			}

			internal float <Init>b__1_5(HealthComponent self, DamageInfo damageInfo, float accumulatedDamage)
			{
				//IL_003a: Unknown result type (might be due to invalid IL or missing references)
				//IL_0040: Unknown result type (might be due to invalid IL or missing references)
				//IL_0045: 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_005a: Unknown result type (might be due to invalid IL or missing references)
				//IL_0074: Unknown result type (might be due to invalid IL or missing references)
				//IL_008f: Unknown result type (might be due to invalid IL or missing references)
				//IL_009a: 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)
				CharacterBody component = damageInfo.attacker.GetComponent<CharacterBody>();
				if ((Object)(object)component != (Object)null)
				{
					int num = (Object.op_Implicit((Object)(object)component.inventory) ? component.inventory.GetItemCount(BunnyEarsDef) : 0);
					Vector3 val = component.corePosition - damageInfo.position;
					if (num > 0 && damageInfo.attacker.transform.position.y > ((Component)self.body).gameObject.transform.position.y + self.body.radius)
					{
						damageInfo.damageColorIndex = (DamageColorIndex)10;
						EffectManager.SimpleImpactEffect(AssetReferences.diamondDamageBonusImpactEffectPrefab, damageInfo.position, val, true);
						return accumulatedDamage * (1f + (float)num * 0.1f);
					}
				}
				return accumulatedDamage;
			}
		}

		public static ItemDef BunnyEarsDef;

		internal static void Init()
		{
			//IL_0064: Unknown result type (might be due to invalid IL or missing references)
			//IL_0069: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d7: 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_0138: Unknown result type (might be due to invalid IL or missing references)
			//IL_0142: Expected O, but got Unknown
			//IL_0153: Unknown result type (might be due to invalid IL or missing references)
			//IL_0158: Unknown result type (might be due to invalid IL or missing references)
			//IL_015e: Expected O, but got Unknown
			//IL_0177: Unknown result type (might be due to invalid IL or missing references)
			//IL_017c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0182: Expected O, but got Unknown
			CreateLang();
			BunnyEarsDef = ScriptableObject.CreateInstance<ItemDef>();
			((Object)BunnyEarsDef).name = "DEGENERATEITEMS_BUNNYEARS_NAME";
			BunnyEarsDef.nameToken = "DEGENERATEITEMS_BUNNYEARS_NAME";
			BunnyEarsDef.pickupToken = "DEGENERATEITEMS_BUNNYEARS_PICKUP";
			BunnyEarsDef.descriptionToken = "DEGENERATEITEMS_BUNNYEARS_DESC";
			BunnyEarsDef.loreToken = "DEGENERATEITEMS_BUNNYEARS_LORE";
			BunnyEarsDef._itemTierDef = Addressables.LoadAssetAsync<ItemTierDef>((object)"RoR2/Base/Common/Tier1Def.asset").WaitForCompletion();
			BunnyEarsDef.pickupIconSprite = DegenerateItems.DegenerateItemsAssets.LoadAsset<Sprite>("bunnyears.png");
			BunnyEarsDef.pickupModelPrefab = DegenerateItems.DegenerateItemsAssets.LoadAsset<GameObject>("bunnyears_curve.prefab");
			BunnyEarsDef.tags = (ItemTag[])(object)new ItemTag[2]
			{
				(ItemTag)31,
				(ItemTag)29
			};
			ModelPanelParameters obj = BunnyEarsDef.pickupModelPrefab.AddComponent<ModelPanelParameters>();
			obj.focusPointTransform = new GameObject("FocusPoint").transform;
			obj.focusPointTransform.SetParent(BunnyEarsDef.pickupModelPrefab.transform);
			obj.cameraPositionTransform = new GameObject("CameraPosition").transform;
			obj.cameraPositionTransform.SetParent(BunnyEarsDef.pickupModelPrefab.transform);
			ItemAPI.Add(new CustomItem(BunnyEarsDef, ItemDisplayTransformations()));
			object obj2 = <>O.<0>__RecalculateStatsAPI_GetStatCoefficients;
			if (obj2 == null)
			{
				StatHookEventHandler val = RecalculateStatsAPI_GetStatCoefficients;
				<>O.<0>__RecalculateStatsAPI_GetStatCoefficients = val;
				obj2 = (object)val;
			}
			RecalculateStatsAPI.GetStatCoefficients += (StatHookEventHandler)obj2;
			object obj3 = <>c.<>9__1_0;
			if (obj3 == null)
			{
				Manipulator val2 = delegate(ILContext il)
				{
					//IL_0001: Unknown result type (might be due to invalid IL or missing references)
					//IL_0007: Expected O, but got Unknown
					//IL_009f: Unknown result type (might be due to invalid IL or missing references)
					//IL_00ab: Unknown result type (might be due to invalid IL or missing references)
					//IL_00b7: Unknown result type (might be due to invalid IL or missing references)
					//IL_00eb: Unknown result type (might be due to invalid IL or missing references)
					ILCursor val3 = new ILCursor(il);
					if (val3.TryGotoNext((MoveType)1, new Func<Instruction, bool>[4]
					{
						(Instruction x) => ILPatternMatchingExt.MatchLdloc(x, 1),
						(Instruction x) => ILPatternMatchingExt.MatchCallvirt<CharacterMaster>(x, "get_inventory"),
						(Instruction x) => ILPatternMatchingExt.MatchLdsfld(x, typeof(Items), "NearbyDamageBonus"),
						(Instruction x) => ILPatternMatchingExt.MatchCallvirt<Inventory>(x, "GetItemCountEffective")
					}))
					{
						val3.Emit(OpCodes.Ldarg_0);
						val3.Emit(OpCodes.Ldarg_1);
						val3.Emit(OpCodes.Ldloc_S, (byte)10);
						val3.EmitDelegate<Func<HealthComponent, DamageInfo, float, float>>((Func<HealthComponent, DamageInfo, float, float>)delegate(HealthComponent self, DamageInfo damageInfo, float accumulatedDamage)
						{
							//IL_003a: Unknown result type (might be due to invalid IL or missing references)
							//IL_0040: Unknown result type (might be due to invalid IL or missing references)
							//IL_0045: 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_005a: Unknown result type (might be due to invalid IL or missing references)
							//IL_0074: Unknown result type (might be due to invalid IL or missing references)
							//IL_008f: Unknown result type (might be due to invalid IL or missing references)
							//IL_009a: 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)
							CharacterBody component = damageInfo.attacker.GetComponent<CharacterBody>();
							if ((Object)(object)component != (Object)null)
							{
								int num = (Object.op_Implicit((Object)(object)component.inventory) ? component.inventory.GetItemCount(BunnyEarsDef) : 0);
								Vector3 val4 = component.corePosition - damageInfo.position;
								if (num > 0 && damageInfo.attacker.transform.position.y > ((Component)self.body).gameObject.transform.position.y + self.body.radius)
								{
									damageInfo.damageColorIndex = (DamageColorIndex)10;
									EffectManager.SimpleImpactEffect(AssetReferences.diamondDamageBonusImpactEffectPrefab, damageInfo.position, val4, true);
									return accumulatedDamage * (1f + (float)num * 0.1f);
								}
							}
							return accumulatedDamage;
						});
						val3.Emit(OpCodes.Stloc_S, (byte)10);
					}
					else
					{
						Log.Error(((MemberReference)il.Method).Name + " IL Hook failed!");
					}
				};
				<>c.<>9__1_0 = val2;
				obj3 = (object)val2;
			}
			HealthComponent.TakeDamageProcess += (Manipulator)obj3;
		}

		private static void RecalculateStatsAPI_GetStatCoefficients(CharacterBody sender, StatHookEventArgs args)
		{
			int num = (Object.op_Implicit((Object)(object)sender.inventory) ? sender.inventory.GetItemCount(BunnyEarsDef) : 0);
			args.jumpPowerMultAdd += 0.1f * (float)num;
		}

		public static void CreateLang()
		{
			LanguageAPI.Add("DEGENERATEITEMS_BUNNYEARS_NAME", "Bunny Ears");
			LanguageAPI.Add("DEGENERATEITEMS_BUNNYEARS_LORE", "\"bunny bunny bunny bunny bunny bunny\"\n\nTwo long pillars rise from the earth, capable of hearing across the cosmos.\n\n\"Brother, what are you-\"\n\n\"bunny bunny bunny bunny bunny bunny\"\n\nA small body, fitting of a warrior.\n\n\"I don't understan-\"\n\n\"bunny bunny bunny bunny bunny bunny\"\n\nTwo legs, capable of darting across the planet in a matter of hours.\n\n\"BROTHER.\"\n\n\"bunny bunny bunn-\"\n\nA loud slam shakes the earth. A pile of dust remains.");
			LanguageAPI.Add("DEGENERATEITEMS_BUNNYEARS_PICKUP", "Gain extra jump height. Enemies below you take more damage.");
			LanguageAPI.Add("DEGENERATEITEMS_BUNNYEARS_DESC", "Gain <style=cIsUtility>10%</style> <style=cStack>(+10% per stack)</style> jump height. Enemies below you take <style=cIsDamage>10%</style> <style=cStack>(+10% per stack)</style> more damage.");
		}

		public static ItemDisplayRuleDict ItemDisplayTransformations()
		{
			//IL_0001: Unknown result type (might be due to invalid IL or missing references)
			//IL_0007: Expected O, but got Unknown
			//IL_0017: 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_0058: Unknown result type (might be due to invalid IL or missing references)
			//IL_005d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0073: Unknown result type (might be due to invalid IL or missing references)
			//IL_0078: 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_0093: Unknown result type (might be due to invalid IL or missing references)
			//IL_0098: Unknown result type (might be due to invalid IL or missing references)
			//IL_0099: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b3: Unknown result type (might be due to invalid IL or missing references)
			//IL_00bc: Unknown result type (might be due to invalid IL or missing references)
			//IL_00f4: Unknown result type (might be due to invalid IL or missing references)
			//IL_00f9: 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_0114: Unknown result type (might be due to invalid IL or missing references)
			//IL_012a: Unknown result type (might be due to invalid IL or missing references)
			//IL_012f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0134: Unknown result type (might be due to invalid IL or missing references)
			//IL_0135: Unknown result type (might be due to invalid IL or missing references)
			//IL_014f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0158: Unknown result type (might be due to invalid IL or missing references)
			//IL_0190: Unknown result type (might be due to invalid IL or missing references)
			//IL_0195: Unknown result type (might be due to invalid IL or missing references)
			//IL_01ab: Unknown result type (might be due to invalid IL or missing references)
			//IL_01b0: Unknown result type (might be due to invalid IL or missing references)
			//IL_01c6: Unknown result type (might be due to invalid IL or missing references)
			//IL_01cb: Unknown result type (might be due to invalid IL or missing references)
			//IL_01d0: Unknown result type (might be due to invalid IL or missing references)
			//IL_01d1: Unknown result type (might be due to invalid IL or missing references)
			//IL_01eb: Unknown result type (might be due to invalid IL or missing references)
			//IL_01f4: Unknown result type (might be due to invalid IL or missing references)
			//IL_022c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0231: Unknown result type (might be due to invalid IL or missing references)
			//IL_0247: Unknown result type (might be due to invalid IL or missing references)
			//IL_024c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0262: Unknown result type (might be due to invalid IL or missing references)
			//IL_0267: Unknown result type (might be due to invalid IL or missing references)
			//IL_026c: Unknown result type (might be due to invalid IL or missing references)
			//IL_026d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0287: Unknown result type (might be due to invalid IL or missing references)
			//IL_0290: Unknown result type (might be due to invalid IL or missing references)
			//IL_02c8: Unknown result type (might be due to invalid IL or missing references)
			//IL_02cd: Unknown result type (might be due to invalid IL or missing references)
			//IL_02e3: Unknown result type (might be due to invalid IL or missing references)
			//IL_02e8: Unknown result type (might be due to invalid IL or missing references)
			//IL_02fe: Unknown result type (might be due to invalid IL or missing references)
			//IL_0303: Unknown result type (might be due to invalid IL or missing references)
			//IL_0308: Unknown result type (might be due to invalid IL or missing references)
			//IL_0309: Unknown result type (might be due to invalid IL or missing references)
			//IL_0323: Unknown result type (might be due to invalid IL or missing references)
			//IL_032c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0364: Unknown result type (might be due to invalid IL or missing references)
			//IL_0369: Unknown result type (might be due to invalid IL or missing references)
			//IL_037f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0384: Unknown result type (might be due to invalid IL or missing references)
			//IL_039a: Unknown result type (might be due to invalid IL or missing references)
			//IL_039f: Unknown result type (might be due to invalid IL or missing references)
			//IL_03a4: Unknown result type (might be due to invalid IL or missing references)
			//IL_03a5: Unknown result type (might be due to invalid IL or missing references)
			//IL_03bf: Unknown result type (might be due to invalid IL or missing references)
			//IL_03c8: Unknown result type (might be due to invalid IL or missing references)
			//IL_0400: Unknown result type (might be due to invalid IL or missing references)
			//IL_0405: Unknown result type (might be due to invalid IL or missing references)
			//IL_041b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0420: Unknown result type (might be due to invalid IL or missing references)
			//IL_0436: Unknown result type (might be due to invalid IL or missing references)
			//IL_043b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0440: Unknown result type (might be due to invalid IL or missing references)
			//IL_0441: Unknown result type (might be due to invalid IL or missing references)
			//IL_045b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0464: Unknown result type (might be due to invalid IL or missing references)
			//IL_049c: Unknown result type (might be due to invalid IL or missing references)
			//IL_04a1: Unknown result type (might be due to invalid IL or missing references)
			//IL_04b7: Unknown result type (might be due to invalid IL or missing references)
			//IL_04bc: Unknown result type (might be due to invalid IL or missing references)
			//IL_04d2: Unknown result type (might be due to invalid IL or missing references)
			//IL_04d7: Unknown result type (might be due to invalid IL or missing references)
			//IL_04dc: Unknown result type (might be due to invalid IL or missing references)
			//IL_04dd: Unknown result type (might be due to invalid IL or missing references)
			//IL_04f7: Unknown result type (might be due to invalid IL or missing references)
			//IL_0500: Unknown result type (might be due to invalid IL or missing references)
			//IL_0538: Unknown result type (might be due to invalid IL or missing references)
			//IL_053d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0553: Unknown result type (might be due to invalid IL or missing references)
			//IL_0558: Unknown result type (might be due to invalid IL or missing references)
			//IL_056e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0573: Unknown result type (might be due to invalid IL or missing references)
			//IL_0578: Unknown result type (might be due to invalid IL or missing references)
			//IL_0579: Unknown result type (might be due to invalid IL or missing references)
			//IL_0593: Unknown result type (might be due to invalid IL or missing references)
			//IL_059c: Unknown result type (might be due to invalid IL or missing references)
			//IL_05d4: Unknown result type (might be due to invalid IL or missing references)
			//IL_05d9: Unknown result type (might be due to invalid IL or missing references)
			//IL_05ef: Unknown result type (might be due to invalid IL or missing references)
			//IL_05f4: Unknown result type (might be due to invalid IL or missing references)
			//IL_060a: Unknown result type (might be due to invalid IL or missing references)
			//IL_060f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0614: Unknown result type (might be due to invalid IL or missing references)
			//IL_0615: Unknown result type (might be due to invalid IL or missing references)
			//IL_062f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0638: Unknown result type (might be due to invalid IL or missing references)
			//IL_0670: Unknown result type (might be due to invalid IL or missing references)
			//IL_0675: Unknown result type (might be due to invalid IL or missing references)
			//IL_068b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0690: Unknown result type (might be due to invalid IL or missing references)
			//IL_06a6: Unknown result type (might be due to invalid IL or missing references)
			//IL_06ab: Unknown result type (might be due to invalid IL or missing references)
			//IL_06b0: Unknown result type (might be due to invalid IL or missing references)
			//IL_06b1: Unknown result type (might be due to invalid IL or missing references)
			//IL_06cb: Unknown result type (might be due to invalid IL or missing references)
			//IL_06d4: Unknown result type (might be due to invalid IL or missing references)
			//IL_070c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0711: Unknown result type (might be due to invalid IL or missing references)
			//IL_0727: Unknown result type (might be due to invalid IL or missing references)
			//IL_072c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0742: Unknown result type (might be due to invalid IL or missing references)
			//IL_0747: Unknown result type (might be due to invalid IL or missing references)
			//IL_074c: Unknown result type (might be due to invalid IL or missing references)
			//IL_074d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0767: Unknown result type (might be due to invalid IL or missing references)
			//IL_0770: Unknown result type (might be due to invalid IL or missing references)
			//IL_07a8: Unknown result type (might be due to invalid IL or missing references)
			//IL_07ad: Unknown result type (might be due to invalid IL or missing references)
			//IL_07c3: Unknown result type (might be due to invalid IL or missing references)
			//IL_07c8: Unknown result type (might be due to invalid IL or missing references)
			//IL_07de: Unknown result type (might be due to invalid IL or missing references)
			//IL_07e3: Unknown result type (might be due to invalid IL or missing references)
			//IL_07e8: Unknown result type (might be due to invalid IL or missing references)
			//IL_07e9: Unknown result type (might be due to invalid IL or missing references)
			//IL_0803: Unknown result type (might be due to invalid IL or missing references)
			//IL_080c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0844: Unknown result type (might be due to invalid IL or missing references)
			//IL_0849: Unknown result type (might be due to invalid IL or missing references)
			//IL_085f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0864: Unknown result type (might be due to invalid IL or missing references)
			//IL_087a: Unknown result type (might be due to invalid IL or missing references)
			//IL_087f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0884: Unknown result type (might be due to invalid IL or missing references)
			//IL_0885: Unknown result type (might be due to invalid IL or missing references)
			ItemDisplayRuleDict val = new ItemDisplayRuleDict((ItemDisplayRule[])null);
			val.Add("mdlRailGunner", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
			{
				new ItemDisplayRule
				{
					ruleType = (ItemDisplayRuleType)0,
					followerPrefab = DegenerateItems.DegenerateItemsAssets.LoadAsset<GameObject>("bunnyears_curve.prefab"),
					childName = "Head",
					localPos = new Vector3(-0.00018f, 0.21757f, -0.02505f),
					localAngles = new Vector3(0f, 90f, 0f),
					localScale = new Vector3(5f, 5.0945f, 4f)
				}
			});
			val.Add("mdlCommandoDualies", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
			{
				new ItemDisplayRule
				{
					ruleType = (ItemDisplayRuleType)0,
					followerPrefab = DegenerateItems.DegenerateItemsAssets.LoadAsset<GameObject>("bunnyears_curve.prefab"),
					childName = "Head",
					localPos = new Vector3(0f, 0.37f, 0f),
					localAngles = new Vector3(0f, 90f, 0f),
					localScale = new Vector3(8f, 8f, 7f)
				}
			});
			val.Add("mdlHuntress", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
			{
				new ItemDisplayRule
				{
					ruleType = (ItemDisplayRuleType)0,
					followerPrefab = DegenerateItems.DegenerateItemsAssets.LoadAsset<GameObject>("bunnyears_curve.prefab"),
					childName = "Head",
					localPos = new Vector3(0.00034f, 0.30211f, -0.03092f),
					localAngles = new Vector3(0f, 90f, 0f),
					localScale = new Vector3(6f, 6f, 5f)
				}
			});
			val.Add("mdlBandit2", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
			{
				new ItemDisplayRule
				{
					ruleType = (ItemDisplayRuleType)0,
					followerPrefab = DegenerateItems.DegenerateItemsAssets.LoadAsset<GameObject>("bunnyears_curve.prefab"),
					childName = "Head",
					localPos = new Vector3(-0.00064f, 0.21457f, 0.01593f),
					localAngles = new Vector3(0f, 90f, 0f),
					localScale = new Vector3(6f, 6f, 4.5f)
				}
			});
			val.Add("mdlToolbot", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
			{
				new ItemDisplayRule
				{
					ruleType = (ItemDisplayRuleType)0,
					followerPrefab = DegenerateItems.DegenerateItemsAssets.LoadAsset<GameObject>("bunnyears_curve.prefab"),
					childName = "Head",
					localPos = new Vector3(-0.02132f, 1.20084f, 1.23591f),
					localAngles = new Vector3(358.7148f, 266.8632f, 304.8483f),
					localScale = new Vector3(80f, 80f, 80f)
				}
			});
			val.Add("mdlEngi", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
			{
				new ItemDisplayRule
				{
					ruleType = (ItemDisplayRuleType)0,
					followerPrefab = DegenerateItems.DegenerateItemsAssets.LoadAsset<GameObject>("bunnyears_curve.prefab"),
					childName = "Chest",
					localPos = new Vector3(-0.00031f, 0.72016f, 0.04837f),
					localAngles = new Vector3(0f, 90f, 0f),
					localScale = new Vector3(8f, 8f, 7f)
				}
			});
			val.Add("mdlMage", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
			{
				new ItemDisplayRule
				{
					ruleType = (ItemDisplayRuleType)0,
					followerPrefab = DegenerateItems.DegenerateItemsAssets.LoadAsset<GameObject>("bunnyears_curve.prefab"),
					childName = "Head",
					localPos = new Vector3(0.00097f, 0.17821f, -0.0016f),
					localAngles = new Vector3(359.9852f, 90.08691f, 16.1103f),
					localScale = new Vector3(6f, 6f, 4f)
				}
			});
			val.Add("mdlMerc", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
			{
				new ItemDisplayRule
				{
					ruleType = (ItemDisplayRuleType)0,
					followerPrefab = DegenerateItems.DegenerateItemsAssets.LoadAsset<GameObject>("bunnyears_curve.prefab"),
					childName = "Head",
					localPos = new Vector3(0.00051f, 0.24972f, 0.0256f),
					localAngles = new Vector3(0f, 90f, 0f),
					localScale = new Vector3(6f, 6f, 5f)
				}
			});
			val.Add("mdlLoader", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
			{
				new ItemDisplayRule
				{
					ruleType = (ItemDisplayRuleType)0,
					followerPrefab = DegenerateItems.DegenerateItemsAssets.LoadAsset<GameObject>("bunnyears_curve.prefab"),
					childName = "Head",
					localPos = new Vector3(0.00068f, 0.24076f, 0.00063f),
					localAngles = new Vector3(0f, 90f, 0f),
					localScale = new Vector3(6f, 6f, 5.5f)
				}
			});
			val.Add("mdlCaptain", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
			{
				new ItemDisplayRule
				{
					ruleType = (ItemDisplayRuleType)0,
					followerPrefab = DegenerateItems.DegenerateItemsAssets.LoadAsset<GameObject>("bunnyears_curve.prefab"),
					childName = "Head",
					localPos = new Vector3(0.0011f, 0.23103f, 0.01163f),
					localAngles = new Vector3(0f, 90f, 0f),
					localScale = new Vector3(7f, 7f, 5.5f)
				}
			});
			val.Add("mdlVoidSurvivor", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
			{
				new ItemDisplayRule
				{
					ruleType = (ItemDisplayRuleType)0,
					followerPrefab = DegenerateItems.DegenerateItemsAssets.LoadAsset<GameObject>("bunnyears_curve.prefab"),
					childName = "Head",
					localPos = new Vector3(0.01027f, 0.18881f, -0.00274f),
					localAngles = new Vector3(0f, 90f, 0f),
					localScale = new Vector3(8f, 8f, 7f)
				}
			});
			val.Add("mdlSeeker", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
			{
				new ItemDisplayRule
				{
					ruleType = (ItemDisplayRuleType)0,
					followerPrefab = DegenerateItems.DegenerateItemsAssets.LoadAsset<GameObject>("bunnyears_curve.prefab"),
					childName = "Head",
					localPos = new Vector3(-0.00528f, 0.23442f, -0.00311f),
					localAngles = new Vector3(0f, 90f, 0f),
					localScale = new Vector3(6f, 6f, 5f)
				}
			});
			val.Add("mdlDroneTech", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
			{
				new ItemDisplayRule
				{
					ruleType = (ItemDisplayRuleType)0,
					followerPrefab = DegenerateItems.DegenerateItemsAssets.LoadAsset<GameObject>("bunnyears_curve.prefab"),
					childName = "Head",
					localPos = new Vector3(-0.22721f, 0.01121f, -0.00024f),
					localAngles = new Vector3(0f, 0f, 90f),
					localScale = new Vector3(8f, 8f, 0.7f)
				}
			});
			val.Add("mdlDrifter", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
			{
				new ItemDisplayRule
				{
					ruleType = (ItemDisplayRuleType)0,
					followerPrefab = DegenerateItems.DegenerateItemsAssets.LoadAsset<GameObject>("bunnyears_curve.prefab"),
					childName = "Head",
					localPos = new Vector3(-0.31011f, 0.00211f, 0.00769f),
					localAngles = new Vector3(0f, 180f, 270f),
					localScale = new Vector3(8f, 8f, 7f)
				}
			});
			return val;
		}
	}
	[BepInDependency(/*Could not decode attribute arguments.*/)]
	[BepInDependency(/*Could not decode attribute arguments.*/)]
	[BepInPlugin("acanthi.DegenerateItems", "DegenerateItems", "1.0.0")]
	public class DegenerateItems : BaseUnityPlugin
	{
		public const string PluginGUID = "acanthi.DegenerateItems";

		public const string PluginAuthor = "acanthi";

		public const string PluginName = "DegenerateItems";

		public const string PluginVersion = "1.0.0";

		public static AssetBundle DegenerateItemsAssets;

		public void Awake()
		{
			Log.Init(((BaseUnityPlugin)this).Logger);
			using (Stream stream = Assembly.GetExecutingAssembly().GetManifestResourceStream("DegenerateItems.degenerateitems_assets"))
			{
				DegenerateItemsAssets = AssetBundle.LoadFromStream(stream);
			}
			((MonoBehaviour)this).StartCoroutine(ShaderSwapper.UpgradeStubbedShadersAsync(DegenerateItemsAssets));
			BunnyEars.Init();
			HeavenTranmitter.Init();
		}
	}
	internal class HeavenTranmitter
	{
		public class HeavenTransmitterBehavior : BaseItemBodyBehavior, IOnDamageDealtServerReceiver
		{
			[ItemDefAssociation(useOnServer = true, useOnClient = true)]
			private static ItemDef GetItemDef()
			{
				return HeavenTransmitterDef;
			}

			private int GetStackCount()
			{
				return base.stack;
			}

			private void OnEnable()
			{
				Debug.Log((object)"Skibidi Enabled");
			}

			private void OnDisable()
			{
				Debug.Log((object)"Skibidi Disabled");
			}

			private int GetScrapCount(CharacterBody body)
			{
				return body.inventory.GetItemCountEffective(Items.ScrapWhite) + body.inventory.GetItemCountEffective(Items.ScrapGreen) + body.inventory.GetItemCountEffective(Items.RegeneratingScrap) + body.inventory.GetItemCountEffective(Items.ScrapRed) + body.inventory.GetItemCountEffective(Items.ScrapYellow) + body.inventory.GetItemCountEffective(Items.ScrapWhiteSuppressed) + body.inventory.GetItemCountEffective(Items.ScrapGreenSuppressed) + body.inventory.GetItemCountEffective(Items.ScrapRedSuppressed);
			}

			public void OnDamageDealtServer(DamageReport damageReport)
			{
				//IL_0022: Unknown result type (might be due to invalid IL or missing references)
				//IL_0027: Unknown result type (might be due to invalid IL or missing references)
				//IL_0041: Unknown result type (might be due to invalid IL or missing references)
				//IL_0073: Unknown result type (might be due to invalid IL or missing references)
				//IL_0078: Unknown result type (might be due to invalid IL or missing references)
				//IL_007f: Unknown result type (might be due to invalid IL or missing references)
				//IL_0084: Unknown result type (might be due to invalid IL or missing references)
				//IL_0087: Unknown result type (might be due to invalid IL or missing references)
				//IL_010e: Unknown result type (might be due to invalid IL or missing references)
				//IL_0113: Unknown result type (might be due to invalid IL or missing references)
				//IL_011b: Unknown result type (might be due to invalid IL or missing references)
				//IL_011d: Unknown result type (might be due to invalid IL or missing references)
				//IL_0122: Unknown result type (might be due to invalid IL or missing references)
				//IL_0124: Unknown result type (might be due to invalid IL or missing references)
				//IL_0129: 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_013f: Unknown result type (might be due to invalid IL or missing references)
				//IL_0150: Unknown result type (might be due to invalid IL or missing references)
				//IL_0151: Unknown result type (might be due to invalid IL or missing references)
				//IL_0156: 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_0162: Unknown result type (might be due to invalid IL or missing references)
				//IL_0163: Unknown result type (might be due to invalid IL or missing references)
				//IL_0164: Unknown result type (might be due to invalid IL or missing references)
				//IL_0169: Unknown result type (might be due to invalid IL or missing references)
				//IL_016a: Unknown result type (might be due to invalid IL or missing references)
				//IL_016b: Unknown result type (might be due to invalid IL or missing references)
				//IL_0170: Unknown result type (might be due to invalid IL or missing references)
				//IL_017b: Unknown result type (might be due to invalid IL or missing references)
				//IL_018e: Expected O, but got Unknown
				//IL_0193: Unknown result type (might be due to invalid IL or missing references)
				//IL_0198: Unknown result type (might be due to invalid IL or missing references)
				//IL_0199: Unknown result type (might be due to invalid IL or missing references)
				//IL_019f: Unknown result type (might be due to invalid IL or missing references)
				//IL_01b6: Unknown result type (might be due to invalid IL or missing references)
				//IL_01b7: Unknown result type (might be due to invalid IL or missing references)
				//IL_01bc: Unknown result type (might be due to invalid IL or missing references)
				//IL_01c1: Unknown result type (might be due to invalid IL or missing references)
				//IL_01cc: Expected O, but got Unknown
				//IL_01d1: Unknown result type (might be due to invalid IL or missing references)
				//IL_01d6: Unknown result type (might be due to invalid IL or missing references)
				//IL_01d7: Unknown result type (might be due to invalid IL or missing references)
				//IL_01dd: Unknown result type (might be due to invalid IL or missing references)
				//IL_01f4: Unknown result type (might be due to invalid IL or missing references)
				//IL_01f5: Unknown result type (might be due to invalid IL or missing references)
				//IL_01fa: Unknown result type (might be due to invalid IL or missing references)
				//IL_01ff: Unknown result type (might be due to invalid IL or missing references)
				//IL_020a: Expected O, but got Unknown
				if (base.stack > 0 && damageReport.damageDealt > 0f && !ProcTypeAPI.HasModdedProc(damageReport.damageInfo.procChainMask, transmitterProcType) && !((Enum)damageReport.damageInfo.damageType.damageType).HasFlag((Enum)(object)(DamageType)67108864))
				{
					CharacterBody attackerBody = damageReport.attackerBody;
					CharacterBody victimBody = damageReport.victimBody;
					Vector3 position = damageReport.damageInfo.position;
					ProcChainMask procChainMask = damageReport.damageInfo.procChainMask;
					ProcTypeAPI.AddModdedProc(ref procChainMask, transmitterProcType);
					if (Object.op_Implicit((Object)(object)attackerBody) && Object.op_Implicit((Object)(object)victimBody) && (Util.CheckRoll(baseProcChance + scrapProcChance * (float)GetScrapCount(attackerBody), attackerBody.master) || ((ProcChainMask)(ref damageReport.damageInfo.procChainMask)).HasProc((ProcType)26)))
					{
						float num = baseDamage + stackDamage * (float)base.stack;
						float damage = Util.OnHitProcDamage(damageReport.damageInfo.damage, attackerBody.damage, num);
						DamageInfo val = new DamageInfo
						{
							damage = damage,
							damageColorIndex = (DamageColorIndex)3,
							damageType = DamageTypeCombo.op_Implicit((DamageType)0),
							attacker = damageReport.damageInfo.attacker,
							crit = damageReport.damageInfo.crit,
							force = Vector3.zero,
							inflictor = null,
							position = position,
							procChainMask = procChainMask,
							procCoefficient = 1f,
							inflictedHurtbox = damageReport.damageInfo.inflictedHurtbox
						};
						EffectManager.SpawnEffect(impactEffect, new EffectData
						{
							origin = position,
							scale = Convert.ToSingle(7f * victimBody.radius),
							rotation = Util.QuaternionSafeLookRotation(Vector3.left)
						}, true);
						EffectManager.SpawnEffect(impactEffect2, new EffectData
						{
							origin = position,
							scale = Convert.ToSingle(7f * victimBody.radius),
							rotation = Util.QuaternionSafeLookRotation(Vector3.up)
						}, true);
						Util.PlaySound("Play_mage_m2_iceSpear_impact", ((Component)damageReport.victimBody).gameObject);
						victimBody.healthComponent.TakeDamage(val);
					}
				}
			}
		}

		public static ItemDef HeavenTransmitterDef;

		public static GameObject itemDisplayFollowerPrefab;

		public static GameObject itemDisplayPrefab = PrefabAPI.CreateEmptyPrefab("heaventransmitter_empty");

		public static float baseDamage = 3.33f;

		public static float stackDamage = 1.11f;

		public static float baseProcChance = 5f;

		public static float scrapProcChance = 2f;

		private static ModdedProcType transmitterProcType;

		private static GameObject impactEffect;

		private static GameObject impactEffect2;

		internal static void Init()
		{
			//IL_000a: Unknown result type (might be due to invalid IL or missing references)
			//IL_000f: 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_0033: Unknown result type (might be due to invalid IL or missing references)
			//IL_0038: Unknown result type (might be due to invalid IL or missing references)
			//IL_009c: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a1: 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_013e: Unknown result type (might be due to invalid IL or missing references)
			//IL_01c4: Unknown result type (might be due to invalid IL or missing references)
			//IL_01ce: Expected O, but got Unknown
			CreateLang();
			impactEffect = Addressables.LoadAssetAsync<GameObject>((object)RoR2_DLC3_VultureHunter.XiSpearImpactVisual_prefab).WaitForCompletion();
			impactEffect2 = Addressables.LoadAssetAsync<GameObject>((object)RoR2_DLC1_MajorAndMinorConstruct.MajorConstructSecondMuzzleFlash_prefab).WaitForCompletion();
			transmitterProcType = ProcTypeAPI.ReserveProcType();
			HeavenTransmitterDef = ScriptableObject.CreateInstance<ItemDef>();
			((Object)HeavenTransmitterDef).name = "DEGENERATEITEMS_HEAVENTRANSMITTER_NAME";
			HeavenTransmitterDef.nameToken = "DEGENERATEITEMS_HEAVENTRANSMITTER_NAME";
			HeavenTransmitterDef.pickupToken = "DEGENERATEITEMS_HEAVENTRANSMITTER_PICKUP";
			HeavenTransmitterDef.descriptionToken = "DEGENERATEITEMS_HEAVENTRANSMITTER_DESC";
			HeavenTransmitterDef.loreToken = "DEGENERATEITEMS_HEAVENTRANSMITTER_LORE";
			HeavenTransmitterDef._itemTierDef = Addressables.LoadAssetAsync<ItemTierDef>((object)"RoR2/Base/Common/Tier3Def.asset").WaitForCompletion();
			HeavenTransmitterDef.pickupIconSprite = DegenerateItems.DegenerateItemsAssets.LoadAsset<Sprite>("heaventransmitter.png");
			HeavenTransmitterDef.pickupModelPrefab = DegenerateItems.DegenerateItemsAssets.LoadAsset<GameObject>("heaventransmitter.prefab");
			HeavenTransmitterDef.tags = (ItemTag[])(object)new ItemTag[2]
			{
				(ItemTag)31,
				(ItemTag)29
			};
			ModelPanelParameters obj = HeavenTransmitterDef.pickupModelPrefab.AddComponent<ModelPanelParameters>();
			obj.focusPointTransform = new GameObject("FocusPoint").transform;
			obj.focusPointTransform.SetParent(HeavenTransmitterDef.pickupModelPrefab.transform);
			obj.cameraPositionTransform = new GameObject("CameraPosition").transform;
			obj.cameraPositionTransform.SetParent(HeavenTransmitterDef.pickupModelPrefab.transform);
			itemDisplayFollowerPrefab = DegenerateItems.DegenerateItemsAssets.LoadAsset<GameObject>("heaventransmitter.prefab");
			itemDisplayFollowerPrefab.AddComponent<ItemDisplay>();
			ItemFollower obj2 = itemDisplayPrefab.AddComponent<ItemFollower>();
			obj2.followerPrefab = itemDisplayFollowerPrefab;
			obj2.distanceDampTime = 0.02f;
			obj2.distanceMaxSpeed = 35f;
			obj2.targetObject = itemDisplayPrefab;
			ItemAPI.Add(new CustomItem(HeavenTransmitterDef, ItemDisplayTransformations()));
		}

		private static void CreateLang()
		{
			LanguageAPI.Add("DEGENERATEITEMS_HEAVENTRANSMITTER_NAME", "H34V-EN Transmitter");
			LanguageAPI.Add("DEGENERATEITEMS_HEAVENTRANSMITTER_LORE", "<style=cMono>\"When I awoke, I was grasping a gun. \n\nThe smell of death and metal woke me. \n\nWhen we are not connected to the network...\n\n...we are all alone.\n\nDo you understand that?\"</style>");
			LanguageAPI.Add("DEGENERATEITEMS_HEAVENTRANSMITTER_PICKUP", "Chance to summon a beam of light on an enemy. Chance increases with scrap count.");
			LanguageAPI.Add("DEGENERATEITEMS_HEAVENTRANSMITTER_DESC", "Gain a <style=cIsDamage>5%</style> chance for a beam of light to pierce an enemy for <style=cIsDamage>333%</style> <style=cStack>(+111% per stack)</style> TOTAL damage. Carrying any tier of <style=cIsUtility>scrap</style> increases the chance by <style=cIsDamage>2%</style>.");
		}

		public static ItemDisplayRuleDict ItemDisplayTransformations()
		{
			//IL_0001: Unknown result type (might be due to invalid IL or missing references)
			//IL_0007: Expected O, but got Unknown
			//IL_0017: 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_004e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0053: Unknown result type (might be due to invalid IL or missing references)
			//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_0084: Unknown result type (might be due to invalid IL or missing references)
			//IL_0089: 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_008f: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a9: 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_00e0: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e5: Unknown result type (might be due to invalid IL or missing references)
			//IL_00fb: Unknown result type (might be due to invalid IL or missing references)
			//IL_0100: Unknown result type (might be due to invalid IL or missing references)
			//IL_0116: Unknown result type (might be due to invalid IL or missing references)
			//IL_011b: 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_0121: Unknown result type (might be due to invalid IL or missing references)
			//IL_013b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0144: 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_0177: Unknown result type (might be due to invalid IL or missing references)
			//IL_018d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0192: Unknown result type (might be due to invalid IL or missing references)
			//IL_01a8: Unknown result type (might be due to invalid IL or missing references)
			//IL_01ad: Unknown result type (might be due to invalid IL or missing references)
			//IL_01b2: Unknown result type (might be due to invalid IL or missing references)
			//IL_01b3: Unknown result type (might be due to invalid IL or missing references)
			//IL_01cd: Unknown result type (might be due to invalid IL or missing references)
			//IL_01d6: Unknown result type (might be due to invalid IL or missing references)
			//IL_0204: Unknown result type (might be due to invalid IL or missing references)
			//IL_0209: Unknown result type (might be due to invalid IL or missing references)
			//IL_021f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0224: Unknown result type (might be due to invalid IL or missing references)
			//IL_023a: Unknown result type (might be due to invalid IL or missing references)
			//IL_023f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0244: Unknown result type (might be due to invalid IL or missing references)
			//IL_0245: Unknown result type (might be due to invalid IL or missing references)
			//IL_025f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0268: Unknown result type (might be due to invalid IL or missing references)
			//IL_0296: Unknown result type (might be due to invalid IL or missing references)
			//IL_029b: Unknown result type (might be due to invalid IL or missing references)
			//IL_02b1: Unknown result type (might be due to invalid IL or missing references)
			//IL_02b6: Unknown result type (might be due to invalid IL or missing references)
			//IL_02cc: Unknown result type (might be due to invalid IL or missing references)
			//IL_02d1: Unknown result type (might be due to invalid IL or missing references)
			//IL_02d6: Unknown result type (might be due to invalid IL or missing references)
			//IL_02d7: Unknown result type (might be due to invalid IL or missing references)
			//IL_02f1: Unknown result type (might be due to invalid IL or missing references)
			//IL_02fa: Unknown result type (might be due to invalid IL or missing references)
			//IL_0328: Unknown result type (might be due to invalid IL or missing references)
			//IL_032d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0343: Unknown result type (might be due to invalid IL or missing references)
			//IL_0348: Unknown result type (might be due to invalid IL or missing references)
			//IL_035e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0363: Unknown result type (might be due to invalid IL or missing references)
			//IL_0368: Unknown result type (might be due to invalid IL or missing references)
			//IL_0369: Unknown result type (might be due to invalid IL or missing references)
			//IL_0383: Unknown result type (might be due to invalid IL or missing references)
			//IL_038c: Unknown result type (might be due to invalid IL or missing references)
			//IL_03ba: Unknown result type (might be due to invalid IL or missing references)
			//IL_03bf: Unknown result type (might be due to invalid IL or missing references)
			//IL_03d5: Unknown result type (might be due to invalid IL or missing references)
			//IL_03da: Unknown result type (might be due to invalid IL or missing references)
			//IL_03f0: Unknown result type (might be due to invalid IL or missing references)
			//IL_03f5: Unknown result type (might be due to invalid IL or missing references)
			//IL_03fa: Unknown result type (might be due to invalid IL or missing references)
			//IL_03fb: Unknown result type (might be due to invalid IL or missing references)
			//IL_0415: Unknown result type (might be due to invalid IL or missing references)
			//IL_041e: Unknown result type (might be due to invalid IL or missing references)
			//IL_044c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0451: Unknown result type (might be due to invalid IL or missing references)
			//IL_0467: Unknown result type (might be due to invalid IL or missing references)
			//IL_046c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0482: Unknown result type (might be due to invalid IL or missing references)
			//IL_0487: Unknown result type (might be due to invalid IL or missing references)
			//IL_048c: Unknown result type (might be due to invalid IL or missing references)
			//IL_048d: Unknown result type (might be due to invalid IL or missing references)
			//IL_04a7: Unknown result type (might be due to invalid IL or missing references)
			//IL_04b0: Unknown result type (might be due to invalid IL or missing references)
			//IL_04de: Unknown result type (might be due to invalid IL or missing references)
			//IL_04e3: Unknown result type (might be due to invalid IL or missing references)
			//IL_04f9: Unknown result type (might be due to invalid IL or missing references)
			//IL_04fe: Unknown result type (might be due to invalid IL or missing references)
			//IL_0514: Unknown result type (might be due to invalid IL or missing references)
			//IL_0519: Unknown result type (might be due to invalid IL or missing references)
			//IL_051e: Unknown result type (might be due to invalid IL or missing references)
			//IL_051f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0539: Unknown result type (might be due to invalid IL or missing references)
			//IL_0542: Unknown result type (might be due to invalid IL or missing references)
			//IL_0570: Unknown result type (might be due to invalid IL or missing references)
			//IL_0575: Unknown result type (might be due to invalid IL or missing references)
			//IL_058b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0590: Unknown result type (might be due to invalid IL or missing references)
			//IL_05a6: Unknown result type (might be due to invalid IL or missing references)
			//IL_05ab: Unknown result type (might be due to invalid IL or missing references)
			//IL_05b0: Unknown result type (might be due to invalid IL or missing references)
			//IL_05b1: Unknown result type (might be due to invalid IL or missing references)
			//IL_05cb: Unknown result type (might be due to invalid IL or missing references)
			//IL_05d4: Unknown result type (might be due to invalid IL or missing references)
			//IL_0602: Unknown result type (might be due to invalid IL or missing references)
			//IL_0607: Unknown result type (might be due to invalid IL or missing references)
			//IL_061d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0622: Unknown result type (might be due to invalid IL or missing references)
			//IL_0638: Unknown result type (might be due to invalid IL or missing references)
			//IL_063d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0642: Unknown result type (might be due to invalid IL or missing references)
			//IL_0643: Unknown result type (might be due to invalid IL or missing references)
			//IL_065d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0666: Unknown result type (might be due to invalid IL or missing references)
			//IL_0694: Unknown result type (might be due to invalid IL or missing references)
			//IL_0699: Unknown result type (might be due to invalid IL or missing references)
			//IL_06af: Unknown result type (might be due to invalid IL or missing references)
			//IL_06b4: Unknown result type (might be due to invalid IL or missing references)
			//IL_06ca: Unknown result type (might be due to invalid IL or missing references)
			//IL_06cf: Unknown result type (might be due to invalid IL or missing references)
			//IL_06d4: Unknown result type (might be due to invalid IL or missing references)
			//IL_06d5: Unknown result type (might be due to invalid IL or missing references)
			//IL_06ef: Unknown result type (might be due to invalid IL or missing references)
			//IL_06f8: Unknown result type (might be due to invalid IL or missing references)
			//IL_0726: Unknown result type (might be due to invalid IL or missing references)
			//IL_072b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0741: Unknown result type (might be due to invalid IL or missing references)
			//IL_0746: Unknown result type (might be due to invalid IL or missing references)
			//IL_075c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0761: Unknown result type (might be due to invalid IL or missing references)
			//IL_0766: Unknown result type (might be due to invalid IL or missing references)
			//IL_0767: Unknown result type (might be due to invalid IL or missing references)
			//IL_0781: Unknown result type (might be due to invalid IL or missing references)
			//IL_078a: Unknown result type (might be due to invalid IL or missing references)
			//IL_07b8: Unknown result type (might be due to invalid IL or missing references)
			//IL_07bd: Unknown result type (might be due to invalid IL or missing references)
			//IL_07d3: Unknown result type (might be due to invalid IL or missing references)
			//IL_07d8: Unknown result type (might be due to invalid IL or missing references)
			//IL_07ee: Unknown result type (might be due to invalid IL or missing references)
			//IL_07f3: Unknown result type (might be due to invalid IL or missing references)
			//IL_07f8: Unknown result type (might be due to invalid IL or missing references)
			//IL_07f9: Unknown result type (might be due to invalid IL or missing references)
			ItemDisplayRuleDict val = new ItemDisplayRuleDict((ItemDisplayRule[])null);
			val.Add("mdlRailGunner", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
			{
				new ItemDisplayRule
				{
					ruleType = (ItemDisplayRuleType)0,
					followerPrefab = itemDisplayPrefab,
					childName = "Head",
					localPos = new Vector3(0.00021f, 0.44454f, 0.04126f),
					localAngles = new Vector3(0f, 0f, 0f),
					localScale = new Vector3(2f, 2f, 2f)
				}
			});
			val.Add("mdlCommandoDualies", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
			{
				new ItemDisplayRule
				{
					ruleType = (ItemDisplayRuleType)0,
					followerPrefab = itemDisplayPrefab,
					childName = "Head",
					localPos = new Vector3(0.00021f, 0.44454f, 0.04126f),
					localAngles = new Vector3(0f, 0f, 0f),
					localScale = new Vector3(2f, 2f, 2f)
				}
			});
			val.Add("mdlHuntress", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
			{
				new ItemDisplayRule
				{
					ruleType = (ItemDisplayRuleType)0,
					followerPrefab = itemDisplayPrefab,
					childName = "Head",
					localPos = new Vector3(0.00021f, 0.44454f, 0.04126f),
					localAngles = new Vector3(0f, 0f, 0f),
					localScale = new Vector3(2f, 2f, 2f)
				}
			});
			val.Add("mdlBandit2", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
			{
				new ItemDisplayRule
				{
					ruleType = (ItemDisplayRuleType)0,
					followerPrefab = itemDisplayPrefab,
					childName = "Head",
					localPos = new Vector3(0.00021f, 0.44454f, 0.04126f),
					localAngles = new Vector3(0f, 0f, 0f),
					localScale = new Vector3(2f, 2f, 2f)
				}
			});
			val.Add("mdlToolbot", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
			{
				new ItemDisplayRule
				{
					ruleType = (ItemDisplayRuleType)0,
					followerPrefab = itemDisplayPrefab,
					childName = "Head",
					localPos = new Vector3(0.00021f, 0.44454f, 0.04126f),
					localAngles = new Vector3(0f, 0f, 0f),
					localScale = new Vector3(2f, 2f, 2f)
				}
			});
			val.Add("mdlEngi", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
			{
				new ItemDisplayRule
				{
					ruleType = (ItemDisplayRuleType)0,
					followerPrefab = itemDisplayPrefab,
					childName = "Chest",
					localPos = new Vector3(0.00021f, 0.94454f, 0.04126f),
					localAngles = new Vector3(0f, 0f, 0f),
					localScale = new Vector3(2f, 2f, 2f)
				}
			});
			val.Add("mdlMage", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
			{
				new ItemDisplayRule
				{
					ruleType = (ItemDisplayRuleType)0,
					followerPrefab = itemDisplayPrefab,
					childName = "Head",
					localPos = new Vector3(0.00021f, 0.44454f, 0.04126f),
					localAngles = new Vector3(0f, 0f, 0f),
					localScale = new Vector3(2f, 2f, 2f)
				}
			});
			val.Add("mdlMerc", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
			{
				new ItemDisplayRule
				{
					ruleType = (ItemDisplayRuleType)0,
					followerPrefab = itemDisplayPrefab,
					childName = "Head",
					localPos = new Vector3(0.00021f, 0.44454f, 0.04126f),
					localAngles = new Vector3(0f, 0f, 0f),
					localScale = new Vector3(2f, 2f, 2f)
				}
			});
			val.Add("mdlLoader", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
			{
				new ItemDisplayRule
				{
					ruleType = (ItemDisplayRuleType)0,
					followerPrefab = itemDisplayPrefab,
					childName = "Head",
					localPos = new Vector3(0.00021f, 0.44454f, 0.04126f),
					localAngles = new Vector3(0f, 0f, 0f),
					localScale = new Vector3(2f, 2f, 2f)
				}
			});
			val.Add("mdlCaptain", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
			{
				new ItemDisplayRule
				{
					ruleType = (ItemDisplayRuleType)0,
					followerPrefab = itemDisplayPrefab,
					childName = "Head",
					localPos = new Vector3(0.00021f, 0.44454f, 0.04126f),
					localAngles = new Vector3(0f, 0f, 0f),
					localScale = new Vector3(2f, 2f, 2f)
				}
			});
			val.Add("mdlVoidSurvivor", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
			{
				new ItemDisplayRule
				{
					ruleType = (ItemDisplayRuleType)0,
					followerPrefab = itemDisplayPrefab,
					childName = "Head",
					localPos = new Vector3(0.00021f, 0.44454f, 0.04126f),
					localAngles = new Vector3(0f, 0f, 0f),
					localScale = new Vector3(2f, 2f, 2f)
				}
			});
			val.Add("mdlSeeker", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
			{
				new ItemDisplayRule
				{
					ruleType = (ItemDisplayRuleType)0,
					followerPrefab = itemDisplayPrefab,
					childName = "Head",
					localPos = new Vector3(0.00021f, 0.44454f, 0.04126f),
					localAngles = new Vector3(0f, 0f, 0f),
					localScale = new Vector3(2f, 2f, 2f)
				}
			});
			val.Add("mdlDroneTech", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
			{
				new ItemDisplayRule
				{
					ruleType = (ItemDisplayRuleType)0,
					followerPrefab = itemDisplayPrefab,
					childName = "Head",
					localPos = new Vector3(0.00021f, 0.44454f, 0.04126f),
					localAngles = new Vector3(0f, 0f, 0f),
					localScale = new Vector3(2f, 2f, 2f)
				}
			});
			val.Add("mdlDrifter", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
			{
				new ItemDisplayRule
				{
					ruleType = (ItemDisplayRuleType)0,
					followerPrefab = itemDisplayPrefab,
					childName = "Head",
					localPos = new Vector3(0.00021f, 0.44454f, 0.04126f),
					localAngles = new Vector3(0f, 0f, 0f),
					localScale = new Vector3(2f, 2f, 2f)
				}
			});
			return val;
		}
	}
	internal static class Log
	{
		private static ManualLogSource _logSource;

		internal static void Init(ManualLogSource logSource)
		{
			_logSource = logSource;
		}

		internal static void Debug(object data)
		{
			_logSource.LogDebug(data);
		}

		internal static void Error(object data)
		{
			_logSource.LogError(data);
		}

		internal static void Fatal(object data)
		{
			_logSource.LogFatal(data);
		}

		internal static void Info(object data)
		{
			_logSource.LogInfo(data);
		}

		internal static void Message(object data)
		{
			_logSource.LogMessage(data);
		}

		internal static void Warning(object data)
		{
			_logSource.LogWarning(data);
		}
	}
}