Decompiled source of Spikestrip2 0 v1.1.6

GrooveSaladSpikestripContent.dll

Decompiled a year ago
using System;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.Versioning;
using System.Security;
using System.Security.Permissions;
using System.Text;
using BepInEx;
using BepInEx.Bootstrap;
using BepInEx.Configuration;
using BepInEx.Logging;
using EntityStates;
using EntityStates.Captain.Weapon;
using EntityStates.Destructible;
using EntityStates.LunarGolem;
using GrooveSaladSpikestripContent.Content;
using HG;
using HG.Reflection;
using IL.RoR2;
using JetBrains.Annotations;
using Microsoft.CodeAnalysis;
using Mono.Cecil.Cil;
using MonoMod.Cil;
using MysticsItems.Items;
using On.RoR2;
using On.RoR2.Artifacts;
using On.RoR2.CharacterAI;
using On.RoR2.PostProcessing;
using On.RoR2.Projectile;
using On.RoR2.UI;
using On.RoR2.UI.LogBook;
using R2API;
using R2API.Networking;
using R2API.Networking.Interfaces;
using R2API.Utils;
using Rewired.ComponentControls.Effects;
using RoR2;
using RoR2.Achievements;
using RoR2.Audio;
using RoR2.CharacterAI;
using RoR2.ContentManagement;
using RoR2.EntitlementManagement;
using RoR2.ExpansionManagement;
using RoR2.Hologram;
using RoR2.Navigation;
using RoR2.Orbs;
using RoR2.PostProcessing;
using RoR2.Projectile;
using RoR2.Skills;
using RoR2.UI;
using RoR2.UI.SkinControllers;
using TMPro;
using ThreeEyedGames;
using UnityEngine;
using UnityEngine.AddressableAssets;
using UnityEngine.EventSystems;
using UnityEngine.Events;
using UnityEngine.Networking;
using UnityEngine.Rendering;
using UnityEngine.Rendering.PostProcessing;
using UnityEngine.ResourceManagement.AsyncOperations;
using UnityEngine.ResourceManagement.ResourceProviders;
using UnityEngine.SceneManagement;
using UnityEngine.UI;

[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)]
[assembly: OptIn]
[assembly: TargetFramework(".NETStandard,Version=v2.0", FrameworkDisplayName = "")]
[assembly: AssemblyCompany("GrooveSaladSpikestripContent")]
[assembly: AssemblyConfiguration("Debug")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: AssemblyInformationalVersion("1.0.0")]
[assembly: AssemblyProduct("GrooveSaladSpikestripContent")]
[assembly: AssemblyTitle("GrooveSaladSpikestripContent")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("1.0.0.0")]
[module: UnverifiableCode]
namespace Microsoft.CodeAnalysis
{
	[CompilerGenerated]
	[Microsoft.CodeAnalysis.Embedded]
	internal sealed class EmbeddedAttribute : Attribute
	{
	}
}
namespace System.Runtime.CompilerServices
{
	[CompilerGenerated]
	[Microsoft.CodeAnalysis.Embedded]
	internal sealed class IsReadOnlyAttribute : Attribute
	{
	}
}
namespace GrooveSaladSpikestripContent
{
	public abstract class SpikestripAltSkillsBase<T> : SpikestripContentBase<T> where T : SpikestripAltSkillsBase<T>
	{
		public struct SkillResetInfo
		{
			public int skillSlotIndex;

			public BodyIndex bodyIndex;

			public uint defaultVariantIndex;
		}

		public List<SkillResetInfo> skillResetInfos = new List<SkillResetInfo>();

		public SkillDef SkillDef;

		public override string ConfigSection => "Alternate Skills";

		public override string ConfigName => SkillName;

		public abstract string SkillName { get; }

		public abstract string SkillDescription { get; }

		public abstract string SkillToken { get; }

		public abstract Sprite SkillIcon { get; }

		public abstract GameObject OwnerBodyPrefab { get; }

		public abstract SkillFamily[] SkillFamilies { get; }

		public abstract Type[] EntityStateTypes { get; }

		public virtual UnlockableDef UnlockableDef { get; } = null;


		public override void Init()
		{
			//IL_00cf: 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_0108: Expected O, but got Unknown
			//IL_0109: 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_017c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0186: Expected O, but got Unknown
			//IL_01b2: Unknown result type (might be due to invalid IL or missing references)
			//IL_01bc: Expected O, but got Unknown
			//IL_01c4: Unknown result type (might be due to invalid IL or missing references)
			//IL_01ce: Expected O, but got Unknown
			//IL_01d6: Unknown result type (might be due to invalid IL or missing references)
			//IL_01e0: Expected O, but got Unknown
			base.Init();
			SkillDef = GetSkillDef();
			SkillDef.skillName = "SPIKESTRIPSKILL_" + SkillToken;
			SkillDef.skillNameToken = "SPIKESTRIPSKILL_" + SkillToken + "_NAME";
			SkillDef.skillDescriptionToken = "SPIKESTRIPSKILL_" + SkillToken + "_DESCRIPTION";
			SkillDef.icon = SkillIcon;
			LanguageAPI.Add(SkillDef.skillNameToken, SkillName);
			LanguageAPI.Add(SkillDef.skillDescriptionToken, SkillDescription);
			SpikestripContentBase.skillDefContent.Add(SkillDef);
			for (int i = 0; i < SkillFamilies.Length; i++)
			{
				SkillFamily val = SkillFamilies[i];
				Variant val2 = default(Variant);
				val2.skillDef = SkillDef;
				val2.unlockableDef = UnlockableDef;
				((Variant)(ref val2)).viewableNode = new Node(SkillDef.skillName, false, (Node)null);
				Variant val3 = val2;
				ArrayUtils.ArrayAppend<Variant>(ref val.variants, ref val3);
			}
			for (int j = 0; j < EntityStateTypes.Length; j++)
			{
				SpikestripContentBase.entityStateTypeContent.Add(EntityStateTypes[j]);
			}
			if ((Object)(object)RequiredExpansionHolder != (Object)null)
			{
				UnlockableCatalog.GenerateUnlockableMetaData += new hook_GenerateUnlockableMetaData(UnlockableCatalog_GenerateUnlockableMetaData);
				PreGameController.onPreGameControllerSetRuleBookGlobal += PreGameController_onPreGameControllerSetRuleBookGlobal;
				NetworkUser.onLoadoutChangedGlobal += NetworkUser_onLoadoutChangedGlobal;
				BodyLoadout.IsSkillVariantLocked += new hook_IsSkillVariantLocked(BodyLoadout_IsSkillVariantLocked);
				Row.FromSkillSlot += new hook_FromSkillSlot(Row_FromSkillSlot);
				BodyCatalog.Init += new hook_Init(BodyCatalog_Init);
			}
		}

		private void UnlockableCatalog_GenerateUnlockableMetaData(orig_GenerateUnlockableMetaData orig, UnlockableDef[] unlockableDefs)
		{
			orig.Invoke(unlockableDefs);
			UnlockableCatalog.TryAddExpansionMapping(UnlockableDef, RequiredExpansionHolder);
		}

		private void NetworkUser_onLoadoutChangedGlobal(NetworkUser networkUser)
		{
			LocalUser val = (Object.op_Implicit((Object)(object)networkUser) ? networkUser.localUser : null);
			if (val == null)
			{
				return;
			}
			RuleBook val2 = (Object.op_Implicit((Object)(object)PreGameController.instance) ? PreGameController.instance.readOnlyRuleBook : (Object.op_Implicit((Object)(object)Run.instance) ? Run.instance.ruleBook : null));
			bool flag = val2 != null && val2.IsChoiceActive(RequiredExpansionHolder.enabledChoice);
			bool flag2 = !Object.op_Implicit((Object)(object)RequiredExpansionHolder.requiredEntitlement) || ((BaseUserEntitlementTracker<LocalUser>)(object)EntitlementManager.localUserEntitlementTracker).UserHasEntitlement(val, RequiredExpansionHolder.requiredEntitlement);
			if (!flag || !flag2)
			{
				UserProfile val3 = ((val != null) ? val.userProfile : null);
				if (val3 != null)
				{
					EnforceExpansionResets(val3);
				}
			}
		}

		private void PreGameController_onPreGameControllerSetRuleBookGlobal(PreGameController preGameController, RuleBook ruleBook)
		{
			//IL_0006: Unknown result type (might be due to invalid IL or missing references)
			LocalUser localUser = ((MPEventSystem)EventSystem.current).localUser;
			bool flag = ruleBook != null && ruleBook.IsChoiceActive(RequiredExpansionHolder.enabledChoice);
			bool flag2 = !Object.op_Implicit((Object)(object)RequiredExpansionHolder.requiredEntitlement) || ((BaseUserEntitlementTracker<LocalUser>)(object)EntitlementManager.localUserEntitlementTracker).UserHasEntitlement(localUser, RequiredExpansionHolder.requiredEntitlement);
			if ((!flag || !flag2) && localUser != null && localUser.userProfile != null)
			{
				EnforceExpansionResets(localUser.userProfile);
			}
		}

		public void EnforceExpansionResets(UserProfile userProfile)
		{
			//IL_0001: Unknown result type (might be due to invalid IL or missing references)
			//IL_0007: Expected O, but got Unknown
			//IL_002b: Unknown result type (might be due to invalid IL or missing references)
			//IL_003d: Unknown result type (might be due to invalid IL or missing references)
			//IL_008c: Unknown result type (might be due to invalid IL or missing references)
			Loadout val = new Loadout();
			userProfile.CopyLoadout(val);
			for (int i = 0; i < skillResetInfos.Count; i++)
			{
				SkillResetInfo skillResetInfo = skillResetInfos[i];
				uint skillVariant = val.bodyLoadoutManager.GetSkillVariant(skillResetInfo.bodyIndex, skillResetInfo.skillSlotIndex);
				SkillFamily skillFamily = BodyCatalog.GetBodyPrefabSkillSlots(skillResetInfo.bodyIndex)[skillResetInfo.skillSlotIndex].skillFamily;
				if (Object.op_Implicit((Object)(object)skillFamily) && (Object)(object)skillFamily.variants[skillVariant].skillDef == (Object)(object)SkillDef)
				{
					val.bodyLoadoutManager.SetSkillVariant(skillResetInfo.bodyIndex, skillResetInfo.skillSlotIndex, skillResetInfo.defaultVariantIndex);
				}
			}
			userProfile.SetLoadout(val);
		}

		private void BodyCatalog_Init(orig_Init orig)
		{
			//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)
			//IL_0014: Unknown result type (might be due to invalid IL or missing references)
			//IL_0016: Invalid comparison between Unknown and I4
			//IL_006e: Unknown result type (might be due to invalid IL or missing references)
			//IL_006f: Unknown result type (might be due to invalid IL or missing references)
			orig.Invoke();
			BodyIndex val = BodyCatalog.FindBodyIndex(OwnerBodyPrefab);
			if ((int)val == -1)
			{
				return;
			}
			GenericSkill[] components = OwnerBodyPrefab.GetComponents<GenericSkill>();
			for (int i = 0; i < components.Length; i++)
			{
				GenericSkill val2 = components[i];
				for (int j = 0; j < SkillFamilies.Length; j++)
				{
					SkillFamily val3 = SkillFamilies[j];
					if ((Object)(object)val2.skillFamily == (Object)(object)val3)
					{
						skillResetInfos.Add(new SkillResetInfo
						{
							bodyIndex = val,
							skillSlotIndex = i,
							defaultVariantIndex = val3.defaultVariantIndex
						});
					}
				}
			}
		}

		private object Row_FromSkillSlot(orig_FromSkillSlot orig, LoadoutPanelController owner, BodyIndex bodyIndex, int skillSlotIndex, GenericSkill skillSlot)
		{
			//IL_0003: 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_001d: Expected O, but got Unknown
			//IL_0064: Unknown result type (might be due to invalid IL or missing references)
			//IL_006b: Expected O, but got Unknown
			object obj = orig.Invoke(owner, bodyIndex, skillSlotIndex, skillSlot);
			SkillFamily skillFamily = skillSlot.skillFamily;
			Row val = (Row)obj;
			if (val != null)
			{
				for (int i = 0; i < skillFamily.variants.Length; i++)
				{
					if ((Object)(object)skillFamily.variants[i].skillDef == (Object)(object)SkillDef)
					{
						HGButton val2 = (HGButton)val.buttons[i];
						if (Object.op_Implicit((Object)(object)val2))
						{
							LockSkillFromExpansion lockSkillFromExpansion = ((Component)val2).gameObject.AddComponent<LockSkillFromExpansion>();
							lockSkillFromExpansion.requiredExpansion = RequiredExpansionHolder;
						}
					}
				}
			}
			return obj;
		}

		private bool BodyLoadout_IsSkillVariantLocked(orig_IsSkillVariantLocked orig, object self, int skillSlotIndex, UserProfile userProfile)
		{
			//IL_0002: Unknown result type (might be due to invalid IL or missing references)
			//IL_0008: Expected O, but got Unknown
			BodyLoadout val = (BodyLoadout)self;
			SkillFamily skillFamily = val.GetSkillFamily(skillSlotIndex);
			if (Object.op_Implicit((Object)(object)skillFamily))
			{
				uint skillVariant = val.GetSkillVariant(skillSlotIndex);
				if (Object.op_Implicit((Object)(object)SkillDef) && (Object)(object)skillFamily.variants[skillVariant].skillDef == (Object)(object)SkillDef)
				{
					RuleBook val2 = (Object.op_Implicit((Object)(object)PreGameController.instance) ? PreGameController.instance.readOnlyRuleBook : (Object.op_Implicit((Object)(object)Run.instance) ? Run.instance.ruleBook : null));
					bool flag = val2 != null && val2.IsChoiceActive(RequiredExpansionHolder.enabledChoice);
					LocalUser firstLocalUser = LocalUserManager.GetFirstLocalUser();
					bool flag2 = !Object.op_Implicit((Object)(object)RequiredExpansionHolder.requiredEntitlement) || ((BaseUserEntitlementTracker<LocalUser>)(object)EntitlementManager.localUserEntitlementTracker).UserHasEntitlement(firstLocalUser, RequiredExpansionHolder.requiredEntitlement);
					return orig.Invoke(self, skillSlotIndex, userProfile) && flag && flag2;
				}
			}
			return orig.Invoke(self, skillSlotIndex, userProfile);
		}

		public abstract SkillDef GetSkillDef();
	}
	public class LockSkillFromExpansion : MonoBehaviour
	{
		public ExpansionDef requiredExpansion;

		private bool isLocked = false;

		private HGButton hgButton;

		private TooltipProvider tooltipProvider;

		private Image image;

		private bool cachedDisableGamepadClick;

		private bool cachedDisablePointerClick;

		private string cachedHoverToken;

		private Sprite cachedIcon;

		private string cachedOverrideTitleText;

		private string cachedOverrideBodyText;

		private Color cachedTitleColor;

		public void Start()
		{
			//IL_0035: 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_00c1: Unknown result type (might be due to invalid IL or missing references)
			hgButton = ((Component)this).GetComponent<HGButton>();
			tooltipProvider = ((Component)this).GetComponent<TooltipProvider>();
			object obj = this;
			obj = (object)((!Object.op_Implicit((Object)(object)hgButton)) ? ((Image)null) : ((Image)((Selectable)hgButton).targetGraphic));
			((LockSkillFromExpansion)obj).image = (Image)obj;
			if (Object.op_Implicit((Object)(object)hgButton))
			{
				cachedDisableGamepadClick = ((MPButton)hgButton).disableGamepadClick;
				cachedDisablePointerClick = ((MPButton)hgButton).disablePointerClick;
				cachedHoverToken = hgButton.hoverToken;
			}
			if (Object.op_Implicit((Object)(object)tooltipProvider))
			{
				cachedOverrideTitleText = tooltipProvider.overrideTitleText;
				cachedOverrideBodyText = tooltipProvider.overrideBodyText;
				cachedTitleColor = tooltipProvider.titleColor;
			}
			if (Object.op_Implicit((Object)(object)image))
			{
				cachedIcon = image.sprite;
			}
		}

		public void Update()
		{
			//IL_006a: Unknown result type (might be due to invalid IL or missing references)
			if (Object.op_Implicit((Object)(object)requiredExpansion))
			{
				RuleBook val = (Object.op_Implicit((Object)(object)PreGameController.instance) ? PreGameController.instance.readOnlyRuleBook : (Object.op_Implicit((Object)(object)Run.instance) ? Run.instance.ruleBook : null));
				bool flag = val != null && val.IsChoiceActive(requiredExpansion.enabledChoice);
				LocalUser localUser = ((MPEventSystem)EventSystem.current).localUser;
				bool flag2 = !Object.op_Implicit((Object)(object)requiredExpansion.requiredEntitlement) || ((BaseUserEntitlementTracker<LocalUser>)(object)EntitlementManager.localUserEntitlementTracker).UserHasEntitlement(localUser, requiredExpansion.requiredEntitlement);
				bool flag3 = flag && flag2;
				if (isLocked == flag3)
				{
					isLocked = !flag3;
					RebuildButton();
				}
			}
		}

		public void RebuildButton()
		{
			//IL_003c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0112: Unknown result type (might be due to invalid IL or missing references)
			//IL_010b: 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)
			string @string = Language.GetString("UNIDENTIFIED");
			string text = GenerateLockedTitleText();
			string stringFormatted = Language.GetStringFormatted("LOGBOOK_HOVER_DESCRIPTION_FORMAT", new object[3]
			{
				@string,
				text,
				ColorUtility.ToHtmlStringRGBA(new Color(0.5f, 0.5f, 0.5f, 0.2f))
			});
			if (Object.op_Implicit((Object)(object)hgButton))
			{
				((MPButton)hgButton).disableGamepadClick = isLocked || cachedDisableGamepadClick;
				((MPButton)hgButton).disablePointerClick = isLocked || cachedDisablePointerClick;
				hgButton.hoverToken = (isLocked ? stringFormatted : cachedHoverToken);
			}
			if (Object.op_Implicit((Object)(object)tooltipProvider))
			{
				tooltipProvider.overrideTitleText = (isLocked ? @string : cachedOverrideTitleText);
				tooltipProvider.overrideBodyText = (isLocked ? text : cachedOverrideBodyText);
				tooltipProvider.titleColor = (isLocked ? Color.gray : cachedTitleColor);
			}
			if (Object.op_Implicit((Object)(object)image))
			{
				image.sprite = (isLocked ? LoadoutPanelController.lockedIcon : cachedIcon);
			}
		}

		public string GenerateLockedTitleText()
		{
			//IL_001b: Unknown result type (might be due to invalid IL or missing references)
			if (Object.op_Implicit((Object)(object)requiredExpansion.requiredEntitlement))
			{
				LocalUser localUser = ((MPEventSystem)EventSystem.current).localUser;
				if (!((BaseUserEntitlementTracker<LocalUser>)(object)EntitlementManager.localUserEntitlementTracker).UserHasEntitlement(localUser, requiredExpansion.requiredEntitlement))
				{
					return Language.GetStringFormatted("EXPANSION_PURCHASED_REQUIRED_FORMAT", new object[1] { Language.GetString(requiredExpansion.requiredEntitlement.nameToken) });
				}
			}
			return Language.GetStringFormatted("EXPANSION_ENABLED_REQUIRED_FORMAT", new object[1] { Language.GetString(requiredExpansion.nameToken) });
		}
	}
	public abstract class SpikestripVoidAltSkillsBase<T> : SpikestripAltSkillsBase<T> where T : SpikestripVoidAltSkillsBase<T>
	{
		public class SpecificVoidEndingAchievement<A> : BaseAchievement where A : SpikestripVoidAltSkillsBase<A>
		{
			public class SpecificCompleteWave50ServerAchievement : BaseServerAchievement
			{
				public override void OnInstall()
				{
					((BaseServerAchievement)this).OnInstall();
					InfiniteTowerRun.onAllEnemiesDefeatedServer += OnAllEnemiesDefeatedServer;
				}

				public override void OnUninstall()
				{
					InfiniteTowerRun.onAllEnemiesDefeatedServer -= OnAllEnemiesDefeatedServer;
					((BaseServerAchievement)this).OnUninstall();
				}

				private void OnAllEnemiesDefeatedServer(InfiniteTowerWaveController waveController)
				{
					Run instance = Run.instance;
					InfiniteTowerRun val = (InfiniteTowerRun)(object)((instance is InfiniteTowerRun) ? instance : null);
					if (Object.op_Implicit((Object)(object)val) && val.waveIndex >= 50)
					{
						((BaseServerAchievement)this).Grant();
					}
				}
			}

			public override BodyIndex LookUpRequiredBodyIndex()
			{
				//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_0018: Unknown result type (might be due to invalid IL or missing references)
				return BodyCatalog.FindBodyIndex(SpikestripContentBase<A>.instance.OwnerBodyPrefab);
			}

			public override void OnBodyRequirementMet()
			{
				((BaseAchievement)this).OnBodyRequirementMet();
				((BaseAchievement)this).SetServerTracked(true);
				Run.onClientGameOverGlobal += OnClientGameOverGlobal;
			}

			public override void OnBodyRequirementBroken()
			{
				Run.onClientGameOverGlobal -= OnClientGameOverGlobal;
				((BaseAchievement)this).SetServerTracked(false);
				((BaseAchievement)this).OnBodyRequirementBroken();
			}

			private void OnClientGameOverGlobal(Run run, RunReport runReport)
			{
				if (Object.op_Implicit((Object)(object)runReport.gameEnding) && (Object)(object)runReport.gameEnding == (Object)(object)GameEndings.VoidEnding)
				{
					((BaseAchievement)this).Grant();
				}
			}
		}

		public static Color voidSkillColor = SpikestripContentBase.ColorRGB(176f, 72f, 214f);

		public UnlockableDef VoidUnlockableDef;

		public AchievementDef VoidAchievementDef;

		public override string ConfigSection => "Alternate Skills";

		public override string ConfigName => SkillName;

		public abstract string PrerequisiteIdentifier { get; }

		public abstract string CharacterName { get; }

		public abstract string AchievementName { get; }

		public virtual string ChildLocatorString { get; }

		public override UnlockableDef UnlockableDef => VoidUnlockableDef;

		public override void Init()
		{
			//IL_0111: Unknown result type (might be due to invalid IL or missing references)
			//IL_0117: Expected O, but got Unknown
			//IL_01d6: Unknown result type (might be due to invalid IL or missing references)
			//IL_01e0: Expected O, but got Unknown
			//IL_01e8: Unknown result type (might be due to invalid IL or missing references)
			//IL_01f2: Expected O, but got Unknown
			//IL_01fa: Unknown result type (might be due to invalid IL or missing references)
			//IL_0204: Expected O, but got Unknown
			VoidUnlockableDef = ScriptableObject.CreateInstance<UnlockableDef>();
			base.Init();
			string text = "Spikestrip" + CharacterName + "DefeatVoid";
			string achievementNameToken = "ACHIEVEMENT_" + text.ToUpper() + "_NAME";
			string achievementDescriptionToken = "ACHIEVEMENT_" + text.ToUpper() + "_DESCRIPTION";
			VoidUnlockableDef.cachedName = "SpikestripSkills." + CharacterName + "." + SkillName;
			VoidUnlockableDef.achievementIcon = null;
			VoidUnlockableDef.nameToken = SkillDef.skillNameToken;
			VoidUnlockableDef.displayModelPrefab = SpikestripContentBase.nullModel;
			VoidUnlockableDef.achievementIcon = SkillIcon;
			VoidUnlockableDef.getHowToUnlockString = () => Language.GetStringFormatted("UNLOCK_VIA_ACHIEVEMENT_FORMAT", new object[2]
			{
				Language.GetString(achievementNameToken),
				Language.GetString(achievementDescriptionToken)
			});
			VoidUnlockableDef.getUnlockedString = () => Language.GetStringFormatted("UNLOCKED_FORMAT", new object[2]
			{
				Language.GetString(achievementNameToken),
				Language.GetString(achievementDescriptionToken)
			});
			SpikestripContentBase.unlockableDefContent.Add(VoidUnlockableDef);
			AchievementDef val = new AchievementDef();
			val.identifier = text;
			val.unlockableRewardIdentifier = VoidUnlockableDef.cachedName;
			val.prerequisiteAchievementIdentifier = PrerequisiteIdentifier;
			val.nameToken = achievementNameToken;
			val.descriptionToken = achievementDescriptionToken;
			val.type = typeof(SpecificVoidEndingAchievement<T>);
			val.serverTrackerType = typeof(SpecificVoidEndingAchievement<T>.SpecificCompleteWave50ServerAchievement);
			val.achievedIcon = SkillIcon;
			VoidAchievementDef = val;
			UnlockableAPI.AddAchievement(VoidAchievementDef);
			LanguageAPI.Add(achievementNameToken, CharacterName + ": " + AchievementName);
			LanguageAPI.Add(achievementDescriptionToken, $"As {CharacterName}, escape the Planetarium or complete wave 50 in Simulacrum.");
			CharacterSelectController.RebuildLocal += new hook_RebuildLocal(CharacterSelectController_RebuildLocal);
			SkillIcon.Update += new hook_Update(SkillIcon_Update);
			Row.AddButton += new hook_AddButton(Row_AddButton);
		}

		private void CharacterSelectController_RebuildLocal(orig_RebuildLocal orig, CharacterSelectController self)
		{
			//IL_0095: Unknown result type (might be due to invalid IL or missing references)
			orig.Invoke(self);
			for (int i = 0; i < self.skillStripAllocator.elements.Count; i++)
			{
				RectTransform val = self.skillStripAllocator.elements[i];
				if (Object.op_Implicit((Object)(object)val))
				{
					HGTextMeshProUGUI component = ((Component)((Transform)val).Find("Inner/SkillDescriptionPanel/SkillName")).GetComponent<HGTextMeshProUGUI>();
					HGTextMeshProUGUI component2 = ((Component)((Transform)val).Find("Inner/SkillDescriptionPanel/SkillDescription")).GetComponent<HGTextMeshProUGUI>();
					if (((TMP_Text)component).text == Language.GetString(SkillDef.skillNameToken) && ((TMP_Text)component2).text == Language.GetString(SkillDef.skillDescriptionToken))
					{
						((Graphic)component).color = voidSkillColor;
					}
				}
			}
		}

		private void SkillIcon_Update(orig_Update orig, SkillIcon self)
		{
			//IL_0041: Unknown result type (might be due to invalid IL or missing references)
			//IL_0066: Unknown result type (might be due to invalid IL or missing references)
			//IL_006b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0073: Unknown result type (might be due to invalid IL or missing references)
			//IL_0075: Unknown result type (might be due to invalid IL or missing references)
			orig.Invoke(self);
			if (Object.op_Implicit((Object)(object)self.targetSkill) && (Object)(object)self.targetSkill.skillDef == (Object)(object)SkillDef && Object.op_Implicit((Object)(object)self.tooltipProvider))
			{
				float num = default(float);
				float num2 = default(float);
				float num3 = default(float);
				Color.RGBToHSV(voidSkillColor, ref num, ref num2, ref num3);
				num3 = ((num3 > 0.7f) ? 0.7f : num3);
				Color titleColor = Color.HSVToRGB(num, num2, num3);
				self.tooltipProvider.titleColor = titleColor;
			}
		}

		private void Row_AddButton(orig_AddButton orig, object self, LoadoutPanelController owner, Sprite icon, string titleToken, string bodyToken, Color tooltipColor, UnityAction callback, string unlockableName, Node viewableNode, bool isWIP)
		{
			//IL_0029: Unknown result type (might be due to invalid IL or missing references)
			//IL_0018: Unknown result type (might be due to invalid IL or missing references)
			//IL_001d: Unknown result type (might be due to invalid IL or missing references)
			if (titleToken == SkillDef.skillNameToken)
			{
				tooltipColor = voidSkillColor;
			}
			orig.Invoke(self, owner, icon, titleToken, bodyToken, tooltipColor, callback, unlockableName, viewableNode, isWIP);
		}
	}
	public abstract class SpikestripArtifactBase<T> : SpikestripContentBase<T> where T : SpikestripArtifactBase<T>
	{
		public ArtifactDef artifactDef;

		public override string ConfigSection => "Artifacts";

		public override string ConfigName => GetFullName();

		public abstract string Name { get; }

		public abstract string Description { get; }

		public abstract Sprite EnabledIcon { get; }

		public abstract Sprite DisabledIcon { get; }

		public virtual string OverrideFullName { get; } = null;


		public override void Init()
		{
			//IL_000f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0019: Expected O, but got Unknown
			//IL_0021: Unknown result type (might be due to invalid IL or missing references)
			//IL_002b: Expected O, but got Unknown
			base.Init();
			RunArtifactManager.onArtifactEnabledGlobal += new ArtifactStateChangeDelegate(RunArtifactManager_onArtifactEnabledGlobal);
			RunArtifactManager.onArtifactDisabledGlobal += new ArtifactStateChangeDelegate(RunArtifactManager_onArtifactDisabledGlobal);
			artifactDef = ScriptableObject.CreateInstance<ArtifactDef>();
			artifactDef.cachedName = Name;
			artifactDef.nameToken = "SPIKESTRIPARTIFACT_" + Name.ToUpper() + "_NAME";
			artifactDef.descriptionToken = "SPIKESTRIPARTIFACT_" + Name.ToUpper() + "_DESCRIPTION";
			artifactDef.smallIconSelectedSprite = EnabledIcon;
			artifactDef.smallIconDeselectedSprite = DisabledIcon;
			artifactDef.requiredExpansion = RequiredExpansionHolder;
			SpikestripContentBase.artifactDefContent.Add(artifactDef);
			LanguageAPI.Add(artifactDef.nameToken, GetFullName());
			LanguageAPI.Add(artifactDef.descriptionToken, Description);
		}

		private void RunArtifactManager_onArtifactEnabledGlobal([NotNull] RunArtifactManager runArtifactManager, [NotNull] ArtifactDef theArtifactDef)
		{
			if ((Object)(object)theArtifactDef == (Object)(object)artifactDef)
			{
				SetHooks();
			}
		}

		private void RunArtifactManager_onArtifactDisabledGlobal([NotNull] RunArtifactManager runArtifactManager, [NotNull] ArtifactDef theArtifactDef)
		{
			if ((Object)(object)theArtifactDef == (Object)(object)artifactDef)
			{
				UnsetHooks();
			}
		}

		public abstract void SetHooks();

		public abstract void UnsetHooks();

		public bool ArtifactActive()
		{
			return Object.op_Implicit((Object)(object)RunArtifactManager.instance) && RunArtifactManager.instance.IsArtifactEnabled(artifactDef);
		}

		public string GetFullName()
		{
			if (!string.IsNullOrEmpty(OverrideFullName))
			{
				return OverrideFullName;
			}
			return "Artifact of " + Name;
		}
	}
	[BepInDependency(/*Could not decode attribute arguments.*/)]
	[BepInDependency(/*Could not decode attribute arguments.*/)]
	[BepInDependency(/*Could not decode attribute arguments.*/)]
	[BepInDependency(/*Could not decode attribute arguments.*/)]
	[BepInPlugin("com.groovesalad.GrooveSaladSpikestripContent", "GrooveSaladSpikestripContent", "1.0.1")]
	[R2APISubmoduleDependency(new string[] { "LanguageAPI", "PrefabAPI", "ItemAPI", "NetworkingAPI", "RecalculateStatsAPI", "DeployableAPI", "OrbAPI", "UnlockableAPI", "DotAPI", "CommandHelper" })]
	public class Base : BaseUnityPlugin
	{
		public static ManualLogSource groovyLogger;

		public static AssetBundle GroovyAssetBundle;

		public static ConfigFile SpikestripContentConfig;

		public static ExpansionDef SpikestripContentExpansionDef;

		public static GameObject SpikestripContentRunBehaviourPrefab;

		public static List<Type> processedContentTypes = new List<Type>();

		public static List<Type> enabledContentTypes = new List<Type>();

		public static List<SpikestripContentBase> waitingDependentContent = new List<SpikestripContentBase>();

		private static readonly char[] invalidConfigChars = new char[8] { '=', '\n', '\t', '\\', '"', '\'', '[', ']' };

		public void CreateExpansionDef()
		{
			//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)
			ExpansionDef val = LegacyResourcesAPI.Load<ExpansionDef>("ExpansionDefs/DLC1");
			SpikestripContentExpansionDef = ScriptableObject.CreateInstance<ExpansionDef>();
			GameObject val2 = Addressables.LoadAssetAsync<GameObject>((object)"12bf89dabb4bb914382a0e31546446cc").WaitForCompletion();
			SpikestripContentRunBehaviourPrefab = PrefabAPI.InstantiateClone(val2, "SpikestripContentRunBehaviour", true);
			Object.DestroyImmediate((Object)(object)SpikestripContentRunBehaviourPrefab.GetComponent<GlobalDeathRewards>());
			ExpansionRequirementComponent component = SpikestripContentRunBehaviourPrefab.GetComponent<ExpansionRequirementComponent>();
			component.requiredExpansion = SpikestripContentExpansionDef;
			SpikestripContentRunBehaviourPrefab.AddComponent<SpikestripVisuals>();
			SpikestripContentRunBehaviourPrefab.AddComponent<SpikestripBuffBehaviours>();
			SpikestripContentRunBehaviourPrefab.AddComponent<SpikestripEliteRamps>();
			SpikestripContentRunBehaviourPrefab.AddComponent<SpikestripDamageColors>();
			SpikestripContentRunBehaviourPrefab.AddComponent<SpikestripExpansionDirectorHelper>();
			PrefabAPI.RegisterNetworkPrefab(SpikestripContentRunBehaviourPrefab);
			SpikestripContentBase.networkedObjectContent.Add(SpikestripContentRunBehaviourPrefab);
			((Object)SpikestripContentExpansionDef).name = "SPIKESTRIPCONTENT_EXPANSION";
			SpikestripContentExpansionDef.nameToken = "SPIKESTRIPCONTENT_EXPANSION_NAME";
			SpikestripContentExpansionDef.descriptionToken = "SPIKESTRIPCONTENT_EXPANSION_DESCRIPTION";
			SpikestripContentExpansionDef.iconSprite = GroovyAssetBundle.LoadAsset<Sprite>("texSpikestripExpansionIcon.png");
			SpikestripContentExpansionDef.disabledIconSprite = val.disabledIconSprite;
			SpikestripContentExpansionDef.requiredEntitlement = val.requiredEntitlement;
			SpikestripContentExpansionDef.runBehaviorPrefab = SpikestripContentRunBehaviourPrefab;
			SpikestripContentBase.expansionDefContent.Add(SpikestripContentExpansionDef);
			LanguageAPI.Add(SpikestripContentExpansionDef.nameToken, "Spikestrip 2.0");
			LanguageAPI.Add(SpikestripContentExpansionDef.descriptionToken, "Adds content from the 'Spikestrip 2.0' mod to the game.");
		}

		public void Awake()
		{
			//IL_001c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0026: Expected O, but got Unknown
			groovyLogger = ((BaseUnityPlugin)this).Logger;
			SpikestripContentConfig = new ConfigFile(Paths.ConfigPath + "\\Spikestrip 2.0.cfg", true);
			GroovyAssetBundle = AssetBundle.LoadFromFile(Assembly.GetExecutingAssembly().Location.Replace("GrooveSaladSpikestripContent.dll", "groovesaladspikestripcontentassets"));
			CreateExpansionDef();
			string directoryName = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
			DirectoryInfo directoryInfo = new DirectoryInfo(directoryName);
			FileInfo[] files = directoryInfo.GetFiles("*.dll");
			FileInfo[] array = files;
			foreach (FileInfo fileInfo in array)
			{
				Assembly assembly = Assembly.LoadFrom(fileInfo.FullName);
				groovyLogger.LogInfo((object)("Scanning Assembly: " + assembly.GetName()));
				IEnumerable<Type> enumerable = from type in assembly.GetTypes()
					where !type.IsAbstract && type.IsSubclassOf(typeof(SpikestripContentBase))
					select type;
				foreach (Type item in enumerable)
				{
					SpikestripContentBase spikestripContentBase = (SpikestripContentBase)Activator.CreateInstance(item);
					if (!processedContentTypes.Contains(spikestripContentBase.GetType()))
					{
						ProcessInitialContent(spikestripContentBase, enumerable);
					}
				}
			}
			while (waitingDependentContent.Count > 0)
			{
				int count = waitingDependentContent.Count;
				for (int num = waitingDependentContent.Count - 1; num >= 0; num--)
				{
					ProcessDependentContent(waitingDependentContent[num]);
				}
				if (count == waitingDependentContent.Count)
				{
					groovyLogger.LogError((object)"Infinite recursion while loading detected!");
					break;
				}
			}
			new ContentPacks().Initialize();
		}

		public void ProcessInitialContent(SpikestripContentBase initialContent, IEnumerable<Type> allInitialContentTypes)
		{
			if (initialContent.IsEnabled)
			{
				if (!(initialContent.DependsOn == null) && allInitialContentTypes.Contains(initialContent.DependsOn))
				{
					waitingDependentContent.Add(initialContent);
					return;
				}
				if (SpikestripContentConfig.Bind<bool>(SafeForConfig(initialContent.ConfigSection), "Enable " + SafeForConfig(initialContent.ConfigName), true, "Enable/Disable : " + SafeForConfig(initialContent.ConfigName)).Value)
				{
					initialContent.Init();
				}
			}
			processedContentTypes.Add(initialContent.GetType());
		}

		public void ProcessDependentContent(SpikestripContentBase waitingDependentcontent)
		{
			if (processedContentTypes.Contains(waitingDependentcontent.DependsOn))
			{
				if (enabledContentTypes.Contains(waitingDependentcontent.DependsOn))
				{
					waitingDependentcontent.Init();
				}
				waitingDependentContent.Remove(waitingDependentcontent);
				processedContentTypes.Add(waitingDependentcontent.GetType());
			}
		}

		public string SafeForConfig(string original)
		{
			return new string(original.Where(IsCharacterSafe).ToArray());
		}

		public static bool IsCharacterSafe(char character)
		{
			return !invalidConfigChars.Contains(character);
		}
	}
	public class SpikestripBuffBehaviours : SpikestripContentRunBehaviour
	{
		public struct BuffBehaviourPair
		{
			public Type buffBehaviour;

			public BuffDef buffDef;

			public bool serverOnly;
		}

		public class SyncUpdateBuffBehaviour : INetMessage, ISerializableObject
		{
			private int Index;

			private int Count;

			private NetworkInstanceId GameObjectID;

			public SyncUpdateBuffBehaviour()
			{
			}

			public SyncUpdateBuffBehaviour(int index, int count, NetworkInstanceId gameObjectID)
			{
				//IL_0017: Unknown result type (might be due to invalid IL or missing references)
				//IL_0018: Unknown result type (might be due to invalid IL or missing references)
				Index = index;
				Count = count;
				GameObjectID = gameObjectID;
			}

			public void Serialize(NetworkWriter writer)
			{
				//IL_001d: Unknown result type (might be due to invalid IL or missing references)
				writer.Write(Index);
				writer.Write(Count);
				writer.Write(GameObjectID);
			}

			public void Deserialize(NetworkReader reader)
			{
				//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)
				Index = reader.ReadInt32();
				Count = reader.ReadInt32();
				GameObjectID = reader.ReadNetworkId();
			}

			public void OnReceived()
			{
				//IL_000e: Unknown result type (might be due to invalid IL or missing references)
				if (NetworkServer.active)
				{
					return;
				}
				GameObject val = Util.FindNetworkObject(GameObjectID);
				if (Object.op_Implicit((Object)(object)val))
				{
					CharacterBody component = val.GetComponent<CharacterBody>();
					if (Object.op_Implicit((Object)(object)component))
					{
						UpdateBuffBehaviour(component, buffBehaviours[Index], Count);
					}
				}
			}
		}

		public static List<BuffBehaviourPair> buffBehaviours = new List<BuffBehaviourPair>();

		public static bool hookActive;

		[SystemInitializer(new Type[] { })]
		public static void Init()
		{
			NetworkingAPI.RegisterMessageType<SyncUpdateBuffBehaviour>();
		}

		private void OnEnable()
		{
			//IL_0025: Unknown result type (might be due to invalid IL or missing references)
			//IL_002f: Expected O, but got Unknown
			if (SetHook(ref hookActive, buffBehaviours.Count != 0))
			{
				CharacterBody.SetBuffCount += new hook_SetBuffCount(CharacterBody_SetBuffCount);
			}
		}

		private void OnDisable()
		{
			//IL_0018: Unknown result type (might be due to invalid IL or missing references)
			//IL_0022: Expected O, but got Unknown
			if (UnsetHook(ref hookActive))
			{
				CharacterBody.SetBuffCount -= new hook_SetBuffCount(CharacterBody_SetBuffCount);
			}
		}

		public static void RegisterBuffBehaviour(BuffDef buffDef, Type behaviour, bool serverOnly = true)
		{
			BuffBehaviourPair item = default(BuffBehaviourPair);
			item.buffDef = buffDef;
			item.buffBehaviour = behaviour;
			item.serverOnly = serverOnly;
			buffBehaviours.Add(item);
		}

		private static void CharacterBody_SetBuffCount(orig_SetBuffCount orig, CharacterBody self, BuffIndex buffType, int newCount)
		{
			//IL_0003: 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)
			orig.Invoke(self, buffType, newCount);
			if (!NetworkServer.active || !Object.op_Implicit((Object)(object)self))
			{
				return;
			}
			for (int i = 0; i < buffBehaviours.Count; i++)
			{
				int buffCount = self.GetBuffCount(buffBehaviours[i].buffDef);
				UpdateBuffBehaviour(self, buffBehaviours[i], buffCount);
				if (!buffBehaviours[i].serverOnly)
				{
					NetworkIdentity component = ((Component)self).GetComponent<NetworkIdentity>();
					if (Object.op_Implicit((Object)(object)component))
					{
						NetMessageExtensions.Send((INetMessage)(object)new SyncUpdateBuffBehaviour(i, buffCount, component.netId), (NetworkDestination)1);
					}
				}
			}
		}

		public static void UpdateBuffBehaviour(CharacterBody characterBody, BuffBehaviourPair behaviourPair, int stack)
		{
			//IL_0012: Unknown result type (might be due to invalid IL or missing references)
			//IL_0018: Expected O, but got Unknown
			//IL_0040: Unknown result type (might be due to invalid IL or missing references)
			//IL_0046: Expected O, but got Unknown
			ItemBehavior val = (ItemBehavior)((Component)characterBody).gameObject.GetComponent(behaviourPair.buffBehaviour);
			if (stack > 0)
			{
				if (!Object.op_Implicit((Object)(object)val))
				{
					val = (ItemBehavior)((Component)characterBody).gameObject.AddComponent(behaviourPair.buffBehaviour);
					val.body = characterBody;
					((Behaviour)val).enabled = true;
				}
				val.stack = stack;
			}
			else if (Object.op_Implicit((Object)(object)val))
			{
				Object.Destroy((Object)(object)val);
			}
		}
	}
	public class ContentPacks : IContentPackProvider
	{
		internal ContentPack contentPack = new ContentPack();

		public string identifier => "com.groovesalad.GrooveSaladSpikestripContent";

		public void Initialize()
		{
			//IL_0008: Unknown result type (might be due to invalid IL or missing references)
			//IL_0012: Expected O, but got Unknown
			ContentManager.collectContentPackProviders += new CollectContentPackProvidersDelegate(ContentManager_collectContentPackProviders);
		}

		private void ContentManager_collectContentPackProviders(AddContentPackProviderDelegate addContentPackProvider)
		{
			addContentPackProvider.Invoke((IContentPackProvider)(object)this);
		}

		public IEnumerator LoadStaticContentAsync(LoadStaticContentAsyncArgs args)
		{
			contentPack.identifier = identifier;
			contentPack.networkedObjectPrefabs.Add(SpikestripContentBase.networkedObjectContent.ToArray());
			contentPack.itemDefs.Add(SpikestripContentBase.itemContent.ToArray());
			contentPack.entityStateTypes.Add(SpikestripContentBase.entityStateTypeContent.ToArray());
			contentPack.masterPrefabs.Add(SpikestripContentBase.masterPrefabContent.ToArray());
			contentPack.bodyPrefabs.Add(SpikestripContentBase.bodyPrefabContent.ToArray());
			contentPack.skillDefs.Add(SpikestripContentBase.skillDefContent.ToArray());
			contentPack.artifactDefs.Add(SpikestripContentBase.artifactDefContent.ToArray());
			contentPack.buffDefs.Add(SpikestripContentBase.buffDefContent.ToArray());
			contentPack.effectDefs.Add(SpikestripContentBase.effectDefContent.ToArray());
			contentPack.eliteDefs.Add(SpikestripContentBase.eliteDefContent.ToArray());
			contentPack.entityStateConfigurations.Add(SpikestripContentBase.entityStateConfigurationContent.ToArray());
			contentPack.equipmentDefs.Add(SpikestripContentBase.equipmentDefContent.ToArray());
			contentPack.gameEndingDefs.Add(SpikestripContentBase.gameEndingDefContent.ToArray());
			contentPack.gameModePrefabs.Add(SpikestripContentBase.gameModePrefabContent.ToArray());
			contentPack.musicTrackDefs.Add(SpikestripContentBase.musicTrackDefContent.ToArray());
			contentPack.networkSoundEventDefs.Add(SpikestripContentBase.networkSoundEventDefContent.ToArray());
			contentPack.projectilePrefabs.Add(SpikestripContentBase.projectilePrefabContent.ToArray());
			contentPack.sceneDefs.Add(SpikestripContentBase.sceneDefContent.ToArray());
			contentPack.skillFamilies.Add(SpikestripContentBase.skillFamilyContent.ToArray());
			contentPack.surfaceDefs.Add(SpikestripContentBase.surfaceDefContent.ToArray());
			contentPack.survivorDefs.Add(SpikestripContentBase.survivorDefContent.ToArray());
			contentPack.unlockableDefs.Add(SpikestripContentBase.unlockableDefContent.ToArray());
			contentPack.expansionDefs.Add(SpikestripContentBase.expansionDefContent.ToArray());
			contentPack.entitlementDefs.Add(SpikestripContentBase.entitlementDefContent.ToArray());
			contentPack.itemRelationshipProviders.Add(SpikestripContentBase.itemRelationshipProviderContent.ToArray());
			contentPack.itemRelationshipTypes.Add(SpikestripContentBase.itemRelationshipTypeContent.ToArray());
			contentPack.miscPickupDefs.Add(SpikestripContentBase.miscPickupDefContent.ToArray());
			args.ReportProgress(1f);
			yield break;
		}

		public IEnumerator GenerateContentPackAsync(GetContentPackAsyncArgs args)
		{
			ContentPack.Copy(contentPack, args.output);
			args.ReportProgress(1f);
			yield break;
		}

		public IEnumerator FinalizeAsync(FinalizeAsyncArgs args)
		{
			args.ReportProgress(1f);
			yield break;
		}
	}
	public class SpikestripDamageColors : SpikestripContentRunBehaviour
	{
		public static List<DamageColorIndex> customColorIndices = new List<DamageColorIndex>();

		public static bool hookActive;

		private void OnEnable()
		{
			//IL_0025: Unknown result type (might be due to invalid IL or missing references)
			//IL_002f: Expected O, but got Unknown
			if (SetHook(ref hookActive, customColorIndices.Count != 0))
			{
				DamageColor.FindColor += new hook_FindColor(DamageColor_FindColor);
			}
		}

		private void OnDisable()
		{
			//IL_0018: Unknown result type (might be due to invalid IL or missing references)
			//IL_0022: Expected O, but got Unknown
			if (UnsetHook(ref hookActive))
			{
				DamageColor.FindColor -= new hook_FindColor(DamageColor_FindColor);
			}
		}

		private static Color DamageColor_FindColor(orig_FindColor orig, DamageColorIndex colorIndex)
		{
			//IL_0001: Unknown result type (might be due to invalid IL or missing references)
			//IL_0008: 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_0042: Unknown result type (might be due to invalid IL or missing references)
			//IL_0043: Unknown result type (might be due to invalid IL or missing references)
			//IL_0048: 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_0039: Unknown result type (might be due to invalid IL or missing references)
			//IL_003e: Unknown result type (might be due to invalid IL or missing references)
			//IL_004b: Unknown result type (might be due to invalid IL or missing references)
			if (colorIndex >= customColorIndices[0] && colorIndex <= customColorIndices[customColorIndices.Count - 1])
			{
				return DamageColor.colors[colorIndex];
			}
			return orig.Invoke(colorIndex);
		}

		public static DamageColorIndex RegisterDamageColor(Color color)
		{
			//IL_0019: Unknown result type (might be due to invalid IL or missing references)
			//IL_0024: Unknown result type (might be due to invalid IL or missing references)
			//IL_0026: Expected I4, but got Unknown
			//IL_003d: 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)
			//IL_0045: Unknown result type (might be due to invalid IL or missing references)
			//IL_0048: Unknown result type (might be due to invalid IL or missing references)
			ArrayUtils.ArrayAppend<Color>(ref DamageColor.colors, ref color);
			DamageColorIndex val = (DamageColorIndex)(byte)((byte)DamageColor.colors.Length - 1);
			Base.groovyLogger.LogInfo((object)("Registered new damage color with index: " + (int)val));
			customColorIndices.Add(val);
			return val;
		}
	}
	public class SpikestripExpansionDirectorHelper : SpikestripContentRunBehaviour
	{
		public struct ResetDccs
		{
			public DirectorCardCategorySelection targetDccs;

			public DirectorCard directorCardToRemove;

			public string categoryName;
		}

		public struct AllStagesCardRequest
		{
			public DirectorCard directorCard;

			public string categoryName;
		}

		public struct FamilyEventAddition
		{
			public DirectorCard directorCard;

			public DirectorCardCategorySelection eventDccs;

			public string categoryName;
		}

		public static bool hookActive;

		public static Dictionary<string, Dictionary<string, List<DirectorCard>>> interactableRequestDictionary = new Dictionary<string, Dictionary<string, List<DirectorCard>>>();

		public static Dictionary<string, Dictionary<string, List<DirectorCard>>> monsterRequestDictionary = new Dictionary<string, Dictionary<string, List<DirectorCard>>>();

		public static List<AllStagesCardRequest> allStagesInteractableCards = new List<AllStagesCardRequest>();

		public static List<AllStagesCardRequest> allStagesMonsterCards = new List<AllStagesCardRequest>();

		public static List<FamilyEventAddition> familyEventAdditions = new List<FamilyEventAddition>();

		public List<ResetDccs> resetDccsOnDisabled = new List<ResetDccs>();

		[SystemInitializer(new Type[] { typeof(SceneCatalog) })]
		public unsafe static void Init()
		{
			//IL_0009: Unknown result type (might be due to invalid IL or missing references)
			//IL_000e: Unknown result type (might be due to invalid IL or missing references)
			//IL_001a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0022: Unknown result type (might be due to invalid IL or missing references)
			//IL_0028: Invalid comparison between Unknown and I4
			for (int i = 0; i < SceneCatalog.sceneDefCount; i++)
			{
				SceneDef val = (SceneDef)Unsafe.Read<object>((void*)SceneCatalog.allSceneDefs[i]);
				if ((int)val.sceneType != 0 && (int)val.sceneType != 3)
				{
					for (int j = 0; j < allStagesInteractableCards.Count; j++)
					{
						AllStagesCardRequest allStagesCardRequest = allStagesInteractableCards[j];
						RegisterSpikestripInteractable(allStagesCardRequest.directorCard, allStagesCardRequest.categoryName, val.baseSceneName);
					}
					for (int k = 0; k < allStagesMonsterCards.Count; k++)
					{
						AllStagesCardRequest allStagesCardRequest2 = allStagesMonsterCards[k];
						RegisterSpikestripMonster(allStagesCardRequest2.directorCard, allStagesCardRequest2.categoryName, val.baseSceneName);
					}
				}
			}
		}

		private void OnEnable()
		{
			//IL_0034: Unknown result type (might be due to invalid IL or missing references)
			//IL_003e: Expected O, but got Unknown
			if (SetHook(ref hookActive, interactableRequestDictionary.Count != 0 || monsterRequestDictionary.Count != 0))
			{
				ClassicStageInfo.RebuildCards += new hook_RebuildCards(ClassicStageInfo_RebuildCards);
			}
			UpdateFamilyEventAdditions(active: true);
		}

		private void OnDisable()
		{
			//IL_0018: Unknown result type (might be due to invalid IL or missing references)
			//IL_0022: Expected O, but got Unknown
			if (UnsetHook(ref hookActive))
			{
				ClassicStageInfo.RebuildCards -= new hook_RebuildCards(ClassicStageInfo_RebuildCards);
			}
			UpdateFamilyEventAdditions(active: false);
			if (resetDccsOnDisabled.Count != 0)
			{
				for (int num = resetDccsOnDisabled.Count - 1; num >= 0; num--)
				{
					HandleResetDccs(resetDccsOnDisabled[num]);
					resetDccsOnDisabled.RemoveAt(num);
				}
			}
		}

		private void HandleResetDccs(ResetDccs resetDccs)
		{
			//IL_0025: Unknown result type (might be due to invalid IL or missing references)
			//IL_002a: Unknown result type (might be due to invalid IL or missing references)
			//IL_005e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0030: Unknown result type (might be due to invalid IL or missing references)
			if (!FindDccsCategoryFromName(resetDccs.targetDccs, resetDccs.categoryName, out var foundCategoryIndex))
			{
				return;
			}
			Category val = resetDccs.targetDccs.categories[foundCategoryIndex];
			for (int i = 0; i < val.cards.Length; i++)
			{
				if (val.cards[i] == resetDccs.directorCardToRemove)
				{
					ArrayUtils.ArrayRemoveAtAndResize<DirectorCard>(ref val.cards, i, 1);
					break;
				}
			}
		}

		private void ClassicStageInfo_RebuildCards(orig_RebuildCards orig, ClassicStageInfo self)
		{
			SceneDef mostRecentSceneDef = SceneCatalog.mostRecentSceneDef;
			if (Object.op_Implicit((Object)(object)mostRecentSceneDef))
			{
				if (interactableRequestDictionary.TryGetValue(mostRecentSceneDef.baseSceneName, out var value))
				{
					if (Object.op_Implicit((Object)(object)self.interactableDccsPool))
					{
						HandleDccsPool(self.interactableDccsPool, value);
					}
					if (Object.op_Implicit((Object)(object)self.interactableCategories))
					{
						HandleDccs(self.interactableCategories, value);
					}
				}
				if (monsterRequestDictionary.TryGetValue(mostRecentSceneDef.baseSceneName, out var value2))
				{
					if (Object.op_Implicit((Object)(object)self.monsterDccsPool))
					{
						HandleDccsPool(self.monsterDccsPool, value2, new string[1] { "Standard" });
					}
					if (Object.op_Implicit((Object)(object)self.monsterCategories))
					{
						HandleDccs(self.monsterCategories, value2);
					}
				}
			}
			orig.Invoke(self);
		}

		private void HandleDccsPool(DccsPool dccsPool, Dictionary<string, List<DirectorCard>> categoryToCard, string[] specificNames = null)
		{
			for (int i = 0; i < dccsPool.poolCategories.Length; i++)
			{
				Category val = dccsPool.poolCategories[i];
				if (specificNames == null || specificNames.Contains(val.name))
				{
					HandleDccsPoolEntries(val.alwaysIncluded, categoryToCard);
					PoolEntry[] includedIfConditionsMet = (PoolEntry[])(object)val.includedIfConditionsMet;
					HandleDccsPoolEntries(includedIfConditionsMet, categoryToCard);
					HandleDccsPoolEntries(val.includedIfNoConditionsMet, categoryToCard);
				}
			}
		}

		private void HandleDccsPoolEntries(PoolEntry[] entries, Dictionary<string, List<DirectorCard>> categoryToCard)
		{
			foreach (PoolEntry val in entries)
			{
				HandleDccs(val.dccs, categoryToCard);
			}
		}

		private void HandleDccs(DirectorCardCategorySelection dccs, Dictionary<string, List<DirectorCard>> categoryToCard)
		{
			for (int i = 0; i < dccs.categories.Length; i++)
			{
				ref Category reference = ref dccs.categories[i];
				if (!categoryToCard.TryGetValue(reference.name, out var value))
				{
					continue;
				}
				ref DirectorCard[] cards = ref reference.cards;
				for (int j = 0; j < value.Count; j++)
				{
					DirectorCard val = value[j];
					if (!cards.Contains(val))
					{
						ArrayUtils.ArrayAppend<DirectorCard>(ref cards, ref val);
						resetDccsOnDisabled.Add(new ResetDccs
						{
							targetDccs = dccs,
							directorCardToRemove = val,
							categoryName = reference.name
						});
					}
				}
			}
		}

		public static void RegisterSpikestripInteractable(DirectorCard directorCard, string categoryName, string stageName = null)
		{
			if (string.IsNullOrEmpty(stageName))
			{
				allStagesInteractableCards.Add(new AllStagesCardRequest
				{
					directorCard = directorCard,
					categoryName = categoryName
				});
				return;
			}
			if (!interactableRequestDictionary.TryGetValue(stageName, out var value))
			{
				value = new Dictionary<string, List<DirectorCard>>();
				interactableRequestDictionary.Add(stageName, value);
			}
			if (!value.TryGetValue(categoryName, out var value2))
			{
				value2 = new List<DirectorCard>();
				value.Add(categoryName, value2);
			}
			value2.Add(directorCard);
		}

		public static void RegisterSpikestripMonster(DirectorCard directorCard, string categoryName, string stageName)
		{
			if (string.IsNullOrEmpty(stageName))
			{
				allStagesMonsterCards.Add(new AllStagesCardRequest
				{
					directorCard = directorCard,
					categoryName = categoryName
				});
				return;
			}
			if (!monsterRequestDictionary.TryGetValue(stageName, out var value))
			{
				value = new Dictionary<string, List<DirectorCard>>();
				monsterRequestDictionary.Add(stageName, value);
			}
			if (!value.TryGetValue(categoryName, out var value2))
			{
				value2 = new List<DirectorCard>();
				value.Add(categoryName, value2);
			}
			value2.Add(directorCard);
		}

		public void UpdateFamilyEventAdditions(bool active)
		{
			if (familyEventAdditions.Count == 0)
			{
				return;
			}
			for (int i = 0; i < familyEventAdditions.Count; i++)
			{
				FamilyEventAddition familyEventAddition = familyEventAdditions[i];
				DirectorCardCategorySelection eventDccs = familyEventAddition.eventDccs;
				if (FindDccsCategoryFromName(eventDccs, familyEventAddition.categoryName, out var foundCategoryIndex))
				{
					ref Category reference = ref eventDccs.categories[foundCategoryIndex];
					if (active)
					{
						ArrayUtils.ArrayAppend<DirectorCard>(ref reference.cards, ref familyEventAddition.directorCard);
					}
					else
					{
						SpikestripContentBase.RemoveFromArray(ref reference.cards, in familyEventAddition.directorCard);
					}
				}
			}
		}

		public static void RegisterSpikestripFamilyAddition(DirectorCard directorCard, DirectorCardCategorySelection eventDccs, string categoryName)
		{
			familyEventAdditions.Add(new FamilyEventAddition
			{
				directorCard = directorCard,
				eventDccs = eventDccs,
				categoryName = categoryName
			});
		}

		public static bool FindDccsCategoryFromName(DirectorCardCategorySelection dccs, string idealName, out int foundCategoryIndex)
		{
			//IL_000d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0012: 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)
			for (int i = 0; i < dccs.categories.Length; i++)
			{
				Category val = dccs.categories[i];
				if (val.name == idealName)
				{
					foundCategoryIndex = i;
					return true;
				}
			}
			foundCategoryIndex = -1;
			return false;
		}
	}
	public static class CommonInteractableCategories
	{
		public const string Chests = "Chests";

		public const string Barrels = "Barrels";

		public const string Shrines = "Shrines";

		public const string Drones = "Drones";

		public const string Misc = "Misc";

		public const string Rare = "Rare";

		public const string Duplicator = "Duplicator";
	}
	public static class CommonMonsterCategories
	{
		public const string Champions = "Champions";

		public const string Minibosses = "Minibosses";

		public const string BasicMonsters = "Basic Monsters";

		public const string Special = "Special";
	}
	public static class CommonStages
	{
		public const string AphelianSanctuary = "ancientloft";

		public const string VoidFields = "arena";

		public const string ArtifactReliquary = "artifactworld";

		public const string DistantRoost = "blackbeach";

		public const string DistantRoostAlt = "blackbeach2";

		public const string AbyssalDepths = "dampcavesimple";

		public const string WetlandAspect = "foggyswamp";

		public const string RallypointDelta = "frozenwall";

		public const string GoldenCoast = "goldshores";

		public const string TitanicPlains = "golemplains";

		public const string TitanicPlainsAlt = "golemplains2";

		public const string AbandonedAqueduct = "goolake";

		public const string Commencement = "moon2";

		public const string SunderedGrove = "rootjungle";

		public const string SirensCall = "shipgraveyard";

		public const string SkyMeadow = "skymeadow";

		public const string SiphonedForest = "snowyforest";

		public const string SulfurPools = "sulfurpools";

		public const string VoidLocus = "voidstage";

		public const string ScorchedAcres = "wispgraveyard";

		public static string Simulacrum(string baseStageName)
		{
			return "it" + baseStageName;
		}
	}
	public abstract class SpikestripEliteBase<T> : SpikestripEquipBase<T> where T : SpikestripEliteBase<T>
	{
		public enum TierType
		{
			TierOne = 1,
			TierTwo = 3,
			Honor = 2,
			Lunar = 4
		}

		public struct EliteTierDefinition
		{
			public TierType tierType;

			public float healthBoostCoefficient;

			public float damageBoostCoefficient;
		}

		public struct EliteDefTierPair
		{
			public EliteDef eliteDef;

			public TierType tierType;
		}

		public struct ItemDisplayParent
		{
			public Object parentAsset;

			public GameObject prefab;
		}

		public static EliteTierDefinition tierOneEliteDefault = new EliteTierDefinition
		{
			tierType = TierType.TierOne,
			healthBoostCoefficient = 4f,
			damageBoostCoefficient = 2f
		};

		public static EliteTierDefinition tierTwoEliteDefault = new EliteTierDefinition
		{
			tierType = TierType.TierTwo,
			healthBoostCoefficient = 18f,
			damageBoostCoefficient = 6f
		};

		public static EliteTierDefinition honorEliteDefault = new EliteTierDefinition
		{
			tierType = TierType.Honor,
			healthBoostCoefficient = 2.5f,
			damageBoostCoefficient = 1.5f
		};

		public BuffDef AffixBuff;

		public EliteDef MainEliteDef;

		public List<ItemDisplayParent> itemDisplayParents = new List<ItemDisplayParent>();

		private List<EliteDefTierPair> eliteDefTierPairsInternal = new List<EliteDefTierPair>();

		public abstract string EliteName { get; }

		public abstract string AffixDescriptionMainWord { get; }

		public abstract Color EliteColor { get; }

		public abstract Sprite AffixBuffSprite { get; }

		public abstract EliteTierDefinition MainEliteTierDefinition { get; }

		public abstract Texture2D EliteRampTexture { get; }

		public virtual Type AffixBuffBehaviour { get; } = null;


		public virtual bool ServerOnlyAffixBuffBehaviour { get; } = true;


		public virtual bool HookOnHitEnemy { get; } = true;


		public virtual EliteTierDefinition[] ExtraEliteTierDefitions { get; } = Array.Empty<EliteTierDefinition>();


		public override string ConfigName => EliteName;

		public override string ConfigSection => "Elites";

		public override bool CanActivate => false;

		public override bool EnigmaCompatible => false;

		public override BuffDef PassiveBuff => AffixBuff;

		public override bool CanDrop => false;

		public override string EquipmentPickup => "Become an aspect of " + AffixDescriptionMainWord + ".";

		public override string EquipmentDescription => "Become an aspect of " + AffixDescriptionMainWord + ".";

		public override string EquipmentLore => null;

		public override string EquipmentToken => "AFFIX" + EliteName.ToUpper();

		public override bool CanBeRandomlyTriggered => false;

		public override float DropOnDeathChance => 0.00025f;

		public override void Init()
		{
			//IL_0025: Unknown result type (might be due to invalid IL or missing references)
			//IL_002a: Unknown result type (might be due to invalid IL or missing references)
			//IL_002f: Unknown result type (might be due to invalid IL or missing references)
			//IL_01f0: 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_02bb: Unknown result type (might be due to invalid IL or missing references)
			//IL_02c5: Expected O, but got Unknown
			//IL_013a: 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_02ee: Unknown result type (might be due to invalid IL or missing references)
			//IL_02f8: Expected O, but got Unknown
			//IL_02db: Unknown result type (might be due to invalid IL or missing references)
			//IL_02e5: Expected O, but got Unknown
			MainEliteDef = ScriptableObject.CreateInstance<EliteDef>();
			AffixBuff = ScriptableObject.CreateInstance<BuffDef>();
			base.Init();
			MainEliteDef.color = Color32.op_Implicit(EliteColor);
			MainEliteDef.eliteEquipmentDef = EquipmentDef;
			MainEliteDef.modifierToken = "ELITE_MODIFIER_" + EliteName.ToUpper();
			MainEliteDef.shaderEliteRampIndex = 0;
			MainEliteDef.healthBoostCoefficient = MainEliteTierDefinition.healthBoostCoefficient;
			MainEliteDef.damageBoostCoefficient = MainEliteTierDefinition.damageBoostCoefficient;
			SpikestripContentBase.eliteDefContent.Add(MainEliteDef);
			LanguageAPI.Add(MainEliteDef.modifierToken, EliteName + " {0}");
			eliteDefTierPairsInternal.Add(new EliteDefTierPair
			{
				eliteDef = MainEliteDef,
				tierType = MainEliteTierDefinition.tierType
			});
			if (ExtraEliteTierDefitions.Length != 0)
			{
				for (int i = 0; i < ExtraEliteTierDefitions.Length; i++)
				{
					EliteTierDefinition eliteTierDefinition = ExtraEliteTierDefitions[i];
					EliteDef val = ScriptableObject.CreateInstance<EliteDef>();
					val.color = MainEliteDef.color;
					val.eliteEquipmentDef = MainEliteDef.eliteEquipmentDef;
					val.modifierToken = MainEliteDef.modifierToken;
					val.shaderEliteRampIndex = MainEliteDef.shaderEliteRampIndex;
					val.healthBoostCoefficient = eliteTierDefinition.healthBoostCoefficient;
					val.damageBoostCoefficient = eliteTierDefinition.damageBoostCoefficient;
					SpikestripContentBase.eliteDefContent.Add(val);
					eliteDefTierPairsInternal.Add(new EliteDefTierPair
					{
						eliteDef = val,
						tierType = eliteTierDefinition.tierType
					});
				}
			}
			AffixBuff.buffColor = EliteColor;
			AffixBuff.canStack = false;
			AffixBuff.eliteDef = MainEliteDef;
			AffixBuff.iconSprite = AffixBuffSprite;
			AffixBuff.isDebuff = false;
			SpikestripContentBase.buffDefContent.Add(AffixBuff);
			if (AffixBuffBehaviour != null)
			{
				SpikestripBuffBehaviours.RegisterBuffBehaviour(AffixBuff, AffixBuffBehaviour, ServerOnlyAffixBuffBehaviour);
			}
			SpikestripEliteRamps.SpikestripEliteRamp item = default(SpikestripEliteRamps.SpikestripEliteRamp);
			item.eliteDef = MainEliteDef;
			item.rampTexture = (Texture)(object)EliteRampTexture;
			SpikestripEliteRamps.eliteRamps.Add(item);
			if (itemDisplayParents.Count != 0)
			{
				BodyCatalog.SetBodyPrefabs += new hook_SetBodyPrefabs(CopyItemDisplayRules);
			}
			if (HookOnHitEnemy)
			{
				GlobalEventManager.OnHitEnemy += new hook_OnHitEnemy(OnHitEffect);
			}
			CombatDirector.Init += new hook_Init(AddToEliteTiers);
		}

		private void AddToEliteTiers(orig_Init orig)
		{
			orig.Invoke();
			for (int i = 0; i < eliteDefTierPairsInternal.Count; i++)
			{
				EliteDefTierPair eliteDefTierPair = eliteDefTierPairsInternal[i];
				ArrayUtils.ArrayAppend<EliteDef>(ref CombatDirector.eliteTiers[(int)eliteDefTierPair.tierType].eliteTypes, ref eliteDefTierPair.eliteDef);
			}
		}

		private void OnHitEffect(orig_OnHitEnemy orig, GlobalEventManager self, DamageInfo damageInfo, GameObject victim)
		{
			orig.Invoke(self, damageInfo, victim);
			if (damageInfo.procCoefficient != 0f && !damageInfo.rejected && NetworkServer.active && Object.op_Implicit((Object)(object)damageInfo.attacker) && damageInfo.procCoefficient > 0f)
			{
				OnHitEnemyServer(damageInfo, victim);
			}
		}

		public virtual void OnHitEnemyServer(DamageInfo damageInfo, GameObject victim)
		{
		}

		private void CopyItemDisplayRules(orig_SetBodyPrefabs orig, GameObject[] newBodyPrefabs)
		{
			foreach (GameObject val in newBodyPrefabs)
			{
				if (Object.op_Implicit((Object)(object)val))
				{
					CopyIDRFrom(val);
				}
			}
			orig.Invoke(newBodyPrefabs);
		}

		public void CopyIDRFrom(GameObject bodyPrefab)
		{
			//IL_0092: Unknown result type (might be due to invalid IL or missing references)
			//IL_0097: Unknown result type (might be due to invalid IL or missing references)
			//IL_01f7: Unknown result type (might be due to invalid IL or missing references)
			//IL_01fc: Unknown result type (might be due to invalid IL or missing references)
			//IL_0214: Unknown result type (might be due to invalid IL or missing references)
			//IL_0229: Unknown result type (might be due to invalid IL or missing references)
			//IL_022b: Unknown result type (might be due to invalid IL or missing references)
			//IL_00aa: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b8: Unknown result type (might be due to invalid IL or missing references)
			//IL_0181: Unknown result type (might be due to invalid IL or missing references)
			//IL_0183: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e8: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ea: Unknown result type (might be due to invalid IL or missing references)
			//IL_00f6: 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_0101: Unknown result type (might be due to invalid IL or missing references)
			//IL_011e: 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_0125: Unknown result type (might be due to invalid IL or missing references)
			//IL_012c: 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_0133: Unknown result type (might be due to invalid IL or missing references)
			//IL_013a: Unknown result type (might be due to invalid IL or missing references)
			//IL_013c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0141: Unknown result type (might be due to invalid IL or missing references)
			//IL_0148: 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_0158: Unknown result type (might be due to invalid IL or missing references)
			//IL_015d: 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_0166: 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)
			ModelLocator component = bodyPrefab.GetComponent<ModelLocator>();
			if (!Object.op_Implicit((Object)(object)component))
			{
				return;
			}
			Transform modelTransform = component.modelTransform;
			if (!Object.op_Implicit((Object)(object)modelTransform))
			{
				return;
			}
			CharacterModel component2 = ((Component)modelTransform).GetComponent<CharacterModel>();
			if (!Object.op_Implicit((Object)(object)component2))
			{
				return;
			}
			ItemDisplayRuleSet itemDisplayRuleSet = component2.itemDisplayRuleSet;
			if (!Object.op_Implicit((Object)(object)itemDisplayRuleSet))
			{
				return;
			}
			List<ItemDisplayParent> list = new List<ItemDisplayParent>(itemDisplayParents);
			List<ItemDisplayRule> list2 = new List<ItemDisplayRule>();
			for (int i = 0; i < itemDisplayRuleSet.keyAssetRuleGroups.Length; i++)
			{
				if (list.Count <= 0)
				{
					break;
				}
				KeyAssetRuleGroup val = itemDisplayRuleSet.keyAssetRuleGroups[i];
				for (int num = list.Count - 1; num >= 0; num--)
				{
					if (Object.op_Implicit(val.keyAsset) && val.keyAsset == list[num].parentAsset)
					{
						for (int j = 0; j < val.displayRuleGroup.rules.Length; j++)
						{
							ItemDisplayRule val2 = val.displayRuleGroup.rules[j];
							list2.Add(new ItemDisplayRule
							{
								followerPrefab = list[num].prefab,
								localPos = val2.localPos,
								localAngles = val2.localAngles,
								localScale = val2.localScale,
								childName = val2.childName,
								limbMask = val2.limbMask,
								ruleType = val2.ruleType
							});
						}
						list.RemoveAt(num);
					}
				}
			}
			if (list2.Count != 0)
			{
				DisplayRuleGroup empty = DisplayRuleGroup.empty;
				empty.rules = list2.ToArray();
				ref KeyAssetRuleGroup[] keyAssetRuleGroups = ref itemDisplayRuleSet.keyAssetRuleGroups;
				KeyAssetRuleGroup val3 = new KeyAssetRuleGroup
				{
					keyAsset = (Object)(object)EquipmentDef,
					displayRuleGroup = empty
				};
				ArrayUtils.ArrayAppend<KeyAssetRuleGroup>(ref keyAssetRuleGroups, ref val3);
			}
		}

		public GameObject CreateAffixModel(Color color)
		{
			//IL_0034: Unknown result type (might be due to invalid IL or missing references)
			GameObject val = PrefabAPI.InstantiateClone(LegacyResourcesAPI.Load<GameObject>("prefabs/pickupmodels/PickupAffixRed"), "PickupAffix" + EliteName, false);
			Material val2 = Object.Instantiate<Material>(((Renderer)val.GetComponentInChildren<MeshRenderer>()).material);
			val2.color = color;
			Renderer[] componentsInChildren = val.GetComponentsInChildren<Renderer>();
			foreach (Renderer val3 in componentsInChildren)
			{
				val3.material = val2;
			}
			return val;
		}

		public void RegisterDisplayParent(Object parent, GameObject prefab = null)
		{
			ItemDisplayParent item = default(ItemDisplayParent);
			item.parentAsset = parent;
			item.prefab = (Object.op_Implicit((Object)(object)prefab) ? prefab : EquipmentDisplayModel);
			itemDisplayParents.Add(item);
		}

		public ItemDisplayRule[] AffixIDR(string childName, Vector3 position, Vector3 angles, Vector3 scale)
		{
			//IL_000b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0014: Unknown result type (might be due to invalid IL or missing references)
			//IL_0030: Unknown result type (might be due to invalid IL or missing references)
			//IL_0031: 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_0039: 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_0042: Unknown result type (might be due to invalid IL or missing references)
			//IL_0047: Unknown result type (might be due to invalid IL or missing references)
			//IL_0048: Unknown result type (might be due to invalid IL or missing references)
			return (ItemDisplayRule[])(object)new ItemDisplayRule[1]
			{
				new ItemDisplayRule
				{
					ruleType = (ItemDisplayRuleType)0,
					followerPrefab = EquipmentDisplayModel,
					childName = childName,
					localPos = position,
					localAngles = angles,
					localScale = scale
				}
			};
		}
	}
	public class SpikestripEliteRamps : SpikestripContentRunBehaviour
	{
		public struct SpikestripEliteRamp
		{
			public Texture rampTexture;

			public EliteDef eliteDef;
		}

		public static List<SpikestripEliteRamp> eliteRamps = new List<SpikestripEliteRamp>();

		public static bool hookActive;

		public static int EliteRampPropertyID => Shader.PropertyToID("_EliteRamp");

		private void OnEnable()
		{
			//IL_0025: Unknown result type (might be due to invalid IL or missing references)
			//IL_002f: Expected O, but got Unknown
			if (SetHook(ref hookActive, eliteRamps.Count != 0))
			{
				CharacterModel.UpdateMaterials += new Manipulator(CopyMSU);
			}
		}

		private void OnDisable()
		{
			//IL_0018: Unknown result type (might be due to invalid IL or missing references)
			//IL_0022: Expected O, but got Unknown
			if (UnsetHook(ref hookActive))
			{
				CharacterModel.UpdateMaterials -= new Manipulator(CopyMSU);
			}
		}

		private static void CopyMSU(ILContext il)
		{
			//IL_0002: Unknown result type (might be due to invalid IL or missing references)
			//IL_0008: Expected O, but got Unknown
			//IL_00ad: Unknown result type (might be due to invalid IL or missing references)
			ILCursor val = new ILCursor(il);
			val.GotoNext((MoveType)2, new Func<Instruction, bool>[3]
			{
				(Instruction x) => ILPatternMatchingExt.MatchLdarg(x, 0),
				(Instruction x) => ILPatternMatchingExt.MatchLdfld<CharacterModel>(x, "propertyStorage"),
				(Instruction x) => ILPatternMatchingExt.MatchLdsfld(x, typeof(CommonShaderProperties), "_EliteIndex")
			});
			val.GotoNext((MoveType)2, new Func<Instruction, bool>[1]
			{
				(Instruction x) => ILPatternMatchingExt.MatchCallOrCallvirt<MaterialPropertyBlock>(x, "SetFloat")
			});
			val.Emit(OpCodes.Ldarg, 0);
			val.EmitDelegate<Action<CharacterModel>>((Action<CharacterModel>)delegate(CharacterModel model)
			{
				//IL_0013: Unknown result type (might be due to invalid IL or missing references)
				//IL_001e: Unknown result type (might be due to invalid IL or missing references)
				for (int i = 0; i < eliteRamps.Count; i++)
				{
					SpikestripEliteRamp spikestripEliteRamp = eliteRamps[i];
					if (model.myEliteIndex == spikestripEliteRamp.eliteDef.eliteIndex)
					{
						model.propertyStorage.SetTexture(EliteRampPropertyID, spikestripEliteRamp.rampTexture);
						break;
					}
					if ((Object)(object)model.propertyStorage.GetTexture(EliteRampPropertyID) == (Object)(object)spikestripEliteRamp.rampTexture)
					{
						model.propertyStorage.Clear();
					}
				}
			});
		}
	}
	public abstract class SpikestripMonsterBase<T> : SpikestripContentBase<T> where T : SpikestripMonsterBase<T>
	{
		public CharacterSpawnCard CharacterSpawnCard;

		public DirectorCard DirectorCard;

		public GameObject MasterPrefab;

		public GameObject BodyPrefab;

		public override string ConfigSection => "Monsters";

		public override string ConfigName => MonsterName;

		public abstract string MonsterName { get; }

		public virtual bool UsesDirector { get; } = true;


		public override void Init()
		{
			//IL_0090: Unknown result type (might be due to invalid IL or missing references)
			//IL_009a: Expected O, but got Unknown
			base.Init();
			SetHooks();
			AssignPrefab();
			if (Object.op_Implicit((Object)(object)BodyPrefab))
			{
				SpikestripContentBase.bodyPrefabContent.Add(BodyPrefab);
				PrefabAPI.RegisterNetworkPrefab(BodyPrefab);
			}
			if (Object.op_Implicit((Object)(object)MasterPrefab))
			{
				SpikestripContentBase.masterPrefabContent.Add(MasterPrefab);
				PrefabAPI.RegisterNetworkPrefab(MasterPrefab);
			}
			if (UsesDirector)
			{
				CharacterSpawnCard = ScriptableObject.CreateInstance<CharacterSpawnCard>();
				ModifySpawnCard();
				DirectorCard = new DirectorCard();
				ModifyDirectorCardAndAddInteractable();
			}
		}

		public abstract void AssignPrefab();

		public abstract void SetHooks();

		public virtual void ModifySpawnCard()
		{
			//IL_0050: Unknown result type (might be due to invalid IL or missing references)
			//IL_005c: 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)
			((Object)CharacterSpawnCard).name = "csc" + MonsterName.Replace(" ", "");
			((SpawnCard)CharacterSpawnCard).prefab = MasterPrefab;
			((SpawnCard)CharacterSpawnCard).sendOverNetwork = true;
			((SpawnCard)CharacterSpawnCard).nodeGraphType = (GraphType)0;
			((SpawnCard)CharacterSpawnCard).requiredFlags = (NodeFlags)0;
			((SpawnCard)CharacterSpawnCard).forbiddenFlags = (NodeFlags)4;
		}

		public virtual void ModifyDirectorCardAndAddInteractable()
		{
			DirectorCard.spawnCard = (SpawnCard)(object)CharacterSpawnCard;
		}

		public void AddMonster(string categoryName, string stageName = null)
		{
			SpikestripExpansionDirectorHelper.RegisterSpikestripMonster(DirectorCard, categoryName, stageName);
		}

		public void AddMonsterToFamily(DirectorCardCategorySelection dccs, string categoryName)
		{
			SpikestripExpansionDirectorHelper.RegisterSpikestripFamilyAddition(DirectorCard, dccs, categoryName);
		}
	}
	public static class CommonDisplayReferences
	{
		public static EquipmentDef AffixRed = LegacyResourcesAPI.Load<EquipmentDef>("EquipmentDefs/AffixRed");

		public static GameObject AffixRedHornDisplay = SpikestripContentBase.AdressablesLoad<GameObject>("880352d2f519466409abd39061d75b79");

		public static EquipmentDef AffixWhite = LegacyResourcesAPI.Load<EquipmentDef>("EquipmentDefs/AffixWhite");

		public static GameObject AffixWhiteCrownDisplay = SpikestripContentBase.AdressablesLoad<GameObject>("767a76f115c24384498eb6bed7decc4d");

		public static EquipmentDef AffixBlue = LegacyResourcesAPI.Load<EquipmentDef>("EquipmentDefs/AffixBlue");

		public static GameObject AffixBlueHornDisplay = SpikestripContentBase.AdressablesLoad<GameObject>("01c99be16781ea64cb7c24f1ff1354d4");

		public static EquipmentDef AffixPoison = LegacyResourcesAPI.Load<EquipmentDef>("EquipmentDefs/AffixPoison");

		public static GameObject AffixPoisonCrownDisplay = SpikestripContentBase.AdressablesLoad<GameObject>("5071e940404ac11438977d61b4f37e5c");

		public static EquipmentDef AffixHaunted = LegacyResourcesAPI.Load<EquipmentDef>("EquipmentDefs/AffixHaunted");

		public static GameObject AffixHauntedCrownDisplay = SpikestripContentBase.AdressablesLoad<GameObject>("f75c662c5bc0d744d8919219eeba482d");

		public static EquipmentDef AffixEarth = SpikestripContentBase.AdressablesLoad<EquipmentDef>("463f8f6917dd8af40860b023a520f051");

		public static GameObject AffixEarthAntlersDisplay = SpikestripContentBase.AdressablesLoad<GameObject>("f76a390c2ffbf9645862f81533eafc69");

		public static EquipmentDef AffixVoid = SpikestripContentBase.AdressablesLoad<EquipmentDef>("118960de11f213c45806f7f0d2aef4d6");

		public static GameObject AffixVoidDisplay = SpikestripContentBase.AdressablesLoad<GameObject>("a5888055b2e8dfe479af511631631c0a");
	}
	public abstract class SpikestripEquipBase<T> : SpikestripContentBase<T> where T : SpikestripEquipBase<T>
	{
		public class EquipmentTargetBase : ItemBehavior
		{
			public enum TargetOption
			{
				Enemy,
				Ally
			}

			public EquipmentSlot equipmentSlot;

			public BullseyeSearch targetFinder = new BullseyeSearch();

			public virtual float MaxDistance { get; } = 0f;


			public virtual float MaxAngleFilter { get; } = 10f;


			public virtual SortMode SortMode { get; } = (SortMode)2;


			public virtual TargetOption TargetType { get; } = TargetOption.Enemy;


			public virtual GameObject GetTargetIndicatorPrefab(UserTargetInfo info)
			{
				return LegacyResourcesAPI.Load<GameObject>("Prefabs/LightningIndicator");
			}

			public void Awake()
			{
				OnAwake();
			}

			public virtual void OnAwake()
			{
			}

			public void OnDestroy()
			{
				OnOnDestroy();
			}

			public virtual void OnOnDestroy()
			{
			}

			public void Update()
			{
				OnUpdate();
			}

			public virtual void OnUpdate()
			{
			}

			public void ConfigureTargetFinderBase()
			{
				//IL_0007: Unknown result type (might be due to invalid IL or missing references)
				//IL_000c: 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_0039: Unknown result type (might be due to invalid IL or missing references)
				//IL_003e: Unknown result type (might be due to invalid IL or missing references)
				//IL_0055: Unknown result type (might be due to invalid IL or missing references)
				//IL_0062: Unknown result type (might be due to invalid IL or missing references)
				//IL_0067: Unknown result type (might be due to invalid IL or missing references)
				//IL_0070: Unknown result type (might be due to invalid IL or missing references)
				//IL_0075: Unknown result type (might be due to invalid IL or missing references)
				//IL_0082: 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)
				targetFinder.teamMaskFilter = TeamMask.allButNeutral;
				((TeamMask)(ref targetFinder.teamMaskFilter)).RemoveTeam(equipmentSlot.teamComponent.teamIndex);
				targetFinder.sortMode = SortMode;
				targetFinder.filterByLoS = true;
				float num = default(float);
				Ray val = CameraRigController.ModifyAimRayIfApplicable(equipmentSlot.GetAimRay(), ((Component)this).gameObject, ref num);
				targetFinder.searchOrigin = ((Ray)(ref val)).origin;
				targetFinder.searchDirection = ((Ray)(ref val)).direction;
				targetFinder.maxAngleFilter = MaxAngleFilter;
				targetFinder.maxDistanceFilter = MaxDistance;
				targetFinder.viewer = equipmentSlot.characterBody;
			}

			public void ConfigureTargetFinderForEnemies()
			{
				//IL_0019: Unknown result type (might be due to invalid IL or missing references)
				//IL_001e: Unknown result type (might be due to invalid IL or missing references)
				//IL_0023: Unknown result type (might be due to invalid IL or missing references)
				ConfigureTargetFinderBase();
				targetFinder.teamMaskFilter = TeamMask.GetUnprotectedTeams(equipmentSlot.teamComponent.teamIndex);
				targetFinder.RefreshCandidates();
				targetFinder.FilterOutGameObject(((Component)this).gameObject);
			}

			public void ConfigureTargetFinderForFriendlies()
			{
				//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)
				//IL_002e: Unknown result type (might be due to invalid IL or missing references)
				ConfigureTargetFinderBase();
				targetFinder.teamMaskFilter = TeamMask.none;
				((TeamMask)(ref targetFinder.teamMaskFilter)).AddTeam(equipmentSlot.teamComponent.teamIndex);
				targetFinder.RefreshCandidates();
				targetFinder.FilterOutGameObject(((Component)this).gameObject);
			}
		}

		public class EquipmentSingleTargetBehaviour : EquipmentTargetBase
		{
			public Indicator targetIndicator;

			public UserTargetInfo currentTarget;

			public override void OnAwake()
			{
				//IL_0010: Unknown result type (might be due to invalid IL or missing references)
				//IL_001a: Expected O, but got Unknown
				base.OnAwake();
				targetIndicator = new Indicator(((Component)this).gameObject, (GameObject)null);
				targetIndicator.active = false;
			}

			public override void OnUpdate()
			{
				base.OnUpdate();
				if (Object.op_Implicit((Object)(object)equipmentSlot))
				{
					UpdateTargets();
				}
			}

			public override void OnOnDestroy()
			{
				base.OnOnDestroy();
				targetIndicator.active = false;
			}

			public void UpdateTargets()
			{
				//IL_0086: Unknown result type (might be due to invalid IL or missing references)
				//IL_004f: Unknown result type (might be due to invalid IL or missing references)
				//IL_0054: Unknown result type (might be due to invalid IL or missing references)
				if (equipmentSlot.stock > 0)
				{
					switch (TargetType)
					{
					case TargetOption.Enemy:
						ConfigureTargetFinderForEnemies();
						break;
					case TargetOption.Ally:
						ConfigureTargetFinderForFriendlies();
						break;
					}
					currentTarget = new UserTargetInfo(targetFinder.GetResults().FirstOrDefault());
				}
				else
				{
					InvalidateCurrentTarget();
				}
				bool flag = Object.op_Implicit((Object)(object)currentTarget.transformToIndicateAt);
				if (flag)
				{
					targetIndicator.visualizerPrefab = GetTargetIndicatorPrefab(currentTarget);
				}
				targetIndicator.active = flag;
				targetIndicator.targetTransform = (flag ? currentTarget.transformToIndicateAt : null);
			}

			public void InvalidateCurrentTarget()
			{
				//IL_0007: Unknown result type (might be due to invalid IL or missing references)
				currentTarget = default(UserTargetInfo);
			}
		}

		public class EquipmentMultiTargetBehaviour : EquipmentTargetBase
		{
			public List<Indicator> indicators = new List<Indicator>();

			public List<UserTargetInfo> currentTargets = new List<UserTargetInfo>();

			public float updateStopwatch;

			public virtual float UpdateInterval { get; } = 0.05f;


			public override void OnAwake()
			{
				base.OnAwake();
			}

			public override void OnUpdate()
			{
				base.OnUpdate();
				if (Object.op_Implicit((Object)(object)equipmentSlot))
				{
					updateStopwatch += Time.fixedDeltaTime;
					if (updateStopwatch >= UpdateInterval)
					{
						updateStopwatch -= UpdateInterval;
						UpdateTargets();
					}
				}
			}

			public override void OnOnDestroy()
			{
				base.OnOnDestroy();
				for (int num = indicators.Count - 1; num >= 0; num--)
				{
					indicators[num].active = false;
				}
			}

			public Indicator NewIndicator()
			{
				//IL_0008: Unknown result type (might be due to invalid IL or missing references)
				//IL_000e: Expected O, but got Unknown
				Indicator val = new Indicator(((Component)this).gameObject, (GameObject)null);
				val.active = false;
				indicators.Add(val);
				return val;
			}

			public void UpdateTargets()
			{
				//IL_0079: Unknown result type (might be due to invalid IL or missing references)
				//IL_00aa: Unknown result type (might be due to invalid IL or missing references)
				//IL_00b9: Unknown result type (might be due to invalid IL or missing references)
				InvalidateCurrentTargets();
				if (equipmentSlot.stock > 0)
				{
					switch (TargetType)
					{
					case TargetOption.Enemy:
						ConfigureTargetFinderForEnemies();
						break;
					case TargetOption.Ally:
						ConfigureTargetFinderForFriendlies();
						break;
					}
					List<HurtBox> list = targetFinder.GetResults().Reverse().ToList();
					UserTargetInfo val = default(UserTargetInfo);
					for (int i = 0; i < list.Count; i++)
					{
						((UserTargetInfo)(ref val))..ctor(list[i]);
						currentTargets.Add(val);
						Indicator val2 = ((i < indicators.Count) ? indicators[i] : NewIndicator());
						val2.visualizerPrefab = GetTargetIndicatorPrefab(val);
						val2.targetTransform = val.transformToIndicateAt;
						val2.active = true;
					}
				}
				for (int num = indicators.Count - 1; num >= currentTargets.Count; num--)
				{
					indicators[num].active = false;
					indicators.RemoveAt(num);
				}
			}

			public void InvalidateCurrentTargets()
			{
				for (int num = currentTargets.Count - 1; num >= 0; num--)
				{
					currentTargets.Clear();
				}
			}
		}

		public EquipmentDef EquipmentDef;

		public GameObject EquipmentPickupModel;

		public GameObject EquipmentDisplayModel;

		public ItemDisplayRuleDict idrs = new ItemDisplayRuleDict(Array.Empty<ItemDisplayRule>());

		public override string ConfigName => EquipmentName;

		public override string ConfigSection => "Equipment";

		public abstract string EquipmentName { get; }

		public abstract string EquipmentToken { get; }

		public abstract string EquipmentPickup { get; }

		public abstract string EquipmentDescription { get; }

		public abstract string EquipmentLore { get; }

		public abstract Sprite EquipmentIcon { get; }

		public virtual bool AppearsInSinglePlayer { get; } = true;


		public virtual bool AppearsInMultiPlayer { get; } = true;


		public virtual bool CanDrop { get; } = true;


		public virtual float Cooldown { get; } = 60f;


		public virtual bool EnigmaCompatible { get; } = true;


		public virtual bool CanBeRandomlyTriggered { get; } = true;


		public virtual bool IsBoss { get; } = false;


		public virtual bool IsLunar { get; } = false;


		public virtual BuffDef PassiveBuff { get; } = null;


		public virtual bool CanActivate { get; } = true;


		public virtual float DropOnDeathChance { get; } = 0f;


		public virtual Type EquipmentBehaviour { get; } = null;


		public virtual bool ServerOnlyEquipmentBehaviour { get; } = false;


		public abstract void PopulateItemDisplayRules(ItemDisplayRuleDict itemDisplayRuleDict);

		public abstract void AssignEquipmentValues();

		public virtual bool OnActivationServer(EquipmentSlot equipmentSlot)
		{
			return false;
		}

		public override void Init()
		{
			//IL_001a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0024: Expected O, but got Unknown
			//IL_01e9: Unknown result type (might be due to invalid IL or missing references)
			//IL_003e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0048: Expected O, but got Unknown
			//IL_0201: Unknown result type (might be due to invalid IL or missing references)
			//IL_022b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0235: Expected O, but got Unknown
			//IL_0219: Unknown result type (might be due to invalid IL or missing references)
			base.Init();
			if (CanActivate)
			{
				EquipmentSlot.PerformEquipmentAction += new hook_PerformEquipmentAction(ActivationEffect);
			}
			if (EquipmentBehaviour != null)
			{
				CharacterBody.OnInventoryChanged += new hook_OnInventoryChanged(UpdateEquipmentBehaviour);
			}
			AssignEquipmentValues();
			PopulateItemDisplayRules(idrs);
			EquipmentDef = ScriptableObject.CreateInstance<EquipmentDef>();
			((Object)EquipmentDef).name = "EQUIPMENT_" + EquipmentToken;
			EquipmentDef.nameToken = "EQUIPMENT_" + EquipmentToken + "_NAME";
			EquipmentDef.pickupToken = "EQUIPMENT_" + EquipmentToken + "_PICKUP";
			EquipmentDef.descriptionToken = "EQUIPMENT_" + EquipmentToken + "_DESCRIPTION";
			EquipmentDef.loreToken = "EQUIPMENT_" + EquipmentToken + "_LORE";
			EquipmentDef.pickupModelPrefab = EquipmentPickupModel;
			EquipmentDef.pickupIconSprite = EquipmentIcon;
			EquipmentDef.appearsInSinglePlayer = AppearsInSinglePlayer;
			EquipmentDef.appearsInMultiPlayer = AppearsInMultiPlayer;
			EquipmentDef.canDrop = CanDrop;
			EquipmentDef.cooldown = Cooldown;
			EquipmentDef.enigmaCompatible = EnigmaCompatible;
			EquipmentDef.passiveBuffDef = PassiveBuff;
			EquipmentDef.isBoss = IsBoss;
			EquipmentDef.isLunar = IsLunar;
			EquipmentDef.canBeRandomlyTriggered = CanBeRandomlyTriggered;
			EquipmentDef.dropOnDeathChance = DropOnDeathChance;
			EquipmentDef.requiredExpansion = RequiredExpansionHolder;
			EquipmentDef.colorIndex = (ColorIndex)5;
			if (IsBoss)
			{
				EquipmentDef.colorIndex = (ColorIndex)13;
			}
			if (IsLunar)
			{
				EquipmentDef.colorIndex = (ColorIndex)4;
			}
			ItemAPI.Add(new CustomEquipment(EquipmentDef, idrs));
			LanguageAPI.Add("EQUIPMENT_" + EquipmentToken + "_NAME", EquipmentName);
			LanguageAPI.Add("EQUIPMENT_" + EquipmentToken + "_PICKUP", EquipmentPickup);
			LanguageAPI.Add("EQUIPMENT_" + EquipmentToken + "_DESCRIPTION", EquipmentDescription);
			if (!string.IsNullOrEmpty(EquipmentLore))
			{
				LanguageAPI.Add("EQUIPMENT_" + EquipmentToken + "_LORE", EquipmentLore);
			}
		}

		private bool ActivationEffect(orig_PerformEquipmentAction orig, EquipmentSlot self, EquipmentDef equipmentDef)
		{
			if (NetworkServer.active && (Object)(object)equipmentDef == (Object)(object)EquipmentDef)
			{
				return OnActivationServer(self);
			}
			return orig.Invoke(self, equipmentDef);
		}

		private void UpdateEquipmentBehaviour(orig_OnInventoryChanged orig, CharacterBody self)
		{
			orig.Invoke(self);
			if (NetworkServer.active || !ServerOnlyEquipmentBehaviour)
			{
				AddEquipBehaviour(self);
			}
		}

		public void AddEquipBehaviour(CharacterBody characterBody)
		{
			//IL_0012: Unknown result type (might be due to invalid IL or missing references)
			//IL_0039: Unknown result type (might be due to invalid IL or missing references)
			//IL_003f: Expected O, but got Unknown
			//IL_0064: Unknown result type (might be due to invalid IL or missing references)
			//IL_006a: Expected O, but got Unknown
			bool flag = (Object)(object)characterBody.inventory.GetEquipment((uint)characterBody.inventory.activeEquipmentSlot).equipmentDef == (Object)(object)EquipmentDef;
			ItemBehavior val = (ItemBehavior)((Component)characterBody).gameObject.GetComponent(EquipmentBehaviour);
			if (flag)
			{
				if (!Object.op_Implicit((Object)(object)val))
				{
					val = (ItemBehavior)((Component)characterBody).gameObject.AddComponent(EquipmentBehaviour);
					if (val is EquipmentTargetBase)
					{
						(val as EquipmentTargetBase).equipmentSlot = (Object.op_Implicit((Object)(object)((Component)characterBody).GetComponent<EquipmentSlot>()) ? ((Component)characterBody).GetComponent<EquipmentSlot>() : null);
					}
					val.body = characterBody;
					((Behaviour)val).enabled = true;
				}
			}
			else if (Object.op_Implicit((Object)(object)val))
			{
				Object.Destroy((Object)(object)val);
			}
		}
	}
	public abstract class SpikestripGasolineBase<T> : SpikestripItemBase<T> where T : SpikestripGasolineBase<T>
	{
		public static GameObject igniteExplosionVFX = LegacyResourcesAPI.Load<GameObject>("Prefabs/Effects/ImpactEffects/IgniteExplosionVFX");

		private static readonly SphereSearch gasolineSphereSearch = new SphereSearch();

		private static readonly List<HurtBox> gasolineHurtBoxBuffer = new List<HurtBox>();

		public GameObject GasolineEffectPrefab;

		public virtual float RadiusBase { get; } = 12f;


		public virtual float RadiusStack { get; } = 4f;


		public virtual float ExplosionDamageBase { get; } = 1.5f;


		public virtual float ExplosionDamageStack { get; } = 0f;


		public virtual float ProcChanceBase { get; } = 100f;


		public virtual float ProcChanceStack { get; } = 0f;


		public virtual DamageType DamageType { get; } = (DamageType)0;


		public virtual float ProcCoefficient { get; } = 0f;


		public virtual FalloffModel FalloffModel { get; } = (FalloffModel)0;


		public virtual bool InvertTeamFilter { get; } = false;


		public override string ItemToken => "IGNITEONKILL";

		public override Type DependsOn => typeof(Arson);

		public abstract void AssignEffectPrefab();

		public virtual void OnProcServer(HurtBox hurtBox, Vector3 procOrigin, int stack)
		{
		}

		public override void PopulateItemDisplayRules(ItemDisplayRuleDict itemDisplayRuleDict)
		{
		}

		public bool ShouldProc(int stack, CharacterMaster master)
		{
			float num = SpikestripContentBase.StackScaling(ProcChanceBase, ProcChanceStack, stack);
			if (num >= 100f)
			{
				return true;
			}
			if (num <= 0f)
			{
				return false;
			}
			return Util.CheckRoll(num, master);
		}

		public override void Init()
		{
			//IL_0039: Unknown result type (might be due to invalid IL or missing references)
			//IL_0043: Expected O, but got Unknown
			base.Init();
			AssignEffectPrefab();
			Arson.gasolineItemDefs.Add(ItemDef);
			GlobalEventManager.onCharacterDeathGlobal += ProcItem;
			LogBookController.CanSelectItemEntry += new hook_CanSelectItemEntry(LogBookController_CanSelectItemEntry);
		}

		private bool LogBookController_CanSelectItemEntry(orig_CanSelectItemEntry orig, ItemDef itemDef, Dictionary<ExpansionDef, bool> expansionAvailability)
		{
			return !((Object)(object)itemDef == (Object)(object)ItemDef) && orig.Invoke(itemDef, expansionAvailability);
		}

		private void ProcItem(DamageReport damageReport)
		{
			//IL_0017: Unknown result type (might be due to invalid IL or missing references)
			//IL_001c: 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_00b4: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b9: Unknown result type (might be due to invalid IL or missing references)
			//IL_00da: 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_00e6: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e8: Unknown result type (might be due to invalid IL or missing references)
			//IL_00f7: Unknown result type (might be due to invalid IL or missing references)
			//IL_00fc: 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_00c8: Unknown result type (might be due to invalid IL or missing references)
			//IL_00cd: 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_016d: 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_01b5: Unknown result type (might be due to invalid IL or missing references)
			//IL_01bd: Unknown result type (might be due to invalid IL or missing references)
			//IL_01c5: 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_01ed: Unknown result type (might be due to invalid IL or missing references)
			//IL_01ef: 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_01f6: Unknown result type (might be due to invalid IL or missing references)
			//IL_01fb: Unknown result type (might be due to invalid IL or missing references)
			//IL_01fd: Unknown result type (might be due to invalid IL or missing references)
			//IL_0202: Unknown result type (might be due to invalid IL or missing references)
			//IL_0207: Unknown result type (might be due to invalid IL or missing references)
			//IL_0213: Unknown result type (might be due to invalid IL or missing references)
			//IL_0214: Unknown result type (might be due to invalid IL or missing references)
			//IL_0215: Unknown result type (might be due to invalid IL or missing references)
			//IL_021a: Unknown result type (might be due to invalid IL or missing references)
			//IL_021b: Unknown result type (might be due to invalid IL or missing references)
			//IL_021d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0222: Unknown result type (might be due to invalid IL or missing references)
			//IL_0224: Unknown result type (might be due to invalid IL or missing references)
			//IL_0229: Unknown result type (might be due to invalid IL or missing references)
			//IL_022e: Unknown result type (might be due to invalid IL or missing references)
			//IL_024d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0252: Unknown result type (might be due to invalid IL or missing references)
			//IL_0253: Unknown result type (might be due to invalid IL or missing references)
			//IL_025b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0263: Unknown result type (might be due to invalid IL or missing references)
			//IL_026a: Unknown result type (might be due to invalid IL or missing references)
			//IL_026f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0274: Unknown result type (might be due to invalid IL or missing references)
			//IL_027f: Expected O, but got Unknown
			CharacterBody attackerBody = damageReport.attackerBody;
			CharacterBody victimBody = damageReport.victimBody;
			CharacterMaster attackerMaster = damageReport.attackerMaster;
			TeamIndex attackerTeamIndex = damageReport.attackerTeamIndex;
			if (!Object.op_Implicit((Object)(object)attackerBody) || !Object.op_Implicit((Object)(object)victim

GrooveUnsharedUtils.dll

Decompiled a year ago
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.Versioning;
using System.Security;
using System.Security.Permissions;
using BepInEx;
using BepInEx.Configuration;
using GrooveSaladSpikestripContent;
using GrooveSaladSpikestripContent.Content;
using HG;
using HG.Reflection;
using IL.GrooveSaladSpikestripContent;
using IL.RoR2;
using Mono.Cecil.Cil;
using MonoMod.Cil;
using NoopSpikestrip;
using On.GrooveSaladSpikestripContent;
using On.GrooveSaladSpikestripContent.Content;
using On.RoR2;
using PlasmaCoreSpikestripContent.Content.Elites;
using PlasmaCoreSpikestripContent.Content.Interactibles;
using PlasmaCoreSpikestripContent.Content.Monsters;
using PlasmaCoreSpikestripContent.Content.Skills;
using R2API;
using RoR2;
using UnityEngine;

[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)]
[assembly: OptIn]
[assembly: TargetFramework(".NETStandard,Version=v2.0", FrameworkDisplayName = "")]
[assembly: AssemblyCompany("GrooveUnsharedUtils")]
[assembly: AssemblyConfiguration("Debug")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: AssemblyInformationalVersion("1.0.0")]
[assembly: AssemblyProduct("GrooveUnsharedUtils")]
[assembly: AssemblyTitle("GrooveUnsharedUtils")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("1.0.0.0")]
[module: UnverifiableCode]
namespace GrooveUnsharedUtils;

public class CartridgeMasterBehaviour : MonoBehaviour
{
	public CharacterMaster master;

	public int currentConsumedDebuffsCount;

	public static void Init()
	{
		//IL_0008: Unknown result type (might be due to invalid IL or missing references)
		//IL_0012: Expected O, but got Unknown
		//IL_001a: Unknown result type (might be due to invalid IL or missing references)
		//IL_0024: Expected O, but got Unknown
		//IL_002c: Unknown result type (might be due to invalid IL or missing references)
		//IL_0036: Expected O, but got Unknown
		//IL_003e: Unknown result type (might be due to invalid IL or missing references)
		//IL_0048: Expected O, but got Unknown
		CharacterMaster.OnInventoryChanged += new hook_OnInventoryChanged(CharacterMaster_OnInventoryChanged);
		DotController.InflictDot_refInflictDotInfo += new hook_InflictDot_refInflictDotInfo(DotController_InflictDot_refInflictDotInfo);
		CharacterBody.AddTimedBuff_BuffDef_float_int += new hook_AddTimedBuff_BuffDef_float_int(CharacterBody_AddTimedBuff_BuffDef_float_int);
		CharacterBody.AddTimedBuff_BuffDef_float += new hook_AddTimedBuff_BuffDef_float(CharacterBody_AddTimedBuff_BuffDef_float);
	}

	private static void CharacterMaster_OnInventoryChanged(orig_OnInventoryChanged orig, CharacterMaster self)
	{
		orig.Invoke(self);
		int itemCount = self.inventory.GetItemCount(((SpikestripItemBase<Voiditem>)(object)SpikestripContentBase<Voiditem>.instance).ItemDef);
		CartridgeMasterBehaviour component = ((Component)self).GetComponent<CartridgeMasterBehaviour>();
		if (itemCount > 0)
		{
			if (!Object.op_Implicit((Object)(object)component))
			{
				component = ((Component)self).gameObject.AddComponent<CartridgeMasterBehaviour>();
				component.master = self;
				((Behaviour)component).enabled = true;
			}
		}
		else if (Object.op_Implicit((Object)(object)component))
		{
			Object.Destroy((Object)(object)component);
		}
	}

	private static void DotController_InflictDot_refInflictDotInfo(orig_InflictDot_refInflictDotInfo orig, ref InflictDotInfo inflictDotInfo)
	{
		//IL_0002: Unknown result type (might be due to invalid IL or missing references)
		if (!TryConsumeDot(inflictDotInfo))
		{
			orig.Invoke(ref inflictDotInfo);
		}
	}

	private static void CharacterBody_AddTimedBuff_BuffDef_float_int(orig_AddTimedBuff_BuffDef_float_int orig, CharacterBody self, BuffDef buffDef, float duration, int maxStacks)
	{
		if (!TryConsumeDebuff(self, buffDef))
		{
			orig.Invoke(self, buffDef, duration, maxStacks);
		}
	}

	private static void CharacterBody_AddTimedBuff_BuffDef_float(orig_AddTimedBuff_BuffDef_float orig, CharacterBody self, BuffDef buffDef, float duration)
	{
		if (!TryConsumeDebuff(self, buffDef))
		{
			orig.Invoke(self, buffDef, duration);
		}
	}

	public static bool TryConsumeDebuff(CharacterBody body, BuffDef buffDef)
	{
		CartridgeMasterBehaviour cartridgeMasterBehaviour = default(CartridgeMasterBehaviour);
		if (Object.op_Implicit((Object)(object)buffDef) && buffDef.isDebuff && Object.op_Implicit((Object)(object)body) && Object.op_Implicit((Object)(object)body.master) && ((Component)body.master).TryGetComponent<CartridgeMasterBehaviour>(ref cartridgeMasterBehaviour))
		{
			cartridgeMasterBehaviour.OnDebuffConsumed();
			return true;
		}
		return false;
	}

	public static bool TryConsumeDot(InflictDotInfo inflictDotInfo)
	{
		//IL_0001: Unknown result type (might be due to invalid IL or missing references)
		//IL_0011: Unknown result type (might be due to invalid IL or missing references)
		CharacterBody val = (Object.op_Implicit((Object)(object)inflictDotInfo.victimObject) ? inflictDotInfo.victimObject.GetComponent<CharacterBody>() : null);
		CartridgeMasterBehaviour cartridgeMasterBehaviour = default(CartridgeMasterBehaviour);
		if (Object.op_Implicit((Object)(object)val) && Object.op_Implicit((Object)(object)val.master) && ((Component)val.master).TryGetComponent<CartridgeMasterBehaviour>(ref cartridgeMasterBehaviour))
		{
			cartridgeMasterBehaviour.OnDebuffConsumed();
			return true;
		}
		return false;
	}

	public void OnDebuffConsumed()
	{
		//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_009b: Unknown result type (might be due to invalid IL or missing references)
		//IL_00a0: 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_00ae: Expected O, but got Unknown
		//IL_0062: Unknown result type (might be due to invalid IL or missing references)
		//IL_0067: Unknown result type (might be due to invalid IL or missing references)
		//IL_006c: Unknown result type (might be due to invalid IL or missing references)
		//IL_0074: Unknown result type (might be due to invalid IL or missing references)
		//IL_0081: 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)
		//IL_0087: Unknown result type (might be due to invalid IL or missing references)
		//IL_0094: Expected O, but got Unknown
		//IL_0131: Unknown result type (might be due to invalid IL or missing references)
		//IL_0140: Unknown result type (might be due to invalid IL or missing references)
		CharacterBody body = master.GetBody();
		if (Object.op_Implicit((Object)(object)body))
		{
			Vector3 corePosition = body.corePosition;
			if (Util.CheckRoll(10f, body.master))
			{
				master.inventory.GiveItem(((SpikestripItemBase<BLESSING>)(object)SpikestripContentBase<BLESSING>.instance).ItemDef, 1);
				PickupIndex val = PickupCatalog.FindPickupIndex(((SpikestripItemBase<BLESSING>)(object)SpikestripContentBase<BLESSING>.instance).ItemDef.itemIndex);
				GenericPickupController.SendPickupMessage(master, val);
				EffectManager.SpawnEffect(Voiditem.Blessed, new EffectData
				{
					origin = corePosition
				}, true);
			}
			EffectManager.SpawnEffect(Voiditem.woolieEffect, new EffectData
			{
				origin = corePosition
			}, true);
			Util.PlaySound("Play_UI_podSteamBurst", ((Component)this).gameObject);
			if (currentConsumedDebuffsCount++ >= 10)
			{
				currentConsumedDebuffsCount = 0;
				master.inventory.RemoveItem(((SpikestripItemBase<Voiditem>)(object)SpikestripContentBase<Voiditem>.instance).ItemDef, 1);
				master.inventory.GiveItem(((SpikestripItemBase<VoidItemConsumed>)(object)SpikestripContentBase<VoidItemConsumed>.instance).ItemDef, 1);
				CharacterMasterNotificationQueue.PushItemTransformNotification(master, ((SpikestripItemBase<Voiditem>)(object)SpikestripContentBase<Voiditem>.instance).ItemDef.itemIndex, ((SpikestripItemBase<VoidItemConsumed>)(object)SpikestripContentBase<VoidItemConsumed>.instance).ItemDef.itemIndex, (TransformationType)0);
			}
		}
	}
}
[BepInPlugin("_com.groovesalad.GrooveUnsharedUtils", "GrooveUnsharedUtils", "1.0.0")]
public class Main : BaseUnityPlugin
{
	public static ConfigFile SpikestripContentLegacyConfig;

	public static bool ContentEnabled<T>() where T : SpikestripContentBase
	{
		return Base.enabledContentTypes.Contains(typeof(T));
	}

	public void Awake()
	{
		//IL_0011: Unknown result type (might be due to invalid IL or missing references)
		//IL_001b: Expected O, but got Unknown
		//IL_0022: Unknown result type (might be due to invalid IL or missing references)
		//IL_002c: Expected O, but got Unknown
		//IL_0034: Unknown result type (might be due to invalid IL or missing references)
		//IL_003e: Expected O, but got Unknown
		//IL_0046: Unknown result type (might be due to invalid IL or missing references)
		//IL_0050: Expected O, but got Unknown
		//IL_0058: Unknown result type (might be due to invalid IL or missing references)
		//IL_0062: Expected O, but got Unknown
		SpikestripContentLegacyConfig = new ConfigFile(Paths.ConfigPath + "\\Spikestrip 2.0 Legacy.cfg", true);
		Base.ProcessInitialContent += new hook_ProcessInitialContent(Base_ProcessInitialContent);
		Base.Awake += new Manipulator(Base_Awake);
		Base.Awake += new hook_Awake(Base_Awake1);
		HealOnSkillUseBehaviour.OnSkillActivatedAuthority += new hook_OnSkillActivatedAuthority(HealOnSkillUseBehaviour_OnSkillActivatedAuthority);
	}

	private void Base_ProcessInitialContent(orig_ProcessInitialContent orig, Base self, SpikestripContentBase initialContent, IEnumerable<Type> allInitialContentTypes)
	{
		if (((object)initialContent).GetType().Assembly == ((object)self).GetType().Assembly)
		{
			if (initialContent.IsEnabled)
			{
				if (!(initialContent.DependsOn == null) && allInitialContentTypes.Contains(initialContent.DependsOn))
				{
					Base.waitingDependentContent.Add(initialContent);
					return;
				}
				if (SpikestripContentLegacyConfig.Bind<bool>("Legacy " + self.SafeForConfig(initialContent.ConfigSection), "Enable " + self.SafeForConfig(initialContent.ConfigName), false, "Enable/Disable : " + self.SafeForConfig(initialContent.ConfigName)).Value)
				{
					initialContent.Init();
				}
			}
			Base.processedContentTypes.Add(((object)initialContent).GetType());
		}
		else
		{
			orig.Invoke(self, initialContent, allInitialContentTypes);
		}
	}

	private void HealOnSkillUseBehaviour_OnSkillActivatedAuthority(orig_OnSkillActivatedAuthority orig, HealOnSkillUseBehaviour self, GenericSkill genericSkill)
	{
		if (genericSkill.skillDef.stockToConsume > 0)
		{
			orig.Invoke(self, genericSkill);
		}
	}

	private void Base_Awake1(orig_Awake orig, Base self)
	{
		orig.Invoke(self);
		AfterContentLoaded();
	}

	private void Base_Awake(ILContext il)
	{
		//IL_0008: Unknown result type (might be due to invalid IL or missing references)
		//IL_000e: Expected O, but got Unknown
		//IL_007d: Unknown result type (might be due to invalid IL or missing references)
		//IL_00b5: Unknown result type (might be due to invalid IL or missing references)
		ILCursor val = new ILCursor(il);
		int locFileInfosIndex = -1;
		if (val.TryGotoNext((MoveType)2, new Func<Instruction, bool>[3]
		{
			(Instruction x) => ILPatternMatchingExt.MatchLdstr(x, "*.dll"),
			(Instruction x) => ILPatternMatchingExt.MatchCallvirt<DirectoryInfo>(x, "GetFiles"),
			(Instruction x) => ILPatternMatchingExt.MatchStloc(x, ref locFileInfosIndex)
		}))
		{
			val.Emit(OpCodes.Ldloc, locFileInfosIndex);
			val.EmitDelegate<Func<FileInfo[], FileInfo[]>>((Func<FileInfo[], FileInfo[]>)((FileInfo[] fis) => fis.Where((FileInfo fi) => !fi.Name.Contains("MMHOOK")).ToArray()));
			val.Emit(OpCodes.Stloc, locFileInfosIndex);
		}
		else
		{
			((BaseUnityPlugin)this).Logger.LogError((object)"CRITICAL! Awake IL failed!");
		}
	}

	public void AfterContentLoaded()
	{
		//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_0018: Unknown result type (might be due to invalid IL or missing references)
		//IL_001e: 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_0099: Expected O, but got Unknown
		//IL_00e7: Unknown result type (might be due to invalid IL or missing references)
		//IL_00f1: Expected O, but got Unknown
		//IL_00f9: Unknown result type (might be due to invalid IL or missing references)
		//IL_0103: Expected O, but got Unknown
		//IL_0136: Unknown result type (might be due to invalid IL or missing references)
		//IL_0140: Expected O, but got Unknown
		//IL_014c: Unknown result type (might be due to invalid IL or missing references)
		//IL_0156: Expected O, but got Unknown
		//IL_0162: Unknown result type (might be due to invalid IL or missing references)
		//IL_016c: Expected O, but got Unknown
		//IL_01c1: Unknown result type (might be due to invalid IL or missing references)
		//IL_01cb: Expected O, but got Unknown
		//IL_01d3: Unknown result type (might be due to invalid IL or missing references)
		//IL_01dd: Expected O, but got Unknown
		//IL_02f0: Unknown result type (might be due to invalid IL or missing references)
		//IL_02fa: Expected O, but got Unknown
		//IL_02bb: Unknown result type (might be due to invalid IL or missing references)
		//IL_02c5: Unknown result type (might be due to invalid IL or missing references)
		//IL_030a: Unknown result type (might be due to invalid IL or missing references)
		//IL_0314: Expected O, but got Unknown
		foreach (SpikestripEliteRamp eliteRamp in SpikestripEliteRamps.eliteRamps)
		{
			EliteDef eliteDef = eliteRamp.eliteDef;
			Texture rampTexture = eliteRamp.rampTexture;
			EliteRamp.AddRamp(eliteDef, (Texture2D)(object)((rampTexture is Texture2D) ? rampTexture : null));
		}
		SpikestripEliteRamps.eliteRamps.Clear();
		AssetBundle val = AssetBundle.LoadFromFile(Assembly.GetExecutingAssembly().Location.Replace("GrooveUnsharedUtils.dll", "grooveunsharedutilsassets"));
		bool flag = false;
		if (Main.ContentEnabled<BloodyMask>())
		{
			flag = true;
			CharacterBody.RecalculateStats -= new hook_RecalculateStats(SpikestripContentBase<BloodyMask>.instance.CharacterBody_RecalculateStats);
			LanguageAPI.AddOverlay(((SpikestripItemBase<BloodyMask>)(object)SpikestripContentBase<BloodyMask>.instance).ItemDef.pickupToken, "Gain a stacking chance to bleed enemies during combat. Taking damage removes all stacks and puts the item on cooldown.");
		}
		if (Main.ContentEnabled<CloakedShrine>())
		{
		}
		if (Main.ContentEnabled<SigmaConstruct>())
		{
		}
		if (Main.ContentEnabled<ObligiatoryReference>())
		{
			RecalculateStatsAPI.GetStatCoefficients -= new StatHookEventHandler(SpikestripContentBase<ObligiatoryReference>.instance.AddMaxShield);
			CharacterBody.RecalculateStats += new Manipulator(CharacterBody_RecalculateStats_IL);
			LanguageAPI.AddOverlay(((SpikestripItemBase<ObligiatoryReference>)(object)SpikestripContentBase<ObligiatoryReference>.instance).ItemDef.pickupToken, "Recharge shield by attacking enemies... <color=#FF7F7F>But replace a portion of your health with shield that cannot recharge naturally.</style>");
		}
		if (Main.ContentEnabled<Voiditem>())
		{
			CharacterBody.OnInventoryChanged -= new hook_OnInventoryChanged(((SpikestripItemBase<Voiditem>)(object)SpikestripContentBase<Voiditem>.instance).UpdateItemBehaviour);
			CharacterBody.AddTimedBuff_BuffDef_float -= new hook_AddTimedBuff_BuffDef_float(SpikestripContentBase<Voiditem>.instance.CharacterBody_AddTimedBuff_BuffDef_float);
			DotController.InflictDot_refInflictDotInfo -= new hook_InflictDot_refInflictDotInfo(SpikestripContentBase<Voiditem>.instance.DotController_InflictDot_refInflictDotInfo);
			LanguageAPI.AddOverlay(((SpikestripItemBase<Voiditem>)(object)SpikestripContentBase<Voiditem>.instance).ItemDef.pickupToken, "Prevent a small amount of debuffs before breaking. Each debuff prevented has a chance to bless ALL of your stats. <style=cIsVoid>Corrupts all Medkits</style>.");
			LanguageAPI.AddOverlay(((SpikestripItemBase<Voiditem>)(object)SpikestripContentBase<Voiditem>.instance).ItemDef.descriptionToken, "Prevent <style=cIsUtility>10 debuffs</style> before breaking. Each debuff prevented has a 10% chance to grant you a <style=cIsHealing>Blessing</style>, increasing <style=cIsUtility>ALL stats</style> by <style=cIsUtility>3%</style>. <style=cIsVoid>Corrupts all Medkits</style>.");
			CartridgeMasterBehaviour.Init();
		}
		if (Main.ContentEnabled<BLESSING>())
		{
			flag = true;
			RecalculateStatsAPI.GetStatCoefficients -= new StatHookEventHandler(SpikestripContentBase<BLESSING>.instance.RecalculateStatsAPI_GetStatCoefficients);
			RecalculateStatsAPI.GetStatCoefficients += new StatHookEventHandler(RecalculateStatsAPI_GetStatCoefficients);
		}
		bool flag2 = Main.ContentEnabled<CloakedElite>();
		if (Main.ContentEnabled<LunarVault>())
		{
			LunarVaultOpening.duration = 90f;
		}
		if (Main.ContentEnabled<Torpor>())
		{
			Sprite val2 = val.LoadAsset<Sprite>("texTorporIcon");
			Torpor.scriptableObject.SkillIcon = val2;
			((SpikestripAltSkillsBase<Torpor>)(object)SpikestripContentBase<Torpor>.instance).SkillDef.icon = val2;
			((SpikestripVoidAltSkillsBase<Torpor>)(object)SpikestripContentBase<Torpor>.instance).VoidUnlockableDef.achievementIcon = val2;
			((SpikestripVoidAltSkillsBase<Torpor>)(object)SpikestripContentBase<Torpor>.instance).VoidAchievementDef.achievedIcon = val2;
		}
		if (Main.ContentEnabled<PotMobile>())
		{
			((SpikestripMonsterBase<PotMobile>)(object)SpikestripContentBase<PotMobile>.instance).AddMonster("Basic Monsters", "drybasin");
			SfxLocator component = ((SpikestripMonsterBase<PotMobile>)(object)SpikestripContentBase<PotMobile>.instance).BodyPrefab.GetComponent<SfxLocator>();
			component.aliveLoopStart = "Play_clayboss_walk_loop";
			component.aliveLoopStop = "Stop_clayboss_walk_loop";
			ModelLocator component2 = ((SpikestripMonsterBase<PotMobile>)(object)SpikestripContentBase<PotMobile>.instance).BodyPrefab.GetComponent<ModelLocator>();
			component2.modelTransform.localScale = Vector3.one * 0.55f;
			PotMobileDamageTrail component3 = PotMobile.GooTrailPrefab.GetComponent<PotMobileDamageTrail>();
			component3.damagePerSecond = 1f;
		}
		CombatDirector.Init += new hook_Init(CombatDirector_Init);
		if (flag)
		{
			CharacterBody.RecalculateStats += new hook_RecalculateStats(CharacterBody_RecalculateStats);
		}
	}

	private void RecalculateStatsAPI_GetStatCoefficients(CharacterBody sender, StatHookEventArgs args)
	{
		int num = (Object.op_Implicit((Object)(object)sender.inventory) ? sender.inventory.GetItemCount(((SpikestripItemBase<BLESSING>)(object)SpikestripContentBase<BLESSING>.instance).ItemDef) : 0);
		if (num > 0)
		{
			float num2 = 0.03f * (float)num;
			args.healthMultAdd += num2;
			args.moveSpeedMultAdd += num2;
			args.damageMultAdd += num2;
			args.attackSpeedMultAdd += num2;
			args.critAdd += num2 * 100f;
		}
	}

	private void CharacterBody_RecalculateStats_IL(ILContext il)
	{
		//IL_0002: Unknown result type (might be due to invalid IL or missing references)
		//IL_0008: Expected O, but got Unknown
		//IL_00b7: Unknown result type (might be due to invalid IL or missing references)
		ILCursor val = new ILCursor(il);
		if (val.TryGotoNext((MoveType)2, new Func<Instruction, bool>[3]
		{
			(Instruction x) => ILPatternMatchingExt.MatchLdarg(x, 0),
			(Instruction x) => ILPatternMatchingExt.MatchLdsfld(x, typeof(Buffs).GetField("AffixBlue")),
			(Instruction x) => ILPatternMatchingExt.MatchCall<CharacterBody>(x, "HasBuff")
		}) && val.TryGotoNext((MoveType)2, new Func<Instruction, bool>[1]
		{
			(Instruction x) => ILPatternMatchingExt.MatchCall<CharacterBody>(x, "set_maxShield")
		}))
		{
			val.Emit(OpCodes.Ldarg_0);
			val.EmitDelegate<Action<CharacterBody>>((Action<CharacterBody>)delegate(CharacterBody cb)
			{
				int num = (Object.op_Implicit((Object)(object)cb.inventory) ? cb.inventory.GetItemCount(((SpikestripItemBase<ObligiatoryReference>)(object)SpikestripContentBase<ObligiatoryReference>.instance).ItemDef) : 0);
				if (num > 0)
				{
					float num2 = 0.4f * Mathf.Pow(0.9f, (float)(num - 1));
					float num3 = cb.maxHealth * num2;
					cb.maxHealth -= num3;
					cb.maxShield += num3;
				}
			});
		}
		else
		{
			((BaseUnityPlugin)this).Logger.LogError((object)"Inperfect Construct IL failed!");
		}
	}

	private void CombatDirector_Init(orig_Init orig)
	{
		orig.Invoke();
		EliteTierDef tierOne = ((IEnumerable<EliteTierDef>)CombatDirector.eliteTiers).FirstOrDefault((Func<EliteTierDef, bool>)((EliteTierDef tier) => Array.IndexOf(tier.eliteTypes, Elites.Fire) >= 0)) ?? ((IEnumerable<EliteTierDef>)CombatDirector.eliteTiers).FirstOrDefault((Func<EliteTierDef, bool>)((EliteTierDef tier) => tier.costMultiplier == CombatDirector.baseEliteCostMultiplier));
		EliteTierDef tierTwo = ((IEnumerable<EliteTierDef>)CombatDirector.eliteTiers).FirstOrDefault((Func<EliteTierDef, bool>)((EliteTierDef tier) => Array.IndexOf(tier.eliteTypes, Elites.Poison) >= 0)) ?? ((IEnumerable<EliteTierDef>)CombatDirector.eliteTiers).FirstOrDefault((Func<EliteTierDef, bool>)((EliteTierDef tier) => tier.costMultiplier == CombatDirector.baseEliteCostMultiplier * 6f));
		EliteTierDef honor = ((IEnumerable<EliteTierDef>)CombatDirector.eliteTiers).FirstOrDefault((Func<EliteTierDef, bool>)((EliteTierDef tier) => Array.IndexOf(tier.eliteTypes, Elites.FireHonor) >= 0)) ?? ((IEnumerable<EliteTierDef>)CombatDirector.eliteTiers).FirstOrDefault((Func<EliteTierDef, bool>)((EliteTierDef tier) => tier.costMultiplier == Mathf.LerpUnclamped(1f, CombatDirector.baseEliteCostMultiplier, 0.5f)));
		this.EnsureAppropriateEliteTier<WarpedElite>(SpikestripContentBase<WarpedElite>.instance, tierOne, tierTwo, honor);
		this.EnsureAppropriateEliteTier<PlatedElite>(SpikestripContentBase<PlatedElite>.instance, tierOne, tierTwo, honor);
		this.EnsureAppropriateEliteTier<CloakedElite>(SpikestripContentBase<CloakedElite>.instance, tierOne, tierTwo, honor);
		this.EnsureAppropriateEliteTier<RagingElite>(SpikestripContentBase<RagingElite>.instance, tierOne, tierTwo, honor);
	}

	public void EnsureAppropriateEliteTier<T>(T instance, EliteTierDef tierOne, EliteTierDef tierTwo, EliteTierDef honor) where T : SpikestripEliteBase<T>
	{
		//IL_0027: 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_0030: Unknown result type (might be due to invalid IL or missing references)
		//IL_0031: Unknown result type (might be due to invalid IL or missing references)
		//IL_0036: 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_003a: Unknown result type (might be due to invalid IL or missing references)
		//IL_003c: Unknown result type (might be due to invalid IL or missing references)
		//IL_003f: Unknown result type (might be due to invalid IL or missing references)
		//IL_0051: Expected I4, but got Unknown
		//IL_006b: Unknown result type (might be due to invalid IL or missing references)
		//IL_006c: Unknown result type (might be due to invalid IL or missing references)
		//IL_0071: Invalid comparison between I4 and Unknown
		//IL_0088: Unknown result type (might be due to invalid IL or missing references)
		//IL_00a8: 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_00af: 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)
		if (!Main.ContentEnabled<T>())
		{
			return;
		}
		foreach (EliteDefTierPair<T> item in ((SpikestripEliteBase<T>)instance).eliteDefTierPairsInternal)
		{
			EliteTierDef val = null;
			TierType<T> tierType = item.tierType;
			TierType<T> val2 = tierType;
			switch (val2 - 1)
			{
			case 0:
				val = tierOne;
				break;
			case 2:
				val = tierTwo;
				break;
			case 1:
				val = honor;
				break;
			}
			if (Array.IndexOf(CombatDirector.eliteTiers, val) != (int)item.tierType)
			{
				((BaseUnityPlugin)this).Logger.LogWarning((object)("Elite " + item.eliteDef.modifierToken + " is not in the ideal tier, fixing!"));
				RemoveEliteFromTier(CombatDirector.eliteTiers[item.tierType], item.eliteDef);
				AddEliteToTier(val, item.eliteDef);
			}
		}
	}

	public static void AddEliteToTier(EliteTierDef tier, EliteDef ed)
	{
		int num = Array.IndexOf(tier.eliteTypes, ed);
		if (num < 0)
		{
			ArrayUtils.ArrayAppend<EliteDef>(ref tier.eliteTypes, ref ed);
		}
	}

	public static void RemoveEliteFromTier(EliteTierDef tier, EliteDef ed)
	{
		int num = Array.IndexOf(tier.eliteTypes, ed);
		if (num >= 0)
		{
			ArrayUtils.ArrayRemoveAtAndResize<EliteDef>(ref tier.eliteTypes, num, 1);
		}
	}

	private void CharacterBody_RecalculateStats(orig_RecalculateStats orig, CharacterBody self)
	{
		orig.Invoke(self);
		if (Object.op_Implicit((Object)(object)BloodyMask.bloody))
		{
			int buffCount = self.GetBuffCount(BloodyMask.bloody);
			if (buffCount > 0)
			{
				self.bleedChance += 5f * (float)buffCount;
			}
		}
		if (SpikestripContentBase<BLESSING>.instance != null)
		{
			int num = (Object.op_Implicit((Object)(object)self.inventory) ? self.inventory.GetItemCount(((SpikestripItemBase<BLESSING>)(object)SpikestripContentBase<BLESSING>.instance).ItemDef) : 0);
			if (num > 0)
			{
				float num2 = 0.03f * (float)num;
				self.regen += num2 * self.level;
				float num3 = self.baseArmor + (self.level - 1f) * self.levelArmor;
				self.armor += num3 * num2;
			}
		}
	}
}

MMHOOK_GrooveSaladSpikestripContent.dll

Decompiled a year ago
using System;
using System.Collections;
using System.Collections.Generic;
using System.ComponentModel;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using EntityStates;
using GrooveSaladSpikestripContent;
using GrooveSaladSpikestripContent.Content;
using Microsoft.CodeAnalysis;
using MonoMod.Cil;
using MonoMod.RuntimeDetour.HookGen;
using On.GrooveSaladSpikestripContent;
using On.GrooveSaladSpikestripContent.Content;
using On.Microsoft.CodeAnalysis;
using On.System.Runtime.CompilerServices;
using RoR2;
using RoR2.CharacterAI;
using RoR2.ContentManagement;
using RoR2.PostProcessing;
using RoR2.Projectile;
using RoR2.Skills;
using RoR2.UI;
using UnityEngine;
using UnityEngine.Networking;
using UnityEngine.ResourceManagement.AsyncOperations;
using UnityEngine.ResourceManagement.ResourceProviders;

[assembly: AssemblyVersion("0.0.0.0")]
namespace On.Microsoft.CodeAnalysis
{
	public static class EmbeddedAttribute
	{
		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate void orig_ctor(global::Microsoft.CodeAnalysis.EmbeddedAttribute self);

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate void hook_ctor(orig_ctor orig, global::Microsoft.CodeAnalysis.EmbeddedAttribute self);

		public static event hook_ctor ctor
		{
			add
			{
				HookEndpointManager.Add<hook_ctor>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
			remove
			{
				HookEndpointManager.Remove<hook_ctor>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
		}
	}
}
namespace IL.Microsoft.CodeAnalysis
{
	public static class EmbeddedAttribute
	{
		public static event Manipulator ctor
		{
			add
			{
				HookEndpointManager.Modify<On.Microsoft.CodeAnalysis.EmbeddedAttribute.hook_ctor>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
			remove
			{
				HookEndpointManager.Unmodify<On.Microsoft.CodeAnalysis.EmbeddedAttribute.hook_ctor>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
		}
	}
}
namespace On.System.Runtime.CompilerServices
{
	public static class IsReadOnlyAttribute
	{
		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate void orig_ctor(global::System.Runtime.CompilerServices.IsReadOnlyAttribute self);

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate void hook_ctor(orig_ctor orig, global::System.Runtime.CompilerServices.IsReadOnlyAttribute self);

		public static event hook_ctor ctor
		{
			add
			{
				HookEndpointManager.Add<hook_ctor>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
			remove
			{
				HookEndpointManager.Remove<hook_ctor>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
		}
	}
}
namespace IL.System.Runtime.CompilerServices
{
	public static class IsReadOnlyAttribute
	{
		public static event Manipulator ctor
		{
			add
			{
				HookEndpointManager.Modify<On.System.Runtime.CompilerServices.IsReadOnlyAttribute.hook_ctor>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
			remove
			{
				HookEndpointManager.Unmodify<On.System.Runtime.CompilerServices.IsReadOnlyAttribute.hook_ctor>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
		}
	}
}
namespace On.GrooveSaladSpikestripContent
{
	public static class LockSkillFromExpansion
	{
		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate void orig_Start(LockSkillFromExpansion self);

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate void hook_Start(orig_Start orig, LockSkillFromExpansion self);

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate void orig_Update(LockSkillFromExpansion self);

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate void hook_Update(orig_Update orig, LockSkillFromExpansion self);

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate void orig_RebuildButton(LockSkillFromExpansion self);

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate void hook_RebuildButton(orig_RebuildButton orig, LockSkillFromExpansion self);

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate string orig_GenerateLockedTitleText(LockSkillFromExpansion self);

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate string hook_GenerateLockedTitleText(orig_GenerateLockedTitleText orig, LockSkillFromExpansion self);

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate void orig_ctor(LockSkillFromExpansion self);

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate void hook_ctor(orig_ctor orig, LockSkillFromExpansion self);

		public static event hook_Start Start
		{
			add
			{
				HookEndpointManager.Add<hook_Start>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
			remove
			{
				HookEndpointManager.Remove<hook_Start>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
		}

		public static event hook_Update Update
		{
			add
			{
				HookEndpointManager.Add<hook_Update>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
			remove
			{
				HookEndpointManager.Remove<hook_Update>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
		}

		public static event hook_RebuildButton RebuildButton
		{
			add
			{
				HookEndpointManager.Add<hook_RebuildButton>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
			remove
			{
				HookEndpointManager.Remove<hook_RebuildButton>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
		}

		public static event hook_GenerateLockedTitleText GenerateLockedTitleText
		{
			add
			{
				HookEndpointManager.Add<hook_GenerateLockedTitleText>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
			remove
			{
				HookEndpointManager.Remove<hook_GenerateLockedTitleText>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
		}

		public static event hook_ctor ctor
		{
			add
			{
				HookEndpointManager.Add<hook_ctor>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
			remove
			{
				HookEndpointManager.Remove<hook_ctor>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
		}
	}
}
namespace IL.GrooveSaladSpikestripContent
{
	public static class LockSkillFromExpansion
	{
		public static event Manipulator Start
		{
			add
			{
				HookEndpointManager.Modify<On.GrooveSaladSpikestripContent.LockSkillFromExpansion.hook_Start>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
			remove
			{
				HookEndpointManager.Unmodify<On.GrooveSaladSpikestripContent.LockSkillFromExpansion.hook_Start>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
		}

		public static event Manipulator Update
		{
			add
			{
				HookEndpointManager.Modify<On.GrooveSaladSpikestripContent.LockSkillFromExpansion.hook_Update>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
			remove
			{
				HookEndpointManager.Unmodify<On.GrooveSaladSpikestripContent.LockSkillFromExpansion.hook_Update>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
		}

		public static event Manipulator RebuildButton
		{
			add
			{
				HookEndpointManager.Modify<On.GrooveSaladSpikestripContent.LockSkillFromExpansion.hook_RebuildButton>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
			remove
			{
				HookEndpointManager.Unmodify<On.GrooveSaladSpikestripContent.LockSkillFromExpansion.hook_RebuildButton>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
		}

		public static event Manipulator GenerateLockedTitleText
		{
			add
			{
				HookEndpointManager.Modify<On.GrooveSaladSpikestripContent.LockSkillFromExpansion.hook_GenerateLockedTitleText>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
			remove
			{
				HookEndpointManager.Unmodify<On.GrooveSaladSpikestripContent.LockSkillFromExpansion.hook_GenerateLockedTitleText>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
		}

		public static event Manipulator ctor
		{
			add
			{
				HookEndpointManager.Modify<On.GrooveSaladSpikestripContent.LockSkillFromExpansion.hook_ctor>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
			remove
			{
				HookEndpointManager.Unmodify<On.GrooveSaladSpikestripContent.LockSkillFromExpansion.hook_ctor>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
		}
	}
}
namespace On.GrooveSaladSpikestripContent
{
	public static class Base
	{
		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate void orig_CreateExpansionDef(Base self);

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate void hook_CreateExpansionDef(orig_CreateExpansionDef orig, Base self);

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate void orig_Awake(Base self);

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate void hook_Awake(orig_Awake orig, Base self);

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate void orig_ProcessInitialContent(Base self, SpikestripContentBase initialContent, IEnumerable<Type> allInitialContentTypes);

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate void hook_ProcessInitialContent(orig_ProcessInitialContent orig, Base self, SpikestripContentBase initialContent, IEnumerable<Type> allInitialContentTypes);

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate void orig_ProcessDependentContent(Base self, SpikestripContentBase waitingDependentcontent);

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate void hook_ProcessDependentContent(orig_ProcessDependentContent orig, Base self, SpikestripContentBase waitingDependentcontent);

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate string orig_SafeForConfig(Base self, string original);

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate string hook_SafeForConfig(orig_SafeForConfig orig, Base self, string original);

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate bool orig_IsCharacterSafe(char character);

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate bool hook_IsCharacterSafe(orig_IsCharacterSafe orig, char character);

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate void orig_ctor(Base self);

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate void hook_ctor(orig_ctor orig, Base self);

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate void orig_cctor();

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate void hook_cctor(orig_cctor orig);

		public static event hook_CreateExpansionDef CreateExpansionDef
		{
			add
			{
				HookEndpointManager.Add<hook_CreateExpansionDef>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
			remove
			{
				HookEndpointManager.Remove<hook_CreateExpansionDef>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
		}

		public static event hook_Awake Awake
		{
			add
			{
				HookEndpointManager.Add<hook_Awake>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
			remove
			{
				HookEndpointManager.Remove<hook_Awake>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
		}

		public static event hook_ProcessInitialContent ProcessInitialContent
		{
			add
			{
				HookEndpointManager.Add<hook_ProcessInitialContent>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
			remove
			{
				HookEndpointManager.Remove<hook_ProcessInitialContent>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
		}

		public static event hook_ProcessDependentContent ProcessDependentContent
		{
			add
			{
				HookEndpointManager.Add<hook_ProcessDependentContent>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
			remove
			{
				HookEndpointManager.Remove<hook_ProcessDependentContent>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
		}

		public static event hook_SafeForConfig SafeForConfig
		{
			add
			{
				HookEndpointManager.Add<hook_SafeForConfig>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
			remove
			{
				HookEndpointManager.Remove<hook_SafeForConfig>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
		}

		public static event hook_IsCharacterSafe IsCharacterSafe
		{
			add
			{
				HookEndpointManager.Add<hook_IsCharacterSafe>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
			remove
			{
				HookEndpointManager.Remove<hook_IsCharacterSafe>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
		}

		public static event hook_ctor ctor
		{
			add
			{
				HookEndpointManager.Add<hook_ctor>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
			remove
			{
				HookEndpointManager.Remove<hook_ctor>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
		}

		public static event hook_cctor cctor
		{
			add
			{
				HookEndpointManager.Add<hook_cctor>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
			remove
			{
				HookEndpointManager.Remove<hook_cctor>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
		}
	}
}
namespace IL.GrooveSaladSpikestripContent
{
	public static class Base
	{
		public static event Manipulator CreateExpansionDef
		{
			add
			{
				HookEndpointManager.Modify<On.GrooveSaladSpikestripContent.Base.hook_CreateExpansionDef>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
			remove
			{
				HookEndpointManager.Unmodify<On.GrooveSaladSpikestripContent.Base.hook_CreateExpansionDef>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
		}

		public static event Manipulator Awake
		{
			add
			{
				HookEndpointManager.Modify<On.GrooveSaladSpikestripContent.Base.hook_Awake>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
			remove
			{
				HookEndpointManager.Unmodify<On.GrooveSaladSpikestripContent.Base.hook_Awake>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
		}

		public static event Manipulator ProcessInitialContent
		{
			add
			{
				HookEndpointManager.Modify<On.GrooveSaladSpikestripContent.Base.hook_ProcessInitialContent>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
			remove
			{
				HookEndpointManager.Unmodify<On.GrooveSaladSpikestripContent.Base.hook_ProcessInitialContent>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
		}

		public static event Manipulator ProcessDependentContent
		{
			add
			{
				HookEndpointManager.Modify<On.GrooveSaladSpikestripContent.Base.hook_ProcessDependentContent>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
			remove
			{
				HookEndpointManager.Unmodify<On.GrooveSaladSpikestripContent.Base.hook_ProcessDependentContent>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
		}

		public static event Manipulator SafeForConfig
		{
			add
			{
				HookEndpointManager.Modify<On.GrooveSaladSpikestripContent.Base.hook_SafeForConfig>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
			remove
			{
				HookEndpointManager.Unmodify<On.GrooveSaladSpikestripContent.Base.hook_SafeForConfig>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
		}

		public static event Manipulator IsCharacterSafe
		{
			add
			{
				HookEndpointManager.Modify<On.GrooveSaladSpikestripContent.Base.hook_IsCharacterSafe>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
			remove
			{
				HookEndpointManager.Unmodify<On.GrooveSaladSpikestripContent.Base.hook_IsCharacterSafe>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
		}

		public static event Manipulator ctor
		{
			add
			{
				HookEndpointManager.Modify<On.GrooveSaladSpikestripContent.Base.hook_ctor>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
			remove
			{
				HookEndpointManager.Unmodify<On.GrooveSaladSpikestripContent.Base.hook_ctor>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
		}

		public static event Manipulator cctor
		{
			add
			{
				HookEndpointManager.Modify<On.GrooveSaladSpikestripContent.Base.hook_cctor>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
			remove
			{
				HookEndpointManager.Unmodify<On.GrooveSaladSpikestripContent.Base.hook_cctor>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
		}
	}
}
namespace On.GrooveSaladSpikestripContent
{
	public static class SpikestripBuffBehaviours
	{
		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate void orig_Init();

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate void hook_Init(orig_Init orig);

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate void orig_OnEnable(SpikestripBuffBehaviours self);

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate void hook_OnEnable(orig_OnEnable orig, SpikestripBuffBehaviours self);

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate void orig_OnDisable(SpikestripBuffBehaviours self);

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate void hook_OnDisable(orig_OnDisable orig, SpikestripBuffBehaviours self);

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate void orig_RegisterBuffBehaviour(BuffDef buffDef, Type behaviour, bool serverOnly);

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate void hook_RegisterBuffBehaviour(orig_RegisterBuffBehaviour orig, BuffDef buffDef, Type behaviour, bool serverOnly);

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate void orig_CharacterBody_SetBuffCount(object orig, CharacterBody self, BuffIndex buffType, int newCount);

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate void hook_CharacterBody_SetBuffCount(orig_CharacterBody_SetBuffCount orig, object orig, CharacterBody self, BuffIndex buffType, int newCount);

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate void orig_UpdateBuffBehaviour(CharacterBody characterBody, BuffBehaviourPair behaviourPair, int stack);

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate void hook_UpdateBuffBehaviour(orig_UpdateBuffBehaviour orig, CharacterBody characterBody, BuffBehaviourPair behaviourPair, int stack);

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate void orig_ctor(SpikestripBuffBehaviours self);

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate void hook_ctor(orig_ctor orig, SpikestripBuffBehaviours self);

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate void orig_cctor();

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate void hook_cctor(orig_cctor orig);

		public static class SyncUpdateBuffBehaviour
		{
			[EditorBrowsable(EditorBrowsableState.Never)]
			public delegate void orig_ctor(SyncUpdateBuffBehaviour self);

			[EditorBrowsable(EditorBrowsableState.Never)]
			public delegate void hook_ctor(orig_ctor orig, SyncUpdateBuffBehaviour self);

			[EditorBrowsable(EditorBrowsableState.Never)]
			public delegate void orig_ctor_int_int_NetworkInstanceId(SyncUpdateBuffBehaviour self, int index, int count, NetworkInstanceId gameObjectID);

			[EditorBrowsable(EditorBrowsableState.Never)]
			public delegate void hook_ctor_int_int_NetworkInstanceId(orig_ctor_int_int_NetworkInstanceId orig, SyncUpdateBuffBehaviour self, int index, int count, NetworkInstanceId gameObjectID);

			[EditorBrowsable(EditorBrowsableState.Never)]
			public delegate void orig_Serialize(SyncUpdateBuffBehaviour self, NetworkWriter writer);

			[EditorBrowsable(EditorBrowsableState.Never)]
			public delegate void hook_Serialize(orig_Serialize orig, SyncUpdateBuffBehaviour self, NetworkWriter writer);

			[EditorBrowsable(EditorBrowsableState.Never)]
			public delegate void orig_Deserialize(SyncUpdateBuffBehaviour self, NetworkReader reader);

			[EditorBrowsable(EditorBrowsableState.Never)]
			public delegate void hook_Deserialize(orig_Deserialize orig, SyncUpdateBuffBehaviour self, NetworkReader reader);

			[EditorBrowsable(EditorBrowsableState.Never)]
			public delegate void orig_OnReceived(SyncUpdateBuffBehaviour self);

			[EditorBrowsable(EditorBrowsableState.Never)]
			public delegate void hook_OnReceived(orig_OnReceived orig, SyncUpdateBuffBehaviour self);

			public static event hook_ctor ctor
			{
				add
				{
					HookEndpointManager.Add<hook_ctor>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
				}
				remove
				{
					HookEndpointManager.Remove<hook_ctor>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
				}
			}

			public static event hook_ctor_int_int_NetworkInstanceId ctor_int_int_NetworkInstanceId
			{
				add
				{
					HookEndpointManager.Add<hook_ctor_int_int_NetworkInstanceId>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
				}
				remove
				{
					HookEndpointManager.Remove<hook_ctor_int_int_NetworkInstanceId>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
				}
			}

			public static event hook_Serialize Serialize
			{
				add
				{
					HookEndpointManager.Add<hook_Serialize>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
				}
				remove
				{
					HookEndpointManager.Remove<hook_Serialize>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
				}
			}

			public static event hook_Deserialize Deserialize
			{
				add
				{
					HookEndpointManager.Add<hook_Deserialize>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
				}
				remove
				{
					HookEndpointManager.Remove<hook_Deserialize>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
				}
			}

			public static event hook_OnReceived OnReceived
			{
				add
				{
					HookEndpointManager.Add<hook_OnReceived>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
				}
				remove
				{
					HookEndpointManager.Remove<hook_OnReceived>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
				}
			}
		}

		public static event hook_Init Init
		{
			add
			{
				HookEndpointManager.Add<hook_Init>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
			remove
			{
				HookEndpointManager.Remove<hook_Init>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
		}

		public static event hook_OnEnable OnEnable
		{
			add
			{
				HookEndpointManager.Add<hook_OnEnable>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
			remove
			{
				HookEndpointManager.Remove<hook_OnEnable>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
		}

		public static event hook_OnDisable OnDisable
		{
			add
			{
				HookEndpointManager.Add<hook_OnDisable>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
			remove
			{
				HookEndpointManager.Remove<hook_OnDisable>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
		}

		public static event hook_RegisterBuffBehaviour RegisterBuffBehaviour
		{
			add
			{
				HookEndpointManager.Add<hook_RegisterBuffBehaviour>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
			remove
			{
				HookEndpointManager.Remove<hook_RegisterBuffBehaviour>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
		}

		public static event hook_CharacterBody_SetBuffCount CharacterBody_SetBuffCount
		{
			add
			{
				HookEndpointManager.Add<hook_CharacterBody_SetBuffCount>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
			remove
			{
				HookEndpointManager.Remove<hook_CharacterBody_SetBuffCount>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
		}

		public static event hook_UpdateBuffBehaviour UpdateBuffBehaviour
		{
			add
			{
				HookEndpointManager.Add<hook_UpdateBuffBehaviour>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
			remove
			{
				HookEndpointManager.Remove<hook_UpdateBuffBehaviour>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
		}

		public static event hook_ctor ctor
		{
			add
			{
				HookEndpointManager.Add<hook_ctor>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
			remove
			{
				HookEndpointManager.Remove<hook_ctor>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
		}

		public static event hook_cctor cctor
		{
			add
			{
				HookEndpointManager.Add<hook_cctor>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
			remove
			{
				HookEndpointManager.Remove<hook_cctor>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
		}
	}
}
namespace IL.GrooveSaladSpikestripContent
{
	public static class SpikestripBuffBehaviours
	{
		public static class SyncUpdateBuffBehaviour
		{
			public static event Manipulator ctor
			{
				add
				{
					HookEndpointManager.Modify<On.GrooveSaladSpikestripContent.SpikestripBuffBehaviours.SyncUpdateBuffBehaviour.hook_ctor>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
				}
				remove
				{
					HookEndpointManager.Unmodify<On.GrooveSaladSpikestripContent.SpikestripBuffBehaviours.SyncUpdateBuffBehaviour.hook_ctor>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
				}
			}

			public static event Manipulator ctor_int_int_NetworkInstanceId
			{
				add
				{
					HookEndpointManager.Modify<On.GrooveSaladSpikestripContent.SpikestripBuffBehaviours.SyncUpdateBuffBehaviour.hook_ctor_int_int_NetworkInstanceId>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
				}
				remove
				{
					HookEndpointManager.Unmodify<On.GrooveSaladSpikestripContent.SpikestripBuffBehaviours.SyncUpdateBuffBehaviour.hook_ctor_int_int_NetworkInstanceId>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
				}
			}

			public static event Manipulator Serialize
			{
				add
				{
					HookEndpointManager.Modify<On.GrooveSaladSpikestripContent.SpikestripBuffBehaviours.SyncUpdateBuffBehaviour.hook_Serialize>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
				}
				remove
				{
					HookEndpointManager.Unmodify<On.GrooveSaladSpikestripContent.SpikestripBuffBehaviours.SyncUpdateBuffBehaviour.hook_Serialize>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
				}
			}

			public static event Manipulator Deserialize
			{
				add
				{
					HookEndpointManager.Modify<On.GrooveSaladSpikestripContent.SpikestripBuffBehaviours.SyncUpdateBuffBehaviour.hook_Deserialize>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
				}
				remove
				{
					HookEndpointManager.Unmodify<On.GrooveSaladSpikestripContent.SpikestripBuffBehaviours.SyncUpdateBuffBehaviour.hook_Deserialize>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
				}
			}

			public static event Manipulator OnReceived
			{
				add
				{
					HookEndpointManager.Modify<On.GrooveSaladSpikestripContent.SpikestripBuffBehaviours.SyncUpdateBuffBehaviour.hook_OnReceived>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
				}
				remove
				{
					HookEndpointManager.Unmodify<On.GrooveSaladSpikestripContent.SpikestripBuffBehaviours.SyncUpdateBuffBehaviour.hook_OnReceived>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
				}
			}
		}

		public static event Manipulator Init
		{
			add
			{
				HookEndpointManager.Modify<On.GrooveSaladSpikestripContent.SpikestripBuffBehaviours.hook_Init>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
			remove
			{
				HookEndpointManager.Unmodify<On.GrooveSaladSpikestripContent.SpikestripBuffBehaviours.hook_Init>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
		}

		public static event Manipulator OnEnable
		{
			add
			{
				HookEndpointManager.Modify<On.GrooveSaladSpikestripContent.SpikestripBuffBehaviours.hook_OnEnable>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
			remove
			{
				HookEndpointManager.Unmodify<On.GrooveSaladSpikestripContent.SpikestripBuffBehaviours.hook_OnEnable>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
		}

		public static event Manipulator OnDisable
		{
			add
			{
				HookEndpointManager.Modify<On.GrooveSaladSpikestripContent.SpikestripBuffBehaviours.hook_OnDisable>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
			remove
			{
				HookEndpointManager.Unmodify<On.GrooveSaladSpikestripContent.SpikestripBuffBehaviours.hook_OnDisable>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
		}

		public static event Manipulator RegisterBuffBehaviour
		{
			add
			{
				HookEndpointManager.Modify<On.GrooveSaladSpikestripContent.SpikestripBuffBehaviours.hook_RegisterBuffBehaviour>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
			remove
			{
				HookEndpointManager.Unmodify<On.GrooveSaladSpikestripContent.SpikestripBuffBehaviours.hook_RegisterBuffBehaviour>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
		}

		public static event Manipulator CharacterBody_SetBuffCount
		{
			add
			{
				HookEndpointManager.Modify<On.GrooveSaladSpikestripContent.SpikestripBuffBehaviours.hook_CharacterBody_SetBuffCount>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
			remove
			{
				HookEndpointManager.Unmodify<On.GrooveSaladSpikestripContent.SpikestripBuffBehaviours.hook_CharacterBody_SetBuffCount>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
		}

		public static event Manipulator UpdateBuffBehaviour
		{
			add
			{
				HookEndpointManager.Modify<On.GrooveSaladSpikestripContent.SpikestripBuffBehaviours.hook_UpdateBuffBehaviour>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
			remove
			{
				HookEndpointManager.Unmodify<On.GrooveSaladSpikestripContent.SpikestripBuffBehaviours.hook_UpdateBuffBehaviour>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
		}

		public static event Manipulator ctor
		{
			add
			{
				HookEndpointManager.Modify<On.GrooveSaladSpikestripContent.SpikestripBuffBehaviours.hook_ctor>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
			remove
			{
				HookEndpointManager.Unmodify<On.GrooveSaladSpikestripContent.SpikestripBuffBehaviours.hook_ctor>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
		}

		public static event Manipulator cctor
		{
			add
			{
				HookEndpointManager.Modify<On.GrooveSaladSpikestripContent.SpikestripBuffBehaviours.hook_cctor>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
			remove
			{
				HookEndpointManager.Unmodify<On.GrooveSaladSpikestripContent.SpikestripBuffBehaviours.hook_cctor>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
		}
	}
}
namespace On.GrooveSaladSpikestripContent
{
	public static class ContentPacks
	{
		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate void orig_Initialize(ContentPacks self);

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate void hook_Initialize(orig_Initialize orig, ContentPacks self);

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate void orig_ContentManager_collectContentPackProviders(ContentPacks self, AddContentPackProviderDelegate addContentPackProvider);

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate void hook_ContentManager_collectContentPackProviders(orig_ContentManager_collectContentPackProviders orig, ContentPacks self, AddContentPackProviderDelegate addContentPackProvider);

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate IEnumerator orig_LoadStaticContentAsync(ContentPacks self, LoadStaticContentAsyncArgs args);

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate IEnumerator hook_LoadStaticContentAsync(orig_LoadStaticContentAsync orig, ContentPacks self, LoadStaticContentAsyncArgs args);

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate IEnumerator orig_GenerateContentPackAsync(ContentPacks self, GetContentPackAsyncArgs args);

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate IEnumerator hook_GenerateContentPackAsync(orig_GenerateContentPackAsync orig, ContentPacks self, GetContentPackAsyncArgs args);

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate IEnumerator orig_FinalizeAsync(ContentPacks self, FinalizeAsyncArgs args);

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate IEnumerator hook_FinalizeAsync(orig_FinalizeAsync orig, ContentPacks self, FinalizeAsyncArgs args);

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate void orig_ctor(ContentPacks self);

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate void hook_ctor(orig_ctor orig, ContentPacks self);

		public static event hook_Initialize Initialize
		{
			add
			{
				HookEndpointManager.Add<hook_Initialize>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
			remove
			{
				HookEndpointManager.Remove<hook_Initialize>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
		}

		public static event hook_ContentManager_collectContentPackProviders ContentManager_collectContentPackProviders
		{
			add
			{
				HookEndpointManager.Add<hook_ContentManager_collectContentPackProviders>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
			remove
			{
				HookEndpointManager.Remove<hook_ContentManager_collectContentPackProviders>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
		}

		public static event hook_LoadStaticContentAsync LoadStaticContentAsync
		{
			add
			{
				HookEndpointManager.Add<hook_LoadStaticContentAsync>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
			remove
			{
				HookEndpointManager.Remove<hook_LoadStaticContentAsync>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
		}

		public static event hook_GenerateContentPackAsync GenerateContentPackAsync
		{
			add
			{
				HookEndpointManager.Add<hook_GenerateContentPackAsync>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
			remove
			{
				HookEndpointManager.Remove<hook_GenerateContentPackAsync>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
		}

		public static event hook_FinalizeAsync FinalizeAsync
		{
			add
			{
				HookEndpointManager.Add<hook_FinalizeAsync>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
			remove
			{
				HookEndpointManager.Remove<hook_FinalizeAsync>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
		}

		public static event hook_ctor ctor
		{
			add
			{
				HookEndpointManager.Add<hook_ctor>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
			remove
			{
				HookEndpointManager.Remove<hook_ctor>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
		}
	}
}
namespace IL.GrooveSaladSpikestripContent
{
	public static class ContentPacks
	{
		public static event Manipulator Initialize
		{
			add
			{
				HookEndpointManager.Modify<On.GrooveSaladSpikestripContent.ContentPacks.hook_Initialize>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
			remove
			{
				HookEndpointManager.Unmodify<On.GrooveSaladSpikestripContent.ContentPacks.hook_Initialize>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
		}

		public static event Manipulator ContentManager_collectContentPackProviders
		{
			add
			{
				HookEndpointManager.Modify<On.GrooveSaladSpikestripContent.ContentPacks.hook_ContentManager_collectContentPackProviders>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
			remove
			{
				HookEndpointManager.Unmodify<On.GrooveSaladSpikestripContent.ContentPacks.hook_ContentManager_collectContentPackProviders>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
		}

		public static event Manipulator LoadStaticContentAsync
		{
			add
			{
				HookEndpointManager.Modify<On.GrooveSaladSpikestripContent.ContentPacks.hook_LoadStaticContentAsync>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
			remove
			{
				HookEndpointManager.Unmodify<On.GrooveSaladSpikestripContent.ContentPacks.hook_LoadStaticContentAsync>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
		}

		public static event Manipulator GenerateContentPackAsync
		{
			add
			{
				HookEndpointManager.Modify<On.GrooveSaladSpikestripContent.ContentPacks.hook_GenerateContentPackAsync>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
			remove
			{
				HookEndpointManager.Unmodify<On.GrooveSaladSpikestripContent.ContentPacks.hook_GenerateContentPackAsync>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
		}

		public static event Manipulator FinalizeAsync
		{
			add
			{
				HookEndpointManager.Modify<On.GrooveSaladSpikestripContent.ContentPacks.hook_FinalizeAsync>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
			remove
			{
				HookEndpointManager.Unmodify<On.GrooveSaladSpikestripContent.ContentPacks.hook_FinalizeAsync>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
		}

		public static event Manipulator ctor
		{
			add
			{
				HookEndpointManager.Modify<On.GrooveSaladSpikestripContent.ContentPacks.hook_ctor>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
			remove
			{
				HookEndpointManager.Unmodify<On.GrooveSaladSpikestripContent.ContentPacks.hook_ctor>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
		}
	}
}
namespace On.GrooveSaladSpikestripContent
{
	public static class SpikestripDamageColors
	{
		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate void orig_OnEnable(SpikestripDamageColors self);

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate void hook_OnEnable(orig_OnEnable orig, SpikestripDamageColors self);

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate void orig_OnDisable(SpikestripDamageColors self);

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate void hook_OnDisable(orig_OnDisable orig, SpikestripDamageColors self);

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate Color orig_DamageColor_FindColor(object orig, DamageColorIndex colorIndex);

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate Color hook_DamageColor_FindColor(orig_DamageColor_FindColor orig, object orig, DamageColorIndex colorIndex);

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate DamageColorIndex orig_RegisterDamageColor(Color color);

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate DamageColorIndex hook_RegisterDamageColor(orig_RegisterDamageColor orig, Color color);

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate void orig_ctor(SpikestripDamageColors self);

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate void hook_ctor(orig_ctor orig, SpikestripDamageColors self);

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate void orig_cctor();

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate void hook_cctor(orig_cctor orig);

		public static event hook_OnEnable OnEnable
		{
			add
			{
				HookEndpointManager.Add<hook_OnEnable>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
			remove
			{
				HookEndpointManager.Remove<hook_OnEnable>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
		}

		public static event hook_OnDisable OnDisable
		{
			add
			{
				HookEndpointManager.Add<hook_OnDisable>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
			remove
			{
				HookEndpointManager.Remove<hook_OnDisable>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
		}

		public static event hook_DamageColor_FindColor DamageColor_FindColor
		{
			add
			{
				HookEndpointManager.Add<hook_DamageColor_FindColor>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
			remove
			{
				HookEndpointManager.Remove<hook_DamageColor_FindColor>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
		}

		public static event hook_RegisterDamageColor RegisterDamageColor
		{
			add
			{
				HookEndpointManager.Add<hook_RegisterDamageColor>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
			remove
			{
				HookEndpointManager.Remove<hook_RegisterDamageColor>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
		}

		public static event hook_ctor ctor
		{
			add
			{
				HookEndpointManager.Add<hook_ctor>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
			remove
			{
				HookEndpointManager.Remove<hook_ctor>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
		}

		public static event hook_cctor cctor
		{
			add
			{
				HookEndpointManager.Add<hook_cctor>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
			remove
			{
				HookEndpointManager.Remove<hook_cctor>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
		}
	}
}
namespace IL.GrooveSaladSpikestripContent
{
	public static class SpikestripDamageColors
	{
		public static event Manipulator OnEnable
		{
			add
			{
				HookEndpointManager.Modify<On.GrooveSaladSpikestripContent.SpikestripDamageColors.hook_OnEnable>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
			remove
			{
				HookEndpointManager.Unmodify<On.GrooveSaladSpikestripContent.SpikestripDamageColors.hook_OnEnable>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
		}

		public static event Manipulator OnDisable
		{
			add
			{
				HookEndpointManager.Modify<On.GrooveSaladSpikestripContent.SpikestripDamageColors.hook_OnDisable>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
			remove
			{
				HookEndpointManager.Unmodify<On.GrooveSaladSpikestripContent.SpikestripDamageColors.hook_OnDisable>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
		}

		public static event Manipulator DamageColor_FindColor
		{
			add
			{
				HookEndpointManager.Modify<On.GrooveSaladSpikestripContent.SpikestripDamageColors.hook_DamageColor_FindColor>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
			remove
			{
				HookEndpointManager.Unmodify<On.GrooveSaladSpikestripContent.SpikestripDamageColors.hook_DamageColor_FindColor>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
		}

		public static event Manipulator RegisterDamageColor
		{
			add
			{
				HookEndpointManager.Modify<On.GrooveSaladSpikestripContent.SpikestripDamageColors.hook_RegisterDamageColor>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
			remove
			{
				HookEndpointManager.Unmodify<On.GrooveSaladSpikestripContent.SpikestripDamageColors.hook_RegisterDamageColor>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
		}

		public static event Manipulator ctor
		{
			add
			{
				HookEndpointManager.Modify<On.GrooveSaladSpikestripContent.SpikestripDamageColors.hook_ctor>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
			remove
			{
				HookEndpointManager.Unmodify<On.GrooveSaladSpikestripContent.SpikestripDamageColors.hook_ctor>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
		}

		public static event Manipulator cctor
		{
			add
			{
				HookEndpointManager.Modify<On.GrooveSaladSpikestripContent.SpikestripDamageColors.hook_cctor>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
			remove
			{
				HookEndpointManager.Unmodify<On.GrooveSaladSpikestripContent.SpikestripDamageColors.hook_cctor>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
		}
	}
}
namespace On.GrooveSaladSpikestripContent
{
	public static class SpikestripExpansionDirectorHelper
	{
		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate void orig_Init();

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate void hook_Init(orig_Init orig);

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate void orig_OnEnable(SpikestripExpansionDirectorHelper self);

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate void hook_OnEnable(orig_OnEnable orig, SpikestripExpansionDirectorHelper self);

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate void orig_OnDisable(SpikestripExpansionDirectorHelper self);

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate void hook_OnDisable(orig_OnDisable orig, SpikestripExpansionDirectorHelper self);

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate void orig_HandleResetDccs(SpikestripExpansionDirectorHelper self, ResetDccs resetDccs);

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate void hook_HandleResetDccs(orig_HandleResetDccs orig, SpikestripExpansionDirectorHelper self, ResetDccs resetDccs);

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate void orig_ClassicStageInfo_RebuildCards(SpikestripExpansionDirectorHelper self, object orig, ClassicStageInfo self);

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate void hook_ClassicStageInfo_RebuildCards(orig_ClassicStageInfo_RebuildCards orig, SpikestripExpansionDirectorHelper self, object orig, ClassicStageInfo self);

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate void orig_HandleDccsPool(SpikestripExpansionDirectorHelper self, DccsPool dccsPool, Dictionary<string, List<DirectorCard>> categoryToCard, string[] specificNames);

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate void hook_HandleDccsPool(orig_HandleDccsPool orig, SpikestripExpansionDirectorHelper self, DccsPool dccsPool, Dictionary<string, List<DirectorCard>> categoryToCard, string[] specificNames);

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate void orig_HandleDccsPoolEntries(SpikestripExpansionDirectorHelper self, PoolEntry[] entries, Dictionary<string, List<DirectorCard>> categoryToCard);

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate void hook_HandleDccsPoolEntries(orig_HandleDccsPoolEntries orig, SpikestripExpansionDirectorHelper self, PoolEntry[] entries, Dictionary<string, List<DirectorCard>> categoryToCard);

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate void orig_HandleDccs(SpikestripExpansionDirectorHelper self, DirectorCardCategorySelection dccs, Dictionary<string, List<DirectorCard>> categoryToCard);

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate void hook_HandleDccs(orig_HandleDccs orig, SpikestripExpansionDirectorHelper self, DirectorCardCategorySelection dccs, Dictionary<string, List<DirectorCard>> categoryToCard);

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate void orig_RegisterSpikestripInteractable(DirectorCard directorCard, string categoryName, string stageName);

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate void hook_RegisterSpikestripInteractable(orig_RegisterSpikestripInteractable orig, DirectorCard directorCard, string categoryName, string stageName);

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate void orig_RegisterSpikestripMonster(DirectorCard directorCard, string categoryName, string stageName);

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate void hook_RegisterSpikestripMonster(orig_RegisterSpikestripMonster orig, DirectorCard directorCard, string categoryName, string stageName);

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate void orig_UpdateFamilyEventAdditions(SpikestripExpansionDirectorHelper self, bool active);

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate void hook_UpdateFamilyEventAdditions(orig_UpdateFamilyEventAdditions orig, SpikestripExpansionDirectorHelper self, bool active);

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate void orig_RegisterSpikestripFamilyAddition(DirectorCard directorCard, DirectorCardCategorySelection eventDccs, string categoryName);

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate void hook_RegisterSpikestripFamilyAddition(orig_RegisterSpikestripFamilyAddition orig, DirectorCard directorCard, DirectorCardCategorySelection eventDccs, string categoryName);

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate bool orig_FindDccsCategoryFromName(DirectorCardCategorySelection dccs, string idealName, out int foundCategoryIndex);

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate bool hook_FindDccsCategoryFromName(orig_FindDccsCategoryFromName orig, DirectorCardCategorySelection dccs, string idealName, out int foundCategoryIndex);

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate void orig_ctor(SpikestripExpansionDirectorHelper self);

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate void hook_ctor(orig_ctor orig, SpikestripExpansionDirectorHelper self);

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate void orig_cctor();

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate void hook_cctor(orig_cctor orig);

		public static event hook_Init Init
		{
			add
			{
				HookEndpointManager.Add<hook_Init>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
			remove
			{
				HookEndpointManager.Remove<hook_Init>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
		}

		public static event hook_OnEnable OnEnable
		{
			add
			{
				HookEndpointManager.Add<hook_OnEnable>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
			remove
			{
				HookEndpointManager.Remove<hook_OnEnable>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
		}

		public static event hook_OnDisable OnDisable
		{
			add
			{
				HookEndpointManager.Add<hook_OnDisable>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
			remove
			{
				HookEndpointManager.Remove<hook_OnDisable>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
		}

		public static event hook_HandleResetDccs HandleResetDccs
		{
			add
			{
				HookEndpointManager.Add<hook_HandleResetDccs>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
			remove
			{
				HookEndpointManager.Remove<hook_HandleResetDccs>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
		}

		public static event hook_ClassicStageInfo_RebuildCards ClassicStageInfo_RebuildCards
		{
			add
			{
				HookEndpointManager.Add<hook_ClassicStageInfo_RebuildCards>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
			remove
			{
				HookEndpointManager.Remove<hook_ClassicStageInfo_RebuildCards>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
		}

		public static event hook_HandleDccsPool HandleDccsPool
		{
			add
			{
				HookEndpointManager.Add<hook_HandleDccsPool>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
			remove
			{
				HookEndpointManager.Remove<hook_HandleDccsPool>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
		}

		public static event hook_HandleDccsPoolEntries HandleDccsPoolEntries
		{
			add
			{
				HookEndpointManager.Add<hook_HandleDccsPoolEntries>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
			remove
			{
				HookEndpointManager.Remove<hook_HandleDccsPoolEntries>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
		}

		public static event hook_HandleDccs HandleDccs
		{
			add
			{
				HookEndpointManager.Add<hook_HandleDccs>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
			remove
			{
				HookEndpointManager.Remove<hook_HandleDccs>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
		}

		public static event hook_RegisterSpikestripInteractable RegisterSpikestripInteractable
		{
			add
			{
				HookEndpointManager.Add<hook_RegisterSpikestripInteractable>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
			remove
			{
				HookEndpointManager.Remove<hook_RegisterSpikestripInteractable>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
		}

		public static event hook_RegisterSpikestripMonster RegisterSpikestripMonster
		{
			add
			{
				HookEndpointManager.Add<hook_RegisterSpikestripMonster>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
			remove
			{
				HookEndpointManager.Remove<hook_RegisterSpikestripMonster>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
		}

		public static event hook_UpdateFamilyEventAdditions UpdateFamilyEventAdditions
		{
			add
			{
				HookEndpointManager.Add<hook_UpdateFamilyEventAdditions>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
			remove
			{
				HookEndpointManager.Remove<hook_UpdateFamilyEventAdditions>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
		}

		public static event hook_RegisterSpikestripFamilyAddition RegisterSpikestripFamilyAddition
		{
			add
			{
				HookEndpointManager.Add<hook_RegisterSpikestripFamilyAddition>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
			remove
			{
				HookEndpointManager.Remove<hook_RegisterSpikestripFamilyAddition>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
		}

		public static event hook_FindDccsCategoryFromName FindDccsCategoryFromName
		{
			add
			{
				HookEndpointManager.Add<hook_FindDccsCategoryFromName>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
			remove
			{
				HookEndpointManager.Remove<hook_FindDccsCategoryFromName>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
		}

		public static event hook_ctor ctor
		{
			add
			{
				HookEndpointManager.Add<hook_ctor>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
			remove
			{
				HookEndpointManager.Remove<hook_ctor>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
		}

		public static event hook_cctor cctor
		{
			add
			{
				HookEndpointManager.Add<hook_cctor>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
			remove
			{
				HookEndpointManager.Remove<hook_cctor>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
		}
	}
}
namespace IL.GrooveSaladSpikestripContent
{
	public static class SpikestripExpansionDirectorHelper
	{
		public static event Manipulator Init
		{
			add
			{
				HookEndpointManager.Modify<On.GrooveSaladSpikestripContent.SpikestripExpansionDirectorHelper.hook_Init>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
			remove
			{
				HookEndpointManager.Unmodify<On.GrooveSaladSpikestripContent.SpikestripExpansionDirectorHelper.hook_Init>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
		}

		public static event Manipulator OnEnable
		{
			add
			{
				HookEndpointManager.Modify<On.GrooveSaladSpikestripContent.SpikestripExpansionDirectorHelper.hook_OnEnable>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
			remove
			{
				HookEndpointManager.Unmodify<On.GrooveSaladSpikestripContent.SpikestripExpansionDirectorHelper.hook_OnEnable>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
		}

		public static event Manipulator OnDisable
		{
			add
			{
				HookEndpointManager.Modify<On.GrooveSaladSpikestripContent.SpikestripExpansionDirectorHelper.hook_OnDisable>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
			remove
			{
				HookEndpointManager.Unmodify<On.GrooveSaladSpikestripContent.SpikestripExpansionDirectorHelper.hook_OnDisable>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
		}

		public static event Manipulator HandleResetDccs
		{
			add
			{
				HookEndpointManager.Modify<On.GrooveSaladSpikestripContent.SpikestripExpansionDirectorHelper.hook_HandleResetDccs>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
			remove
			{
				HookEndpointManager.Unmodify<On.GrooveSaladSpikestripContent.SpikestripExpansionDirectorHelper.hook_HandleResetDccs>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
		}

		public static event Manipulator ClassicStageInfo_RebuildCards
		{
			add
			{
				HookEndpointManager.Modify<On.GrooveSaladSpikestripContent.SpikestripExpansionDirectorHelper.hook_ClassicStageInfo_RebuildCards>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
			remove
			{
				HookEndpointManager.Unmodify<On.GrooveSaladSpikestripContent.SpikestripExpansionDirectorHelper.hook_ClassicStageInfo_RebuildCards>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
		}

		public static event Manipulator HandleDccsPool
		{
			add
			{
				HookEndpointManager.Modify<On.GrooveSaladSpikestripContent.SpikestripExpansionDirectorHelper.hook_HandleDccsPool>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
			remove
			{
				HookEndpointManager.Unmodify<On.GrooveSaladSpikestripContent.SpikestripExpansionDirectorHelper.hook_HandleDccsPool>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
		}

		public static event Manipulator HandleDccsPoolEntries
		{
			add
			{
				HookEndpointManager.Modify<On.GrooveSaladSpikestripContent.SpikestripExpansionDirectorHelper.hook_HandleDccsPoolEntries>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
			remove
			{
				HookEndpointManager.Unmodify<On.GrooveSaladSpikestripContent.SpikestripExpansionDirectorHelper.hook_HandleDccsPoolEntries>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
		}

		public static event Manipulator HandleDccs
		{
			add
			{
				HookEndpointManager.Modify<On.GrooveSaladSpikestripContent.SpikestripExpansionDirectorHelper.hook_HandleDccs>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
			remove
			{
				HookEndpointManager.Unmodify<On.GrooveSaladSpikestripContent.SpikestripExpansionDirectorHelper.hook_HandleDccs>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
		}

		public static event Manipulator RegisterSpikestripInteractable
		{
			add
			{
				HookEndpointManager.Modify<On.GrooveSaladSpikestripContent.SpikestripExpansionDirectorHelper.hook_RegisterSpikestripInteractable>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
			remove
			{
				HookEndpointManager.Unmodify<On.GrooveSaladSpikestripContent.SpikestripExpansionDirectorHelper.hook_RegisterSpikestripInteractable>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
		}

		public static event Manipulator RegisterSpikestripMonster
		{
			add
			{
				HookEndpointManager.Modify<On.GrooveSaladSpikestripContent.SpikestripExpansionDirectorHelper.hook_RegisterSpikestripMonster>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
			remove
			{
				HookEndpointManager.Unmodify<On.GrooveSaladSpikestripContent.SpikestripExpansionDirectorHelper.hook_RegisterSpikestripMonster>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
		}

		public static event Manipulator UpdateFamilyEventAdditions
		{
			add
			{
				HookEndpointManager.Modify<On.GrooveSaladSpikestripContent.SpikestripExpansionDirectorHelper.hook_UpdateFamilyEventAdditions>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
			remove
			{
				HookEndpointManager.Unmodify<On.GrooveSaladSpikestripContent.SpikestripExpansionDirectorHelper.hook_UpdateFamilyEventAdditions>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
		}

		public static event Manipulator RegisterSpikestripFamilyAddition
		{
			add
			{
				HookEndpointManager.Modify<On.GrooveSaladSpikestripContent.SpikestripExpansionDirectorHelper.hook_RegisterSpikestripFamilyAddition>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
			remove
			{
				HookEndpointManager.Unmodify<On.GrooveSaladSpikestripContent.SpikestripExpansionDirectorHelper.hook_RegisterSpikestripFamilyAddition>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
		}

		public static event Manipulator FindDccsCategoryFromName
		{
			add
			{
				HookEndpointManager.Modify<On.GrooveSaladSpikestripContent.SpikestripExpansionDirectorHelper.hook_FindDccsCategoryFromName>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
			remove
			{
				HookEndpointManager.Unmodify<On.GrooveSaladSpikestripContent.SpikestripExpansionDirectorHelper.hook_FindDccsCategoryFromName>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
		}

		public static event Manipulator ctor
		{
			add
			{
				HookEndpointManager.Modify<On.GrooveSaladSpikestripContent.SpikestripExpansionDirectorHelper.hook_ctor>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
			remove
			{
				HookEndpointManager.Unmodify<On.GrooveSaladSpikestripContent.SpikestripExpansionDirectorHelper.hook_ctor>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
		}

		public static event Manipulator cctor
		{
			add
			{
				HookEndpointManager.Modify<On.GrooveSaladSpikestripContent.SpikestripExpansionDirectorHelper.hook_cctor>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
			remove
			{
				HookEndpointManager.Unmodify<On.GrooveSaladSpikestripContent.SpikestripExpansionDirectorHelper.hook_cctor>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
		}
	}
}
namespace On.GrooveSaladSpikestripContent
{
	public static class CommonStages
	{
		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate string orig_Simulacrum(string baseStageName);

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate string hook_Simulacrum(orig_Simulacrum orig, string baseStageName);

		public static event hook_Simulacrum Simulacrum
		{
			add
			{
				HookEndpointManager.Add<hook_Simulacrum>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
			remove
			{
				HookEndpointManager.Remove<hook_Simulacrum>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
		}
	}
}
namespace IL.GrooveSaladSpikestripContent
{
	public static class CommonStages
	{
		public static event Manipulator Simulacrum
		{
			add
			{
				HookEndpointManager.Modify<On.GrooveSaladSpikestripContent.CommonStages.hook_Simulacrum>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
			remove
			{
				HookEndpointManager.Unmodify<On.GrooveSaladSpikestripContent.CommonStages.hook_Simulacrum>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
		}
	}
}
namespace On.GrooveSaladSpikestripContent
{
	public static class SpikestripEliteRamps
	{
		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate void orig_OnEnable(SpikestripEliteRamps self);

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate void hook_OnEnable(orig_OnEnable orig, SpikestripEliteRamps self);

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate void orig_OnDisable(SpikestripEliteRamps self);

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate void hook_OnDisable(orig_OnDisable orig, SpikestripEliteRamps self);

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate void orig_CopyMSU(ILContext il);

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate void hook_CopyMSU(orig_CopyMSU orig, ILContext il);

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate void orig_ctor(SpikestripEliteRamps self);

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate void hook_ctor(orig_ctor orig, SpikestripEliteRamps self);

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate void orig_cctor();

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate void hook_cctor(orig_cctor orig);

		public static event hook_OnEnable OnEnable
		{
			add
			{
				HookEndpointManager.Add<hook_OnEnable>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
			remove
			{
				HookEndpointManager.Remove<hook_OnEnable>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
		}

		public static event hook_OnDisable OnDisable
		{
			add
			{
				HookEndpointManager.Add<hook_OnDisable>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
			remove
			{
				HookEndpointManager.Remove<hook_OnDisable>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
		}

		public static event hook_CopyMSU CopyMSU
		{
			add
			{
				HookEndpointManager.Add<hook_CopyMSU>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
			remove
			{
				HookEndpointManager.Remove<hook_CopyMSU>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
		}

		public static event hook_ctor ctor
		{
			add
			{
				HookEndpointManager.Add<hook_ctor>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
			remove
			{
				HookEndpointManager.Remove<hook_ctor>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
		}

		public static event hook_cctor cctor
		{
			add
			{
				HookEndpointManager.Add<hook_cctor>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
			remove
			{
				HookEndpointManager.Remove<hook_cctor>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
		}
	}
}
namespace IL.GrooveSaladSpikestripContent
{
	public static class SpikestripEliteRamps
	{
		public static event Manipulator OnEnable
		{
			add
			{
				HookEndpointManager.Modify<On.GrooveSaladSpikestripContent.SpikestripEliteRamps.hook_OnEnable>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
			remove
			{
				HookEndpointManager.Unmodify<On.GrooveSaladSpikestripContent.SpikestripEliteRamps.hook_OnEnable>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
		}

		public static event Manipulator OnDisable
		{
			add
			{
				HookEndpointManager.Modify<On.GrooveSaladSpikestripContent.SpikestripEliteRamps.hook_OnDisable>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
			remove
			{
				HookEndpointManager.Unmodify<On.GrooveSaladSpikestripContent.SpikestripEliteRamps.hook_OnDisable>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
		}

		public static event Manipulator CopyMSU
		{
			add
			{
				HookEndpointManager.Modify<On.GrooveSaladSpikestripContent.SpikestripEliteRamps.hook_CopyMSU>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
			remove
			{
				HookEndpointManager.Unmodify<On.GrooveSaladSpikestripContent.SpikestripEliteRamps.hook_CopyMSU>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
		}

		public static event Manipulator ctor
		{
			add
			{
				HookEndpointManager.Modify<On.GrooveSaladSpikestripContent.SpikestripEliteRamps.hook_ctor>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
			remove
			{
				HookEndpointManager.Unmodify<On.GrooveSaladSpikestripContent.SpikestripEliteRamps.hook_ctor>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
		}

		public static event Manipulator cctor
		{
			add
			{
				HookEndpointManager.Modify<On.GrooveSaladSpikestripContent.SpikestripEliteRamps.hook_cctor>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
			remove
			{
				HookEndpointManager.Unmodify<On.GrooveSaladSpikestripContent.SpikestripEliteRamps.hook_cctor>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
		}
	}
}
namespace On.GrooveSaladSpikestripContent
{
	public static class CommonDisplayReferences
	{
		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate void orig_cctor();

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate void hook_cctor(orig_cctor orig);

		public static event hook_cctor cctor
		{
			add
			{
				HookEndpointManager.Add<hook_cctor>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
			remove
			{
				HookEndpointManager.Remove<hook_cctor>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
		}
	}
}
namespace IL.GrooveSaladSpikestripContent
{
	public static class CommonDisplayReferences
	{
		public static event Manipulator cctor
		{
			add
			{
				HookEndpointManager.Modify<On.GrooveSaladSpikestripContent.CommonDisplayReferences.hook_cctor>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
			remove
			{
				HookEndpointManager.Unmodify<On.GrooveSaladSpikestripContent.CommonDisplayReferences.hook_cctor>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
		}
	}
}
namespace On.GrooveSaladSpikestripContent
{
	public static class SpikestripRenderItemIcons
	{
		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate void orig_Init(SpikestripRenderItemIcons self);

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate void hook_Init(orig_Init orig, SpikestripRenderItemIcons self);

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate void orig_CCRenderItem(ConCommandArgs args);

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate void hook_CCRenderItem(orig_CCRenderItem orig, ConCommandArgs args);

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate void orig_SpikestripRenderItemIcons_Completed(AsyncOperationHandle<SceneInstance> sceneInstance);

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate void hook_SpikestripRenderItemIcons_Completed(orig_SpikestripRenderItemIcons_Completed orig, AsyncOperationHandle<SceneInstance> sceneInstance);

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate void orig_ctor(SpikestripRenderItemIcons self);

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate void hook_ctor(orig_ctor orig, SpikestripRenderItemIcons self);

		public static event hook_Init Init
		{
			add
			{
				HookEndpointManager.Add<hook_Init>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
			remove
			{
				HookEndpointManager.Remove<hook_Init>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
		}

		public static event hook_CCRenderItem CCRenderItem
		{
			add
			{
				HookEndpointManager.Add<hook_CCRenderItem>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
			remove
			{
				HookEndpointManager.Remove<hook_CCRenderItem>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
		}

		public static event hook_SpikestripRenderItemIcons_Completed SpikestripRenderItemIcons_Completed
		{
			add
			{
				HookEndpointManager.Add<hook_SpikestripRenderItemIcons_Completed>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
			remove
			{
				HookEndpointManager.Remove<hook_SpikestripRenderItemIcons_Completed>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
		}

		public static event hook_ctor ctor
		{
			add
			{
				HookEndpointManager.Add<hook_ctor>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
			remove
			{
				HookEndpointManager.Remove<hook_ctor>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
		}
	}
}
namespace IL.GrooveSaladSpikestripContent
{
	public static class SpikestripRenderItemIcons
	{
		public static event Manipulator Init
		{
			add
			{
				HookEndpointManager.Modify<On.GrooveSaladSpikestripContent.SpikestripRenderItemIcons.hook_Init>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
			remove
			{
				HookEndpointManager.Unmodify<On.GrooveSaladSpikestripContent.SpikestripRenderItemIcons.hook_Init>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
		}

		public static event Manipulator CCRenderItem
		{
			add
			{
				HookEndpointManager.Modify<On.GrooveSaladSpikestripContent.SpikestripRenderItemIcons.hook_CCRenderItem>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
			remove
			{
				HookEndpointManager.Unmodify<On.GrooveSaladSpikestripContent.SpikestripRenderItemIcons.hook_CCRenderItem>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
		}

		public static event Manipulator SpikestripRenderItemIcons_Completed
		{
			add
			{
				HookEndpointManager.Modify<On.GrooveSaladSpikestripContent.SpikestripRenderItemIcons.hook_SpikestripRenderItemIcons_Completed>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
			remove
			{
				HookEndpointManager.Unmodify<On.GrooveSaladSpikestripContent.SpikestripRenderItemIcons.hook_SpikestripRenderItemIcons_Completed>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
		}

		public static event Manipulator ctor
		{
			add
			{
				HookEndpointManager.Modify<On.GrooveSaladSpikestripContent.SpikestripRenderItemIcons.hook_ctor>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
			remove
			{
				HookEndpointManager.Unmodify<On.GrooveSaladSpikestripContent.SpikestripRenderItemIcons.hook_ctor>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
		}
	}
}
namespace On.GrooveSaladSpikestripContent
{
	public static class SpikestripContentBase
	{
		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate void orig_Init(SpikestripContentBase self);

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate void hook_Init(orig_Init orig, SpikestripContentBase self);

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate void orig_Log(object info);

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate void hook_Log(orig_Log orig, object info);

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate GameObject orig_UpdateGameObjectShader(GameObject originalModel, bool dither);

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate GameObject hook_UpdateGameObjectShader(orig_UpdateGameObjectShader orig, GameObject originalModel, bool dither);

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate RendererInfo[] orig_GenerateRendererInfos(GameObject obj, bool allRendererTypes);

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate RendererInfo[] hook_GenerateRendererInfos(orig_GenerateRendererInfos orig, GameObject obj, bool allRendererTypes);

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate NetworkSoundEventDef orig_nseFromString(string eventName);

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate NetworkSoundEventDef hook_nseFromString(orig_nseFromString orig, string eventName);

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate Color orig_ColorRGB(float rUnscaled, float gUnscaled, float bUnscaled, float a);

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate Color hook_ColorRGB(orig_ColorRGB orig, float rUnscaled, float gUnscaled, float bUnscaled, float a);

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate void orig_Destroy(Object obj);

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate void hook_Destroy(orig_Destroy orig, Object obj);

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate void orig_DestroyImmediate(Object obj);

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate void hook_DestroyImmediate(orig_DestroyImmediate orig, Object obj);

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate GameObject orig_EmptyPrefab(string name, bool registerNetwork);

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate GameObject hook_EmptyPrefab(orig_EmptyPrefab orig, string name, bool registerNetwork);

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate int orig_StackScaling_int_int_int(int baseValue, int stackValue, int stack);

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate int hook_StackScaling_int_int_int(orig_StackScaling_int_int_int orig, int baseValue, int stackValue, int stack);

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate int orig_Percent(float coefficient);

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate int hook_Percent(orig_Percent orig, float coefficient);

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate float orig_StackScaling_float_float_int(float baseValue, float stackValue, int stack);

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate float hook_StackScaling_float_float_int(orig_StackScaling_float_float_int orig, float baseValue, float stackValue, int stack);

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate void orig_ctor(SpikestripContentBase self);

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate void hook_ctor(orig_ctor orig, SpikestripContentBase self);

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate void orig_cctor();

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate void hook_cctor(orig_cctor orig);

		public static class UpdateItemFollowerScaleDebug
		{
			[EditorBrowsable(EditorBrowsableState.Never)]
			public delegate void orig_Start(UpdateItemFollowerScaleDebug self);

			[EditorBrowsable(EditorBrowsableState.Never)]
			public delegate void hook_Start(orig_Start orig, UpdateItemFollowerScaleDebug self);

			[EditorBrowsable(EditorBrowsableState.Never)]
			public delegate void orig_Update(UpdateItemFollowerScaleDebug self);

			[EditorBrowsable(EditorBrowsableState.Never)]
			public delegate void hook_Update(orig_Update orig, UpdateItemFollowerScaleDebug self);

			[EditorBrowsable(EditorBrowsableState.Never)]
			public delegate void orig_ctor(UpdateItemFollowerScaleDebug self);

			[EditorBrowsable(EditorBrowsableState.Never)]
			public delegate void hook_ctor(orig_ctor orig, UpdateItemFollowerScaleDebug self);

			public static event hook_Start Start
			{
				add
				{
					HookEndpointManager.Add<hook_Start>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
				}
				remove
				{
					HookEndpointManager.Remove<hook_Start>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
				}
			}

			public static event hook_Update Update
			{
				add
				{
					HookEndpointManager.Add<hook_Update>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
				}
				remove
				{
					HookEndpointManager.Remove<hook_Update>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
				}
			}

			public static event hook_ctor ctor
			{
				add
				{
					HookEndpointManager.Add<hook_ctor>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
				}
				remove
				{
					HookEndpointManager.Remove<hook_ctor>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
				}
			}
		}

		public static event hook_Init Init
		{
			add
			{
				HookEndpointManager.Add<hook_Init>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
			remove
			{
				HookEndpointManager.Remove<hook_Init>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
		}

		public static event hook_Log Log
		{
			add
			{
				HookEndpointManager.Add<hook_Log>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
			remove
			{
				HookEndpointManager.Remove<hook_Log>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
		}

		public static event hook_UpdateGameObjectShader UpdateGameObjectShader
		{
			add
			{
				HookEndpointManager.Add<hook_UpdateGameObjectShader>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
			remove
			{
				HookEndpointManager.Remove<hook_UpdateGameObjectShader>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
		}

		public static event hook_GenerateRendererInfos GenerateRendererInfos
		{
			add
			{
				HookEndpointManager.Add<hook_GenerateRendererInfos>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
			remove
			{
				HookEndpointManager.Remove<hook_GenerateRendererInfos>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
		}

		public static event hook_nseFromString nseFromString
		{
			add
			{
				HookEndpointManager.Add<hook_nseFromString>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
			remove
			{
				HookEndpointManager.Remove<hook_nseFromString>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
		}

		public static event hook_ColorRGB ColorRGB
		{
			add
			{
				HookEndpointManager.Add<hook_ColorRGB>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
			remove
			{
				HookEndpointManager.Remove<hook_ColorRGB>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
		}

		public static event hook_Destroy Destroy
		{
			add
			{
				HookEndpointManager.Add<hook_Destroy>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
			remove
			{
				HookEndpointManager.Remove<hook_Destroy>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
		}

		public static event hook_DestroyImmediate DestroyImmediate
		{
			add
			{
				HookEndpointManager.Add<hook_DestroyImmediate>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
			remove
			{
				HookEndpointManager.Remove<hook_DestroyImmediate>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
		}

		public static event hook_EmptyPrefab EmptyPrefab
		{
			add
			{
				HookEndpointManager.Add<hook_EmptyPrefab>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
			remove
			{
				HookEndpointManager.Remove<hook_EmptyPrefab>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
		}

		public static event hook_StackScaling_int_int_int StackScaling_int_int_int
		{
			add
			{
				HookEndpointManager.Add<hook_StackScaling_int_int_int>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
			remove
			{
				HookEndpointManager.Remove<hook_StackScaling_int_int_int>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
		}

		public static event hook_Percent Percent
		{
			add
			{
				HookEndpointManager.Add<hook_Percent>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
			remove
			{
				HookEndpointManager.Remove<hook_Percent>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
		}

		public static event hook_StackScaling_float_float_int StackScaling_float_float_int
		{
			add
			{
				HookEndpointManager.Add<hook_StackScaling_float_float_int>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
			remove
			{
				HookEndpointManager.Remove<hook_StackScaling_float_float_int>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
		}

		public static event hook_ctor ctor
		{
			add
			{
				HookEndpointManager.Add<hook_ctor>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
			remove
			{
				HookEndpointManager.Remove<hook_ctor>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
		}

		public static event hook_cctor cctor
		{
			add
			{
				HookEndpointManager.Add<hook_cctor>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
			remove
			{
				HookEndpointManager.Remove<hook_cctor>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
		}
	}
}
namespace IL.GrooveSaladSpikestripContent
{
	public static class SpikestripContentBase
	{
		public static class UpdateItemFollowerScaleDebug
		{
			public static event Manipulator Start
			{
				add
				{
					HookEndpointManager.Modify<On.GrooveSaladSpikestripContent.SpikestripContentBase.UpdateItemFollowerScaleDebug.hook_Start>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
				}
				remove
				{
					HookEndpointManager.Unmodify<On.GrooveSaladSpikestripContent.SpikestripContentBase.UpdateItemFollowerScaleDebug.hook_Start>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
				}
			}

			public static event Manipulator Update
			{
				add
				{
					HookEndpointManager.Modify<On.GrooveSaladSpikestripContent.SpikestripContentBase.UpdateItemFollowerScaleDebug.hook_Update>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
				}
				remove
				{
					HookEndpointManager.Unmodify<On.GrooveSaladSpikestripContent.SpikestripContentBase.UpdateItemFollowerScaleDebug.hook_Update>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
				}
			}

			public static event Manipulator ctor
			{
				add
				{
					HookEndpointManager.Modify<On.GrooveSaladSpikestripContent.SpikestripContentBase.UpdateItemFollowerScaleDebug.hook_ctor>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
				}
				remove
				{
					HookEndpointManager.Unmodify<On.GrooveSaladSpikestripContent.SpikestripContentBase.UpdateItemFollowerScaleDebug.hook_ctor>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
				}
			}
		}

		public static event Manipulator Init
		{
			add
			{
				HookEndpointManager.Modify<On.GrooveSaladSpikestripContent.SpikestripContentBase.hook_Init>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
			remove
			{
				HookEndpointManager.Unmodify<On.GrooveSaladSpikestripContent.SpikestripContentBase.hook_Init>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
		}

		public static event Manipulator Log
		{
			add
			{
				HookEndpointManager.Modify<On.GrooveSaladSpikestripContent.SpikestripContentBase.hook_Log>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
			remove
			{
				HookEndpointManager.Unmodify<On.GrooveSaladSpikestripContent.SpikestripContentBase.hook_Log>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
		}

		public static event Manipulator UpdateGameObjectShader
		{
			add
			{
				HookEndpointManager.Modify<On.GrooveSaladSpikestripContent.SpikestripContentBase.hook_UpdateGameObjectShader>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
			remove
			{
				HookEndpointManager.Unmodify<On.GrooveSaladSpikestripContent.SpikestripContentBase.hook_UpdateGameObjectShader>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
		}

		public static event Manipulator GenerateRendererInfos
		{
			add
			{
				HookEndpointManager.Modify<On.G

MMHOOK_PlasmaCoreSpikestripContent.dll

Decompiled a year ago
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Reflection;
using System.Runtime.InteropServices;
using EntityStates;
using EntityStates.Railgunner.Scope;
using MonoMod.Cil;
using MonoMod.RuntimeDetour.HookGen;
using Moonstorm.Components;
using On;
using On.Moonstorm.Components;
using On.PlasmaCoreSpikestripContent.Components;
using On.PlasmaCoreSpikestripContent.Content.Artifacts;
using On.PlasmaCoreSpikestripContent.Content.Elites;
using On.PlasmaCoreSpikestripContent.Content.Equipment;
using On.PlasmaCoreSpikestripContent.Content.Interactibles;
using On.PlasmaCoreSpikestripContent.Content.Items;
using On.PlasmaCoreSpikestripContent.Content.Monsters;
using On.PlasmaCoreSpikestripContent.Content.Monsters.States;
using On.PlasmaCoreSpikestripContent.Content.Skills;
using On.PlasmaCoreSpikestripContent.Content.Skills.States;
using On.PlasmaCoreSpikestripContent.Core;
using On.PlasmaCoreSpikestripContent.Misc;
using On.PlasmaCoreSpikestripContent.Networking;
using PlasmaCoreSpikestripContent.Components;
using PlasmaCoreSpikestripContent.Content.Artifacts;
using PlasmaCoreSpikestripContent.Content.Elites;
using PlasmaCoreSpikestripContent.Content.Equipment;
using PlasmaCoreSpikestripContent.Content.Interactibles;
using PlasmaCoreSpikestripContent.Content.Items;
using PlasmaCoreSpikestripContent.Content.Monsters;
using PlasmaCoreSpikestripContent.Content.Monsters.States;
using PlasmaCoreSpikestripContent.Content.Skills;
using PlasmaCoreSpikestripContent.Content.Skills.States;
using PlasmaCoreSpikestripContent.Core;
using PlasmaCoreSpikestripContent.Misc;
using PlasmaCoreSpikestripContent.Networking;
using RoR2;
using RoR2.CharacterAI;
using RoR2.Projectile;
using RoR2.Skills;
using UnityEngine;
using UnityEngine.Networking;

[assembly: AssemblyVersion("0.0.0.0")]
namespace On
{
	public static class PlasmaCore
	{
		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate void orig_Start(PlasmaCore self);

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate void hook_Start(orig_Start orig, PlasmaCore self);

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate void orig_Update(PlasmaCore self);

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate void hook_Update(orig_Update orig, PlasmaCore self);

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate void orig_ctor(PlasmaCore self);

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate void hook_ctor(orig_ctor orig, PlasmaCore self);

		public static event hook_Start Start
		{
			add
			{
				HookEndpointManager.Add<hook_Start>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
			remove
			{
				HookEndpointManager.Remove<hook_Start>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
		}

		public static event hook_Update Update
		{
			add
			{
				HookEndpointManager.Add<hook_Update>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
			remove
			{
				HookEndpointManager.Remove<hook_Update>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
		}

		public static event hook_ctor ctor
		{
			add
			{
				HookEndpointManager.Add<hook_ctor>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
			remove
			{
				HookEndpointManager.Remove<hook_ctor>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
		}
	}
}
namespace IL
{
	public static class PlasmaCore
	{
		public static event Manipulator Start
		{
			add
			{
				HookEndpointManager.Modify<On.PlasmaCore.hook_Start>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
			remove
			{
				HookEndpointManager.Unmodify<On.PlasmaCore.hook_Start>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
		}

		public static event Manipulator Update
		{
			add
			{
				HookEndpointManager.Modify<On.PlasmaCore.hook_Update>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
			remove
			{
				HookEndpointManager.Unmodify<On.PlasmaCore.hook_Update>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
		}

		public static event Manipulator ctor
		{
			add
			{
				HookEndpointManager.Modify<On.PlasmaCore.hook_ctor>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
			remove
			{
				HookEndpointManager.Unmodify<On.PlasmaCore.hook_ctor>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
		}
	}
}
namespace On
{
	public static class LoadMaterialFromAdress
	{
		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate void orig_Awake(LoadMaterialFromAdress self);

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate void hook_Awake(orig_Awake orig, LoadMaterialFromAdress self);

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate void orig_ctor(LoadMaterialFromAdress self);

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate void hook_ctor(orig_ctor orig, LoadMaterialFromAdress self);

		public static event hook_Awake Awake
		{
			add
			{
				HookEndpointManager.Add<hook_Awake>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
			remove
			{
				HookEndpointManager.Remove<hook_Awake>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
		}

		public static event hook_ctor ctor
		{
			add
			{
				HookEndpointManager.Add<hook_ctor>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
			remove
			{
				HookEndpointManager.Remove<hook_ctor>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
		}
	}
}
namespace IL
{
	public static class LoadMaterialFromAdress
	{
		public static event Manipulator Awake
		{
			add
			{
				HookEndpointManager.Modify<On.LoadMaterialFromAdress.hook_Awake>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
			remove
			{
				HookEndpointManager.Unmodify<On.LoadMaterialFromAdress.hook_Awake>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
		}

		public static event Manipulator ctor
		{
			add
			{
				HookEndpointManager.Modify<On.LoadMaterialFromAdress.hook_ctor>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
			remove
			{
				HookEndpointManager.Unmodify<On.LoadMaterialFromAdress.hook_ctor>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
		}
	}
}
namespace On.Moonstorm.Components
{
	public static class HGControllerFinder
	{
		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate void orig_OnEnable(HGControllerFinder self);

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate void hook_OnEnable(orig_OnEnable orig, HGControllerFinder self);

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate void orig_ctor(HGControllerFinder self);

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate void hook_ctor(orig_ctor orig, HGControllerFinder self);

		public static event hook_OnEnable OnEnable
		{
			add
			{
				HookEndpointManager.Add<hook_OnEnable>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
			remove
			{
				HookEndpointManager.Remove<hook_OnEnable>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
		}

		public static event hook_ctor ctor
		{
			add
			{
				HookEndpointManager.Add<hook_ctor>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
			remove
			{
				HookEndpointManager.Remove<hook_ctor>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
		}
	}
}
namespace IL.Moonstorm.Components
{
	public static class HGControllerFinder
	{
		public static event Manipulator OnEnable
		{
			add
			{
				HookEndpointManager.Modify<On.Moonstorm.Components.HGControllerFinder.hook_OnEnable>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
			remove
			{
				HookEndpointManager.Unmodify<On.Moonstorm.Components.HGControllerFinder.hook_OnEnable>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
		}

		public static event Manipulator ctor
		{
			add
			{
				HookEndpointManager.Modify<On.Moonstorm.Components.HGControllerFinder.hook_ctor>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
			remove
			{
				HookEndpointManager.Unmodify<On.Moonstorm.Components.HGControllerFinder.hook_ctor>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
		}
	}
}
namespace On.Moonstorm.Components
{
	public static class MaterialControllerComponents
	{
		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate void orig_SetShaderKeywordBasedOnBool(bool enabled, Material material, string keyword);

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate void hook_SetShaderKeywordBasedOnBool(orig_SetShaderKeywordBasedOnBool orig, bool enabled, Material material, string keyword);

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate void orig_PutMaterialIntoMeshRenderer(Renderer meshRenderer, Material material);

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate void hook_PutMaterialIntoMeshRenderer(orig_PutMaterialIntoMeshRenderer orig, Renderer meshRenderer, Material material);

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate void orig_ctor(MaterialControllerComponents self);

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate void hook_ctor(orig_ctor orig, MaterialControllerComponents self);

		public static class MaterialController
		{
			[EditorBrowsable(EditorBrowsableState.Never)]
			public delegate void orig_ctor(MaterialController self);

			[EditorBrowsable(EditorBrowsableState.Never)]
			public delegate void hook_ctor(orig_ctor orig, MaterialController self);

			public static event hook_ctor ctor
			{
				add
				{
					HookEndpointManager.Add<hook_ctor>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
				}
				remove
				{
					HookEndpointManager.Remove<hook_ctor>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
				}
			}
		}

		public static class HGStandardController
		{
			[EditorBrowsable(EditorBrowsableState.Never)]
			public delegate void orig_Start(HGStandardController self);

			[EditorBrowsable(EditorBrowsableState.Never)]
			public delegate void hook_Start(orig_Start orig, HGStandardController self);

			[EditorBrowsable(EditorBrowsableState.Never)]
			public delegate void orig_GrabMaterialValues(HGStandardController self);

			[EditorBrowsable(EditorBrowsableState.Never)]
			public delegate void hook_GrabMaterialValues(orig_GrabMaterialValues orig, HGStandardController self);

			[EditorBrowsable(EditorBrowsableState.Never)]
			public delegate void orig_Update(HGStandardController self);

			[EditorBrowsable(EditorBrowsableState.Never)]
			public delegate void hook_Update(orig_Update orig, HGStandardController self);

			[EditorBrowsable(EditorBrowsableState.Never)]
			public delegate void orig_ctor(HGStandardController self);

			[EditorBrowsable(EditorBrowsableState.Never)]
			public delegate void hook_ctor(orig_ctor orig, HGStandardController self);

			public static event hook_Start Start
			{
				add
				{
					HookEndpointManager.Add<hook_Start>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
				}
				remove
				{
					HookEndpointManager.Remove<hook_Start>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
				}
			}

			public static event hook_GrabMaterialValues GrabMaterialValues
			{
				add
				{
					HookEndpointManager.Add<hook_GrabMaterialValues>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
				}
				remove
				{
					HookEndpointManager.Remove<hook_GrabMaterialValues>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
				}
			}

			public static event hook_Update Update
			{
				add
				{
					HookEndpointManager.Add<hook_Update>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
				}
				remove
				{
					HookEndpointManager.Remove<hook_Update>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
				}
			}

			public static event hook_ctor ctor
			{
				add
				{
					HookEndpointManager.Add<hook_ctor>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
				}
				remove
				{
					HookEndpointManager.Remove<hook_ctor>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
				}
			}
		}

		public static class HGSnowToppedController
		{
			[EditorBrowsable(EditorBrowsableState.Never)]
			public delegate void orig_Start(HGSnowToppedController self);

			[EditorBrowsable(EditorBrowsableState.Never)]
			public delegate void hook_Start(orig_Start orig, HGSnowToppedController self);

			[EditorBrowsable(EditorBrowsableState.Never)]
			public delegate void orig_GrabMaterialValues(HGSnowToppedController self);

			[EditorBrowsable(EditorBrowsableState.Never)]
			public delegate void hook_GrabMaterialValues(orig_GrabMaterialValues orig, HGSnowToppedController self);

			[EditorBrowsable(EditorBrowsableState.Never)]
			public delegate void orig_Update(HGSnowToppedController self);

			[EditorBrowsable(EditorBrowsableState.Never)]
			public delegate void hook_Update(orig_Update orig, HGSnowToppedController self);

			[EditorBrowsable(EditorBrowsableState.Never)]
			public delegate void orig_ctor(HGSnowToppedController self);

			[EditorBrowsable(EditorBrowsableState.Never)]
			public delegate void hook_ctor(orig_ctor orig, HGSnowToppedController self);

			public static event hook_Start Start
			{
				add
				{
					HookEndpointManager.Add<hook_Start>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
				}
				remove
				{
					HookEndpointManager.Remove<hook_Start>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
				}
			}

			public static event hook_GrabMaterialValues GrabMaterialValues
			{
				add
				{
					HookEndpointManager.Add<hook_GrabMaterialValues>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
				}
				remove
				{
					HookEndpointManager.Remove<hook_GrabMaterialValues>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
				}
			}

			public static event hook_Update Update
			{
				add
				{
					HookEndpointManager.Add<hook_Update>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
				}
				remove
				{
					HookEndpointManager.Remove<hook_Update>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
				}
			}

			public static event hook_ctor ctor
			{
				add
				{
					HookEndpointManager.Add<hook_ctor>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
				}
				remove
				{
					HookEndpointManager.Remove<hook_ctor>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
				}
			}
		}

		public static class HGCloudRemapController
		{
			[EditorBrowsable(EditorBrowsableState.Never)]
			public delegate void orig_Start(HGCloudRemapController self);

			[EditorBrowsable(EditorBrowsableState.Never)]
			public delegate void hook_Start(orig_Start orig, HGCloudRemapController self);

			[EditorBrowsable(EditorBrowsableState.Never)]
			public delegate void orig_GrabMaterialValues(HGCloudRemapController self);

			[EditorBrowsable(EditorBrowsableState.Never)]
			public delegate void hook_GrabMaterialValues(orig_GrabMaterialValues orig, HGCloudRemapController self);

			[EditorBrowsable(EditorBrowsableState.Never)]
			public delegate void orig_Update(HGCloudRemapController self);

			[EditorBrowsable(EditorBrowsableState.Never)]
			public delegate void hook_Update(orig_Update orig, HGCloudRemapController self);

			[EditorBrowsable(EditorBrowsableState.Never)]
			public delegate void orig_ctor(HGCloudRemapController self);

			[EditorBrowsable(EditorBrowsableState.Never)]
			public delegate void hook_ctor(orig_ctor orig, HGCloudRemapController self);

			public static event hook_Start Start
			{
				add
				{
					HookEndpointManager.Add<hook_Start>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
				}
				remove
				{
					HookEndpointManager.Remove<hook_Start>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
				}
			}

			public static event hook_GrabMaterialValues GrabMaterialValues
			{
				add
				{
					HookEndpointManager.Add<hook_GrabMaterialValues>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
				}
				remove
				{
					HookEndpointManager.Remove<hook_GrabMaterialValues>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
				}
			}

			public static event hook_Update Update
			{
				add
				{
					HookEndpointManager.Add<hook_Update>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
				}
				remove
				{
					HookEndpointManager.Remove<hook_Update>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
				}
			}

			public static event hook_ctor ctor
			{
				add
				{
					HookEndpointManager.Add<hook_ctor>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
				}
				remove
				{
					HookEndpointManager.Remove<hook_ctor>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
				}
			}
		}

		public static class HGIntersectionController
		{
			[EditorBrowsable(EditorBrowsableState.Never)]
			public delegate void orig_Start(HGIntersectionController self);

			[EditorBrowsable(EditorBrowsableState.Never)]
			public delegate void hook_Start(orig_Start orig, HGIntersectionController self);

			[EditorBrowsable(EditorBrowsableState.Never)]
			public delegate void orig_GrabMaterialValues(HGIntersectionController self);

			[EditorBrowsable(EditorBrowsableState.Never)]
			public delegate void hook_GrabMaterialValues(orig_GrabMaterialValues orig, HGIntersectionController self);

			[EditorBrowsable(EditorBrowsableState.Never)]
			public delegate void orig_Update(HGIntersectionController self);

			[EditorBrowsable(EditorBrowsableState.Never)]
			public delegate void hook_Update(orig_Update orig, HGIntersectionController self);

			[EditorBrowsable(EditorBrowsableState.Never)]
			public delegate void orig_ctor(HGIntersectionController self);

			[EditorBrowsable(EditorBrowsableState.Never)]
			public delegate void hook_ctor(orig_ctor orig, HGIntersectionController self);

			public static event hook_Start Start
			{
				add
				{
					HookEndpointManager.Add<hook_Start>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
				}
				remove
				{
					HookEndpointManager.Remove<hook_Start>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
				}
			}

			public static event hook_GrabMaterialValues GrabMaterialValues
			{
				add
				{
					HookEndpointManager.Add<hook_GrabMaterialValues>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
				}
				remove
				{
					HookEndpointManager.Remove<hook_GrabMaterialValues>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
				}
			}

			public static event hook_Update Update
			{
				add
				{
					HookEndpointManager.Add<hook_Update>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
				}
				remove
				{
					HookEndpointManager.Remove<hook_Update>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
				}
			}

			public static event hook_ctor ctor
			{
				add
				{
					HookEndpointManager.Add<hook_ctor>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
				}
				remove
				{
					HookEndpointManager.Remove<hook_ctor>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
				}
			}
		}

		public static class HGSolidParallaxController
		{
			[EditorBrowsable(EditorBrowsableState.Never)]
			public delegate void orig_Start(HGSolidParallaxController self);

			[EditorBrowsable(EditorBrowsableState.Never)]
			public delegate void hook_Start(orig_Start orig, HGSolidParallaxController self);

			[EditorBrowsable(EditorBrowsableState.Never)]
			public delegate void orig_GrabMaterialValues(HGSolidParallaxController self);

			[EditorBrowsable(EditorBrowsableState.Never)]
			public delegate void hook_GrabMaterialValues(orig_GrabMaterialValues orig, HGSolidParallaxController self);

			[EditorBrowsable(EditorBrowsableState.Never)]
			public delegate void orig_Update(HGSolidParallaxController self);

			[EditorBrowsable(EditorBrowsableState.Never)]
			public delegate void hook_Update(orig_Update orig, HGSolidParallaxController self);

			[EditorBrowsable(EditorBrowsableState.Never)]
			public delegate void orig_ctor(HGSolidParallaxController self);

			[EditorBrowsable(EditorBrowsableState.Never)]
			public delegate void hook_ctor(orig_ctor orig, HGSolidParallaxController self);

			public static event hook_Start Start
			{
				add
				{
					HookEndpointManager.Add<hook_Start>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
				}
				remove
				{
					HookEndpointManager.Remove<hook_Start>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
				}
			}

			public static event hook_GrabMaterialValues GrabMaterialValues
			{
				add
				{
					HookEndpointManager.Add<hook_GrabMaterialValues>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
				}
				remove
				{
					HookEndpointManager.Remove<hook_GrabMaterialValues>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
				}
			}

			public static event hook_Update Update
			{
				add
				{
					HookEndpointManager.Add<hook_Update>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
				}
				remove
				{
					HookEndpointManager.Remove<hook_Update>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
				}
			}

			public static event hook_ctor ctor
			{
				add
				{
					HookEndpointManager.Add<hook_ctor>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
				}
				remove
				{
					HookEndpointManager.Remove<hook_ctor>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
				}
			}
		}

		public static class HGWavyClothController
		{
			[EditorBrowsable(EditorBrowsableState.Never)]
			public delegate void orig_Start(HGWavyClothController self);

			[EditorBrowsable(EditorBrowsableState.Never)]
			public delegate void hook_Start(orig_Start orig, HGWavyClothController self);

			[EditorBrowsable(EditorBrowsableState.Never)]
			public delegate void orig_GrabMaterialValues(HGWavyClothController self);

			[EditorBrowsable(EditorBrowsableState.Never)]
			public delegate void hook_GrabMaterialValues(orig_GrabMaterialValues orig, HGWavyClothController self);

			[EditorBrowsable(EditorBrowsableState.Never)]
			public delegate void orig_Update(HGWavyClothController self);

			[EditorBrowsable(EditorBrowsableState.Never)]
			public delegate void hook_Update(orig_Update orig, HGWavyClothController self);

			[EditorBrowsable(EditorBrowsableState.Never)]
			public delegate void orig_ctor(HGWavyClothController self);

			[EditorBrowsable(EditorBrowsableState.Never)]
			public delegate void hook_ctor(orig_ctor orig, HGWavyClothController self);

			public static event hook_Start Start
			{
				add
				{
					HookEndpointManager.Add<hook_Start>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
				}
				remove
				{
					HookEndpointManager.Remove<hook_Start>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
				}
			}

			public static event hook_GrabMaterialValues GrabMaterialValues
			{
				add
				{
					HookEndpointManager.Add<hook_GrabMaterialValues>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
				}
				remove
				{
					HookEndpointManager.Remove<hook_GrabMaterialValues>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
				}
			}

			public static event hook_Update Update
			{
				add
				{
					HookEndpointManager.Add<hook_Update>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
				}
				remove
				{
					HookEndpointManager.Remove<hook_Update>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
				}
			}

			public static event hook_ctor ctor
			{
				add
				{
					HookEndpointManager.Add<hook_ctor>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
				}
				remove
				{
					HookEndpointManager.Remove<hook_ctor>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
				}
			}
		}

		public static class HGOpaqueCloudRemap
		{
			[EditorBrowsable(EditorBrowsableState.Never)]
			public delegate void orig_Start(HGOpaqueCloudRemap self);

			[EditorBrowsable(EditorBrowsableState.Never)]
			public delegate void hook_Start(orig_Start orig, HGOpaqueCloudRemap self);

			[EditorBrowsable(EditorBrowsableState.Never)]
			public delegate void orig_GrabMaterialValues(HGOpaqueCloudRemap self);

			[EditorBrowsable(EditorBrowsableState.Never)]
			public delegate void hook_GrabMaterialValues(orig_GrabMaterialValues orig, HGOpaqueCloudRemap self);

			[EditorBrowsable(EditorBrowsableState.Never)]
			public delegate void orig_Update(HGOpaqueCloudRemap self);

			[EditorBrowsable(EditorBrowsableState.Never)]
			public delegate void hook_Update(orig_Update orig, HGOpaqueCloudRemap self);

			[EditorBrowsable(EditorBrowsableState.Never)]
			public delegate void orig_ctor(HGOpaqueCloudRemap self);

			[EditorBrowsable(EditorBrowsableState.Never)]
			public delegate void hook_ctor(orig_ctor orig, HGOpaqueCloudRemap self);

			public static event hook_Start Start
			{
				add
				{
					HookEndpointManager.Add<hook_Start>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
				}
				remove
				{
					HookEndpointManager.Remove<hook_Start>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
				}
			}

			public static event hook_GrabMaterialValues GrabMaterialValues
			{
				add
				{
					HookEndpointManager.Add<hook_GrabMaterialValues>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
				}
				remove
				{
					HookEndpointManager.Remove<hook_GrabMaterialValues>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
				}
			}

			public static event hook_Update Update
			{
				add
				{
					HookEndpointManager.Add<hook_Update>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
				}
				remove
				{
					HookEndpointManager.Remove<hook_Update>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
				}
			}

			public static event hook_ctor ctor
			{
				add
				{
					HookEndpointManager.Add<hook_ctor>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
				}
				remove
				{
					HookEndpointManager.Remove<hook_ctor>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
				}
			}
		}

		public static class HGDistantWaterController
		{
			[EditorBrowsable(EditorBrowsableState.Never)]
			public delegate void orig_Start(HGDistantWaterController self);

			[EditorBrowsable(EditorBrowsableState.Never)]
			public delegate void hook_Start(orig_Start orig, HGDistantWaterController self);

			[EditorBrowsable(EditorBrowsableState.Never)]
			public delegate void orig_GrabMaterialValues(HGDistantWaterController self);

			[EditorBrowsable(EditorBrowsableState.Never)]
			public delegate void hook_GrabMaterialValues(orig_GrabMaterialValues orig, HGDistantWaterController self);

			[EditorBrowsable(EditorBrowsableState.Never)]
			public delegate void orig_Update(HGDistantWaterController self);

			[EditorBrowsable(EditorBrowsableState.Never)]
			public delegate void hook_Update(orig_Update orig, HGDistantWaterController self);

			[EditorBrowsable(EditorBrowsableState.Never)]
			public delegate void orig_ctor(HGDistantWaterController self);

			[EditorBrowsable(EditorBrowsableState.Never)]
			public delegate void hook_ctor(orig_ctor orig, HGDistantWaterController self);

			public static event hook_Start Start
			{
				add
				{
					HookEndpointManager.Add<hook_Start>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
				}
				remove
				{
					HookEndpointManager.Remove<hook_Start>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
				}
			}

			public static event hook_GrabMaterialValues GrabMaterialValues
			{
				add
				{
					HookEndpointManager.Add<hook_GrabMaterialValues>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
				}
				remove
				{
					HookEndpointManager.Remove<hook_GrabMaterialValues>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
				}
			}

			public static event hook_Update Update
			{
				add
				{
					HookEndpointManager.Add<hook_Update>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
				}
				remove
				{
					HookEndpointManager.Remove<hook_Update>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
				}
			}

			public static event hook_ctor ctor
			{
				add
				{
					HookEndpointManager.Add<hook_ctor>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
				}
				remove
				{
					HookEndpointManager.Remove<hook_ctor>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
				}
			}
		}

		public static event hook_SetShaderKeywordBasedOnBool SetShaderKeywordBasedOnBool
		{
			add
			{
				HookEndpointManager.Add<hook_SetShaderKeywordBasedOnBool>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
			remove
			{
				HookEndpointManager.Remove<hook_SetShaderKeywordBasedOnBool>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
		}

		public static event hook_PutMaterialIntoMeshRenderer PutMaterialIntoMeshRenderer
		{
			add
			{
				HookEndpointManager.Add<hook_PutMaterialIntoMeshRenderer>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
			remove
			{
				HookEndpointManager.Remove<hook_PutMaterialIntoMeshRenderer>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
		}

		public static event hook_ctor ctor
		{
			add
			{
				HookEndpointManager.Add<hook_ctor>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
			remove
			{
				HookEndpointManager.Remove<hook_ctor>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
		}
	}
}
namespace IL.Moonstorm.Components
{
	public static class MaterialControllerComponents
	{
		public static class MaterialController
		{
			public static event Manipulator ctor
			{
				add
				{
					HookEndpointManager.Modify<On.Moonstorm.Components.MaterialControllerComponents.MaterialController.hook_ctor>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
				}
				remove
				{
					HookEndpointManager.Unmodify<On.Moonstorm.Components.MaterialControllerComponents.MaterialController.hook_ctor>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
				}
			}
		}

		public static class HGStandardController
		{
			public static event Manipulator Start
			{
				add
				{
					HookEndpointManager.Modify<On.Moonstorm.Components.MaterialControllerComponents.HGStandardController.hook_Start>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
				}
				remove
				{
					HookEndpointManager.Unmodify<On.Moonstorm.Components.MaterialControllerComponents.HGStandardController.hook_Start>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
				}
			}

			public static event Manipulator GrabMaterialValues
			{
				add
				{
					HookEndpointManager.Modify<On.Moonstorm.Components.MaterialControllerComponents.HGStandardController.hook_GrabMaterialValues>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
				}
				remove
				{
					HookEndpointManager.Unmodify<On.Moonstorm.Components.MaterialControllerComponents.HGStandardController.hook_GrabMaterialValues>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
				}
			}

			public static event Manipulator Update
			{
				add
				{
					HookEndpointManager.Modify<On.Moonstorm.Components.MaterialControllerComponents.HGStandardController.hook_Update>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
				}
				remove
				{
					HookEndpointManager.Unmodify<On.Moonstorm.Components.MaterialControllerComponents.HGStandardController.hook_Update>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
				}
			}

			public static event Manipulator ctor
			{
				add
				{
					HookEndpointManager.Modify<On.Moonstorm.Components.MaterialControllerComponents.HGStandardController.hook_ctor>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
				}
				remove
				{
					HookEndpointManager.Unmodify<On.Moonstorm.Components.MaterialControllerComponents.HGStandardController.hook_ctor>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
				}
			}
		}

		public static class HGSnowToppedController
		{
			public static event Manipulator Start
			{
				add
				{
					HookEndpointManager.Modify<On.Moonstorm.Components.MaterialControllerComponents.HGSnowToppedController.hook_Start>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
				}
				remove
				{
					HookEndpointManager.Unmodify<On.Moonstorm.Components.MaterialControllerComponents.HGSnowToppedController.hook_Start>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
				}
			}

			public static event Manipulator GrabMaterialValues
			{
				add
				{
					HookEndpointManager.Modify<On.Moonstorm.Components.MaterialControllerComponents.HGSnowToppedController.hook_GrabMaterialValues>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
				}
				remove
				{
					HookEndpointManager.Unmodify<On.Moonstorm.Components.MaterialControllerComponents.HGSnowToppedController.hook_GrabMaterialValues>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
				}
			}

			public static event Manipulator Update
			{
				add
				{
					HookEndpointManager.Modify<On.Moonstorm.Components.MaterialControllerComponents.HGSnowToppedController.hook_Update>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
				}
				remove
				{
					HookEndpointManager.Unmodify<On.Moonstorm.Components.MaterialControllerComponents.HGSnowToppedController.hook_Update>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
				}
			}

			public static event Manipulator ctor
			{
				add
				{
					HookEndpointManager.Modify<On.Moonstorm.Components.MaterialControllerComponents.HGSnowToppedController.hook_ctor>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
				}
				remove
				{
					HookEndpointManager.Unmodify<On.Moonstorm.Components.MaterialControllerComponents.HGSnowToppedController.hook_ctor>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
				}
			}
		}

		public static class HGCloudRemapController
		{
			public static event Manipulator Start
			{
				add
				{
					HookEndpointManager.Modify<On.Moonstorm.Components.MaterialControllerComponents.HGCloudRemapController.hook_Start>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
				}
				remove
				{
					HookEndpointManager.Unmodify<On.Moonstorm.Components.MaterialControllerComponents.HGCloudRemapController.hook_Start>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
				}
			}

			public static event Manipulator GrabMaterialValues
			{
				add
				{
					HookEndpointManager.Modify<On.Moonstorm.Components.MaterialControllerComponents.HGCloudRemapController.hook_GrabMaterialValues>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
				}
				remove
				{
					HookEndpointManager.Unmodify<On.Moonstorm.Components.MaterialControllerComponents.HGCloudRemapController.hook_GrabMaterialValues>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
				}
			}

			public static event Manipulator Update
			{
				add
				{
					HookEndpointManager.Modify<On.Moonstorm.Components.MaterialControllerComponents.HGCloudRemapController.hook_Update>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
				}
				remove
				{
					HookEndpointManager.Unmodify<On.Moonstorm.Components.MaterialControllerComponents.HGCloudRemapController.hook_Update>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
				}
			}

			public static event Manipulator ctor
			{
				add
				{
					HookEndpointManager.Modify<On.Moonstorm.Components.MaterialControllerComponents.HGCloudRemapController.hook_ctor>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
				}
				remove
				{
					HookEndpointManager.Unmodify<On.Moonstorm.Components.MaterialControllerComponents.HGCloudRemapController.hook_ctor>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
				}
			}
		}

		public static class HGIntersectionController
		{
			public static event Manipulator Start
			{
				add
				{
					HookEndpointManager.Modify<On.Moonstorm.Components.MaterialControllerComponents.HGIntersectionController.hook_Start>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
				}
				remove
				{
					HookEndpointManager.Unmodify<On.Moonstorm.Components.MaterialControllerComponents.HGIntersectionController.hook_Start>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
				}
			}

			public static event Manipulator GrabMaterialValues
			{
				add
				{
					HookEndpointManager.Modify<On.Moonstorm.Components.MaterialControllerComponents.HGIntersectionController.hook_GrabMaterialValues>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
				}
				remove
				{
					HookEndpointManager.Unmodify<On.Moonstorm.Components.MaterialControllerComponents.HGIntersectionController.hook_GrabMaterialValues>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
				}
			}

			public static event Manipulator Update
			{
				add
				{
					HookEndpointManager.Modify<On.Moonstorm.Components.MaterialControllerComponents.HGIntersectionController.hook_Update>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
				}
				remove
				{
					HookEndpointManager.Unmodify<On.Moonstorm.Components.MaterialControllerComponents.HGIntersectionController.hook_Update>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
				}
			}

			public static event Manipulator ctor
			{
				add
				{
					HookEndpointManager.Modify<On.Moonstorm.Components.MaterialControllerComponents.HGIntersectionController.hook_ctor>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
				}
				remove
				{
					HookEndpointManager.Unmodify<On.Moonstorm.Components.MaterialControllerComponents.HGIntersectionController.hook_ctor>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
				}
			}
		}

		public static class HGSolidParallaxController
		{
			public static event Manipulator Start
			{
				add
				{
					HookEndpointManager.Modify<On.Moonstorm.Components.MaterialControllerComponents.HGSolidParallaxController.hook_Start>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
				}
				remove
				{
					HookEndpointManager.Unmodify<On.Moonstorm.Components.MaterialControllerComponents.HGSolidParallaxController.hook_Start>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
				}
			}

			public static event Manipulator GrabMaterialValues
			{
				add
				{
					HookEndpointManager.Modify<On.Moonstorm.Components.MaterialControllerComponents.HGSolidParallaxController.hook_GrabMaterialValues>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
				}
				remove
				{
					HookEndpointManager.Unmodify<On.Moonstorm.Components.MaterialControllerComponents.HGSolidParallaxController.hook_GrabMaterialValues>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
				}
			}

			public static event Manipulator Update
			{
				add
				{
					HookEndpointManager.Modify<On.Moonstorm.Components.MaterialControllerComponents.HGSolidParallaxController.hook_Update>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
				}
				remove
				{
					HookEndpointManager.Unmodify<On.Moonstorm.Components.MaterialControllerComponents.HGSolidParallaxController.hook_Update>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
				}
			}

			public static event Manipulator ctor
			{
				add
				{
					HookEndpointManager.Modify<On.Moonstorm.Components.MaterialControllerComponents.HGSolidParallaxController.hook_ctor>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
				}
				remove
				{
					HookEndpointManager.Unmodify<On.Moonstorm.Components.MaterialControllerComponents.HGSolidParallaxController.hook_ctor>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
				}
			}
		}

		public static class HGWavyClothController
		{
			public static event Manipulator Start
			{
				add
				{
					HookEndpointManager.Modify<On.Moonstorm.Components.MaterialControllerComponents.HGWavyClothController.hook_Start>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
				}
				remove
				{
					HookEndpointManager.Unmodify<On.Moonstorm.Components.MaterialControllerComponents.HGWavyClothController.hook_Start>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
				}
			}

			public static event Manipulator GrabMaterialValues
			{
				add
				{
					HookEndpointManager.Modify<On.Moonstorm.Components.MaterialControllerComponents.HGWavyClothController.hook_GrabMaterialValues>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
				}
				remove
				{
					HookEndpointManager.Unmodify<On.Moonstorm.Components.MaterialControllerComponents.HGWavyClothController.hook_GrabMaterialValues>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
				}
			}

			public static event Manipulator Update
			{
				add
				{
					HookEndpointManager.Modify<On.Moonstorm.Components.MaterialControllerComponents.HGWavyClothController.hook_Update>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
				}
				remove
				{
					HookEndpointManager.Unmodify<On.Moonstorm.Components.MaterialControllerComponents.HGWavyClothController.hook_Update>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
				}
			}

			public static event Manipulator ctor
			{
				add
				{
					HookEndpointManager.Modify<On.Moonstorm.Components.MaterialControllerComponents.HGWavyClothController.hook_ctor>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
				}
				remove
				{
					HookEndpointManager.Unmodify<On.Moonstorm.Components.MaterialControllerComponents.HGWavyClothController.hook_ctor>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
				}
			}
		}

		public static class HGOpaqueCloudRemap
		{
			public static event Manipulator Start
			{
				add
				{
					HookEndpointManager.Modify<On.Moonstorm.Components.MaterialControllerComponents.HGOpaqueCloudRemap.hook_Start>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
				}
				remove
				{
					HookEndpointManager.Unmodify<On.Moonstorm.Components.MaterialControllerComponents.HGOpaqueCloudRemap.hook_Start>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
				}
			}

			public static event Manipulator GrabMaterialValues
			{
				add
				{
					HookEndpointManager.Modify<On.Moonstorm.Components.MaterialControllerComponents.HGOpaqueCloudRemap.hook_GrabMaterialValues>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
				}
				remove
				{
					HookEndpointManager.Unmodify<On.Moonstorm.Components.MaterialControllerComponents.HGOpaqueCloudRemap.hook_GrabMaterialValues>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
				}
			}

			public static event Manipulator Update
			{
				add
				{
					HookEndpointManager.Modify<On.Moonstorm.Components.MaterialControllerComponents.HGOpaqueCloudRemap.hook_Update>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
				}
				remove
				{
					HookEndpointManager.Unmodify<On.Moonstorm.Components.MaterialControllerComponents.HGOpaqueCloudRemap.hook_Update>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
				}
			}

			public static event Manipulator ctor
			{
				add
				{
					HookEndpointManager.Modify<On.Moonstorm.Components.MaterialControllerComponents.HGOpaqueCloudRemap.hook_ctor>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
				}
				remove
				{
					HookEndpointManager.Unmodify<On.Moonstorm.Components.MaterialControllerComponents.HGOpaqueCloudRemap.hook_ctor>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
				}
			}
		}

		public static class HGDistantWaterController
		{
			public static event Manipulator Start
			{
				add
				{
					HookEndpointManager.Modify<On.Moonstorm.Components.MaterialControllerComponents.HGDistantWaterController.hook_Start>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
				}
				remove
				{
					HookEndpointManager.Unmodify<On.Moonstorm.Components.MaterialControllerComponents.HGDistantWaterController.hook_Start>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
				}
			}

			public static event Manipulator GrabMaterialValues
			{
				add
				{
					HookEndpointManager.Modify<On.Moonstorm.Components.MaterialControllerComponents.HGDistantWaterController.hook_GrabMaterialValues>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
				}
				remove
				{
					HookEndpointManager.Unmodify<On.Moonstorm.Components.MaterialControllerComponents.HGDistantWaterController.hook_GrabMaterialValues>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
				}
			}

			public static event Manipulator Update
			{
				add
				{
					HookEndpointManager.Modify<On.Moonstorm.Components.MaterialControllerComponents.HGDistantWaterController.hook_Update>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
				}
				remove
				{
					HookEndpointManager.Unmodify<On.Moonstorm.Components.MaterialControllerComponents.HGDistantWaterController.hook_Update>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
				}
			}

			public static event Manipulator ctor
			{
				add
				{
					HookEndpointManager.Modify<On.Moonstorm.Components.MaterialControllerComponents.HGDistantWaterController.hook_ctor>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
				}
				remove
				{
					HookEndpointManager.Unmodify<On.Moonstorm.Components.MaterialControllerComponents.HGDistantWaterController.hook_ctor>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
				}
			}
		}

		public static event Manipulator SetShaderKeywordBasedOnBool
		{
			add
			{
				HookEndpointManager.Modify<On.Moonstorm.Components.MaterialControllerComponents.hook_SetShaderKeywordBasedOnBool>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
			remove
			{
				HookEndpointManager.Unmodify<On.Moonstorm.Components.MaterialControllerComponents.hook_SetShaderKeywordBasedOnBool>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
		}

		public static event Manipulator PutMaterialIntoMeshRenderer
		{
			add
			{
				HookEndpointManager.Modify<On.Moonstorm.Components.MaterialControllerComponents.hook_PutMaterialIntoMeshRenderer>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
			remove
			{
				HookEndpointManager.Unmodify<On.Moonstorm.Components.MaterialControllerComponents.hook_PutMaterialIntoMeshRenderer>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
		}

		public static event Manipulator ctor
		{
			add
			{
				HookEndpointManager.Modify<On.Moonstorm.Components.MaterialControllerComponents.hook_ctor>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
			remove
			{
				HookEndpointManager.Unmodify<On.Moonstorm.Components.MaterialControllerComponents.hook_ctor>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
		}
	}
}
namespace On.PlasmaCoreSpikestripContent.Core
{
	public static class PlasmaCorePlugin
	{
		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate void orig_Awake(PlasmaCorePlugin self);

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate void hook_Awake(orig_Awake orig, PlasmaCorePlugin self);

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate Nullable<SkillDriverEvaluation> orig_BaseAI_EvaluateSingleSkillDriverDebug(PlasmaCorePlugin self, object orig, BaseAI self, ref SkillDriverEvaluation currentSkillDriverEvaluation, AISkillDriver aiSkillDriver, float myHealthFraction);

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate Nullable<SkillDriverEvaluation> hook_BaseAI_EvaluateSingleSkillDriverDebug(orig_BaseAI_EvaluateSingleSkillDriverDebug orig, PlasmaCorePlugin self, object orig, BaseAI self, ref SkillDriverEvaluation currentSkillDriverEvaluation, AISkillDriver aiSkillDriver, float myHealthFraction);

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate void orig_EntityStateMachine_SetNextState(PlasmaCorePlugin self, object orig, EntityStateMachine self, EntityState newNextState);

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate void hook_EntityStateMachine_SetNextState(orig_EntityStateMachine_SetNextState orig, PlasmaCorePlugin self, object orig, EntityStateMachine self, EntityState newNextState);

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate void orig_StubShaders(Material[] materials);

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate void hook_StubShaders(orig_StubShaders orig, Material[] materials);

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate void orig_ctor(PlasmaCorePlugin self);

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate void hook_ctor(orig_ctor orig, PlasmaCorePlugin self);

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate void orig_cctor();

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate void hook_cctor(orig_cctor orig);

		public static event hook_Awake Awake
		{
			add
			{
				HookEndpointManager.Add<hook_Awake>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
			remove
			{
				HookEndpointManager.Remove<hook_Awake>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
		}

		public static event hook_BaseAI_EvaluateSingleSkillDriverDebug BaseAI_EvaluateSingleSkillDriverDebug
		{
			add
			{
				HookEndpointManager.Add<hook_BaseAI_EvaluateSingleSkillDriverDebug>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
			remove
			{
				HookEndpointManager.Remove<hook_BaseAI_EvaluateSingleSkillDriverDebug>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
		}

		public static event hook_EntityStateMachine_SetNextState EntityStateMachine_SetNextState
		{
			add
			{
				HookEndpointManager.Add<hook_EntityStateMachine_SetNextState>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
			remove
			{
				HookEndpointManager.Remove<hook_EntityStateMachine_SetNextState>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
		}

		public static event hook_StubShaders StubShaders
		{
			add
			{
				HookEndpointManager.Add<hook_StubShaders>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
			remove
			{
				HookEndpointManager.Remove<hook_StubShaders>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
		}

		public static event hook_ctor ctor
		{
			add
			{
				HookEndpointManager.Add<hook_ctor>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
			remove
			{
				HookEndpointManager.Remove<hook_ctor>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
		}

		public static event hook_cctor cctor
		{
			add
			{
				HookEndpointManager.Add<hook_cctor>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
			remove
			{
				HookEndpointManager.Remove<hook_cctor>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
		}
	}
}
namespace IL.PlasmaCoreSpikestripContent.Core
{
	public static class PlasmaCorePlugin
	{
		public static event Manipulator Awake
		{
			add
			{
				HookEndpointManager.Modify<On.PlasmaCoreSpikestripContent.Core.PlasmaCorePlugin.hook_Awake>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
			remove
			{
				HookEndpointManager.Unmodify<On.PlasmaCoreSpikestripContent.Core.PlasmaCorePlugin.hook_Awake>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
		}

		public static event Manipulator BaseAI_EvaluateSingleSkillDriverDebug
		{
			add
			{
				HookEndpointManager.Modify<On.PlasmaCoreSpikestripContent.Core.PlasmaCorePlugin.hook_BaseAI_EvaluateSingleSkillDriverDebug>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
			remove
			{
				HookEndpointManager.Unmodify<On.PlasmaCoreSpikestripContent.Core.PlasmaCorePlugin.hook_BaseAI_EvaluateSingleSkillDriverDebug>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
		}

		public static event Manipulator EntityStateMachine_SetNextState
		{
			add
			{
				HookEndpointManager.Modify<On.PlasmaCoreSpikestripContent.Core.PlasmaCorePlugin.hook_EntityStateMachine_SetNextState>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
			remove
			{
				HookEndpointManager.Unmodify<On.PlasmaCoreSpikestripContent.Core.PlasmaCorePlugin.hook_EntityStateMachine_SetNextState>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
		}

		public static event Manipulator StubShaders
		{
			add
			{
				HookEndpointManager.Modify<On.PlasmaCoreSpikestripContent.Core.PlasmaCorePlugin.hook_StubShaders>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
			remove
			{
				HookEndpointManager.Unmodify<On.PlasmaCoreSpikestripContent.Core.PlasmaCorePlugin.hook_StubShaders>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
		}

		public static event Manipulator ctor
		{
			add
			{
				HookEndpointManager.Modify<On.PlasmaCoreSpikestripContent.Core.PlasmaCorePlugin.hook_ctor>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
			remove
			{
				HookEndpointManager.Unmodify<On.PlasmaCoreSpikestripContent.Core.PlasmaCorePlugin.hook_ctor>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
		}

		public static event Manipulator cctor
		{
			add
			{
				HookEndpointManager.Modify<On.PlasmaCoreSpikestripContent.Core.PlasmaCorePlugin.hook_cctor>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
			remove
			{
				HookEndpointManager.Unmodify<On.PlasmaCoreSpikestripContent.Core.PlasmaCorePlugin.hook_cctor>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
		}
	}
}
namespace On.PlasmaCoreSpikestripContent.Core
{
	public static class PlasmaUtils
	{
		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate Vector3 orig_RandomTerrainPositionInCylinder(Vector3 position, float radius, float topOfCylinderHeight);

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate Vector3 hook_RandomTerrainPositionInCylinder(orig_RandomTerrainPositionInCylinder orig, Vector3 position, float radius, float topOfCylinderHeight);

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate Vector3 orig_GetNearestNode(Vector3 position, float maxDist, HullClassification hullSize, bool useAirNodes);

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate Vector3 hook_GetNearestNode(orig_GetNearestNode orig, Vector3 position, float maxDist, HullClassification hullSize, bool useAirNodes);

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate void orig_RegisterNetworkPrefabs(GameObject[] gameObjects);

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate void hook_RegisterNetworkPrefabs(orig_RegisterNetworkPrefabs orig, GameObject[] gameObjects);

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate void orig_RegisterNetworkPrefab(GameObject gameObject);

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate void hook_RegisterNetworkPrefab(orig_RegisterNetworkPrefab orig, GameObject gameObject);

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate string orig_PrefabAPIMakeHash(string s);

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate string hook_PrefabAPIMakeHash(orig_PrefabAPIMakeHash orig, string s);

		public static event hook_RandomTerrainPositionInCylinder RandomTerrainPositionInCylinder
		{
			add
			{
				HookEndpointManager.Add<hook_RandomTerrainPositionInCylinder>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
			remove
			{
				HookEndpointManager.Remove<hook_RandomTerrainPositionInCylinder>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
		}

		public static event hook_GetNearestNode GetNearestNode
		{
			add
			{
				HookEndpointManager.Add<hook_GetNearestNode>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
			remove
			{
				HookEndpointManager.Remove<hook_GetNearestNode>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
		}

		public static event hook_RegisterNetworkPrefabs RegisterNetworkPrefabs
		{
			add
			{
				HookEndpointManager.Add<hook_RegisterNetworkPrefabs>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
			remove
			{
				HookEndpointManager.Remove<hook_RegisterNetworkPrefabs>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
		}

		public static event hook_RegisterNetworkPrefab RegisterNetworkPrefab
		{
			add
			{
				HookEndpointManager.Add<hook_RegisterNetworkPrefab>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
			remove
			{
				HookEndpointManager.Remove<hook_RegisterNetworkPrefab>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
		}

		public static event hook_PrefabAPIMakeHash PrefabAPIMakeHash
		{
			add
			{
				HookEndpointManager.Add<hook_PrefabAPIMakeHash>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
			remove
			{
				HookEndpointManager.Remove<hook_PrefabAPIMakeHash>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
		}
	}
}
namespace IL.PlasmaCoreSpikestripContent.Core
{
	public static class PlasmaUtils
	{
		public static event Manipulator RandomTerrainPositionInCylinder
		{
			add
			{
				HookEndpointManager.Modify<On.PlasmaCoreSpikestripContent.Core.PlasmaUtils.hook_RandomTerrainPositionInCylinder>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
			remove
			{
				HookEndpointManager.Unmodify<On.PlasmaCoreSpikestripContent.Core.PlasmaUtils.hook_RandomTerrainPositionInCylinder>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
		}

		public static event Manipulator GetNearestNode
		{
			add
			{
				HookEndpointManager.Modify<On.PlasmaCoreSpikestripContent.Core.PlasmaUtils.hook_GetNearestNode>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
			remove
			{
				HookEndpointManager.Unmodify<On.PlasmaCoreSpikestripContent.Core.PlasmaUtils.hook_GetNearestNode>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
		}

		public static event Manipulator RegisterNetworkPrefabs
		{
			add
			{
				HookEndpointManager.Modify<On.PlasmaCoreSpikestripContent.Core.PlasmaUtils.hook_RegisterNetworkPrefabs>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
			remove
			{
				HookEndpointManager.Unmodify<On.PlasmaCoreSpikestripContent.Core.PlasmaUtils.hook_RegisterNetworkPrefabs>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
		}

		public static event Manipulator RegisterNetworkPrefab
		{
			add
			{
				HookEndpointManager.Modify<On.PlasmaCoreSpikestripContent.Core.PlasmaUtils.hook_RegisterNetworkPrefab>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
			remove
			{
				HookEndpointManager.Unmodify<On.PlasmaCoreSpikestripContent.Core.PlasmaUtils.hook_RegisterNetworkPrefab>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
		}

		public static event Manipulator PrefabAPIMakeHash
		{
			add
			{
				HookEndpointManager.Modify<On.PlasmaCoreSpikestripContent.Core.PlasmaUtils.hook_PrefabAPIMakeHash>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
			remove
			{
				HookEndpointManager.Unmodify<On.PlasmaCoreSpikestripContent.Core.PlasmaUtils.hook_PrefabAPIMakeHash>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
		}
	}
}
namespace On.PlasmaCoreSpikestripContent.Core
{
	public static class PlasmaLog
	{
		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate void orig_Log(string output, bool allLogOnly);

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate void hook_Log(orig_Log orig, string output, bool allLogOnly);

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate void orig_LogWarn(string output, bool allLogOnly);

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate void hook_LogWarn(orig_LogWarn orig, string output, bool allLogOnly);

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate void orig_LogError(string output, bool allLogOnly);

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate void hook_LogError(orig_LogError orig, string output, bool allLogOnly);

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate void orig_LogSequence();

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate void hook_LogSequence(orig_LogSequence orig);

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate void orig_cctor();

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate void hook_cctor(orig_cctor orig);

		public static event hook_Log Log
		{
			add
			{
				HookEndpointManager.Add<hook_Log>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
			remove
			{
				HookEndpointManager.Remove<hook_Log>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
		}

		public static event hook_LogWarn LogWarn
		{
			add
			{
				HookEndpointManager.Add<hook_LogWarn>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
			remove
			{
				HookEndpointManager.Remove<hook_LogWarn>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
		}

		public static event hook_LogError LogError
		{
			add
			{
				HookEndpointManager.Add<hook_LogError>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
			remove
			{
				HookEndpointManager.Remove<hook_LogError>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
		}

		public static event hook_LogSequence LogSequence
		{
			add
			{
				HookEndpointManager.Add<hook_LogSequence>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
			remove
			{
				HookEndpointManager.Remove<hook_LogSequence>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
		}

		public static event hook_cctor cctor
		{
			add
			{
				HookEndpointManager.Add<hook_cctor>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
			remove
			{
				HookEndpointManager.Remove<hook_cctor>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
		}
	}
}
namespace IL.PlasmaCoreSpikestripContent.Core
{
	public static class PlasmaLog
	{
		public static event Manipulator Log
		{
			add
			{
				HookEndpointManager.Modify<On.PlasmaCoreSpikestripContent.Core.PlasmaLog.hook_Log>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
			remove
			{
				HookEndpointManager.Unmodify<On.PlasmaCoreSpikestripContent.Core.PlasmaLog.hook_Log>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
		}

		public static event Manipulator LogWarn
		{
			add
			{
				HookEndpointManager.Modify<On.PlasmaCoreSpikestripContent.Core.PlasmaLog.hook_LogWarn>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
			remove
			{
				HookEndpointManager.Unmodify<On.PlasmaCoreSpikestripContent.Core.PlasmaLog.hook_LogWarn>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
		}

		public static event Manipulator LogError
		{
			add
			{
				HookEndpointManager.Modify<On.PlasmaCoreSpikestripContent.Core.PlasmaLog.hook_LogError>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
			remove
			{
				HookEndpointManager.Unmodify<On.PlasmaCoreSpikestripContent.Core.PlasmaLog.hook_LogError>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
		}

		public static event Manipulator LogSequence
		{
			add
			{
				HookEndpointManager.Modify<On.PlasmaCoreSpikestripContent.Core.PlasmaLog.hook_LogSequence>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
			remove
			{
				HookEndpointManager.Unmodify<On.PlasmaCoreSpikestripContent.Core.PlasmaLog.hook_LogSequence>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
		}

		public static event Manipulator cctor
		{
			add
			{
				HookEndpointManager.Modify<On.PlasmaCoreSpikestripContent.Core.PlasmaLog.hook_cctor>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
			remove
			{
				HookEndpointManager.Unmodify<On.PlasmaCoreSpikestripContent.Core.PlasmaLog.hook_cctor>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
		}
	}
}
namespace On.PlasmaCoreSpikestripContent.Core
{
	public static class SSArtifactBaseSO
	{
		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate void orig_ctor(SSArtifactBaseSO self);

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate void hook_ctor(orig_ctor orig, SSArtifactBaseSO self);

		public static event hook_ctor ctor
		{
			add
			{
				HookEndpointManager.Add<hook_ctor>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
			remove
			{
				HookEndpointManager.Remove<hook_ctor>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
		}
	}
}
namespace IL.PlasmaCoreSpikestripContent.Core
{
	public static class SSArtifactBaseSO
	{
		public static event Manipulator ctor
		{
			add
			{
				HookEndpointManager.Modify<On.PlasmaCoreSpikestripContent.Core.SSArtifactBaseSO.hook_ctor>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
			remove
			{
				HookEndpointManager.Unmodify<On.PlasmaCoreSpikestripContent.Core.SSArtifactBaseSO.hook_ctor>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
		}
	}
}
namespace On.PlasmaCoreSpikestripContent.Core
{
	public static class SSEliteBaseSO
	{
		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate void orig_ctor(SSEliteBaseSO self);

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate void hook_ctor(orig_ctor orig, SSEliteBaseSO self);

		public static event hook_ctor ctor
		{
			add
			{
				HookEndpointManager.Add<hook_ctor>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
			remove
			{
				HookEndpointManager.Remove<hook_ctor>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
		}
	}
}
namespace IL.PlasmaCoreSpikestripContent.Core
{
	public static class SSEliteBaseSO
	{
		public static event Manipulator ctor
		{
			add
			{
				HookEndpointManager.Modify<On.PlasmaCoreSpikestripContent.Core.SSEliteBaseSO.hook_ctor>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
			remove
			{
				HookEndpointManager.Unmodify<On.PlasmaCoreSpikestripContent.Core.SSEliteBaseSO.hook_ctor>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
		}
	}
}
namespace On.PlasmaCoreSpikestripContent.Core
{
	public static class SSEnemyBaseSO
	{
		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate void orig_ctor(SSEnemyBaseSO self);

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate void hook_ctor(orig_ctor orig, SSEnemyBaseSO self);

		public static event hook_ctor ctor
		{
			add
			{
				HookEndpointManager.Add<hook_ctor>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
			remove
			{
				HookEndpointManager.Remove<hook_ctor>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
		}
	}
}
namespace IL.PlasmaCoreSpikestripContent.Core
{
	public static class SSEnemyBaseSO
	{
		public static event Manipulator ctor
		{
			add
			{
				HookEndpointManager.Modify<On.PlasmaCoreSpikestripContent.Core.SSEnemyBaseSO.hook_ctor>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
			remove
			{
				HookEndpointManager.Unmodify<On.PlasmaCoreSpikestripContent.Core.SSEnemyBaseSO.hook_ctor>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
		}
	}
}
namespace On.PlasmaCoreSpikestripContent.Core
{
	public static class SSEquipBaseSO
	{
		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate void orig_ctor(SSEquipBaseSO self);

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate void hook_ctor(orig_ctor orig, SSEquipBaseSO self);

		public static event hook_ctor ctor
		{
			add
			{
				HookEndpointManager.Add<hook_ctor>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
			remove
			{
				HookEndpointManager.Remove<hook_ctor>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
		}
	}
}
namespace IL.PlasmaCoreSpikestripContent.Core
{
	public static class SSEquipBaseSO
	{
		public static event Manipulator ctor
		{
			add
			{
				HookEndpointManager.Modify<On.PlasmaCoreSpikestripContent.Core.SSEquipBaseSO.hook_ctor>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
			remove
			{
				HookEndpointManager.Unmodify<On.PlasmaCoreSpikestripContent.Core.SSEquipBaseSO.hook_ctor>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
		}
	}
}
namespace On.PlasmaCoreSpikestripContent.Core
{
	public static class SSInteractibleBaseSO
	{
		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate void orig_ctor(SSInteractibleBaseSO self);

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate void hook_ctor(orig_ctor orig, SSInteractibleBaseSO self);

		public static event hook_ctor ctor
		{
			add
			{
				HookEndpointManager.Add<hook_ctor>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
			remove
			{
				HookEndpointManager.Remove<hook_ctor>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
		}
	}
}
namespace IL.PlasmaCoreSpikestripContent.Core
{
	public static class SSInteractibleBaseSO
	{
		public static event Manipulator ctor
		{
			add
			{
				HookEndpointManager.Modify<On.PlasmaCoreSpikestripContent.Core.SSInteractibleBaseSO.hook_ctor>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
			remove
			{
				HookEndpointManager.Unmodify<On.PlasmaCoreSpikestripContent.Core.SSInteractibleBaseSO.hook_ctor>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
		}
	}
}
namespace On.PlasmaCoreSpikestripContent.Core
{
	public static class SSItemBaseSO
	{
		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate void orig_ctor(SSItemBaseSO self);

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate void hook_ctor(orig_ctor orig, SSItemBaseSO self);

		public static event hook_ctor ctor
		{
			add
			{
				HookEndpointManager.Add<hook_ctor>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
			remove
			{
				HookEndpointManager.Remove<hook_ctor>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
		}
	}
}
namespace IL.PlasmaCoreSpikestripContent.Core
{
	public static class SSItemBaseSO
	{
		public static event Manipulator ctor
		{
			add
			{
				HookEndpointManager.Modify<On.PlasmaCoreSpikestripContent.Core.SSItemBaseSO.hook_ctor>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
			remove
			{
				HookEndpointManager.Unmodify<On.PlasmaCoreSpikestripContent.Core.SSItemBaseSO.hook_ctor>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
		}
	}
}
namespace On.PlasmaCoreSpikestripContent.Core
{
	public static class SSSkillBaseSO
	{
		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate void orig_ctor(SSSkillBaseSO self);

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate void hook_ctor(orig_ctor orig, SSSkillBaseSO self);

		public static event hook_ctor ctor
		{
			add
			{
				HookEndpointManager.Add<hook_ctor>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
			remove
			{
				HookEndpointManager.Remove<hook_ctor>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
		}
	}
}
namespace IL.PlasmaCoreSpikestripContent.Core
{
	public static class SSSkillBaseSO
	{
		public static event Manipulator ctor
		{
			add
			{
				HookEndpointManager.Modify<On.PlasmaCoreSpikestripContent.Core.SSSkillBaseSO.hook_ctor>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
			remove
			{
				HookEndpointManager.Unmodify<On.PlasmaCoreSpikestripContent.Core.SSSkillBaseSO.hook_ctor>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
		}
	}
}
namespace On.PlasmaCoreSpikestripContent.Networking
{
	public static class IFSClientTargetRequestNetworkMessage
	{
		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate void orig_Deserialize(IFSClientTargetRequestNetworkMessage self, NetworkReader reader);

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate void hook_Deserialize(orig_Deserialize orig, IFSClientTargetRequestNetworkMessage self, NetworkReader reader);

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate void orig_OnReceived(IFSClientTargetRequestNetworkMessage self);

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate void hook_OnReceived(orig_OnReceived orig, IFSClientTargetRequestNetworkMessage self);

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate void orig_Serialize(IFSClientTargetRequestNetworkMessage self, NetworkWriter writer);

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate void hook_Serialize(orig_Serialize orig, IFSClientTargetRequestNetworkMessage self, NetworkWriter writer);

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate void orig_ctor(IFSClientTargetRequestNetworkMessage self);

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate void hook_ctor(orig_ctor orig, IFSClientTargetRequestNetworkMessage self);

		public static event hook_Deserialize Deserialize
		{
			add
			{
				HookEndpointManager.Add<hook_Deserialize>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
			remove
			{
				HookEndpointManager.Remove<hook_Deserialize>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
		}

		public static event hook_OnReceived OnReceived
		{
			add
			{
				HookEndpointManager.Add<hook_OnReceived>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
			remove
			{
				HookEndpointManager.Remove<hook_OnReceived>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
		}

		public static event hook_Serialize Serialize
		{
			add
			{
				HookEndpointManager.Add<hook_Serialize>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
			remove
			{
				HookEndpointManager.Remove<hook_Serialize>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
		}

		public static event hook_ctor ctor
		{
			add
			{
				HookEndpointManager.Add<hook_ctor>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
			remove
			{
				HookEndpointManager.Remove<hook_ctor>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
		}
	}
}
namespace IL.PlasmaCoreSpikestripContent.Networking
{
	public static class IFSClientTargetRequestNetworkMessage
	{
		public static event Manipulator Deserialize
		{
			add
			{
				HookEndpointManager.Modify<On.PlasmaCoreSpikestripContent.Networking.IFSClientTargetRequestNetworkMessage.hook_Deserialize>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
			remove
			{
				HookEndpointManager.Unmodify<On.PlasmaCoreSpikestripContent.Networking.IFSClientTargetRequestNetworkMessage.hook_Deserialize>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
		}

		public static event Manipulator OnReceived
		{
			add
			{
				HookEndpointManager.Modify<On.PlasmaCoreSpikestripContent.Networking.IFSClientTargetRequestNetworkMessage.hook_OnReceived>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
			remove
			{
				HookEndpointManager.Unmodify<On.PlasmaCoreSpikestripContent.Networking.IFSClientTargetRequestNetworkMessage.hook_OnReceived>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
		}

		public static event Manipulator Serialize
		{
			add
			{
				HookEndpointManager.Modify<On.PlasmaCoreSpikestripContent.Networking.IFSClientTargetRequestNetworkMessage.hook_Serialize>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
			remove
			{
				HookEndpointManager.Unmodify<On.PlasmaCoreSpikestripContent.Networking.IFSClientTargetRequestNetworkMessage.hook_Serialize>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
		}

		public static event Manipulator ctor
		{
			add
			{
				HookEndpointManager.Modify<On.PlasmaCoreSpikestripContent.Networking.IFSClientTargetRequestNetworkMessage.hook_ctor>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
			remove
			{
				HookEndpointManager.Unmodify<On.PlasmaCoreSpikestripContent.Networking.IFSClientTargetRequestNetworkMessage.hook_ctor>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
		}
	}
}
namespace On.PlasmaCoreSpikestripContent.Networking
{
	public static class IFSTargetConfirmRequestNetworkMessage
	{
		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate void orig_Deserialize(IFSTargetConfirmRequestNetworkMessage self, NetworkReader reader);

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate void hook_Deserialize(orig_Deserialize orig, IFSTargetConfirmRequestNetworkMessage self, NetworkReader reader);

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate void orig_OnReceived(IFSTargetConfirmRequestNetworkMessage self);

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate void hook_OnReceived(orig_OnReceived orig, IFSTargetConfirmRequestNetworkMessage self);

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate void orig_Serialize(IFSTargetConfirmRequestNetworkMessage self, NetworkWriter writer);

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate void hook_Serialize(orig_Serialize orig, IFSTargetConfirmRequestNetworkMessage self, NetworkWriter writer);

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate void orig_ctor(IFSTargetConfirmRequestNetworkMessage self);

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate void hook_ctor(orig_ctor orig, IFSTargetConfirmRequestNetworkMessage self);

		public static event hook_Deserialize Deserialize
		{
			add
			{
				HookEndpointManager.Add<hook_Deserialize>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
			remove
			{
				HookEndpointManager.Remove<hook_Deserialize>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
		}

		public static event hook_OnReceived OnReceived
		{
			add
			{
				HookEndpointManager.Add<hook_OnReceived>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
			remove
			{
				HookEndpointManager.Remove<hook_OnReceived>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
		}

		public static event hook_Serialize Serialize
		{
			add
			{
				HookEndpointManager.Add<hook_Serialize>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
			remove
			{
				HookEndpointManager.Remove<hook_Serialize>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
		}

		public static event hook_ctor ctor
		{
			add
			{
				HookEndpointManager.Add<hook_ctor>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
			remove
			{
				HookEndpointManager.Remove<hook_ctor>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
		}
	}
}
namespace IL.PlasmaCoreSpikestripContent.Networking
{
	public static class IFSTargetConfirmRequestNetworkMessage
	{
		public static event Manipulator Deserialize
		{
			add
			{
				HookEndpointManager.Modify<On.PlasmaCoreSpikestripContent.Networking.IFSTargetConfirmRequestNetworkMessage.hook_Deserialize>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
			remove
			{
				HookEndpointManager.Unmodify<On.PlasmaCoreSpikestripContent.Networking.IFSTargetConfirmRequestNetworkMessage.hook_Deserialize>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
		}

		public static event Manipulator OnReceived
		{
			add
			{
				HookEndpointManager.Modify<On.PlasmaCoreSpikestripContent.Networking.IFSTargetConfirmRequestNetworkMessage.hook_OnReceived>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
			remove
			{
				HookEndpointManager.Unmodify<On.PlasmaCoreSpikestripContent.Networking.IFSTargetConfirmRequestNetworkMessage.hook_OnReceived>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
		}

		public static event Manipulator Serialize
		{
			add
			{
				HookEndpointManager.Modify<On.PlasmaCoreSpikestripContent.Networking.IFSTargetConfirmRequestNetworkMessage.hook_Serialize>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
			remove
			{
				HookEndpointManager.Unmodify<On.PlasmaCoreSpikestripContent.Networking.IFSTargetConfirmRequestNetworkMessage.hook_Serialize>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
		}

		public static event Manipulator ctor
		{
			add
			{
				HookEndpointManager.Modify<On.PlasmaCoreSpikestripContent.Networking.IFSTargetConfirmRequestNetworkMessage.hook_ctor>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
			remove
			{
				HookEndpointManager.Unmodify<On.PlasmaCoreSpikestripContent.Networking.IFSTargetConfirmRequestNetworkMessage.hook_ctor>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
		}
	}
}
namespace On.PlasmaCoreSpikestripContent.Networking
{
	public static class IFSACtivateEquipmentNetworkMessage
	{
		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate void orig_Deserialize(IFSACtivateEquipmentNetworkMessage self, NetworkReader reader);

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate void hook_Deserialize(orig_Deserialize orig, IFSACtivateEquipmentNetworkMessage self, NetworkReader reader);

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate void orig_OnReceived(IFSACtivateEquipmentNetworkMessage self);

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate void hook_OnReceived(orig_OnReceived orig, IFSACtivateEquipmentNetworkMessage self);

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate void orig_Serialize(IFSACtivateEquipmentNetworkMessage self, NetworkWriter writer);

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate void hook_Serialize(orig_Serialize orig, IFSACtivateEquipmentNetworkMessage self, NetworkWriter writer);

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate void orig_ctor(IFSACtivateEquipmentNetworkMessage self);

		[EditorBrowsable(EditorBrowsableState.Never)]
		public delegate void hook_ctor(orig_ctor orig, IFSACtivateEquipmentNetworkMessage self);

		public static event hook_Deserialize Deserialize
		{
			add
			{
				HookEndpointManager.Add<hook_Deserialize>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
			remove
			{
				HookEndpointManager.Remove<hook_Deserialize>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
		}

		public static event hook_OnReceived OnReceived
		{
			add
			{
				HookEndpointManager.Add<hook_OnReceived>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
			remove
			{
				HookEndpointManager.Remove<hook_OnReceived>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
		}

		public static event hook_Serialize Serialize
		{
			add
			{
				HookEndpointManager.Add<hook_Serialize>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
			remove
			{
				HookEndpointManager.Remove<hook_Serialize>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
		}

		public static event hook_ctor ctor
		{
			add
			{
				HookEndpointManager.Add<hook_ctor>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
			remove
			{
				HookEndpointManager.Remove<hook_ctor>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)value);
			}
		}
	}
}
namespace IL.PlasmaCoreSpikestripContent.Networking
{
	public static class IFSACtivateEquipmentNetworkMessage
	{
		public static event Manipulator Deserialize
		{
			add
			{
				HookEndpointManager.Modify<On.PlasmaCoreSpikestripContent.Networking.IFSACtivateEquipmentNetworkMessage.hook_Deserialize>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
			remove
			{
				HookEndpointManager.Unmodify<On.PlasmaCoreSpikestripContent.Networking.IFSACtivateEquipmentNetworkMessage.hook_Deserialize>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
		}

		public static event Manipulator OnReceived
		{
			add
			{
				HookEndpointManager.Modify<On.PlasmaCoreSpikestripContent.Networking.IFSACtivateEquipmentNetworkMessage.hook_OnReceived>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
			remove
			{
				HookEndpointManager.Unmodify<On.PlasmaCoreSpikestripContent.Networking.IFSACtivateEquipmentNetworkMessage.hook_OnReceived>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
		}

		public static event Manipulator Serialize
		{
			add
			{
				HookEndpointManager.Modify<On.PlasmaCoreSpikestripContent.Networking.IFSACtivateEquipmentNetworkMessage.hook_Serialize>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
			remove
			{
				HookEndpointManager.Unmodify<On.PlasmaCoreSpikestripContent.Networking.IFSACtivateEquipmentNetworkMessage.hook_Serialize>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
		}

		public static event Manipulator ctor
		{
			add
			{
				HookEndpointManager.Modify<On.PlasmaCoreSpikestripContent.Networking.IFSACtivateEquipmentNetworkMessage.hook_ctor>(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/), (Delegate)(object)value);
			}
			remove
			{
				HookEndpointManager.Unmodify<On.PlasmaCor

NoopSpikestrip.dll

Decompiled a year ago
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Diagnostics;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.Versioning;
using System.Security;
using System.Security.Permissions;
using BepInEx;
using BepInEx.Logging;
using GrooveSaladSpikestripContent;
using NoopSpikestripContent.Core;
using NoopSpikestripContent.Utils;
using On.RoR2;
using On.RoR2.UI;
using On.RoR2.UI.LogBook;
using R2API;
using R2API.Networking;
using R2API.Networking.Interfaces;
using RoR2;
using RoR2.ExpansionManagement;
using RoR2.Orbs;
using RoR2.UI;
using UnityEngine;
using UnityEngine.Networking;
using UnityEngine.SceneManagement;
using UnityEngine.UI;

[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)]
[assembly: TargetFramework(".NETStandard,Version=v2.0", FrameworkDisplayName = "")]
[assembly: AssemblyCompany("NoopSpikestrip")]
[assembly: AssemblyConfiguration("Debug")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: AssemblyInformationalVersion("1.0.0")]
[assembly: AssemblyProduct("NoopSpikestrip")]
[assembly: AssemblyTitle("NoopSpikestrip")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("1.0.0.0")]
[module: UnverifiableCode]
namespace NoobSpikestripContent.Core.Scrapped
{
	public class VoidMicrobot : SpikestripItemBase<VoidMicrobot>
	{
		public override string ItemName => "fake";

		public override string ItemToken => "PARASITICBOT";

		public override string ItemPickup => "Latch onto a nearby enemy to drain them of life";

		public override string ItemDescription => "WIP";

		public override string ItemLore => "fake";

		public override ItemTier Tier => (ItemTier)8;

		public override Sprite ItemIconSprite => null;

		public override bool IsEnabled => false;

		public override void PopulateItemDisplayRules(ItemDisplayRuleDict itemDisplayRuleDict)
		{
		}

		public override void AssignItemModels()
		{
		}
	}
	public class leechBehaviour : ItemBehavior
	{
		public void FixedUpdate()
		{
		}
	}
	public class LeechOrb : Orb
	{
		public override void Begin()
		{
		}
	}
}
namespace ExamplePlugin
{
	internal static class Log
	{
		internal static ManualLogSource _logSource;

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

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

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

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

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

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

		internal static void LogWarning(object data)
		{
			_logSource.LogWarning(data);
		}
	}
}
namespace NoobSpikestrip.utils
{
	internal class ItemHelpers
	{
		public static void AddMaxShieldHelper(CharacterBody sender, StatHookEventArgs args, int inventoryCount, float baseStackHPPercent, float addStackHPPercent)
		{
			if (inventoryCount > 0)
			{
				if (sender.inventory.GetItemCount(Items.ShieldOnly) > 0)
				{
					float num = 1f + (float)sender.inventory.GetItemCount(Items.BoostHp) * 0.1f + (float)(sender.inventory.GetItemCount(Items.Pearl) + sender.inventory.GetItemCount(Items.ShinyPearl)) * 0.1f;
					float num2 = (sender.baseMaxHealth + sender.levelMaxHealth * (sender.level - 1f) + (float)sender.inventory.GetItemCount(Items.Knurl) * 40f + (float)((sender.inventory.GetItemCount(Items.Infusion) > 0) ? sender.inventory.infusionBonus : 0u)) * num / ((float)sender.inventory.GetItemCount(Items.CutHp) + 1f) * (float)((sender.inventory.GetItemCount(Items.InvadingDoppelganger) <= 0) ? 1 : 10);
					args.baseShieldAdd += num2 * baseStackHPPercent + num2 * addStackHPPercent * (float)(inventoryCount - 1);
				}
				else
				{
					args.baseShieldAdd += sender.maxHealth * baseStackHPPercent + sender.maxHealth * addStackHPPercent * (float)(inventoryCount - 1);
				}
			}
		}
	}
}
namespace NoopSpikestrip
{
	internal class BLESSING : SpikestripItemBase<BLESSING>
	{
		public override string ItemName => "Blessing";

		public override string ItemToken => "BLESSING_NAME";

		public override string ItemPickup => "Stare into the abyss for long enough, and soon it starts to stare back...";

		public override string ItemDescription => "Stare into the abyss for long enough, and soon it starts to stare back...";

		public override string ItemLore => null;

		public override Type DependsOn => typeof(Voiditem);

		public override ItemTier Tier => (ItemTier)6;

		public override ItemTag[] ItemTags
		{
			get
			{
				ItemTag[] array = new ItemTag[3];
				RuntimeHelpers.InitializeArray(array, (RuntimeFieldHandle)/*OpCode not supported: LdMemberToken*/);
				return (ItemTag[])(object)array;
			}
		}

		public override Sprite ItemIconSprite => NoobBase.NoobAssets.LoadAsset<Sprite>("texBlessingIcon.png");

		public override bool CanRemove => false;

		public override void Init()
		{
			//IL_000f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0019: Expected O, but got Unknown
			//IL_0021: Unknown result type (might be due to invalid IL or missing references)
			//IL_002b: Expected O, but got Unknown
			base.Init();
			RecalculateStatsAPI.GetStatCoefficients += new StatHookEventHandler(RecalculateStatsAPI_GetStatCoefficients);
			LogBookController.CanSelectItemEntry += new hook_CanSelectItemEntry(LogBookController_CanSelectItemEntry);
		}

		private bool LogBookController_CanSelectItemEntry(orig_CanSelectItemEntry orig, ItemDef itemDef, Dictionary<ExpansionDef, bool> expansionAvailability)
		{
			return !((Object)(object)itemDef == (Object)(object)base.ItemDef) && orig.Invoke(itemDef, expansionAvailability);
		}

		private void RecalculateStatsAPI_GetStatCoefficients(CharacterBody sender, StatHookEventArgs args)
		{
			if (Object.op_Implicit((Object)(object)sender.inventory))
			{
				int itemCount = sender.inventory.GetItemCount(base.ItemDef);
				args.healthMultAdd += 0.05f * (float)itemCount;
				args.shieldMultAdd += 0.05f * (float)itemCount;
				args.attackSpeedMultAdd += 0.05f * (float)itemCount;
				args.moveSpeedMultAdd += 0.05f * (float)itemCount;
				args.armorAdd += sender.armor * 0.05f * (float)itemCount;
				args.damageMultAdd += 0.05f * (float)itemCount;
				args.regenMultAdd += 0.05f * (float)itemCount;
				args.critAdd += sender.crit * 0.05f * (float)itemCount;
			}
		}

		public override void AssignItemModels()
		{
		}

		public override void PopulateItemDisplayRules(ItemDisplayRuleDict itemDisplayRuleDict)
		{
		}
	}
	internal class BloodyMask : SpikestripItemBase<BloodyMask>
	{
		public class MaskBehavior : ItemBehavior, IOnIncomingDamageServerReceiver
		{
			public float Timer;

			public GameObject effect = SpikestripContentBase.AddressablesLoad<GameObject>("0734bb48bb67cb6468a02ee1dfc4628e");

			public void FixedUpdate()
			{
				int num = SpikestripContentBase.StackScaling(5, 3, base.stack);
				int buffCount = base.body.GetBuffCount(bloody);
				if (base.body.outOfCombat || base.body.HasBuff(bloodycd))
				{
					return;
				}
				Timer -= Time.fixedDeltaTime;
				if (Timer <= 0f && buffCount < num)
				{
					Timer += 2f;
					if (Object.op_Implicit((Object)(object)base.body))
					{
						base.body.AddBuff(bloody);
					}
				}
			}

			public void OnIncomingDamageServer(DamageInfo damageInfo)
			{
				//IL_003d: Unknown result type (might be due to invalid IL or missing references)
				if ((Object)(object)damageInfo.attacker != (Object)(object)((Component)base.body).gameObject)
				{
					base.body.AddTimedBuff(bloodycd, 5f);
					base.body.SetBuffCount(bloody.buffIndex, 0);
					Timer = 0f;
				}
			}

			public void Start()
			{
				if (Object.op_Implicit((Object)(object)base.body.healthComponent))
				{
					ref IOnIncomingDamageServerReceiver[] onIncomingDamageReceivers = ref base.body.healthComponent.onIncomingDamageReceivers;
					IOnIncomingDamageServerReceiver val = (IOnIncomingDamageServerReceiver)(object)this;
					SpikestripContentBase.AppendArrayIfMissing<IOnIncomingDamageServerReceiver>(ref onIncomingDamageReceivers, ref val);
				}
			}

			public void OnDestroy()
			{
				if (Object.op_Implicit((Object)(object)base.body) && Object.op_Implicit((Object)(object)base.body.healthComponent))
				{
					ref IOnIncomingDamageServerReceiver[] onIncomingDamageReceivers = ref base.body.healthComponent.onIncomingDamageReceivers;
					IOnIncomingDamageServerReceiver val = (IOnIncomingDamageServerReceiver)(object)this;
					SpikestripContentBase.RemoveFromArray<IOnIncomingDamageServerReceiver>(ref onIncomingDamageReceivers, ref val);
					for (int num = base.body.GetBuffCount(bloody); num >= 0; num--)
					{
						base.body.RemoveBuff(bloody);
					}
				}
			}
		}

		public static BuffDef bloody;

		public static BuffDef bloodycd;

		public override string ItemName => "Bloody Surgical Mask";

		public override string ItemToken => "BloodMask";

		public override string ItemPickup => "Gain a stacking chance to bleed enemies during combat. Taking damage removes all stacks and puts the item on cooldown";

		public override string ItemDescription => "For every <style=cIsUtility>2 seconds</style> spent in combat, gain a <style=cIsdamage>5% chance to bleed enemies</style>. The buff can be stacked <style=cIsUtility>5</style> <style=cStack>(+3 per stack)</style> times. Upon getting hit lose all stacks and go on a 5 second cooldown";

		public override string ItemLore => "Silence. All that could be heard was a dull beeping sound. As she reached out, an assistant quickly prepared a scalpal for her. This was her 100th successful surgery without fail. It had to be. \n\nThe patient had a bullet lodged in between the ribcage and the left lung. She made an incision. Tension filled the room; even she looked nervous. She reached out her hand again, and was supplied with tweezers. She carefully maneuvered the tweezers down towards the bullet. This was it. At least, it should've been.\n\nA cough.\n\nHarmless to most, sure. However, it startled her enough to make her lose her focus. The tweezers punctured his lungs. In a matter of seconds, the room was filled with an ear piercing beep.\n\nHe is gone.\n\n100 perfect surgeries, gone.\n\nOne cough.\n\nShe Snapped.\n\nWith a crazed look in her eyes, she lunged at him. Still stunned from what he had done, he didn't even see her coming until it was too late.\n\nWas it really worth the pay Jacob? <style=cMono>\n=======================================================================================\nFrom the testimony of security guard Michael D. Kristie \nTrial 3748: Erica S. Steam V Jacob L. Smith</style>";

		public override ItemTier Tier => (ItemTier)1;

		public override Sprite ItemIconSprite => NoobBase.NoobAssets.LoadAsset<Sprite>("SurgeonIcon.png");

		public override bool ServerOnlyBehaviour => true;

		public override bool IsEnabled => true;

		public override Type ItemBehaviour => typeof(MaskBehavior);

		public override void AssignItemModels()
		{
			GameObject val = NoobBase.NoobAssets.LoadAsset<GameObject>("Surgical.prefab");
			base.ItemPickupModel = SpikestripContentBase.UpdateGameObjectShader(val, true);
			base.ItemDisplayModel = PrefabAPI.InstantiateClone(val, "CartDisplay", false);
			ItemDisplay val2 = base.ItemDisplayModel.AddComponent<ItemDisplay>();
			val2.rendererInfos = SpikestripContentBase.GenerateRendererInfos(base.ItemDisplayModel, false);
			base.ItemDisplayModel = SpikestripContentBase.UpdateGameObjectShader(base.ItemDisplayModel, true);
		}

		public override void Init()
		{
			//IL_0036: Unknown result type (might be due to invalid IL or missing references)
			//IL_003b: Unknown result type (might be due to invalid IL or missing references)
			//IL_00bb: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c0: Unknown result type (might be due to invalid IL or missing references)
			//IL_00dc: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e6: Expected O, but got Unknown
			base.Init();
			bloody = ScriptableObject.CreateInstance<BuffDef>();
			bloody.canStack = true;
			bloody.buffColor = SpikestripContentBase.ColorRGB(166f, 18f, 45f, 1f);
			bloody.iconSprite = NoobBase.NoobAssets.LoadAsset<Sprite>("Noopfakebuff.png");
			SpikestripContentBase.buffDefContent.Add(bloody);
			bloodycd = ScriptableObject.CreateInstance<BuffDef>();
			bloodycd.canStack = false;
			bloodycd.isCooldown = true;
			bloodycd.iconSprite = NoobBase.NoobAssets.LoadAsset<Sprite>("Noopfakecd.png");
			bloodycd.buffColor = SpikestripContentBase.ColorRGB(82f, 81f, 81f, 1f);
			SpikestripContentBase.buffDefContent.Add(bloodycd);
			CharacterBody.RecalculateStats += new hook_RecalculateStats(CharacterBody_RecalculateStats);
		}

		public static int FetchTotalItemCount(TeamIndex index, bool requiresAlive, bool requiresConnected = true)
		{
			//IL_0017: Unknown result type (might be due to invalid IL or missing references)
			//IL_001c: Unknown result type (might be due to invalid IL or missing references)
			ReadOnlyCollection<CharacterMaster> readOnlyInstancesList = CharacterMaster.readOnlyInstancesList;
			int num = 0;
			for (int i = 0; i < readOnlyInstancesList.Count; i++)
			{
				CharacterMaster val = readOnlyInstancesList[i];
				if (val.teamIndex == index && (!requiresAlive || val.hasBody) && (!requiresConnected || !Object.op_Implicit((Object)(object)val.playerCharacterMasterController) || val.playerCharacterMasterController.isConnected))
				{
					int[] itemStacks = val.inventory.itemStacks;
					foreach (int num2 in itemStacks)
					{
						num += num2;
					}
				}
			}
			return num;
		}

		private void CharacterBody_RecalculateStats(orig_RecalculateStats orig, CharacterBody self)
		{
			orig.Invoke(self);
			int buffCount = self.GetBuffCount(bloody);
			if (Object.op_Implicit((Object)(object)self) && !self.HasBuff(bloodycd))
			{
				orig.Invoke(self);
				self.bleedChance += (float)(5 * buffCount);
			}
		}

		public override void PopulateItemDisplayRules(ItemDisplayRuleDict itemDisplayRuleDict)
		{
			//IL_0011: Unknown result type (might be due to invalid IL or missing references)
			//IL_001a: 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_004e: Unknown result type (might be due to invalid IL or missing references)
			//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_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_0089: Unknown result type (might be due to invalid IL or missing references)
			//IL_008a: 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_00ae: 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_00e2: Unknown result type (might be due to invalid IL or missing references)
			//IL_00f8: Unknown result type (might be due to invalid IL or missing references)
			//IL_00fd: 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_0118: 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_011e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0139: 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_0171: Unknown result type (might be due to invalid IL or missing references)
			//IL_0176: Unknown result type (might be due to invalid IL or missing references)
			//IL_018c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0191: Unknown result type (might be due to invalid IL or missing references)
			//IL_01a7: Unknown result type (might be due to invalid IL or missing references)
			//IL_01ac: Unknown result type (might be due to invalid IL or missing references)
			//IL_01b1: 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_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_0205: Unknown result type (might be due to invalid IL or missing references)
			//IL_020a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0220: Unknown result type (might be due to invalid IL or missing references)
			//IL_0225: Unknown result type (might be due to invalid IL or missing references)
			//IL_023b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0240: 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_0246: Unknown result type (might be due to invalid IL or missing references)
			//IL_0261: Unknown result type (might be due to invalid IL or missing references)
			//IL_026a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0299: Unknown result type (might be due to invalid IL or missing references)
			//IL_029e: Unknown result type (might be due to invalid IL or missing references)
			//IL_02b4: Unknown result type (might be due to invalid IL or missing references)
			//IL_02b9: Unknown result type (might be due to invalid IL or missing references)
			//IL_02cf: Unknown result type (might be due to invalid IL or missing references)
			//IL_02d4: Unknown result type (might be due to invalid IL or missing references)
			//IL_02d9: Unknown result type (might be due to invalid IL or missing references)
			//IL_02da: Unknown result type (might be due to invalid IL or missing references)
			//IL_02f5: 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_032d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0332: 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_034d: 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_036d: Unknown result type (might be due to invalid IL or missing references)
			//IL_036e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0389: Unknown result type (might be due to invalid IL or missing references)
			//IL_0392: Unknown result type (might be due to invalid IL or missing references)
			//IL_03c1: Unknown result type (might be due to invalid IL or missing references)
			//IL_03c6: Unknown result type (might be due to invalid IL or missing references)
			//IL_03dc: Unknown result type (might be due to invalid IL or missing references)
			//IL_03e1: Unknown result type (might be due to invalid IL or missing references)
			//IL_03f7: Unknown result type (might be due to invalid IL or missing references)
			//IL_03fc: Unknown result type (might be due to invalid IL or missing references)
			//IL_0401: Unknown result type (might be due to invalid IL or missing references)
			//IL_0402: Unknown result type (might be due to invalid IL or missing references)
			//IL_041d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0426: Unknown result type (might be due to invalid IL or missing references)
			//IL_0455: Unknown result type (might be due to invalid IL or missing references)
			//IL_045a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0470: Unknown result type (might be due to invalid IL or missing references)
			//IL_0475: Unknown result type (might be due to invalid IL or missing references)
			//IL_048b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0490: Unknown result type (might be due to invalid IL or missing references)
			//IL_0495: Unknown result type (might be due to invalid IL or missing references)
			//IL_0496: Unknown result type (might be due to invalid IL or missing references)
			//IL_04b1: Unknown result type (might be due to invalid IL or missing references)
			//IL_04ba: Unknown result type (might be due to invalid IL or missing references)
			//IL_04e9: Unknown result type (might be due to invalid IL or missing references)
			//IL_04ee: Unknown result type (might be due to invalid IL or missing references)
			//IL_0504: Unknown result type (might be due to invalid IL or missing references)
			//IL_0509: 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_0524: Unknown result type (might be due to invalid IL or missing references)
			//IL_0529: Unknown result type (might be due to invalid IL or missing references)
			//IL_052a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0545: Unknown result type (might be due to invalid IL or missing references)
			//IL_054e: Unknown result type (might be due to invalid IL or missing references)
			//IL_057d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0582: Unknown result type (might be due to invalid IL or missing references)
			//IL_0598: Unknown result type (might be due to invalid IL or missing references)
			//IL_059d: Unknown result type (might be due to invalid IL or missing references)
			//IL_05b3: Unknown result type (might be due to invalid IL or missing references)
			//IL_05b8: Unknown result type (might be due to invalid IL or missing references)
			//IL_05bd: Unknown result type (might be due to invalid IL or missing references)
			//IL_05be: 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_05e2: Unknown result type (might be due to invalid IL or missing references)
			//IL_0611: Unknown result type (might be due to invalid IL or missing references)
			//IL_0616: Unknown result type (might be due to invalid IL or missing references)
			//IL_062c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0631: Unknown result type (might be due to invalid IL or missing references)
			//IL_0647: Unknown result type (might be due to invalid IL or missing references)
			//IL_064c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0651: Unknown result type (might be due to invalid IL or missing references)
			//IL_0652: Unknown result type (might be due to invalid IL or missing references)
			//IL_066d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0676: Unknown result type (might be due to invalid IL or missing references)
			//IL_06a5: Unknown result type (might be due to invalid IL or missing references)
			//IL_06aa: Unknown result type (might be due to invalid IL or missing references)
			//IL_06c0: Unknown result type (might be due to invalid IL or missing references)
			//IL_06c5: Unknown result type (might be due to invalid IL or missing references)
			//IL_06db: Unknown result type (might be due to invalid IL or missing references)
			//IL_06e0: Unknown result type (might be due to invalid IL or missing references)
			//IL_06e5: Unknown result type (might be due to invalid IL or missing references)
			//IL_06e6: Unknown result type (might be due to invalid IL or missing references)
			//IL_0701: Unknown result type (might be due to invalid IL or missing references)
			//IL_070a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0739: Unknown result type (might be due to invalid IL or missing references)
			//IL_073e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0754: Unknown result type (might be due to invalid IL or missing references)
			//IL_0759: Unknown result type (might be due to invalid IL or missing references)
			//IL_076f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0774: Unknown result type (might be due to invalid IL or missing references)
			//IL_0779: Unknown result type (might be due to invalid IL or missing references)
			//IL_077a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0795: Unknown result type (might be due to invalid IL or missing references)
			//IL_079e: Unknown result type (might be due to invalid IL or missing references)
			//IL_07cd: Unknown result type (might be due to invalid IL or missing references)
			//IL_07d2: 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_07ed: 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_0808: Unknown result type (might be due to invalid IL or missing references)
			//IL_080d: Unknown result type (might be due to invalid IL or missing references)
			//IL_080e: Unknown result type (might be due to invalid IL or missing references)
			itemDisplayRuleDict.Add("mdlCommandoDualies", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
			{
				new ItemDisplayRule
				{
					ruleType = (ItemDisplayRuleType)0,
					followerPrefab = base.ItemDisplayModel,
					childName = "Head",
					localPos = new Vector3(0.00373f, 0.18251f, 0.1307f),
					localAngles = new Vector3(356.662f, 1.95787f, 358.1002f),
					localScale = new Vector3(0.16f, 0.16f, 0.16f)
				}
			});
			itemDisplayRuleDict.Add("mdlHuntress", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
			{
				new ItemDisplayRule
				{
					ruleType = (ItemDisplayRuleType)0,
					followerPrefab = base.ItemDisplayModel,
					childName = "Head",
					localPos = new Vector3(0.00106f, 0.16048f, 0.07194f),
					localAngles = new Vector3(355.0983f, 5.07518f, 0.06199f),
					localScale = new Vector3(0.14f, 0.14f, 0.14f)
				}
			});
			itemDisplayRuleDict.Add("mdlToolbot", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
			{
				new ItemDisplayRule
				{
					ruleType = (ItemDisplayRuleType)0,
					followerPrefab = base.ItemDisplayModel,
					childName = "Head",
					localPos = new Vector3(0.44267f, 2.86875f, -0.89489f),
					localAngles = new Vector3(307.3764f, 185.3539f, 355.2917f),
					localScale = new Vector3(0.66148f, 0.7329f, 1f)
				}
			});
			itemDisplayRuleDict.Add("mdlEngi", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
			{
				new ItemDisplayRule
				{
					ruleType = (ItemDisplayRuleType)0,
					followerPrefab = base.ItemDisplayModel,
					childName = "HeadCenter",
					localPos = new Vector3(-0.00864f, -0.00226f, 0.08915f),
					localAngles = new Vector3(356.3204f, 354.9214f, 359.2408f),
					localScale = new Vector3(0.16128f, 0.16128f, 0.16128f)
				}
			});
			itemDisplayRuleDict.Add("mdlMage", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
			{
				new ItemDisplayRule
				{
					ruleType = (ItemDisplayRuleType)0,
					followerPrefab = base.ItemDisplayModel,
					childName = "Head",
					localPos = new Vector3(-0.00069f, 0.01666f, 0.08016f),
					localAngles = new Vector3(15.68266f, 7.53128f, 0.85813f),
					localScale = new Vector3(0.1f, 0.1f, 0.1f)
				}
			});
			itemDisplayRuleDict.Add("mdlMerc", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
			{
				new ItemDisplayRule
				{
					ruleType = (ItemDisplayRuleType)0,
					followerPrefab = base.ItemDisplayModel,
					childName = "Head",
					localPos = new Vector3(-0.00162f, 0.07753f, 0.12121f),
					localAngles = new Vector3(10.95928f, 356.7965f, 0.48696f),
					localScale = new Vector3(0.12f, 0.12f, 0.12f)
				}
			});
			itemDisplayRuleDict.Add("mdlTreebot", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
			{
				new ItemDisplayRule
				{
					ruleType = (ItemDisplayRuleType)0,
					followerPrefab = base.ItemDisplayModel,
					childName = "CalfBackR",
					localPos = new Vector3(-0.00362f, 0.64628f, -0.20254f),
					localAngles = new Vector3(307.4982f, 86.70875f, 271.2927f),
					localScale = new Vector3(0.2f, 0.2f, 0.2f)
				}
			});
			itemDisplayRuleDict.Add("mdlLoader", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
			{
				new ItemDisplayRule
				{
					ruleType = (ItemDisplayRuleType)0,
					followerPrefab = base.ItemDisplayModel,
					childName = "Head",
					localPos = new Vector3(-0.0026f, 0.04271f, 0.08011f),
					localAngles = new Vector3(9.05266f, 358.1694f, 2.71994f),
					localScale = new Vector3(0.13f, 0.13f, 0.13f)
				}
			});
			itemDisplayRuleDict.Add("mdlCroco", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
			{
				new ItemDisplayRule
				{
					ruleType = (ItemDisplayRuleType)0,
					followerPrefab = base.ItemDisplayModel,
					childName = "Head",
					localPos = new Vector3(-0.04091f, 0.49214f, 0.46709f),
					localAngles = new Vector3(16.75191f, 358.5439f, 358.2056f),
					localScale = new Vector3(2f, 2f, 2f)
				}
			});
			itemDisplayRuleDict.Add("mdlCaptain", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
			{
				new ItemDisplayRule
				{
					ruleType = (ItemDisplayRuleType)0,
					followerPrefab = base.ItemDisplayModel,
					childName = "Head",
					localPos = new Vector3(0.00116f, 0.02018f, 0.11301f),
					localAngles = new Vector3(10.43888f, 358.6753f, 1.22045f),
					localScale = new Vector3(0.1f, 0.1f, 0.1f)
				}
			});
			itemDisplayRuleDict.Add("mdlBandit2", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
			{
				new ItemDisplayRule
				{
					ruleType = (ItemDisplayRuleType)0,
					followerPrefab = base.ItemDisplayModel,
					childName = "Chest",
					localPos = new Vector3(-0.00349f, -0.11756f, -0.14204f),
					localAngles = new Vector3(42.05348f, 51.29253f, 235.9125f),
					localScale = new Vector3(0.1f, 0.1f, 0.1f)
				}
			});
			itemDisplayRuleDict.Add("mdlScav", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
			{
				new ItemDisplayRule
				{
					ruleType = (ItemDisplayRuleType)0,
					followerPrefab = base.ItemDisplayModel,
					childName = "Head",
					localPos = new Vector3(5.09172f, 4.10613f, -0.67357f),
					localAngles = new Vector3(300.3369f, 149.0084f, 208.0921f),
					localScale = new Vector3(2f, 2f, 2f)
				}
			});
			itemDisplayRuleDict.Add("mdlRailGunner", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
			{
				new ItemDisplayRule
				{
					ruleType = (ItemDisplayRuleType)0,
					followerPrefab = base.ItemDisplayModel,
					childName = "GunScope",
					localPos = new Vector3(-0.07483f, -0.15121f, 0.31329f),
					localAngles = new Vector3(352.7529f, 354.4491f, 358.4098f),
					localScale = new Vector3(0.05f, 0.05f, 0.05f)
				}
			});
			itemDisplayRuleDict.Add("mdlVoidSurvivor", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
			{
				new ItemDisplayRule
				{
					ruleType = (ItemDisplayRuleType)0,
					followerPrefab = base.ItemDisplayModel,
					childName = "Head",
					localPos = new Vector3(0.06568f, 0.16389f, 0.04438f),
					localAngles = new Vector3(298.6464f, 73.51062f, 357.4098f),
					localScale = new Vector3(0.15f, 0.15f, 0.15f)
				}
			});
		}
	}
	internal class VoidItemConsumed : SpikestripItemBase<VoidItemConsumed>
	{
		public override string ItemName => "Spent Cartridge";

		public override Type DependsOn => typeof(Voiditem);

		public override string ItemToken => "CARTRIDGECONSUMED";

		public override string ItemPickup => "He wanted to be an artist...";

		public override string ItemDescription => "He wanted to be an artist...";

		public override string ItemLore => null;

		public override ItemTier Tier => (ItemTier)5;

		public override ItemTag[] ItemTags => (ItemTag[])(object)new ItemTag[2]
		{
			(ItemTag)13,
			(ItemTag)12
		};

		public override Sprite ItemIconSprite => NoobBase.NoobAssets.LoadAsset<Sprite>("CartridgeConsumed.png");

		public override bool CanRemove => false;

		public void GenerateMethod()
		{
		}

		public override void AssignItemModels()
		{
		}

		public override void PopulateItemDisplayRules(ItemDisplayRuleDict itemDisplayRuleDict)
		{
		}
	}
	internal class ObligiatoryReference : SpikestripItemBase<ObligiatoryReference>
	{
		public class ReferenceBehavior : ItemBehavior
		{
			public class SyncDamageCount : INetMessage, ISerializableObject
			{
				private float NewDamageCount;

				private NetworkInstanceId GameObjectID;

				public SyncDamageCount()
				{
				}

				public SyncDamageCount(float newDamageCount, NetworkInstanceId gameObjectID)
				{
					//IL_0010: Unknown result type (might be due to invalid IL or missing references)
					//IL_0011: Unknown result type (might be due to invalid IL or missing references)
					NewDamageCount = newDamageCount;
					GameObjectID = gameObjectID;
				}

				public void Serialize(NetworkWriter writer)
				{
					//IL_0010: Unknown result type (might be due to invalid IL or missing references)
					writer.Write(NewDamageCount);
					writer.Write(GameObjectID);
				}

				public void Deserialize(NetworkReader reader)
				{
					//IL_000f: Unknown result type (might be due to invalid IL or missing references)
					//IL_0014: Unknown result type (might be due to invalid IL or missing references)
					NewDamageCount = reader.ReadSingle();
					GameObjectID = reader.ReadNetworkId();
				}

				public void OnReceived()
				{
					//IL_000e: Unknown result type (might be due to invalid IL or missing references)
					if (NetworkServer.active)
					{
						return;
					}
					GameObject val = Util.FindNetworkObject(GameObjectID);
					if (Object.op_Implicit((Object)(object)val))
					{
						ReferenceBehavior component = val.GetComponent<ReferenceBehavior>();
						if (Object.op_Implicit((Object)(object)component))
						{
							component.damageCount = NewDamageCount;
						}
					}
				}
			}

			public static float rechargeFraction = 0.1f;

			public float damageCount;

			private Image image;

			public float damageThreshold => 75f * Mathf.Pow(0.85f, (float)(base.stack - 1));

			public float NetworkDamageCount
			{
				get
				{
					return damageCount;
				}
				set
				{
					//IL_001c: Unknown result type (might be due to invalid IL or missing references)
					damageCount = value;
					NetworkIdentity component = ((Component)this).GetComponent<NetworkIdentity>();
					if (Object.op_Implicit((Object)(object)component))
					{
						NetMessageExtensions.Send((INetMessage)(object)new SyncDamageCount(value, component.netId), (NetworkDestination)1);
					}
				}
			}

			public void AddNetworkDamage(float damage)
			{
				if (NetworkServer.active && !(base.body.healthComponent.shield >= base.body.healthComponent.fullShield))
				{
					float num = damageCount + damage;
					if (num >= damageThreshold)
					{
						num -= damageThreshold;
						base.body.healthComponent.RechargeShield(base.body.healthComponent.fullCombinedHealth * rechargeFraction);
					}
					NetworkDamageCount = num;
				}
			}

			public void UpdateBar(HealthBar healthbar)
			{
				//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_00ed: 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)
				Scene scene = ((Component)healthbar.barAllocator.containerTransform).gameObject.scene;
				if (!((Scene)(ref scene)).IsValid())
				{
					return;
				}
				if (damageCount <= 0f)
				{
					if (Object.op_Implicit((Object)(object)image))
					{
						if (Application.isPlaying)
						{
							Object.Destroy((Object)(object)((Component)image).gameObject);
						}
						else
						{
							Object.DestroyImmediate((Object)(object)((Component)image).gameObject);
						}
						image = null;
					}
				}
				else if (!Object.op_Implicit((Object)(object)image))
				{
					image = Object.Instantiate<GameObject>(healthbar.barAllocator.elementPrefab, (Transform)(object)healthbar.barAllocator.containerTransform).GetComponent<Image>();
					GameObject gameObject = ((Component)image).gameObject;
					if (healthbar.barAllocator.markElementsUnsavable)
					{
						((Object)gameObject).hideFlags = (HideFlags)(((Object)gameObject).hideFlags | 0x14);
					}
					gameObject.SetActive(true);
					healthbar.barAllocator.AllocateElements(0);
				}
			}

			public void ApplyBar(HealthBar healthBar)
			{
				//IL_0035: Unknown result type (might be due to invalid IL or missing references)
				//IL_0062: Unknown result type (might be due to invalid IL or missing references)
				//IL_0067: 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_00a5: Unknown result type (might be due to invalid IL or missing references)
				//IL_008a: Unknown result type (might be due to invalid IL or missing references)
				//IL_00b0: Unknown result type (might be due to invalid IL or missing references)
				//IL_00b6: 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_0103: Unknown result type (might be due to invalid IL or missing references)
				//IL_011c: Unknown result type (might be due to invalid IL or missing references)
				//IL_012e: Expected O, but got Unknown
				if (Object.op_Implicit((Object)(object)image) && Object.op_Implicit((Object)(object)healthBar.source))
				{
					image.type = healthBar.style.shieldBarStyle.imageType;
					image.sprite = healthBar.style.shieldBarStyle.sprite;
					HealthBarValues healthBarValues = healthBar.source.GetHealthBarValues();
					((Graphic)image).color = (healthBarValues.hasVoidShields ? SpikestripContentBase.ColorRGB(127f, 88f, 140f, 1f) : SpikestripContentBase.ColorRGB(88f, 113f, 140f, 1f));
					float num = healthBarValues.healthFraction + healthBarValues.shieldFraction;
					float num2 = damageCount / damageThreshold;
					float num3 = (1f - healthBarValues.curseFraction) / healthBar.source.fullCombinedHealth * healthBar.source.fullCombinedHealth;
					float xMax = Mathf.Min(num + num3 * rechargeFraction * num2, 1f - healthBarValues.curseFraction);
					SetRectPosition((RectTransform)((Component)image).transform, num, xMax, 1f);
				}
			}

			public static void SetRectPosition(RectTransform rectTransform, float xMin, float xMax, float sizeDelta)
			{
				//IL_0008: Unknown result type (might be due to invalid IL or missing references)
				//IL_001a: 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_0046: Unknown result type (might be due to invalid IL or missing references)
				rectTransform.anchorMin = new Vector2(xMin, 0f);
				rectTransform.anchorMax = new Vector2(xMax, 1f);
				rectTransform.anchoredPosition = Vector2.zero;
				rectTransform.sizeDelta = new Vector2(sizeDelta * 0.5f + 1f, sizeDelta + 1f);
			}

			public void OnDestroy()
			{
				if (Object.op_Implicit((Object)(object)image))
				{
					if (Application.isPlaying)
					{
						Object.Destroy((Object)(object)((Component)image).gameObject);
					}
					else
					{
						Object.DestroyImmediate((Object)(object)((Component)image).gameObject);
					}
				}
			}
		}

		public static float Shield = 0.4f;

		public override string ItemName => "Imperfect Construct";

		public override string ItemToken => "SHIELDREMOVAL";

		public override string ItemPickup => "Recharge shield by attacking enemies... <color=#FF7F7F>But replace a potion of your health with shield that cannot recharge naturally.</style>";

		public override string ItemDescription => "Gain a <style=cIsHealing>Shield</style> that replaces <style=cIsHealing>40%</style> <style=cStack>(-10% per stack)</style> of your <style=cIsHealing>Max Health</style>. <style=cIsHealing>Recharge 10% of your shield</style> after dealing a total of <style=cIsDamage>7500%</style> <style=cStack>(-15% per stack)</style> of base damage. <style=cIsUtility>Natural shield regeneration is disabled.</style> ";

		public override string ItemLore => "<style=cMono>\n========================================\n====   MyBabel Machine Translator   ====\n====     [Version 12.45.1.009 ]   ======\n========================================\nTraining… <100000000 cycles>\nTraining… <100000000 cycles>\nTraining… <100000000 cycles>\nUnknown Language Detected\nDisplay partial result? Y/N\nY\n================================</style> \nHollow. \n\n< Disease > spreads. \n\nIt's consuming me. \n\nMy Insides. \n\nHollow. \n\nI fear that I do not have enough time left. \n\nI need to be brave. \n\nI need to be a hero. \n\nThey said we (Drifters) would be heroes. \n\nYet... \n\n... \n\n... \n\n<style=cWorldEvent>The dog</style> leads me. \n\nShould I follow?  \n\n <style=cMono> END OF TRANSLATION </style>";

		public override ItemTag[] ItemTags => (ItemTag[])(object)new ItemTag[2]
		{
			(ItemTag)3,
			(ItemTag)1
		};

		public override ItemTier Tier => (ItemTier)3;

		public override Type ItemBehaviour => typeof(ReferenceBehavior);

		public override bool ServerOnlyBehaviour => false;

		public override Sprite ItemIconSprite => NoobBase.NoobAssets.LoadAsset<Sprite>("ConstructIcon.png");

		public override void Init()
		{
			//IL_0015: Unknown result type (might be due to invalid IL or missing references)
			//IL_001f: Expected O, but got Unknown
			//IL_0027: Unknown result type (might be due to invalid IL or missing references)
			//IL_0031: Expected O, but got Unknown
			//IL_0039: Unknown result type (might be due to invalid IL or missing references)
			//IL_0043: Expected O, but got Unknown
			//IL_004b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0055: Expected O, but got Unknown
			base.Init();
			NetworkingAPI.RegisterMessageType<ReferenceBehavior.SyncDamageCount>();
			GlobalEventManager.OnHitEnemy += new hook_OnHitEnemy(GlobalEventManager_OnHitEnemy);
			RecalculateStatsAPI.GetStatCoefficients += new StatHookEventHandler(AddMaxShield);
			HealthComponent.ServerFixedUpdate += new hook_ServerFixedUpdate(HealthComponent_ServerFixedUpdate);
			HealthBar.UpdateHealthbar += new hook_UpdateHealthbar(HealthBar_UpdateHealthbar);
		}

		private void HealthComponent_ServerFixedUpdate(orig_ServerFixedUpdate orig, HealthComponent self)
		{
			float? num = null;
			Inventory inventory = self.body.inventory;
			if (Object.op_Implicit((Object)(object)inventory) && inventory.GetItemCount(base.ItemDef) > 0)
			{
				num = self.shield;
				self.shield = self.body.maxShield;
			}
			orig.Invoke(self);
			if (num.HasValue)
			{
				self.shield = num.Value;
			}
		}

		private void GlobalEventManager_OnHitEnemy(orig_OnHitEnemy orig, GlobalEventManager self, DamageInfo damageInfo, GameObject victim)
		{
			orig.Invoke(self, damageInfo, victim);
			if (!(damageInfo.procCoefficient <= 0f) && !damageInfo.rejected && NetworkServer.active && Object.op_Implicit((Object)(object)damageInfo.attacker))
			{
				ReferenceBehavior component = damageInfo.attacker.GetComponent<ReferenceBehavior>();
				CharacterBody component2 = damageInfo.attacker.GetComponent<CharacterBody>();
				if (Object.op_Implicit((Object)(object)component) && Object.op_Implicit((Object)(object)component2))
				{
					component.AddNetworkDamage(damageInfo.damage / component2.damage);
				}
			}
		}

		private void AddMaxShield(CharacterBody sender, StatHookEventArgs args)
		{
			int num = (Object.op_Implicit((Object)(object)sender.inventory) ? sender.inventory.GetItemCount(base.ItemDef) : 0);
			if (num > 0)
			{
				float num2 = 0.4f * Mathf.Pow(0.9f, (float)(num - 1));
				args.baseShieldAdd += sender.maxHealth * num2;
				args.baseHealthAdd -= sender.maxHealth * num2;
			}
		}

		private void HealthBar_UpdateHealthbar(orig_UpdateHealthbar orig, HealthBar self, float deltaTime)
		{
			ReferenceBehavior referenceBehavior = null;
			if (Object.op_Implicit((Object)(object)self.source))
			{
				referenceBehavior = ((Component)self.source).GetComponent<ReferenceBehavior>();
				if (Object.op_Implicit((Object)(object)referenceBehavior))
				{
					referenceBehavior.UpdateBar(self);
				}
			}
			orig.Invoke(self, deltaTime);
			if (Object.op_Implicit((Object)(object)referenceBehavior))
			{
				referenceBehavior.ApplyBar(self);
			}
		}

		public override void AssignItemModels()
		{
			//IL_0038: Unknown result type (might be due to invalid IL or missing references)
			GameObject val = NoobBase.NoobAssets.LoadAsset<GameObject>("construct.prefab");
			base.ItemPickupModel = SpikestripContentBase.UpdateGameObjectShader(val, true);
			base.ItemPickupModel.transform.localScale = new Vector3(0.6f, 0.6f, 0.6f);
			base.ItemDisplayModel = SpikestripContentBase.EmptyPrefab("DisplayDrone", false);
			ItemDisplay val2 = base.ItemDisplayModel.AddComponent<ItemDisplay>();
			val2.rendererInfos = Array.Empty<RendererInfo>();
			ItemFollower val3 = base.ItemDisplayModel.AddComponent<ItemFollower>();
			val3.targetObject = base.ItemDisplayModel;
			val3.followerPrefab = base.ItemPickupModel;
			val3.distanceDampTime = 0.3f;
			val3.distanceMaxSpeed = 200f;
		}

		public override void PopulateItemDisplayRules(ItemDisplayRuleDict itemDisplayRuleDict)
		{
			//IL_0011: Unknown result type (might be due to invalid IL or missing references)
			//IL_001a: 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_004e: Unknown result type (might be due to invalid IL or missing references)
			//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_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_0089: Unknown result type (might be due to invalid IL or missing references)
			//IL_008a: 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_00ae: 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_00e2: Unknown result type (might be due to invalid IL or missing references)
			//IL_00f8: Unknown result type (might be due to invalid IL or missing references)
			//IL_00fd: 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_0118: 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_011e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0139: 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_0171: Unknown result type (might be due to invalid IL or missing references)
			//IL_0176: Unknown result type (might be due to invalid IL or missing references)
			//IL_018c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0191: Unknown result type (might be due to invalid IL or missing references)
			//IL_01a7: Unknown result type (might be due to invalid IL or missing references)
			//IL_01ac: Unknown result type (might be due to invalid IL or missing references)
			//IL_01b1: 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_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_0205: Unknown result type (might be due to invalid IL or missing references)
			//IL_020a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0220: Unknown result type (might be due to invalid IL or missing references)
			//IL_0225: Unknown result type (might be due to invalid IL or missing references)
			//IL_023b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0240: 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_0246: Unknown result type (might be due to invalid IL or missing references)
			//IL_0261: Unknown result type (might be due to invalid IL or missing references)
			//IL_026a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0299: Unknown result type (might be due to invalid IL or missing references)
			//IL_029e: Unknown result type (might be due to invalid IL or missing references)
			//IL_02b4: Unknown result type (might be due to invalid IL or missing references)
			//IL_02b9: Unknown result type (might be due to invalid IL or missing references)
			//IL_02cf: Unknown result type (might be due to invalid IL or missing references)
			//IL_02d4: Unknown result type (might be due to invalid IL or missing references)
			//IL_02d9: Unknown result type (might be due to invalid IL or missing references)
			//IL_02da: Unknown result type (might be due to invalid IL or missing references)
			//IL_02f5: 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_032d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0332: 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_034d: 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_036d: Unknown result type (might be due to invalid IL or missing references)
			//IL_036e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0389: Unknown result type (might be due to invalid IL or missing references)
			//IL_0392: Unknown result type (might be due to invalid IL or missing references)
			//IL_03c1: Unknown result type (might be due to invalid IL or missing references)
			//IL_03c6: Unknown result type (might be due to invalid IL or missing references)
			//IL_03dc: Unknown result type (might be due to invalid IL or missing references)
			//IL_03e1: Unknown result type (might be due to invalid IL or missing references)
			//IL_03f7: Unknown result type (might be due to invalid IL or missing references)
			//IL_03fc: Unknown result type (might be due to invalid IL or missing references)
			//IL_0401: Unknown result type (might be due to invalid IL or missing references)
			//IL_0402: Unknown result type (might be due to invalid IL or missing references)
			//IL_041d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0426: Unknown result type (might be due to invalid IL or missing references)
			//IL_0455: Unknown result type (might be due to invalid IL or missing references)
			//IL_045a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0470: Unknown result type (might be due to invalid IL or missing references)
			//IL_0475: Unknown result type (might be due to invalid IL or missing references)
			//IL_048b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0490: Unknown result type (might be due to invalid IL or missing references)
			//IL_0495: Unknown result type (might be due to invalid IL or missing references)
			//IL_0496: Unknown result type (might be due to invalid IL or missing references)
			//IL_04b1: Unknown result type (might be due to invalid IL or missing references)
			//IL_04ba: Unknown result type (might be due to invalid IL or missing references)
			//IL_04e9: Unknown result type (might be due to invalid IL or missing references)
			//IL_04ee: Unknown result type (might be due to invalid IL or missing references)
			//IL_0504: Unknown result type (might be due to invalid IL or missing references)
			//IL_0509: 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_0524: Unknown result type (might be due to invalid IL or missing references)
			//IL_0529: Unknown result type (might be due to invalid IL or missing references)
			//IL_052a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0545: Unknown result type (might be due to invalid IL or missing references)
			//IL_054e: Unknown result type (might be due to invalid IL or missing references)
			//IL_057d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0582: Unknown result type (might be due to invalid IL or missing references)
			//IL_0598: Unknown result type (might be due to invalid IL or missing references)
			//IL_059d: Unknown result type (might be due to invalid IL or missing references)
			//IL_05b3: Unknown result type (might be due to invalid IL or missing references)
			//IL_05b8: Unknown result type (might be due to invalid IL or missing references)
			//IL_05bd: Unknown result type (might be due to invalid IL or missing references)
			//IL_05be: 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_05e2: Unknown result type (might be due to invalid IL or missing references)
			//IL_0611: Unknown result type (might be due to invalid IL or missing references)
			//IL_0616: Unknown result type (might be due to invalid IL or missing references)
			//IL_062c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0631: Unknown result type (might be due to invalid IL or missing references)
			//IL_0647: Unknown result type (might be due to invalid IL or missing references)
			//IL_064c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0651: Unknown result type (might be due to invalid IL or missing references)
			//IL_0652: Unknown result type (might be due to invalid IL or missing references)
			//IL_066d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0676: Unknown result type (might be due to invalid IL or missing references)
			//IL_06a5: Unknown result type (might be due to invalid IL or missing references)
			//IL_06aa: Unknown result type (might be due to invalid IL or missing references)
			//IL_06c0: Unknown result type (might be due to invalid IL or missing references)
			//IL_06c5: Unknown result type (might be due to invalid IL or missing references)
			//IL_06db: Unknown result type (might be due to invalid IL or missing references)
			//IL_06e0: Unknown result type (might be due to invalid IL or missing references)
			//IL_06e5: Unknown result type (might be due to invalid IL or missing references)
			//IL_06e6: Unknown result type (might be due to invalid IL or missing references)
			//IL_0701: Unknown result type (might be due to invalid IL or missing references)
			//IL_070a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0739: Unknown result type (might be due to invalid IL or missing references)
			//IL_073e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0754: Unknown result type (might be due to invalid IL or missing references)
			//IL_0759: Unknown result type (might be due to invalid IL or missing references)
			//IL_076f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0774: Unknown result type (might be due to invalid IL or missing references)
			//IL_0779: Unknown result type (might be due to invalid IL or missing references)
			//IL_077a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0795: Unknown result type (might be due to invalid IL or missing references)
			//IL_079e: Unknown result type (might be due to invalid IL or missing references)
			//IL_07cd: Unknown result type (might be due to invalid IL or missing references)
			//IL_07d2: 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_07ed: 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_0808: Unknown result type (might be due to invalid IL or missing references)
			//IL_080d: Unknown result type (might be due to invalid IL or missing references)
			//IL_080e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0829: Unknown result type (might be due to invalid IL or missing references)
			//IL_084c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0851: Unknown result type (might be due to invalid IL or missing references)
			//IL_0867: Unknown result type (might be due to invalid IL or missing references)
			//IL_086c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0882: Unknown result type (might be due to invalid IL or missing references)
			//IL_0887: Unknown result type (might be due to invalid IL or missing references)
			//IL_088c: Unknown result type (might be due to invalid IL or missing references)
			//IL_088d: Unknown result type (might be due to invalid IL or missing references)
			itemDisplayRuleDict.Add("mdlCommandoDualies", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
			{
				new ItemDisplayRule
				{
					ruleType = (ItemDisplayRuleType)0,
					followerPrefab = base.ItemDisplayModel,
					childName = "Base",
					localPos = new Vector3(0.04961f, -0.38856f, -1.25984f),
					localAngles = new Vector3(270f, 0f, 0f),
					localScale = new Vector3(0.1f, 0.1f, 0.1f)
				}
			});
			itemDisplayRuleDict.Add("mdlHuntress", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
			{
				new ItemDisplayRule
				{
					ruleType = (ItemDisplayRuleType)0,
					followerPrefab = base.ItemDisplayModel,
					childName = "Base",
					localPos = new Vector3(0.04961f, -0.38856f, -1.25984f),
					localAngles = new Vector3(270f, 0f, 0f),
					localScale = new Vector3(0.1f, 0.1f, 0.1f)
				}
			});
			itemDisplayRuleDict.Add("mdlToolbot", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
			{
				new ItemDisplayRule
				{
					ruleType = (ItemDisplayRuleType)0,
					followerPrefab = base.ItemDisplayModel,
					childName = "Base",
					localPos = new Vector3(0.32543f, -1.17691f, 10.97546f),
					localAngles = new Vector3(280.542f, 269.3459f, 270.4126f),
					localScale = new Vector3(0.1f, 0.1f, 0.1f)
				}
			});
			itemDisplayRuleDict.Add("mdlEngi", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
			{
				new ItemDisplayRule
				{
					ruleType = (ItemDisplayRuleType)0,
					followerPrefab = base.ItemDisplayModel,
					childName = "Base",
					localPos = new Vector3(0.04961f, -0.38856f, -1.25984f),
					localAngles = new Vector3(270f, 0f, 0f),
					localScale = new Vector3(0.1f, 0.1f, 0.1f)
				}
			});
			itemDisplayRuleDict.Add("mdlMage", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
			{
				new ItemDisplayRule
				{
					ruleType = (ItemDisplayRuleType)0,
					followerPrefab = base.ItemDisplayModel,
					childName = "Base",
					localPos = new Vector3(0.04961f, -0.38856f, -1.25984f),
					localAngles = new Vector3(270f, 0f, 0f),
					localScale = new Vector3(0.1f, 0.1f, 0.1f)
				}
			});
			itemDisplayRuleDict.Add("mdlMerc", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
			{
				new ItemDisplayRule
				{
					ruleType = (ItemDisplayRuleType)0,
					followerPrefab = base.ItemDisplayModel,
					childName = "Base",
					localPos = new Vector3(0.04961f, -0.38856f, -1.25984f),
					localAngles = new Vector3(270f, 0f, 0f),
					localScale = new Vector3(0.1f, 0.1f, 0.1f)
				}
			});
			itemDisplayRuleDict.Add("mdlTreebot", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
			{
				new ItemDisplayRule
				{
					ruleType = (ItemDisplayRuleType)0,
					followerPrefab = base.ItemDisplayModel,
					childName = "Base",
					localPos = new Vector3(0.08086f, -1.0055f, -3.60588f),
					localAngles = new Vector3(270f, 0f, 0f),
					localScale = new Vector3(0.15f, 0.15f, 0.15f)
				}
			});
			itemDisplayRuleDict.Add("mdlLoader", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
			{
				new ItemDisplayRule
				{
					ruleType = (ItemDisplayRuleType)0,
					followerPrefab = base.ItemDisplayModel,
					childName = "Base",
					localPos = new Vector3(0.04961f, -0.38856f, -1.25984f),
					localAngles = new Vector3(270f, 0f, 0f),
					localScale = new Vector3(0.1f, 0.1f, 0.1f)
				}
			});
			itemDisplayRuleDict.Add("mdlCroco", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
			{
				new ItemDisplayRule
				{
					ruleType = (ItemDisplayRuleType)0,
					followerPrefab = base.ItemDisplayModel,
					childName = "Base",
					localPos = new Vector3(0.31207f, -0.3915f, 12.23377f),
					localAngles = new Vector3(88.46455f, 204.9254f, 204.9175f),
					localScale = new Vector3(0.1f, 0.1f, 0.1f)
				}
			});
			itemDisplayRuleDict.Add("mdlCaptain", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
			{
				new ItemDisplayRule
				{
					ruleType = (ItemDisplayRuleType)0,
					followerPrefab = base.ItemDisplayModel,
					childName = "Base",
					localPos = new Vector3(0.04961f, -0.48966f, -1.39771f),
					localAngles = new Vector3(270f, 0f, 0f),
					localScale = new Vector3(0.1f, 0.1f, 0.1f)
				}
			});
			itemDisplayRuleDict.Add("mdlBandit2", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
			{
				new ItemDisplayRule
				{
					ruleType = (ItemDisplayRuleType)0,
					followerPrefab = base.ItemDisplayModel,
					childName = "Base",
					localPos = new Vector3(0.40291f, 0.10195f, -1.26003f),
					localAngles = new Vector3(343.5631f, 269.9999f, 90.00006f),
					localScale = new Vector3(0.1f, 0.1f, 0.1f)
				}
			});
			itemDisplayRuleDict.Add("mdlRailGunner", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
			{
				new ItemDisplayRule
				{
					ruleType = (ItemDisplayRuleType)0,
					followerPrefab = base.ItemDisplayModel,
					childName = "Base",
					localPos = new Vector3(0.04961f, -0.38856f, -1.25984f),
					localAngles = new Vector3(270f, 0f, 0f),
					localScale = new Vector3(0.1f, 0.1f, 0.1f)
				}
			});
			itemDisplayRuleDict.Add("mdlVoidSurvivor", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
			{
				new ItemDisplayRule
				{
					ruleType = (ItemDisplayRuleType)0,
					followerPrefab = base.ItemDisplayModel,
					childName = "Base",
					localPos = new Vector3(-0.13028f, 0.7203f, 1.01341f),
					localAngles = new Vector3(60.33562f, 57.1818f, 50.21627f),
					localScale = new Vector3(0.1f, 0.1f, 0.1f)
				}
			});
			itemDisplayRuleDict.Add("mdlScav", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
			{
				new ItemDisplayRule
				{
					ruleType = (ItemDisplayRuleType)0,
					followerPrefab = base.ItemDisplayModel,
					childName = "Base",
					localPos = new Vector3(0.05534f, -6.03361f, 14.71212f),
					localAngles = new Vector3(87.22279f, 232.1215f, 230.3829f),
					localScale = new Vector3(0.3f, 0.3f, 0.3f)
				}
			});
			itemDisplayRuleDict.Add("mdlEngiTurret", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
			{
				new ItemDisplayRule
				{
					childName = "Base",
					localPos = new Vector3(1.60967f, 4.90143f, 1.03799f),
					localAngles = new Vector3(359.6393f, 12.06022f, 359.9229f),
					localScale = new Vector3(0.1f, 0.1f, 0.1f)
				}
			});
		}
	}
	internal class Voiditem : SpikestripItemBase<Voiditem>
	{
		public class CartridgeBehavior : ItemBehavior
		{
			public float Counter;

			public void CounterBehavior()
			{
				//IL_0007: Unknown result type (might be due to invalid IL or missing references)
				//IL_000c: Unknown result type (might be due to invalid IL or missing references)
				//IL_00b1: Unknown result type (might be due to invalid IL or missing references)
				//IL_00b6: 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_00c4: Expected O, but got Unknown
				//IL_004d: Unknown result type (might be due to invalid IL or missing references)
				//IL_0052: Unknown result type (might be due to invalid IL or missing references)
				//IL_0057: Unknown result type (might be due to invalid IL or missing references)
				//IL_0145: Unknown result type (might be due to invalid IL or missing references)
				//IL_0154: Unknown result type (might be due to invalid IL or missing references)
				//IL_0085: Unknown result type (might be due to invalid IL or missing references)
				//IL_008a: Unknown result type (might be due to invalid IL or missing references)
				//IL_008b: Unknown result type (might be due to invalid IL or missing references)
				//IL_0098: Expected O, but got Unknown
				//IL_0078: Unknown result type (might be due to invalid IL or missing references)
				Vector3 corePosition = base.body.corePosition;
				if (Util.CheckRoll(10f, base.body.master))
				{
					base.body.inventory.GiveItem(((SpikestripItemBase<BLESSING>)SpikestripContentBase<BLESSING>.instance).ItemDef, 1);
					PickupIndex val = PickupCatalog.FindPickupIndex(((SpikestripItemBase<BLESSING>)SpikestripContentBase<BLESSING>.instance).ItemDef.itemIndex);
					if (Object.op_Implicit((Object)(object)base.body.master))
					{
						GenericPickupController.SendPickupMessage(base.body.master, val);
					}
					EffectManager.SpawnEffect(Blessed, new EffectData
					{
						origin = corePosition
					}, true);
				}
				Counter += 1f;
				EffectManager.SpawnEffect(woolieEffect, new EffectData
				{
					origin = corePosition
				}, true);
				Util.PlaySound("Play_UI_podSteamBurst", ((Component)this).gameObject);
				if (Counter >= 10f)
				{
					Counter = 0f;
					base.body.inventory.RemoveItem(((SpikestripItemBase<Voiditem>)SpikestripContentBase<Voiditem>.instance).ItemDef, 1);
					base.body.inventory.GiveItem(((SpikestripItemBase<VoidItemConsumed>)SpikestripContentBase<VoidItemConsumed>.instance).ItemDef, 1);
					CharacterMasterNotificationQueue.PushItemTransformNotification(base.body.master, ((SpikestripItemBase<Voiditem>)SpikestripContentBase<Voiditem>.instance).ItemDef.itemIndex, ((SpikestripItemBase<VoidItemConsumed>)SpikestripContentBase<VoidItemConsumed>.instance).ItemDef.itemIndex, (TransformationType)0);
				}
			}
		}

		public static GameObject woolieEffect;

		public static CharacterBody Body;

		public BuffDef ticktick;

		public static GameObject Blessed;

		public override string ItemName => "Abyssal Cartridge";

		public override string ItemToken => "AbyssalMedkit";

		public override string ItemPickup => "Cleanse a small amount of debuffs before breaking. Each Debuff has a small chance to give a Stat up buff";

		public override string ItemDescription => "<style=cIsUtility>Cleanse 10</style> debuffs before breaking. Each debuff has a 10% chance to give you a <style=cIsHealing>Blessing</style>. <style=cIsUtility>Each blessing gives a permanent 5% stat up.</style> <style=cIsVoid>Corrupts all Medkits</style>.";

		public override string ItemLore => "The brain. A piece of the spine. A Couple of organs. \n\n Wrap it in skin and flesh. Add Drugs to remove the pain. \n\n ... \n\n I'm Sorry Samuel, I really am. \n\n <style=cEvent>I wont forget you, just like all the others</style>";

		public override ItemTier Tier => (ItemTier)6;

		public override Sprite ItemIconSprite => NoobBase.NoobAssets.LoadAsset<Sprite>("CartridgeIcon.png");

		public override bool IsEnabled => true;

		public override ItemDef[] ItemsToCorrupt => (ItemDef[])(object)new ItemDef[1] { SpikestripContentBase.LegacyLoad<ItemDef>("ItemDefs/Medkit") };

		public override bool ServerOnlyBehaviour => true;

		public override Type ItemBehaviour => typeof(CartridgeBehavior);

		public override void AssignItemModels()
		{
			GameObject val = NoobBase.NoobAssets.LoadAsset<GameObject>("Cartridge.prefab");
			base.ItemPickupModel = SpikestripContentBase.UpdateGameObjectShader(val, true);
			base.ItemDisplayModel = PrefabAPI.InstantiateClone(val, "CartDisplay", false);
			ItemDisplay val2 = base.ItemDisplayModel.AddComponent<ItemDisplay>();
			val2.rendererInfos = SpikestripContentBase.GenerateRendererInfos(base.ItemDisplayModel, false);
			base.ItemDisplayModel = SpikestripContentBase.UpdateGameObjectShader(base.ItemDisplayModel, true);
		}

		public override void Init()
		{
			//IL_000f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0019: Expected O, but got Unknown
			//IL_0021: Unknown result type (might be due to invalid IL or missing references)
			//IL_002b: Expected O, but got Unknown
			//IL_00d7: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e1: Expected O, but got Unknown
			//IL_015e: Unknown result type (might be due to invalid IL or missing references)
			//IL_01e1: Unknown result type (might be due to invalid IL or missing references)
			//IL_01eb: Expected O, but got Unknown
			base.Init();
			CharacterBody.AddTimedBuff_BuffDef_float += new hook_AddTimedBuff_BuffDef_float(CharacterBody_AddTimedBuff_BuffDef_float);
			DotController.InflictDot_refInflictDotInfo += new hook_InflictDot_refInflictDotInfo(DotController_InflictDot_refInflictDotInfo);
			ticktick = ScriptableObject.CreateInstance<BuffDef>();
			ticktick.canStack = true;
			SpikestripContentBase.buffDefContent.Add(ticktick);
			woolieEffect = NoobBase.NoobAssets.LoadAsset<GameObject>("CartridgeEffect.prefab");
			woolieEffect.AddComponent<EffectComponent>();
			woolieEffect.AddComponent<DestroyOnTimer>();
			EffectComponent component = woolieEffect.GetComponent<EffectComponent>();
			DestroyOnTimer component2 = woolieEffect.GetComponent<DestroyOnTimer>();
			((Behaviour)component2).enabled = true;
			component2.duration = 4f;
			ParticleSystemRenderer component3 = woolieEffect.GetComponent<ParticleSystemRenderer>();
			RendererSetMaterialsExtension.SetSharedMaterials((Renderer)(object)component3, (Material[])(object)new Material[1] { SpikestripContentBase.AddressablesLoad<Material>("40c323c18bdbce445a02361e3c26cedf") }, 1);
			SpikestripContentBase.effectDefContent.Add(new EffectDef(woolieEffect));
			Blessed = PrefabAPI.InstantiateClone(SpikestripContentBase.AddressablesLoad<GameObject>("732a7bd18ca8d9e4ca6019c217e6b694"), "Blessing");
			SpikestripContentBase.Destroy((Object)(object)((Component)Blessed.transform.Find("PP")).gameObject);
			SpikestripContentBase.Destroy((Object)(object)((Component)Blessed.transform.Find("TextCamScaler")).gameObject);
			Light componentInChildren = ((Component)Blessed.transform).GetComponentInChildren<Light>();
			componentInChildren.color = SpikestripContentBase.ColorRGB(216f, 0f, 255f, 1f);
			ParticleSystemRenderer component4 = ((Component)Blessed.transform.Find("Big Feathers")).GetComponent<ParticleSystemRenderer>();
			RendererSetMaterialsExtension.SetSharedMaterials((Renderer)(object)component4, (Material[])(object)new Material[1] { SpikestripContentBase.AddressablesLoad<Material>("7eee3c438f4dd364c97a6118a6dafda9") }, 1);
			SkinnedMeshRenderer component5 = ((Component)Blessed.transform.Find("WingEffect/HippoEffectWingsMesh")).GetComponent<SkinnedMeshRenderer>();
			RendererSetMaterialsExtension.SetSharedMaterials((Renderer)(object)component5, (Material[])(object)new Material[1] { SpikestripContentBase.AddressablesLoad<Material>("420aca1cbdc52ed45a8e01255b66f01f") }, 1);
			SpikestripContentBase.effectDefContent.Add(new EffectDef(Blessed));
		}

		private void CharacterBody_AddTimedBuff_BuffDef_float(orig_AddTimedBuff_BuffDef_float orig, CharacterBody self, BuffDef buffDef, float duration)
		{
			if (Object.op_Implicit((Object)(object)buffDef))
			{
				Body = self;
				if (buffDef.isDebuff)
				{
					CartridgeBehavior component = ((Component)self).GetComponent<CartridgeBehavior>();
					if (Object.op_Implicit((Object)(object)component))
					{
						component.CounterBehavior();
						return;
					}
				}
			}
			orig.Invoke(self, buffDef, duration);
		}

		private void DotController_InflictDot_refInflictDotInfo(orig_InflictDot_refInflictDotInfo orig, ref InflictDotInfo inflictDotInfo)
		{
			CharacterBody val = (Object.op_Implicit((Object)(object)inflictDotInfo.victimObject) ? inflictDotInfo.victimObject.GetComponent<CharacterBody>() : null);
			if (Object.op_Implicit((Object)(object)val))
			{
				CartridgeBehavior component = ((Component)val).GetComponent<CartridgeBehavior>();
				if (Object.op_Implicit((Object)(object)component))
				{
					component.CounterBehavior();
					return;
				}
			}
			orig.Invoke(ref inflictDotInfo);
		}

		public override void PopulateItemDisplayRules(ItemDisplayRuleDict itemDisplayRuleDict)
		{
			//IL_0011: Unknown result type (might be due to invalid IL or missing references)
			//IL_001a: 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_004e: Unknown result type (might be due to invalid IL or missing references)
			//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_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_0089: Unknown result type (might be due to invalid IL or missing references)
			//IL_008a: 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_00ae: 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_00e2: Unknown result type (might be due to invalid IL or missing references)
			//IL_00f8: Unknown result type (might be due to invalid IL or missing references)
			//IL_00fd: 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_0118: 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_011e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0139: 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_0171: Unknown result type (might be due to invalid IL or missing references)
			//IL_0176: Unknown result type (might be due to invalid IL or missing references)
			//IL_018c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0191: Unknown result type (might be due to invalid IL or missing references)
			//IL_01a7: Unknown result type (might be due to invalid IL or missing references)
			//IL_01ac: Unknown result type (might be due to invalid IL or missing references)
			//IL_01b1: 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_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_0205: Unknown result type (might be due to invalid IL or missing references)
			//IL_020a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0220: Unknown result type (might be due to invalid IL or missing references)
			//IL_0225: Unknown result type (might be due to invalid IL or missing references)
			//IL_023b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0240: 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_0246: Unknown result type (might be due to invalid IL or missing references)
			//IL_0261: Unknown result type (might be due to invalid IL or missing references)
			//IL_026a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0299: Unknown result type (might be due to invalid IL or missing references)
			//IL_029e: Unknown result type (might be due to invalid IL or missing references)
			//IL_02b4: Unknown result type (might be due to invalid IL or missing references)
			//IL_02b9: Unknown result type (might be due to invalid IL or missing references)
			//IL_02cf: Unknown result type (might be due to invalid IL or missing references)
			//IL_02d4: Unknown result type (might be due to invalid IL or missing references)
			//IL_02d9: Unknown result type (might be due to invalid IL or missing references)
			//IL_02da: Unknown result type (might be due to invalid IL or missing references)
			//IL_02f5: 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_032d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0332: 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_034d: 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_036d: Unknown result type (might be due to invalid IL or missing references)
			//IL_036e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0389: Unknown result type (might be due to invalid IL or missing references)
			//IL_0392: Unknown result type (might be due to invalid IL or missing references)
			//IL_03c1: Unknown result type (might be due to invalid IL or missing references)
			//IL_03c6: Unknown result type (might be due to invalid IL or missing references)
			//IL_03dc: Unknown result type (might be due to invalid IL or missing references)
			//IL_03e1: Unknown result type (might be due to invalid IL or missing references)
			//IL_03f7: Unknown result type (might be due to invalid IL or missing references)
			//IL_03fc: Unknown result type (might be due to invalid IL or missing references)
			//IL_0401: Unknown result type (might be due to invalid IL or missing references)
			//IL_0402: Unknown result type (might be due to invalid IL or missing references)
			//IL_041d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0426: Unknown result type (might be due to invalid IL or missing references)
			//IL_0455: Unknown result type (might be due to invalid IL or missing references)
			//IL_045a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0470: Unknown result type (might be due to invalid IL or missing references)
			//IL_0475: Unknown result type (might be due to invalid IL or missing references)
			//IL_048b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0490: Unknown result type (might be due to invalid IL or missing references)
			//IL_0495: Unknown result type (might be due to invalid IL or missing references)
			//IL_0496: Unknown result type (might be due to invalid IL or missing references)
			//IL_04b1: Unknown result type (might be due to invalid IL or missing references)
			//IL_04ba: Unknown result type (might be due to invalid IL or missing references)
			//IL_04e9: Unknown result type (might be due to invalid IL or missing references)
			//IL_04ee: Unknown result type (might be due to invalid IL or missing references)
			//IL_0504: Unknown result type (might be due to invalid IL or missing references)
			//IL_0509: 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_0524: Unknown result type (might be due to invalid IL or missing references)
			//IL_0529: Unknown result type (might be due to invalid IL or missing references)
			//IL_052a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0545: Unknown result type (might be due to invalid IL or missing references)
			//IL_054e: Unknown result type (might be due to invalid IL or missing references)
			//IL_057d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0582: Unknown result type (might be due to invalid IL or missing references)
			//IL_0598: Unknown result type (might be due to invalid IL or missing references)
			//IL_059d: Unknown result type (might be due to invalid IL or missing references)
			//IL_05b3: Unknown result type (might be due to invalid IL or missing references)
			//IL_05b8: Unknown result type (might be due to invalid IL or missing references)
			//IL_05bd: Unknown result type (might be due to invalid IL or missing references)
			//IL_05be: 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_05e2: Unknown result type (might be due to invalid IL or missing references)
			//IL_0611: Unknown result type (might be due to invalid IL or missing references)
			//IL_0616: Unknown result type (might be due to invalid IL or missing references)
			//IL_062c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0631: Unknown result type (might be due to invalid IL or missing references)
			//IL_0647: Unknown result type (might be due to invalid IL or missing references)
			//IL_064c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0651: Unknown result type (might be due to invalid IL or missing references)
			//IL_0652: Unknown result type (might be due to invalid IL or missing references)
			//IL_066d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0676: Unknown result type (might be due to invalid IL or missing references)
			//IL_06a5: Unknown result type (might be due to invalid IL or missing references)
			//IL_06aa: Unknown result type (might be due to invalid IL or missing references)
			//IL_06c0: Unknown result type (might be due to invalid IL or missing references)
			//IL_06c5: Unknown result type (might be due to invalid IL or missing references)
			//IL_06db: Unknown result type (might be due to invalid IL or missing references)
			//IL_06e0: Unknown result type (might be due to invalid IL or missing references)
			//IL_06e5: Unknown result type (might be due to invalid IL or missing references)
			//IL_06e6: Unknown result type (might be due to invalid IL or missing references)
			//IL_0701: Unknown result type (might be due to invalid IL or missing references)
			//IL_070a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0739: Unknown result type (might be due to invalid IL or missing references)
			//IL_073e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0754: Unknown result type (might be due to invalid IL or missing references)
			//IL_0759: Unknown result type (might be due to invalid IL or missing references)
			//IL_076f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0774: Unknown result type (might be due to invalid IL or missing references)
			//IL_0779: Unknown result type (might be due to invalid IL or missing references)
			//IL_077a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0795: Unknown result type (might be due to invalid IL or missing references)
			//IL_079e: Unknown result type (might be due to invalid IL or missing references)
			//IL_07cd: Unknown result type (might be due to invalid IL or missing references)
			//IL_07d2: 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_07ed: 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_0808: Unknown result type (might be due to invalid IL or missing references)
			//IL_080d: Unknown result type (might be due to invalid IL or missing references)
			//IL_080e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0829: Unknown result type (might be due to invalid IL or missing references)
			//IL_0832: Unknown result type (might be due to invalid IL or missing references)
			//IL_0861: Unknown result type (might be due to invalid IL or missing references)
			//IL_0866: Unknown result type (might be due to invalid IL or missing references)
			//IL_087c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0881: Unknown result type (might be due to invalid IL or missing references)
			//IL_0897: Unknown result type (might be due to invalid IL or missing references)
			//IL_089c: Unknown result type (might be due to invalid IL or missing references)
			//IL_08a1: Unknown result type (might be due to invalid IL or missing references)
			//IL_08a2: Unknown result type (might be due to invalid IL or missing references)
			//IL_08bd: Unknown result type (might be due to invalid IL or missing references)
			//IL_08c6: Unknown result type (might be due to invalid IL or missing references)
			//IL_08f5: Unknown result type (might be due to invalid IL or missing references)
			//IL_08fa: Unknown result type (might be due to invalid IL or missing references)
			//IL_0910: Unknown result type (might be due to invalid IL or missing references)
			//IL_0915: Unknown result type (might be due to invalid IL or missing references)
			//IL_092b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0930: Unknown result type (might be due to invalid IL or missing references)
			//IL_0935: Unknown result type (might be due to invalid IL or missing references)
			//IL_0936: Unknown result type (might be due to invalid IL or missing references)
			itemDisplayRuleDict.Add("mdlCommandoDualies", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
			{
				new ItemDisplayRule
				{
					ruleType = (ItemDisplayRuleType)0,
					followerPrefab = base.ItemDisplayModel,
					childName = "Chest",
					localPos = new Vector3(-0.00608f, 0.45582f, -0.16325f),
					localAngles = new Vector3(24.28383f, 128.0119f, 329.8718f),
					localScale = new Vector3(0.1f, 0.1f, 0.1f)
				}
			});
			itemDisplayRuleDict.Add("mdlHuntress", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
			{
				new ItemDisplayRule
				{
					ruleType = (ItemDisplayRuleType)0,
					followerPrefab = base.ItemDisplayModel,
					childName = "UpperArmR",
					localPos = new Vector3(-0.02015f, 0.21122f, -0.08182f),
					localAngles = new Vector3(315.5638f, 92.46681f, 278.3044f),
					localScale = new Vector3(0.1f, 0.1f, 0.1f)
				}
			});
			itemDisplayRuleDict.Add("mdlToolbot", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
			{
				new ItemDisplayRule
				{
					ruleType = (ItemDisplayRuleType)0,
					followerPrefab = base.ItemDisplayModel,
					childName = "Head",
					localPos = new Vector3(-0.02789f, -0.69875f, 1.28177f),
					localAngles = new Vector3(23.25583f, 230.0303f, 207.5309f),
					localScale = new Vector3(1f, 1f, 1f)
				}
			});
			itemDisplayRuleDict.Add("mdlEngi", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
			{
				new ItemDisplayRule
				{
					ruleType = (ItemDisplayRuleType)0,
					followerPrefab = base.ItemDisplayModel,
					childName = "UpperArmR",
					localPos = new Vector3(-0.11937f, 0.1524f, -0.0133f),
					localAngles = new Vector3(53.8207f, 347.5613f, 85.64195f),
					localScale = new Vector3(0.1f, 0.1f, 0.1f)
				}
			});
			itemDisplayRuleDict.Add("mdlMage", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
			{
				new ItemDisplayRule
				{
					ruleType = (ItemDisplayRuleType)0,
					followerPrefab = base.ItemDisplayModel,
					childName = "Chest",
					localPos = new Vector3(-0.01049f, 0.36774f, -0.17101f),
					localAngles = new Vector3(355.5203f, 134.1092f, 3.37996f),
					localScale = new Vector3(0.1f, 0.1f, 0.1f)
				}
			});
			itemDisplayRuleDict.Add("mdlMerc", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
			{
				new ItemDisplayRule
				{
					ruleType = (ItemDisplayRuleType)0,
					followerPrefab = base.ItemDisplayModel,
					childName = "UpperArmR",
					localPos = new Vector3(-0.20663f, 0.04246f, -0.07763f),
					localAngles = new Vector3(31.24286f, 131.7437f, 248.5761f),
					localScale = new Vector3(0.1f, 0.1f, 0.1f)
				}
			});
			itemDisplayRuleDict.Add("mdlTreebot", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
			{
				new ItemDisplayRule
				{
					ruleType = (ItemDisplayRuleType)0,
					followerPrefab = base.ItemDisplayModel,
					childName = "CalfBackR",
					localPos = new Vector3(-0.00362f, 0.64628f, -0.20254f),
					localAngles = new Vector3(307.4982f, 86.70875f, 271.2927f),
					localScale = new Vector3(0.2f, 0.2f, 0.2f)
				}
			});
			itemDisplayRuleDict.Add("mdlLoader", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
			{
				new ItemDisplayRule
				{
					ruleType = (ItemDisplayRuleType)0,
					followerPrefab = base.ItemDisplayModel,
					childName = "Neck",
					localPos = new Vector3(0.00083f, 0.25068f, 0.21676f),
					localAngles = new Vector3(349.7862f, 314.0446f, 10.93832f),
					localScale = new Vector3(0.1f, 0.1f, 0.1f)
				}
			});
			itemDisplayRuleDict.Add("mdlCroco", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
			{
				new ItemDisplayRule
				{
					ruleType = (ItemDisplayRuleType)0,
					followerPrefab = base.ItemDisplayModel,
					childName = "Stomach",
					localPos = new Vector3(-0.31814f, -0.56531f, 2.82175f),
					localAngles = new Vector3(39.24161f, 245.8687f, 244.0103f),
					localScale = new Vector3(1.5f, 1.5f, 1.5f)
				}
			});
			itemDisplayRuleDict.Add("mdlCaptain", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
			{
				new ItemDisplayRule
				{
					ruleType = (ItemDisplayRuleType)0,
					followerPrefab = base.ItemDisplayModel,
					childName = "Chest",
					localPos = new Vector3(-0.04328f, 0.43248f, -0.21186f),
					localAngles = new Vector3(35f, 119.0965f, 299.0688f),
					localScale = new Vector3(0.1f, 0.1f, 0.1f)
				}
			});
			itemDisplayRuleDict.Add("mdlBandit2", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
			{
				new ItemDisplayRule
				{
					ruleType = (ItemDisplayRuleType)0,
					followerPrefab = base.ItemDisplayModel,
					childName = "Chest",
					localPos = new Vector3(-0.00349f, -0.11756f, -0.14204f),
					localAngles = new Vector3(42.05348f, 51.29253f, 235.9125f),
					localScale = new Vector3(0.1f, 0.1f, 0.1f)
				}
			});
			itemDisplayRuleDict.Add("mdlScav", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
			{
				new ItemDisplayRule
				{
					ruleType = (ItemDisplayRuleType)0,
					followerPrefab = base.ItemDisplayModel,
					childName = "Backpack",
					localPos = new Vector3(2.26324f, 9.42422f, -4.77379f),
					localAngles = new Vector3(47.34174f, 85.9677f, 269.8065f),
					localScale = new Vector3(2f, 2f, 2f)
				}
			});
			itemDisplayRuleDict.Add("mdlEngiTurret", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
			{
				new ItemDisplayRule
				{
					ruleType = (ItemDisplayRuleType)0,
					followerPrefab = base.ItemDisplayModel,
					childName = "LegBar2",
					localPos = new Vector3(0.00966f, 0.22048f, 0.27884f),
					localAngles = new Vector3(318.6975f, 269.9536f, 268.9743f),
					localScale = new Vector3(0.5f, 0.5f, 0.5f)
				}
			});
			itemDisplayRuleDict.Add("mdlMEL-T2", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
			{
				new ItemDisplayRule
				{
					ruleType = (ItemDisplayRuleType)0,
					followerPrefab = base.ItemDisplayModel,
					childName = "Head",
					localPos = new Vector3(0.00075f, -0.02811f, -0.00794f),
					localAngles = new Vector3(1.9252f, 45.82498f, 180.1591f),
					localScale = new Vector3(0.02f, 0.02f, 0.02f)
				}
			});
			itemDisplayRuleDict.Add("mdlRailGunner", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
			{
				new ItemDisplayRule
				{
					ruleType = (ItemDisplayRuleType)0,
					followerPrefab = base.ItemDisplayModel,
					childName = "Backpack",
					localPos = new Vector3(0.01912f, 0.42946f, -0.02326f),
					localAngles = new Vector3(0f, 132.2009f, 1.06482f),
					localScale = new Vector3(0.1f, 0.1f, 0.1f)
				}
			});
			itemDisplayRuleDict.Add("mdlVoidSurvivor", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
			{
				new ItemDisplayRule
				{
					ruleType = (ItemDisplayRuleType)0,
					followerPrefab = base.ItemDisplayModel,
					childName = "Pelvis",
					localPos = new Vector3(-0.14203f, 0.06374f, -0.029f),
					localAngles = new Vector3(312.0996f, 333.6005f, 95.96362f),
					localScale = new Vector3(0.1f, 0.1f, 0.1f)
				}
			});
		}
	}
	internal class Lantern : SpikestripItemBase<Lantern>
	{
		public class LanternBehavior : ItemBehavior
		{
			public List<CharacterBody> Buddies = new List<CharacterBody>();
		}

		public BuffDef lanternIsWoolie;

		public override string ItemName => "Lantern Of the Damned";

		public override string ItemToken => "LANTERN";

		public override string ItemPickup => "Attacks have a small chance to chain enemies together";

		public override string ItemDescription => "Attacks have a small chance to cause chains to lash out at a nearby enemy, linking them together. Linked enemies share status effects, knockback, and % of damage dealt";

		public override string ItemLore => null;

		public override bool IsEnabled => false;

		public override ItemTier Tier => (ItemTier)2;

		public override Sprite ItemIconSprite => null;

		public override Type ItemBehaviour => typeof(LanternBehavior);

		public override bool ServerOnlyBehaviour => true;

		public override void AssignItemModels()
		{
			GameObject val = NoobBase.NoobAssets.LoadAsset<GameObject>("BlueStar.prefab");
			base.ItemPickupModel = SpikestripContentBase.UpdateGameObjectShader(val, true);
		}

		public override void PopulateItemDisplayRules(ItemDisplayRuleDict itemDisplayRuleDict)
		{
		}

		public override void Init()
		{
			//IL_002d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0032: Unknown result type (might be due to invalid IL or missing references)
			//IL_0067: Unknown result type (might be due to invalid IL or missing references)
			//IL_0071: Expected O, but got Unknown
			base.Init();
			lanternIsWoolie = ScriptableObject.CreateInstance<BuffDef>();
			lanternIsWoolie.buffColor = SpikestripContentBase.ColorRGB(2f, 2f, 2f, 1f);
			lanternIsWoolie.iconSprite = null;
			lanternIsWoolie.isDebuff = true;
			SpikestripContentBase.buffDefContent.Add(lanternIsWoolie);
			GlobalEventManager.OnHitEnemy += new hook_OnHitEnemy(GlobalEventManager_OnHitEnemy);
		}

		private void GlobalEventManager_OnHitEnemy(orig_OnHitEnemy orig, GlobalEventManager self, DamageInfo damageInfo, GameObject victim)
		{
			//IL_0066: Unknown result type (might be due to invalid IL or missing references)
			//IL_006b: Unknown result type (might be due to invalid IL or missing references)
			//IL_006d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0072: Unknown result type (might be due to invalid IL or missing references)
			//IL_0077: Unknown result type (might be due to invalid IL or missing references)
			//IL_007e: 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_008b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0090: Unknown result type (might be due to invalid IL or missing references)
			//IL_0097: Expected O, but got Unknown
			//IL_0118: Unknown result type (might be due to invalid IL or missing references)
			//IL_011f: Expected O, but got Unknown
			orig.Invoke(self, damageInfo, victim);
			CharacterBody component = damageInfo.attacker.GetComponent<CharacterBody>();
			LanternBehavior component2 = damageInfo.attacker.GetComponent<LanternBehavior>();
			CharacterBody component3 = victim.GetComponent<CharacterBody>();
			if (!Object.op_Implicit((Object)(object)component))
			{
				return;
			}
			if (Util.CheckRoll(10f, component.master))
			{
				component3.AddBuff(lanternIsWoolie);
				BullseyeSearch val = new BullseyeSearch
				{
					teamMaskFilter = TeamMask.AllExcept((TeamIndex)1),
					filterByLoS = true,
					maxDistanceFilter = 20f,
					searchOrigin = component3.corePosition
				};
				List<HurtBox> list = (List<HurtBox>)val.GetResults();
				int index = Random.Range(0, list.Count - 1);
				CharacterBody body = list[index].healthComponent.body;
				if (Object.op_Implicit((Object)(object)body))
				{
					body.AddBuff(lanternIsWoolie);
					component2.Buddies.Add(body);
				}
			}
			if (!component3.HasBuff(lanternIsWoolie))
			{
				return;
			}
			float damage = damageInfo.damage * 0.5f;
			DamageInfo val2 = new DamageInfo();
			val2.damage = damage;
			foreach (CharacterBody buddy in component2.Buddies)
			{
				buddy.healthComponent.TakeDamage(val2);
				buddy.healthComponent.TakeDamageForce(damageInfo, false, true);
			}
		}
	}
	internal class Wool : SpikestripItemBase<Wool>
	{
		public class WoolBehaviour : ItemBehavior
		{
			public float Timer;

			private GameObject WoolIndicator;

			private bool indicatorEnabled
			{
				get
				{
					return Object.op_Implicit((Object)(object)WoolIndicator);
				}
				set
				{
					//IL_0023: Unknown result type (might be due to invalid IL or missing references)
					//IL_0028: Unknown result type (might be due to invalid IL or missing references)
					if (indicatorEnabled != value)
					{
						if (value)
						{
							WoolIndicator = Object.Instantiate<GameObject>(FocusClone, base.body.corePosition, Quaternion.identity);
							WoolIndicator.GetComponent<NetworkedBodyAttachment>().AttachToGameObjectAndSpawn(((Component)this).gameObject, (string)null);
						}
						else
						{
							Object.Destroy((Object)(object)WoolIndicator);
							WoolIndicator = null;
						}
					}
				}
			}

			public void FixedUpdate()
			{
				//IL_0046: Unknown result type (might be due to invalid IL or missing references)
				//IL_004b: Unknown result type (might be due to invalid IL or missing references)
				//IL_004f: 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_00df: Invalid comparison between Unknown and I4
				//IL_0056: Unknown result type (might be due to invalid IL or missing references)
				//IL_0057: 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_005c: Invalid comparison between Unknown and I4
				//IL_00d8: Unknown result type (might be due to invalid IL or missing references)
				//IL_00da: Unknown result type (might be due to invalid IL or missing references)
				//IL_00dc: 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_0089: 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_0099: Unknown result type (might be due to invalid IL or missing references)
				//IL_009e: Unknown result type (might be due to invalid IL or missing references)
				Timer += Time.fixedDeltaTime;
				if (!((double)Timer >= 0.05))
				{
					return;
				}
				Timer = 0f;
				TeamIndex teamIndex = base.body.teamComponent.teamIndex;
				int num = 0;
				TeamIndex val = (TeamIndex)0;
				while ((int)val < 5)
				{
					if (val != teamIndex && (int)val > 0)
					{
						foreach (TeamComponent teamMember in TeamComponent.GetTeamMembers(val))
						{
							Vector3 val2 = ((Component)teamMember).transform.position - base.body.corePosition;
							if (((Vector3)(ref val2)).sqrMagnitude <= 400f)
							{
								num++;
							}
						}
					}
					val = (TeamIndex)(sbyte)(val + 1);
				}
				SetBuffCou

PlasmaCoreSpikestripContent.dll

Decompiled a year ago
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Security;
using System.Security.Cryptography;
using System.Security.Permissions;
using System.Text;
using BepInEx;
using EntityStates;
using EntityStates.Commando.CommandoWeapon;
using EntityStates.Mage.Weapon;
using EntityStates.Railgunner.Reload;
using EntityStates.Railgunner.Scope;
using EntityStates.Railgunner.Weapon;
using GrooveSaladSpikestripContent;
using JetBrains.Annotations;
using KinematicCharacterController;
using On.RoR2;
using On.RoR2.CharacterAI;
using PlasmaCoreSpikestripContent.Components;
using PlasmaCoreSpikestripContent.Content.Elites;
using PlasmaCoreSpikestripContent.Content.Equipment;
using PlasmaCoreSpikestripContent.Content.Interactibles;
using PlasmaCoreSpikestripContent.Content.Items;
using PlasmaCoreSpikestripContent.Content.Monsters.States;
using PlasmaCoreSpikestripContent.Content.Skills;
using PlasmaCoreSpikestripContent.Content.Skills.States;
using PlasmaCoreSpikestripContent.Core;
using PlasmaCoreSpikestripContent.Misc;
using PlasmaCoreSpikestripContent.Networking;
using R2API;
using R2API.Networking;
using R2API.Networking.Interfaces;
using R2API.ScriptableObjects;
using R2API.Utils;
using RoR2;
using RoR2.Audio;
using RoR2.CharacterAI;
using RoR2.Navigation;
using RoR2.Orbs;
using RoR2.Projectile;
using RoR2.Skills;
using RoR2.UI;
using UnityEngine;
using UnityEngine.AddressableAssets;
using UnityEngine.Events;
using UnityEngine.Networking;
using UnityEngine.Rendering.PostProcessing;
using UnityEngine.ResourceManagement.AsyncOperations;
using UnityEngine.UI;

[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("0.0.0.0")]
[module: UnverifiableCode]
public class ChokeProjectileImpactExplosionTagger : MonoBehaviour, IProjectileImpactBehavior
{
	public float radius = 6f;

	public void OnProjectileImpact(ProjectileImpactInfo impactInfo)
	{
		//IL_0076: 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)
		//IL_0121: Unknown result type (might be due to invalid IL or missing references)
		ProjectileController component = ((Component)this).GetComponent<ProjectileController>();
		ChokeMainZone chokeMainZone = null;
		foreach (ChokeMainZone instance in ChokeMainZone.instances)
		{
			if (Object.op_Implicit((Object)(object)instance.attackerBody) && (Object)(object)((Component)instance.attackerBody).gameObject == (Object)(object)component.owner)
			{
				chokeMainZone = instance;
				break;
			}
		}
		if (!Object.op_Implicit((Object)(object)chokeMainZone))
		{
			return;
		}
		Collider[] array = Physics.OverlapSphere(((Component)this).gameObject.transform.position, radius, LayerMask.op_Implicit(((LayerIndex)(ref LayerIndex.entityPrecise)).mask));
		for (int i = 0; i < array.Length; i++)
		{
			HurtBox component2 = ((Component)array[i]).GetComponent<HurtBox>();
			if (!Object.op_Implicit((Object)(object)component2))
			{
				continue;
			}
			HealthComponent healthComponent = component2.healthComponent;
			if (Object.op_Implicit((Object)(object)healthComponent))
			{
				if (Object.op_Implicit((Object)(object)component.owner) && (Object)(object)((Component)healthComponent).gameObject == (Object)(object)component.owner)
				{
					chokeMainZone.forceTargets.Add(healthComponent);
					healthComponent.body.AddTimedBuff(MageChokeArea.scriptableObject.buffs[1], 10f);
				}
				else if (FriendlyFireManager.ShouldSplashHitProceed(healthComponent, component.teamFilter.teamIndex))
				{
					chokeMainZone.forceTargets.Add(healthComponent);
					healthComponent.body.AddTimedBuff(MageChokeArea.scriptableObject.buffs[1], 10f);
				}
			}
		}
	}
}
public class PlasmaCore : MonoBehaviour
{
	private void Start()
	{
	}

	private void Update()
	{
	}
}
public class LoadMaterialFromAdress : MonoBehaviour
{
	public CharacterModel targetCharacterModel;

	public Renderer targetRenderer;

	public string[] matAddresses;

	public UnityEvent action;

	public ParticleSystemRenderer targetTrail;

	private void Awake()
	{
		if (Object.op_Implicit((Object)(object)targetTrail))
		{
			targetTrail.trailMaterial = SpikestripContentBase.AddressablesLoad<Material>(matAddresses[0]);
		}
		if (Object.op_Implicit((Object)(object)targetCharacterModel))
		{
			for (int i = 0; i < matAddresses.Length && i < targetCharacterModel.baseRendererInfos.Length; i++)
			{
				targetCharacterModel.baseRendererInfos[i].defaultMaterial = SpikestripContentBase.AddressablesLoad<Material>(matAddresses[i]);
			}
		}
		if (Object.op_Implicit((Object)(object)targetRenderer))
		{
			List<Material> list = new List<Material>();
			for (int num = matAddresses.Length - 1; num >= 0; num--)
			{
				list.Add(SpikestripContentBase.AddressablesLoad<Material>(matAddresses[num]));
			}
			RendererSetMaterialsExtension.SetMaterials(targetRenderer, list);
		}
		action.Invoke();
	}
}
[RequireComponent(typeof(ProjectileController))]
public class ProjectileImpactSpawner : MonoBehaviour, IProjectileImpactBehavior
{
	public GameObject prefab;

	public bool useRotation;

	public void OnProjectileImpact(ProjectileImpactInfo impactInfo)
	{
		//IL_0007: Unknown result type (might be due to invalid IL or missing references)
		//IL_000c: 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_0050: Unknown result type (might be due to invalid IL or missing references)
		//IL_0055: Unknown result type (might be due to invalid IL or missing references)
		//IL_006f: Unknown result type (might be due to invalid IL or missing references)
		if (NetworkServer.active)
		{
			Quaternion val = Quaternion.identity;
			if (useRotation)
			{
				val = ((Component)this).transform.rotation;
			}
			ProjectileController component = ((Component)this).GetComponent<ProjectileController>();
			ProjectileDamage component2 = ((Component)this).GetComponent<ProjectileDamage>();
			if (Object.op_Implicit((Object)(object)component2) && Object.op_Implicit((Object)(object)component))
			{
				ProjectileManager.instance.FireProjectile(prefab, ((Component)this).transform.position, val, component.owner, component2.damage, component2.force, component2.crit, component2.damageColorIndex, (GameObject)null, -1f);
			}
		}
	}
}
namespace Moonstorm.Components
{
	public class HGControllerFinder : MonoBehaviour
	{
		public Renderer Renderer;

		public Material material;

		public void OnEnable()
		{
			if (Object.op_Implicit((Object)(object)Renderer) && Object.op_Implicit((Object)(object)material))
			{
				Renderer.material = material;
				Renderer.sharedMaterials[0] = material;
				MaterialControllerComponents.MaterialController materialController = null;
				switch (((Object)material.shader).name)
				{
				case "Hopoo Games/Deferred/Standard":
					materialController = ((Component)this).gameObject.AddComponent<MaterialControllerComponents.HGStandardController>();
					break;
				case "Hopoo Games/Deferred/Snow Topped":
					materialController = ((Component)this).gameObject.AddComponent<MaterialControllerComponents.HGSnowToppedController>();
					break;
				case "Hopoo Games/FX/Cloud Remap":
					materialController = ((Component)this).gameObject.AddComponent<MaterialControllerComponents.HGCloudRemapController>();
					break;
				case "Hopoo Games/FX/Cloud Intersection Remap":
					materialController = ((Component)this).gameObject.AddComponent<MaterialControllerComponents.HGIntersectionController>();
					break;
				case "Hopoo Games/FX/Solid Parallax":
					materialController = ((Component)this).gameObject.AddComponent<MaterialControllerComponents.HGSolidParallaxController>();
					break;
				case "Hopoo Games/Deferred/Wavy Cloth":
					materialController = ((Component)this).gameObject.AddComponent<MaterialControllerComponents.HGWavyClothController>();
					break;
				case "Hopoo Games/FX/Opaque Cloud Remap":
					materialController = ((Component)this).gameObject.AddComponent<MaterialControllerComponents.HGOpaqueCloudRemap>();
					break;
				case "Hopoo Games/FX/Distant Water":
					materialController = ((Component)this).gameObject.AddComponent<MaterialControllerComponents.HGDistantWaterController>();
					break;
				}
				if (Object.op_Implicit((Object)(object)materialController))
				{
					materialController.material = material;
					materialController.renderer = Renderer;
					materialController.MaterialName = ((Object)material).name;
					Object.Destroy((Object)(object)this);
				}
				else
				{
					((Behaviour)this).enabled = false;
				}
			}
			else
			{
				((Behaviour)this).enabled = false;
			}
		}
	}
	public class MaterialControllerComponents
	{
		public class MaterialController : MonoBehaviour
		{
			public Material material;

			public Renderer renderer;

			public string MaterialName;
		}

		public class HGStandardController : MaterialController
		{
			public enum _RampInfoEnum
			{
				TwoTone = 0,
				SmoothedTwoTone = 1,
				Unlitish = 3,
				Subsurface = 4,
				Grass = 5
			}

			public enum _DecalLayerEnum
			{
				Default,
				Environment,
				Character,
				Misc
			}

			public enum _CullEnum
			{
				Off,
				Front,
				Back
			}

			public enum _PrintDirectionEnum
			{
				BottomUp = 0,
				TopDown = 1,
				BackToFront = 3
			}

			public bool _EnableCutout;

			public Color _Color;

			public Texture _MainTex;

			public Vector2 _MainTexScale;

			public Vector2 _MainTexOffset;

			[Range(0f, 5f)]
			public float _NormalStrength;

			public Texture _NormalTex;

			public Vector2 _NormalTexScale;

			public Vector2 _NormalTexOffset;

			public Color _EmColor;

			public Texture _EmTex;

			[Range(0f, 10f)]
			public float _EmPower;

			[Range(0f, 1f)]
			public float _Smoothness;

			public bool _IgnoreDiffuseAlphaForSpeculars;

			public _RampInfoEnum _RampChoice;

			public _DecalLayerEnum _DecalLayer;

			[Range(0f, 1f)]
			public float _SpecularStrength;

			[Range(0.1f, 20f)]
			public float _SpecularExponent;

			public _CullEnum _Cull_Mode;

			public bool _EnableDither;

			[Range(0f, 1f)]
			public float _FadeBias;

			public bool _EnableFresnelEmission;

			public Texture _FresnelRamp;

			[Range(0.1f, 20f)]
			public float _FresnelPower;

			public Texture _FresnelMask;

			[Range(0f, 20f)]
			public float _FresnelBoost;

			public bool _EnablePrinting;

			[Range(-25f, 25f)]
			public float _SliceHeight;

			[Range(0f, 10f)]
			public float _PrintBandHeight;

			[Range(0f, 1f)]
			public float _PrintAlphaDepth;

			public Texture _PrintAlphaTexture;

			public Vector2 _PrintAlphaTextureScale;

			public Vector2 _PrintAlphaTextureOffset;

			[Range(0f, 10f)]
			public float _PrintColorBoost;

			[Range(0f, 4f)]
			public float _PrintAlphaBias;

			[Range(0f, 1f)]
			public float _PrintEmissionToAlbedoLerp;

			public _PrintDirectionEnum _PrintDirection;

			public Texture _PrintRamp;

			[Range(-10f, 10f)]
			public float _EliteBrightnessMin;

			[Range(-10f, 10f)]
			public float _EliteBrightnessMax;

			public bool _EnableSplatmap;

			public bool _UseVertexColorsInstead;

			[Range(0f, 1f)]
			public float _BlendDepth;

			public Texture _SplatmapTex;

			public Vector2 _SplatmapTexScale;

			public Vector2 _SplatmapTexOffset;

			[Range(0f, 20f)]
			public float _SplatmapTileScale;

			public Texture _GreenChannelTex;

			public Texture _GreenChannelNormalTex;

			[Range(0f, 1f)]
			public float _GreenChannelSmoothness;

			[Range(-2f, 5f)]
			public float _GreenChannelBias;

			public Texture _BlueChannelTex;

			public Texture _BlueChannelNormalTex;

			[Range(0f, 1f)]
			public float _BlueChannelSmoothness;

			[Range(-2f, 5f)]
			public float _BlueChannelBias;

			public bool _EnableFlowmap;

			public Texture _FlowTexture;

			public Texture _FlowHeightmap;

			public Vector2 _FlowHeightmapScale;

			public Vector2 _FlowHeightmapOffset;

			public Texture _FlowHeightRamp;

			public Vector2 _FlowHeightRampScale;

			public Vector2 _FlowHeightRampOffset;

			[Range(-1f, 1f)]
			public float _FlowHeightBias;

			[Range(0.1f, 20f)]
			public float _FlowHeightPower;

			[Range(0.1f, 20f)]
			public float _FlowEmissionStrength;

			[Range(0f, 15f)]
			public float _FlowSpeed;

			[Range(0f, 5f)]
			public float _MaskFlowStrength;

			[Range(0f, 5f)]
			public float _NormalFlowStrength;

			[Range(0f, 10f)]
			public float _FlowTextureScaleFactor;

			public bool _EnableLimbRemoval;

			public void Start()
			{
				GrabMaterialValues();
			}

			public void GrabMaterialValues()
			{
				//IL_0032: Unknown result type (might be due to invalid IL or missing references)
				//IL_0037: Unknown result type (might be due to invalid IL or missing references)
				//IL_005e: Unknown result type (might be due to invalid IL or missing references)
				//IL_0063: 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_0079: Unknown result type (might be due to invalid IL or missing references)
				//IL_00b6: Unknown result type (might be due to invalid IL or missing references)
				//IL_00bb: 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_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_00e7: Unknown result type (might be due to invalid IL or missing references)
				//IL_02c9: Unknown result type (might be due to invalid IL or missing references)
				//IL_02ce: Unknown result type (might be due to invalid IL or missing references)
				//IL_02df: Unknown result type (might be due to invalid IL or missing references)
				//IL_02e4: Unknown result type (might be due to invalid IL or missing references)
				//IL_03e8: Unknown result type (might be due to invalid IL or missing references)
				//IL_03ed: Unknown result type (might be due to invalid IL or missing references)
				//IL_03fe: Unknown result type (might be due to invalid IL or missing references)
				//IL_0403: Unknown result type (might be due to invalid IL or missing references)
				//IL_051c: Unknown result type (might be due to invalid IL or missing references)
				//IL_0521: Unknown result type (might be due to invalid IL or missing references)
				//IL_0532: Unknown result type (might be due to invalid IL or missing references)
				//IL_0537: Unknown result type (might be due to invalid IL or missing references)
				//IL_055e: Unknown result type (might be due to invalid IL or missing references)
				//IL_0563: Unknown result type (might be due to invalid IL or missing references)
				//IL_0574: 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)
				if (Object.op_Implicit((Object)(object)material))
				{
					_EnableCutout = material.IsKeywordEnabled("CUTOUT");
					_Color = material.GetColor("_Color");
					_MainTex = material.GetTexture("_MainTex");
					_MainTexScale = material.GetTextureScale("_MainTex");
					_MainTexOffset = material.GetTextureOffset("_MainTex");
					_NormalStrength = material.GetFloat("_NormalStrength");
					_NormalTex = material.GetTexture("_NormalTex");
					_NormalTexScale = material.GetTextureScale("_NormalTex");
					_NormalTexOffset = material.GetTextureOffset("_NormalTex");
					_EmColor = material.GetColor("_EmColor");
					_EmTex = material.GetTexture("_EmTex");
					_EmPower = material.GetFloat("_EmPower");
					_Smoothness = material.GetFloat("_Smoothness");
					_IgnoreDiffuseAlphaForSpeculars = material.IsKeywordEnabled("FORCE_SPEC");
					_RampChoice = (_RampInfoEnum)material.GetFloat("_RampInfo");
					_DecalLayer = (_DecalLayerEnum)material.GetFloat("_DecalLayer");
					_SpecularStrength = material.GetFloat("_SpecularStrength");
					_SpecularExponent = material.GetFloat("_SpecularExponent");
					_Cull_Mode = (_CullEnum)material.GetFloat("_Cull");
					_EnableDither = material.IsKeywordEnabled("DITHER");
					_FadeBias = material.GetFloat("_FadeBias");
					_EnableFresnelEmission = material.IsKeywordEnabled("FRESNEL_EMISSION");
					_FresnelRamp = material.GetTexture("_FresnelRamp");
					_FresnelPower = material.GetFloat("_FresnelPower");
					_FresnelMask = material.GetTexture("_FresnelMask");
					_FresnelBoost = material.GetFloat("_FresnelBoost");
					_EnablePrinting = material.IsKeywordEnabled("PRINT_CUTOFF");
					_SliceHeight = material.GetFloat("_SliceHeight");
					_PrintBandHeight = material.GetFloat("_SliceBandHeight");
					_PrintAlphaDepth = material.GetFloat("_SliceAlphaDepth");
					_PrintAlphaTexture = material.GetTexture("_SliceAlphaTex");
					_PrintAlphaTextureScale = material.GetTextureScale("_SliceAlphaTex");
					_PrintAlphaTextureOffset = material.GetTextureOffset("_SliceAlphaTex");
					_PrintColorBoost = material.GetFloat("_PrintBoost");
					_PrintAlphaBias = material.GetFloat("_PrintBias");
					_PrintEmissionToAlbedoLerp = material.GetFloat("_PrintEmissionToAlbedoLerp");
					_PrintDirection = (_PrintDirectionEnum)material.GetFloat("_PrintDirection");
					_PrintRamp = material.GetTexture("_PrintRamp");
					_EliteBrightnessMin = material.GetFloat("_EliteBrightnessMin");
					_EliteBrightnessMax = material.GetFloat("_EliteBrightnessMax");
					_EnableSplatmap = material.IsKeywordEnabled("SPLATMAP");
					_UseVertexColorsInstead = material.IsKeywordEnabled("USE_VERTEX_COLORS");
					_BlendDepth = material.GetFloat("_Depth");
					_SplatmapTex = material.GetTexture("_SplatmapTex");
					_SplatmapTexScale = material.GetTextureScale("_SplatmapTex");
					_SplatmapTexOffset = material.GetTextureOffset("_SplatmapTex");
					_SplatmapTileScale = material.GetFloat("_SplatmapTileScale");
					_GreenChannelTex = material.GetTexture("_GreenChannelTex");
					_GreenChannelNormalTex = material.GetTexture("_GreenChannelNormalTex");
					_GreenChannelSmoothness = material.GetFloat("_GreenChannelSmoothness");
					_GreenChannelBias = material.GetFloat("_GreenChannelBias");
					_BlueChannelTex = material.GetTexture("_BlueChannelTex");
					_BlueChannelNormalTex = material.GetTexture("_BlueChannelNormalTex");
					_BlueChannelSmoothness = material.GetFloat("_BlueChannelSmoothness");
					_BlueChannelBias = material.GetFloat("_BlueChannelBias");
					_EnableFlowmap = material.IsKeywordEnabled("FLOWMAP");
					_FlowTexture = material.GetTexture("_FlowTex");
					_FlowHeightmap = material.GetTexture("_FlowHeightmap");
					_FlowHeightmapScale = material.GetTextureScale("_FlowHeightmap");
					_FlowHeightmapOffset = material.GetTextureOffset("_FlowHeightmap");
					_FlowHeightRamp = material.GetTexture("_FlowHeightRamp");
					_FlowHeightRampScale = material.GetTextureScale("_FlowHeightRamp");
					_FlowHeightRampOffset = material.GetTextureOffset("_FlowHeightRamp");
					_FlowHeightBias = material.GetFloat("_FlowHeightBias");
					_FlowHeightPower = material.GetFloat("_FlowHeightPower");
					_FlowEmissionStrength = material.GetFloat("_FlowEmissionStrength");
					_FlowSpeed = material.GetFloat("_FlowSpeed");
					_MaskFlowStrength = material.GetFloat("_FlowMaskStrength");
					_NormalFlowStrength = material.GetFloat("_FlowNormalStrength");
					_FlowTextureScaleFactor = material.GetFloat("_FlowTextureScaleFactor");
					_EnableLimbRemoval = material.IsKeywordEnabled("LIMBREMOVAL");
					MaterialName = ((Object)material).name;
				}
			}

			public void Update()
			{
				//IL_006e: Unknown result type (might be due to invalid IL or missing references)
				//IL_00a7: Unknown result type (might be due to invalid IL or missing references)
				//IL_00bd: 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)
				//IL_0135: Unknown result type (might be due to invalid IL or missing references)
				//IL_015e: Unknown result type (might be due to invalid IL or missing references)
				//IL_03cd: Unknown result type (might be due to invalid IL or missing references)
				//IL_03e3: Unknown result type (might be due to invalid IL or missing references)
				//IL_0535: Unknown result type (might be due to invalid IL or missing references)
				//IL_054b: Unknown result type (might be due to invalid IL or missing references)
				//IL_0729: Unknown result type (might be due to invalid IL or missing references)
				//IL_073f: Unknown result type (might be due to invalid IL or missing references)
				//IL_078b: Unknown result type (might be due to invalid IL or missing references)
				//IL_07a1: Unknown result type (might be due to invalid IL or missing references)
				if (Object.op_Implicit((Object)(object)material))
				{
					if (((Object)material).name != MaterialName && Object.op_Implicit((Object)(object)renderer))
					{
						GrabMaterialValues();
						PutMaterialIntoMeshRenderer(renderer, material);
					}
					SetShaderKeywordBasedOnBool(_EnableCutout, material, "CUTOUT");
					material.SetColor("_Color", _Color);
					if (Object.op_Implicit((Object)(object)_MainTex))
					{
						material.SetTexture("_MainTex", _MainTex);
						material.SetTextureScale("_MainTex", _MainTexScale);
						material.SetTextureOffset("_MainTex", _MainTexOffset);
					}
					else
					{
						material.SetTexture("_MainTex", (Texture)null);
					}
					material.SetFloat("_NormalStrength", _NormalStrength);
					if (Object.op_Implicit((Object)(object)_NormalTex))
					{
						material.SetTexture("_NormalTex", _NormalTex);
						material.SetTextureScale("_NormalTex", _NormalTexScale);
						material.SetTextureOffset("_NormalTex", _NormalTexOffset);
					}
					else
					{
						material.SetTexture("_NormalTex", (Texture)null);
					}
					material.SetColor("_EmColor", _EmColor);
					if (Object.op_Implicit((Object)(object)_EmTex))
					{
						material.SetTexture("_EmTex", _EmTex);
					}
					else
					{
						material.SetTexture("_EmTex", (Texture)null);
					}
					material.SetFloat("_EmPower", _EmPower);
					material.SetFloat("_Smoothness", _Smoothness);
					SetShaderKeywordBasedOnBool(_IgnoreDiffuseAlphaForSpeculars, material, "FORCE_SPEC");
					material.SetFloat("_RampInfo", Convert.ToSingle(_RampChoice));
					material.SetFloat("_DecalLayer", Convert.ToSingle(_DecalLayer));
					material.SetFloat("_SpecularStrength", _SpecularStrength);
					material.SetFloat("_SpecularExponent", _SpecularExponent);
					material.SetFloat("_Cull", Convert.ToSingle(_Cull_Mode));
					SetShaderKeywordBasedOnBool(_EnableDither, material, "DITHER");
					material.SetFloat("_FadeBias", _FadeBias);
					SetShaderKeywordBasedOnBool(_EnableFresnelEmission, material, "FRESNEL_EMISSION");
					if (Object.op_Implicit((Object)(object)_FresnelRamp))
					{
						material.SetTexture("_FresnelRamp", _FresnelRamp);
					}
					else
					{
						material.SetTexture("_FresnelRamp", (Texture)null);
					}
					material.SetFloat("_FresnelPower", _FresnelPower);
					if (Object.op_Implicit((Object)(object)_FresnelMask))
					{
						material.SetTexture("_FresnelMask", _FresnelMask);
					}
					else
					{
						material.SetTexture("_FresnelMask", (Texture)null);
					}
					material.SetFloat("_FresnelBoost", _FresnelBoost);
					SetShaderKeywordBasedOnBool(_EnablePrinting, material, "PRINT_CUTOFF");
					material.SetFloat("_SliceHeight", _SliceHeight);
					material.SetFloat("_SliceBandHeight", _PrintBandHeight);
					material.SetFloat("_SliceAlphaDepth", _PrintAlphaDepth);
					if (Object.op_Implicit((Object)(object)_PrintAlphaTexture))
					{
						material.SetTexture("_SliceAlphaTex", _PrintAlphaTexture);
						material.SetTextureScale("_SliceAlphaTex", _PrintAlphaTextureScale);
						material.SetTextureOffset("_SliceAlphaTex", _PrintAlphaTextureOffset);
					}
					else
					{
						material.SetTexture("_SliceAlphaTex", (Texture)null);
					}
					material.SetFloat("_PrintBoost", _PrintColorBoost);
					material.SetFloat("_PrintBias", _PrintAlphaBias);
					material.SetFloat("_PrintEmissionToAlbedoLerp", _PrintEmissionToAlbedoLerp);
					material.SetFloat("_PrintDirection", Convert.ToSingle(_PrintDirection));
					if (Object.op_Implicit((Object)(object)_PrintRamp))
					{
						material.SetTexture("_PrintRamp", _PrintRamp);
					}
					else
					{
						material.SetTexture("_PrintRamp", (Texture)null);
					}
					material.SetFloat("_EliteBrightnessMin", _EliteBrightnessMin);
					material.SetFloat("_EliteBrightnessMax", _EliteBrightnessMax);
					SetShaderKeywordBasedOnBool(_EnableSplatmap, material, "SPLATMAP");
					SetShaderKeywordBasedOnBool(_UseVertexColorsInstead, material, "USE_VERTEX_COLORS");
					material.SetFloat("_Depth", _BlendDepth);
					if (Object.op_Implicit((Object)(object)_SplatmapTex))
					{
						material.SetTexture("_SplatmapTex", _SplatmapTex);
						material.SetTextureScale("_SplatmapTex", _SplatmapTexScale);
						material.SetTextureOffset("_SplatmapTex", _SplatmapTexOffset);
					}
					else
					{
						material.SetTexture("_SplatmapTex", (Texture)null);
					}
					material.SetFloat("_SplatmapTileScale", _SplatmapTileScale);
					if (Object.op_Implicit((Object)(object)_GreenChannelTex))
					{
						material.SetTexture("_GreenChannelTex", _GreenChannelTex);
					}
					else
					{
						material.SetTexture("_GreenChannelTex", (Texture)null);
					}
					if (Object.op_Implicit((Object)(object)_GreenChannelNormalTex))
					{
						material.SetTexture("_GreenChannelNormalTex", _GreenChannelNormalTex);
					}
					else
					{
						material.SetTexture("_GreenChannelNormalTex", (Texture)null);
					}
					material.SetFloat("_GreenChannelSmoothness", _GreenChannelSmoothness);
					material.SetFloat("_GreenChannelBias", _GreenChannelBias);
					if (Object.op_Implicit((Object)(object)_BlueChannelTex))
					{
						material.SetTexture("_BlueChannelTex", _BlueChannelTex);
					}
					else
					{
						material.SetTexture("_BlueChannelTex", (Texture)null);
					}
					if (Object.op_Implicit((Object)(object)_BlueChannelNormalTex))
					{
						material.SetTexture("_BlueChannelNormalTex", _BlueChannelNormalTex);
					}
					else
					{
						material.SetTexture("_BlueChannelNormalTex", (Texture)null);
					}
					material.SetFloat("_BlueChannelSmoothness", _BlueChannelSmoothness);
					material.SetFloat("_BlueChannelBias", _BlueChannelBias);
					SetShaderKeywordBasedOnBool(_EnableFlowmap, material, "FLOWMAP");
					if (Object.op_Implicit((Object)(object)_FlowTexture))
					{
						material.SetTexture("_FlowTex", _FlowTexture);
					}
					else
					{
						material.SetTexture("_FlowTex", (Texture)null);
					}
					if (Object.op_Implicit((Object)(object)_FlowHeightmap))
					{
						material.SetTexture("_FlowHeightmap", _FlowHeightmap);
						material.SetTextureScale("_FlowHeightmap", _FlowHeightmapScale);
						material.SetTextureOffset("_FlowHeightmap", _FlowHeightmapOffset);
					}
					else
					{
						material.SetTexture("_FlowHeightmap", (Texture)null);
					}
					if (Object.op_Implicit((Object)(object)_FlowHeightRamp))
					{
						material.SetTexture("_FlowHeightRamp", _FlowHeightRamp);
						material.SetTextureScale("_FlowHeightRamp", _FlowHeightRampScale);
						material.SetTextureOffset("_FlowHeightRamp", _FlowHeightRampOffset);
					}
					else
					{
						material.SetTexture("_FlowHeightRamp", (Texture)null);
					}
					material.SetFloat("_FlowHeightBias", _FlowHeightBias);
					material.SetFloat("_FlowHeightPower", _FlowHeightPower);
					material.SetFloat("_FlowEmissionStrength", _FlowEmissionStrength);
					material.SetFloat("_FlowSpeed", _FlowSpeed);
					material.SetFloat("_FlowMaskStrength", _MaskFlowStrength);
					material.SetFloat("_FlowNormalStrength", _NormalFlowStrength);
					material.SetFloat("_FlowTextureScaleFactor", _FlowTextureScaleFactor);
					SetShaderKeywordBasedOnBool(_EnableLimbRemoval, material, "LIMBREMOVAL");
				}
			}
		}

		public class HGSnowToppedController : MaterialController
		{
			public enum _RampInfoEnum
			{
				TwoTone = 0,
				SmoothedTwoTone = 1,
				Unlitish = 3,
				Subsurface = 4,
				Grass = 5
			}

			public Color _Color;

			public Texture _MainTex;

			public Vector2 _MainTexScale;

			public Vector2 _MainTexOffset;

			[Range(0f, 5f)]
			public float _NormalStrength;

			public Texture _NormalTex;

			public Vector2 _NormalTexScale;

			public Vector2 _NormalTexOffset;

			public Texture _SnowTex;

			public Vector2 _SnowTexScale;

			public Vector2 _SnowTexOffset;

			public Texture _SnowNormalTex;

			public Vector2 _SnowNormalTexScale;

			public Vector2 _SnowNormalTexOffset;

			[Range(-1f, 1f)]
			public float _SnowBias;

			[Range(0f, 1f)]
			public float _Depth;

			public bool _IgnoreAlphaWeights;

			public bool _BlendWeightsBinarily;

			public _RampInfoEnum _RampChoice;

			public bool _IgnoreDiffuseAlphaForSpeculars;

			[Range(0f, 1f)]
			public float _SpecularStrength;

			[Range(0.1f, 20f)]
			public float _SpecularExponent;

			[Range(0f, 1f)]
			public float _Smoothness;

			[Range(0f, 1f)]
			public float _SnowSpecularStrength;

			[Range(0.1f, 20f)]
			public float _SnowSpecularExponent;

			[Range(0f, 1f)]
			public float _SnowSmoothness;

			public bool _DitherOn;

			public bool _TriplanarOn;

			[Range(0f, 1f)]
			public float _TriplanarTextureFactor;

			public bool _SnowOn;

			public bool _GradientBiasOn;

			public Vector4 _GradientBiasVector;

			public bool __DirtOn;

			public Texture _DirtTex;

			public Vector2 _DirtTexScale;

			public Vector2 _DirtTexOffset;

			public Texture _DirtNormalTex;

			public Vector2 _DirtNormalTexScale;

			public Vector2 _DirtNormalTexOffset;

			[Range(-2f, 2f)]
			public float _DirtBias;

			[Range(0f, 1f)]
			public float _DirtSpecularStrength;

			[Range(0f, 20f)]
			public float _DirtSpecularExponent;

			[Range(0f, 1f)]
			public float _DirtSmoothness;

			public void Start()
			{
				GrabMaterialValues();
			}

			public void GrabMaterialValues()
			{
				//IL_001c: 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_0048: Unknown result type (might be due to invalid IL or missing references)
				//IL_004d: Unknown result type (might be due to invalid IL or missing references)
				//IL_005e: Unknown result type (might be due to invalid IL or missing references)
				//IL_0063: Unknown result type (might be due to invalid IL or missing references)
				//IL_00a0: 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_00b6: Unknown result type (might be due to invalid IL or missing references)
				//IL_00bb: 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_00e7: Unknown result type (might be due to invalid IL or missing references)
				//IL_00f8: Unknown result type (might be due to invalid IL or missing references)
				//IL_00fd: 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_013a: 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_02c7: 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_0309: Unknown result type (might be due to invalid IL or missing references)
				//IL_030e: Unknown result type (might be due to invalid IL or missing references)
				//IL_031f: Unknown result type (might be due to invalid IL or missing references)
				//IL_0324: Unknown result type (might be due to invalid IL or missing references)
				//IL_034b: Unknown result type (might be due to invalid IL or missing references)
				//IL_0350: Unknown result type (might be due to invalid IL or missing references)
				//IL_0361: Unknown result type (might be due to invalid IL or missing references)
				//IL_0366: Unknown result type (might be due to invalid IL or missing references)
				if (Object.op_Implicit((Object)(object)material))
				{
					_Color = material.GetColor("_Color");
					_MainTex = material.GetTexture("_MainTex");
					_MainTexScale = material.GetTextureScale("_MainTex");
					_MainTexOffset = material.GetTextureOffset("_MainTex");
					_NormalStrength = material.GetFloat("_NormalStrength");
					_NormalTex = material.GetTexture("_NormalTex");
					_NormalTexScale = material.GetTextureScale("_NormalTex");
					_NormalTexOffset = material.GetTextureOffset("_NormalTex");
					_SnowTex = material.GetTexture("_SnowTex");
					_SnowTexScale = material.GetTextureScale("_SnowTex");
					_SnowTexOffset = material.GetTextureOffset("_SnowTex");
					_SnowNormalTex = material.GetTexture("_SnowNormalTex");
					_SnowNormalTexScale = material.GetTextureScale("_SnowNormalTex");
					_SnowNormalTexOffset = material.GetTextureOffset("_SnowNormalTex");
					_SnowBias = material.GetFloat("_SnowBias");
					_Depth = material.GetFloat("_Depth");
					_IgnoreAlphaWeights = material.IsKeywordEnabled("IGNORE_BIAS");
					_BlendWeightsBinarily = material.IsKeywordEnabled("BINARYBLEND");
					_RampChoice = (_RampInfoEnum)material.GetFloat("_RampInfo");
					_IgnoreDiffuseAlphaForSpeculars = material.IsKeywordEnabled("FORCE_SPEC");
					_SpecularStrength = material.GetFloat("_SpecularStrength");
					_SpecularExponent = material.GetFloat("_SpecularExponent");
					_Smoothness = material.GetFloat("_Smoothness");
					_SnowSpecularStrength = material.GetFloat("_SnowSpecularStrength");
					_SnowSpecularExponent = material.GetFloat("_SnowSpecularExponent");
					_SnowSmoothness = material.GetFloat("_SnowSmoothness");
					_DitherOn = material.IsKeywordEnabled("DITHER");
					_TriplanarOn = material.IsKeywordEnabled("TRIPLANAR");
					_TriplanarTextureFactor = material.GetFloat("_TriplanarTextureFactor");
					_SnowOn = material.IsKeywordEnabled("MICROFACET_SNOW");
					_GradientBiasOn = material.IsKeywordEnabled("GRADIENTBIAS");
					_GradientBiasVector = material.GetVector("_GradientBiasVector");
					__DirtOn = material.IsKeywordEnabled("DIRTON");
					_DirtTex = material.GetTexture("_DirtTex");
					_DirtTexScale = material.GetTextureScale("_DirtTex");
					_DirtTexOffset = material.GetTextureOffset("_DirtTex");
					_DirtNormalTex = material.GetTexture("_DirtNormalTex");
					_DirtNormalTexScale = material.GetTextureScale("_DirtNormalTex");
					_DirtNormalTexOffset = material.GetTextureOffset("_DirtNormalTex");
					_DirtBias = material.GetFloat("_DirtBias");
					_DirtSpecularStrength = material.GetFloat("_DirtSpecularStrength");
					_DirtSpecularExponent = material.GetFloat("_DirtSpecularExponent");
					_DirtSmoothness = material.GetFloat("_DirtSmoothness");
					MaterialName = ((Object)material).name;
				}
			}

			public void Update()
			{
				//IL_0058: Unknown result type (might be due to invalid IL or missing references)
				//IL_0091: Unknown result type (might be due to invalid IL or missing references)
				//IL_00a7: Unknown result type (might be due to invalid IL or missing references)
				//IL_0109: 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)
				//IL_016b: Unknown result type (might be due to invalid IL or missing references)
				//IL_0181: 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_01e3: 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_03db: Unknown result type (might be due to invalid IL or missing references)
				//IL_03f1: Unknown result type (might be due to invalid IL or missing references)
				//IL_043d: Unknown result type (might be due to invalid IL or missing references)
				//IL_0453: Unknown result type (might be due to invalid IL or missing references)
				if (Object.op_Implicit((Object)(object)material))
				{
					if (((Object)material).name != MaterialName && Object.op_Implicit((Object)(object)renderer))
					{
						GrabMaterialValues();
						PutMaterialIntoMeshRenderer(renderer, material);
					}
					material.SetColor("_Color", _Color);
					if (Object.op_Implicit((Object)(object)_MainTex))
					{
						material.SetTexture("_MainTex", _MainTex);
						material.SetTextureScale("_MainTex", _MainTexScale);
						material.SetTextureOffset("_MainTex", _MainTexOffset);
					}
					else
					{
						material.SetTexture("_MainTex", (Texture)null);
					}
					material.SetFloat("_NormalStrength", _NormalStrength);
					if (Object.op_Implicit((Object)(object)_NormalTex))
					{
						material.SetTexture("_NormalTex", _NormalTex);
						material.SetTextureScale("_NormalTex", _NormalTexScale);
						material.SetTextureOffset("_NormalTex", _NormalTexOffset);
					}
					else
					{
						material.SetTexture("_NormalTex", (Texture)null);
					}
					if (Object.op_Implicit((Object)(object)_SnowTex))
					{
						material.SetTexture("_SnowTex", _SnowTex);
						material.SetTextureScale("_SnowTex", _SnowTexScale);
						material.SetTextureOffset("_SnowTex", _SnowTexOffset);
					}
					else
					{
						material.SetTexture("_SnowTex", (Texture)null);
					}
					if (Object.op_Implicit((Object)(object)_SnowNormalTex))
					{
						material.SetTexture("_SnowNormalTex", _SnowNormalTex);
						material.SetTextureScale("_SnowNormalTex", _SnowNormalTexScale);
						material.SetTextureOffset("_SnowNormalTex", _SnowNormalTexOffset);
					}
					else
					{
						material.SetTexture("_SnowNormalTex", (Texture)null);
					}
					material.SetFloat("_SnowBias", _SnowBias);
					material.SetFloat("_Depth", _Depth);
					SetShaderKeywordBasedOnBool(_IgnoreAlphaWeights, material, "IGNORE_BIAS");
					SetShaderKeywordBasedOnBool(_BlendWeightsBinarily, material, "BINARYBLEND");
					material.SetFloat("_RampInfo", Convert.ToSingle(_RampChoice));
					SetShaderKeywordBasedOnBool(_IgnoreDiffuseAlphaForSpeculars, material, "FORCE_SPEC");
					material.SetFloat("_SpecularStrength", _SpecularStrength);
					material.SetFloat("_SpecularExponent", _SpecularExponent);
					material.SetFloat("_Smoothness", _Smoothness);
					material.SetFloat("_SnowSpecularStrength", _SnowSpecularStrength);
					material.SetFloat("_SnowSpecularExponent", _SnowSpecularExponent);
					material.SetFloat("_SnowSmoothness", _SnowSmoothness);
					SetShaderKeywordBasedOnBool(_DitherOn, material, "DITHER");
					SetShaderKeywordBasedOnBool(_TriplanarOn, material, "TRIPLANAR");
					material.SetFloat("_TriplanarTextureFactor", _TriplanarTextureFactor);
					SetShaderKeywordBasedOnBool(_SnowOn, material, "MICROFACET_SNOW");
					SetShaderKeywordBasedOnBool(_GradientBiasOn, material, "GRADIENTBIAS");
					material.SetVector("_GradientBiasVector", _GradientBiasVector);
					SetShaderKeywordBasedOnBool(__DirtOn, material, "DIRTON");
					if (Object.op_Implicit((Object)(object)_DirtTex))
					{
						material.SetTexture("_DirtTex", _DirtTex);
						material.SetTextureScale("_DirtTex", _DirtTexScale);
						material.SetTextureOffset("_DirtTex", _DirtTexOffset);
					}
					else
					{
						material.SetTexture("_DirtTex", (Texture)null);
					}
					if (Object.op_Implicit((Object)(object)_DirtNormalTex))
					{
						material.SetTexture("_DirtNormalTex", _DirtNormalTex);
						material.SetTextureScale("_DirtNormalTex", _DirtNormalTexScale);
						material.SetTextureOffset("_DirtNormalTex", _DirtNormalTexOffset);
					}
					else
					{
						material.SetTexture("_DirtNormalTex", (Texture)null);
					}
					material.SetFloat("_DirtBias", _DirtBias);
					material.SetFloat("_DirtSpecularStrength", _DirtSpecularStrength);
					material.SetFloat("_DirtSpecularExponent", _DirtSpecularExponent);
					material.SetFloat("_DirtSmoothness", _DirtSmoothness);
				}
			}
		}

		public class HGCloudRemapController : MaterialController
		{
			public enum _BlendEnums
			{
				Zero,
				One,
				DstColor,
				SrcColor,
				OneMinusDstColor,
				SrcAlpha,
				OneMinusSrcColor,
				DstAlpha,
				OneMinusDstAlpha,
				SrcAlphaSaturate,
				OneMinusSrcAlpha
			}

			public enum _CullEnum
			{
				Off,
				Front,
				Back
			}

			public enum _ZTestEnum
			{
				Disabled,
				Never,
				Less,
				Equal,
				LessEqual,
				Greater,
				NotEqual,
				GreaterEqual,
				Always
			}

			public _BlendEnums _SrcBlend;

			public _BlendEnums _DstBlend;

			public Color _Tint;

			public bool _DisableRemapping;

			public Texture _MainTex;

			public Vector2 _MainTexScale;

			public Vector2 _MainTexOffset;

			public Texture _RemapTex;

			public Vector2 _RemapTexScale;

			public Vector2 _RemapTexOffset;

			[Range(0f, 2f)]
			public float _SoftFactor;

			[Range(1f, 20f)]
			public float _BrightnessBoost;

			[Range(0f, 20f)]
			public float _AlphaBoost;

			[Range(0f, 1f)]
			public float _AlphaBias;

			public bool _UseUV1;

			public bool _FadeWhenNearCamera;

			[Range(0f, 1f)]
			public float _FadeCloseDistance;

			public _CullEnum _Cull_Mode;

			public _ZTestEnum _ZTest_Mode;

			[Range(-10f, 10f)]
			public float _DepthOffset;

			public bool _CloudRemapping;

			public bool _DistortionClouds;

			[Range(-2f, 2f)]
			public float _DistortionStrength;

			public Texture _Cloud1Tex;

			public Vector2 _Cloud1TexScale;

			public Vector2 _Cloud1TexOffset;

			public Texture _Cloud2Tex;

			public Vector2 _Cloud2TexScale;

			public Vector2 _Cloud2TexOffset;

			public Vector4 _CutoffScroll;

			public bool _VertexColors;

			public bool _LuminanceForVertexAlpha;

			public bool _LuminanceForTextureAlpha;

			public bool _VertexOffset;

			public bool _FresnelFade;

			public bool _SkyboxOnly;

			[Range(-20f, 20f)]
			public float _FresnelPower;

			[Range(0f, 3f)]
			public float _VertexOffsetAmount;

			public void Start()
			{
				GrabMaterialValues();
			}

			public void GrabMaterialValues()
			{
				//IL_004a: Unknown result type (might be due to invalid IL or missing references)
				//IL_004f: Unknown result type (might be due to invalid IL or missing references)
				//IL_008c: Unknown result type (might be due to invalid IL or missing references)
				//IL_0091: Unknown result type (might be due to invalid IL or missing references)
				//IL_00a2: Unknown result type (might be due to invalid IL or missing references)
				//IL_00a7: 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)
				//IL_00d3: Unknown result type (might be due to invalid IL or missing references)
				//IL_00e4: Unknown result type (might be due to invalid IL or missing references)
				//IL_00e9: Unknown result type (might be due to invalid IL or missing references)
				//IL_0230: Unknown result type (might be due to invalid IL or missing references)
				//IL_0235: Unknown result type (might be due to invalid IL or missing references)
				//IL_0246: Unknown result type (might be due to invalid IL or missing references)
				//IL_024b: Unknown result type (might be due to invalid IL or missing references)
				//IL_0272: Unknown result type (might be due to invalid IL or missing references)
				//IL_0277: Unknown result type (might be due to invalid IL or missing references)
				//IL_0288: Unknown result type (might be due to invalid IL or missing references)
				//IL_028d: Unknown result type (might be due to invalid IL or missing references)
				//IL_029e: Unknown result type (might be due to invalid IL or missing references)
				//IL_02a3: Unknown result type (might be due to invalid IL or missing references)
				if (Object.op_Implicit((Object)(object)material))
				{
					_SrcBlend = (_BlendEnums)material.GetFloat("_SrcBlend");
					_DstBlend = (_BlendEnums)material.GetFloat("_DstBlend");
					_Tint = material.GetColor("_TintColor");
					_DisableRemapping = material.IsKeywordEnabled("DISABLEREMAP");
					_MainTex = material.GetTexture("_MainTex");
					_MainTexScale = material.GetTextureScale("_MainTex");
					_MainTexOffset = material.GetTextureOffset("_MainTex");
					_RemapTex = material.GetTexture("_RemapTex");
					_RemapTexScale = material.GetTextureScale("_RemapTex");
					_RemapTexOffset = material.GetTextureOffset("_RemapTex");
					_SoftFactor = material.GetFloat("_InvFade");
					_BrightnessBoost = material.GetFloat("_Boost");
					_AlphaBoost = material.GetFloat("_AlphaBoost");
					_AlphaBias = material.GetFloat("_AlphaBias");
					_UseUV1 = material.IsKeywordEnabled("USE_UV1");
					_FadeWhenNearCamera = material.IsKeywordEnabled("FADECLOSE");
					_FadeCloseDistance = material.GetFloat("_FadeCloseDistance");
					_Cull_Mode = (_CullEnum)material.GetFloat("_Cull");
					_ZTest_Mode = (_ZTestEnum)material.GetFloat("_ZTest");
					_DepthOffset = material.GetFloat("_DepthOffset");
					_CloudRemapping = material.IsKeywordEnabled("USE_CLOUDS");
					_DistortionClouds = material.IsKeywordEnabled("CLOUDOFFSET");
					_DistortionStrength = material.GetFloat("_DistortionStrength");
					_Cloud1Tex = material.GetTexture("_Cloud1Tex");
					_Cloud1TexScale = material.GetTextureScale("_Cloud1Tex");
					_Cloud1TexOffset = material.GetTextureOffset("_Cloud1Tex");
					_Cloud2Tex = material.GetTexture("_Cloud2Tex");
					_Cloud2TexScale = material.GetTextureScale("_Cloud2Tex");
					_Cloud2TexOffset = material.GetTextureOffset("_Cloud2Tex");
					_CutoffScroll = material.GetVector("_CutoffScroll");
					_VertexColors = material.IsKeywordEnabled("VERTEXCOLOR");
					_LuminanceForVertexAlpha = material.IsKeywordEnabled("VERTEXALPHA");
					_LuminanceForTextureAlpha = material.IsKeywordEnabled("CALCTEXTUREALPHA");
					_VertexOffset = material.IsKeywordEnabled("VERTEXOFFSET");
					_FresnelFade = material.IsKeywordEnabled("FRESNEL");
					_SkyboxOnly = material.IsKeywordEnabled("SKYBOX_ONLY");
					_FresnelPower = material.GetFloat("_FresnelPower");
					_VertexOffsetAmount = material.GetFloat("_OffsetAmount");
					MaterialName = ((Object)material).name;
				}
			}

			public void Update()
			{
				//IL_0098: Unknown result type (might be due to invalid IL or missing references)
				//IL_00e7: Unknown result type (might be due to invalid IL or missing references)
				//IL_00fd: Unknown result type (might be due to invalid IL or missing references)
				//IL_0149: Unknown result type (might be due to invalid IL or missing references)
				//IL_015f: Unknown result type (might be due to invalid IL or missing references)
				//IL_02dd: Unknown result type (might be due to invalid IL or missing references)
				//IL_02f3: Unknown result type (might be due to invalid IL or missing references)
				//IL_033f: Unknown result type (might be due to invalid IL or missing references)
				//IL_0355: Unknown result type (might be due to invalid IL or missing references)
				//IL_037e: Unknown result type (might be due to invalid IL or missing references)
				if (Object.op_Implicit((Object)(object)material))
				{
					if (((Object)material).name != MaterialName && Object.op_Implicit((Object)(object)renderer))
					{
						GrabMaterialValues();
						PutMaterialIntoMeshRenderer(renderer, material);
					}
					material.SetFloat("_SrcBlend", Convert.ToSingle(_SrcBlend));
					material.SetFloat("_DstBlend", Convert.ToSingle(_DstBlend));
					material.SetColor("_TintColor", _Tint);
					SetShaderKeywordBasedOnBool(_DisableRemapping, material, "DISABLEREMAP");
					if (Object.op_Implicit((Object)(object)_MainTex))
					{
						material.SetTexture("_MainTex", _MainTex);
						material.SetTextureScale("_MainTex", _MainTexScale);
						material.SetTextureOffset("_MainTex", _MainTexOffset);
					}
					else
					{
						material.SetTexture("_MainTex", (Texture)null);
					}
					if (Object.op_Implicit((Object)(object)_RemapTex))
					{
						material.SetTexture("_RemapTex", _RemapTex);
						material.SetTextureScale("_RemapTex", _RemapTexScale);
						material.SetTextureOffset("_RemapTex", _RemapTexOffset);
					}
					else
					{
						material.SetTexture("_RemapTex", (Texture)null);
					}
					material.SetFloat("_InvFade", _SoftFactor);
					material.SetFloat("_Boost", _BrightnessBoost);
					material.SetFloat("_AlphaBoost", _AlphaBoost);
					material.SetFloat("_AlphaBias", _AlphaBias);
					SetShaderKeywordBasedOnBool(_UseUV1, material, "USE_UV1");
					SetShaderKeywordBasedOnBool(_FadeWhenNearCamera, material, "FADECLOSE");
					material.SetFloat("_FadeCloseDistance", _FadeCloseDistance);
					material.SetFloat("_Cull", Convert.ToSingle(_Cull_Mode));
					material.SetFloat("_ZTest", Convert.ToSingle(_ZTest_Mode));
					material.SetFloat("_DepthOffset", _DepthOffset);
					SetShaderKeywordBasedOnBool(_CloudRemapping, material, "USE_CLOUDS");
					SetShaderKeywordBasedOnBool(_DistortionClouds, material, "CLOUDOFFSET");
					material.SetFloat("_DistortionStrength", _DistortionStrength);
					if (Object.op_Implicit((Object)(object)_Cloud1Tex))
					{
						material.SetTexture("_Cloud1Tex", _Cloud1Tex);
						material.SetTextureScale("_Cloud1Tex", _Cloud1TexScale);
						material.SetTextureOffset("_Cloud1Tex", _Cloud1TexOffset);
					}
					else
					{
						material.SetTexture("_Cloud1Tex", (Texture)null);
					}
					if (Object.op_Implicit((Object)(object)_Cloud2Tex))
					{
						material.SetTexture("_Cloud2Tex", _Cloud2Tex);
						material.SetTextureScale("_Cloud2Tex", _Cloud2TexScale);
						material.SetTextureOffset("_Cloud2Tex", _Cloud2TexOffset);
					}
					else
					{
						material.SetTexture("_Cloud2Tex", (Texture)null);
					}
					material.SetVector("_CutoffScroll", _CutoffScroll);
					SetShaderKeywordBasedOnBool(_VertexColors, material, "VERTEXCOLOR");
					SetShaderKeywordBasedOnBool(_LuminanceForVertexAlpha, material, "VERTEXALPHA");
					SetShaderKeywordBasedOnBool(_LuminanceForTextureAlpha, material, "CALCTEXTUREALPHA");
					SetShaderKeywordBasedOnBool(_VertexOffset, material, "VERTEXOFFSET");
					SetShaderKeywordBasedOnBool(_FresnelFade, material, "FRESNEL");
					SetShaderKeywordBasedOnBool(_SkyboxOnly, material, "SKYBOX_ONLY");
					material.SetFloat("_FresnelPower", _FresnelPower);
					material.SetFloat("_OffsetAmount", _VertexOffsetAmount);
				}
			}
		}

		public class HGIntersectionController : MaterialController
		{
			public enum _SrcBlendFloatEnum
			{
				Zero,
				One,
				DstColor,
				SrcColor,
				OneMinusDstColor,
				SrcAlpha,
				OneMinusSrcColor,
				DstAlpha,
				OneMinusDstAlpha,
				SrcAlphaSaturate,
				OneMinusSrcAlpha
			}

			public enum _DstBlendFloatEnum
			{
				Zero,
				One,
				DstColor,
				SrcColor,
				OneMinusDstColor,
				SrcAlpha,
				OneMinusSrcColor,
				DstAlpha,
				OneMinusDstAlpha,
				SrcAlphaSaturate,
				OneMinusSrcAlpha
			}

			public enum _CullEnum
			{
				Off,
				Front,
				Back
			}

			public _SrcBlendFloatEnum _Source_Blend_Mode;

			public _DstBlendFloatEnum _Destination_Blend_Mode;

			public Color _Tint;

			public Texture _MainTex;

			public Vector2 _MainTexScale;

			public Vector2 _MainTexOffset;

			public Texture _Cloud1Tex;

			public Vector2 _Cloud1TexScale;

			public Vector2 _Cloud1TexOffset;

			public Texture _Cloud2Tex;

			public Vector2 _Cloud2TexScale;

			public Vector2 _Cloud2TexOffset;

			public Texture _RemapTex;

			public Vector2 _RemapTexScale;

			public Vector2 _RemapTexOffset;

			public Vector4 _CutoffScroll;

			[Range(0f, 30f)]
			public float _SoftFactor;

			[Range(0.1f, 20f)]
			public float _SoftPower;

			[Range(0f, 5f)]
			public float _BrightnessBoost;

			[Range(0.1f, 20f)]
			public float _RimPower;

			[Range(0f, 5f)]
			public float _RimStrength;

			[Range(0f, 20f)]
			public float _AlphaBoost;

			[Range(0f, 20f)]
			public float _IntersectionStrength;

			public _CullEnum _Cull_Mode;

			public bool _FadeFromVertexColorsOn;

			public bool _EnableTriplanarProjectionsForClouds;

			public void Start()
			{
				GrabMaterialValues();
			}

			public void GrabMaterialValues()
			{
				//IL_004a: Unknown result type (might be due to invalid IL or missing references)
				//IL_004f: Unknown result type (might be due to invalid IL or missing references)
				//IL_0076: 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)
				//IL_008c: Unknown result type (might be due to invalid IL or missing references)
				//IL_0091: Unknown result type (might be due to invalid IL or missing references)
				//IL_00b8: Unknown result type (might be due to invalid IL or missing references)
				//IL_00bd: 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)
				//IL_00d3: 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_00ff: Unknown result type (might be due to invalid IL or missing references)
				//IL_0110: Unknown result type (might be due to invalid IL or missing references)
				//IL_0115: Unknown result type (might be due to invalid IL or missing references)
				//IL_013c: Unknown result type (might be due to invalid IL or missing references)
				//IL_0141: Unknown result type (might be due to invalid IL or missing references)
				//IL_0152: Unknown result type (might be due to invalid IL or missing references)
				//IL_0157: Unknown result type (might be due to invalid IL or missing references)
				//IL_0168: Unknown result type (might be due to invalid IL or missing references)
				//IL_016d: Unknown result type (might be due to invalid IL or missing references)
				if (Object.op_Implicit((Object)(object)material))
				{
					_Source_Blend_Mode = (_SrcBlendFloatEnum)material.GetFloat("_SrcBlendFloat");
					_Destination_Blend_Mode = (_DstBlendFloatEnum)material.GetFloat("_DstBlendFloat");
					_Tint = material.GetColor("_TintColor");
					_MainTex = material.GetTexture("_MainTex");
					_MainTexScale = material.GetTextureScale("_MainTex");
					_MainTexOffset = material.GetTextureOffset("_MainTex");
					_Cloud1Tex = material.GetTexture("_Cloud1Tex");
					_Cloud1TexScale = material.GetTextureScale("_Cloud1Tex");
					_Cloud1TexOffset = material.GetTextureOffset("_Cloud1Tex");
					_Cloud2Tex = material.GetTexture("_Cloud2Tex");
					_Cloud2TexScale = material.GetTextureScale("_Cloud2Tex");
					_Cloud2TexOffset = material.GetTextureOffset("_Cloud2Tex");
					_RemapTex = material.GetTexture("_RemapTex");
					_RemapTexScale = material.GetTextureScale("_RemapTex");
					_RemapTexOffset = material.GetTextureOffset("_RemapTex");
					_CutoffScroll = material.GetVector("_CutoffScroll");
					_SoftFactor = material.GetFloat("_InvFade");
					_SoftPower = material.GetFloat("_SoftPower");
					_BrightnessBoost = material.GetFloat("_Boost");
					_RimPower = material.GetFloat("_RimPower");
					_RimStrength = material.GetFloat("_RimStrength");
					_AlphaBoost = material.GetFloat("_AlphaBoost");
					_IntersectionStrength = material.GetFloat("_IntersectionStrength");
					_Cull_Mode = (_CullEnum)material.GetFloat("_Cull");
					_FadeFromVertexColorsOn = material.IsKeywordEnabled("FADE_FROM_VERTEX_COLORS");
					_EnableTriplanarProjectionsForClouds = material.IsKeywordEnabled("TRIPLANAR");
					MaterialName = ((Object)material).name;
				}
			}

			public void Update()
			{
				//IL_0098: 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_00e7: Unknown result type (might be due to invalid IL or missing references)
				//IL_0133: Unknown result type (might be due to invalid IL or missing references)
				//IL_0149: 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_01f7: Unknown result type (might be due to invalid IL or missing references)
				//IL_020d: Unknown result type (might be due to invalid IL or missing references)
				//IL_0236: Unknown result type (might be due to invalid IL or missing references)
				if (Object.op_Implicit((Object)(object)material))
				{
					if (((Object)material).name != MaterialName && Object.op_Implicit((Object)(object)renderer))
					{
						GrabMaterialValues();
						PutMaterialIntoMeshRenderer(renderer, material);
					}
					material.SetFloat("_SrcBlendFloat", Convert.ToSingle(_Source_Blend_Mode));
					material.SetFloat("_DstBlendFloat", Convert.ToSingle(_Destination_Blend_Mode));
					material.SetColor("_TintColor", _Tint);
					if (Object.op_Implicit((Object)(object)_MainTex))
					{
						material.SetTexture("_MainTex", _MainTex);
						material.SetTextureScale("_MainTex", _MainTexScale);
						material.SetTextureOffset("_MainTex", _MainTexOffset);
					}
					else
					{
						material.SetTexture("_MainTex", (Texture)null);
					}
					if (Object.op_Implicit((Object)(object)_Cloud1Tex))
					{
						material.SetTexture("_Cloud1Tex", _Cloud1Tex);
						material.SetTextureScale("_Cloud1Tex", _Cloud1TexScale);
						material.SetTextureOffset("_Cloud1Tex", _Cloud1TexOffset);
					}
					else
					{
						material.SetTexture("_Cloud1Tex", (Texture)null);
					}
					if (Object.op_Implicit((Object)(object)_Cloud2Tex))
					{
						material.SetTexture("_Cloud2Tex", _Cloud2Tex);
						material.SetTextureScale("_Cloud2Tex", _Cloud2TexScale);
						material.SetTextureOffset("_Cloud2Tex", _Cloud2TexOffset);
					}
					else
					{
						material.SetTexture("_Cloud2Tex", (Texture)null);
					}
					if (Object.op_Implicit((Object)(object)_RemapTex))
					{
						material.SetTexture("_RemapTex", _RemapTex);
						material.SetTextureScale("_RemapTex", _RemapTexScale);
						material.SetTextureOffset("_RemapTex", _RemapTexOffset);
					}
					else
					{
						material.SetTexture("_RemapTex", (Texture)null);
					}
					material.SetVector("_CutoffScroll", _CutoffScroll);
					material.SetFloat("_InvFade", _SoftFactor);
					material.SetFloat("_SoftPower", _SoftPower);
					material.SetFloat("_Boost", _BrightnessBoost);
					material.SetFloat("_RimPower", _RimPower);
					material.SetFloat("_RimStrength", _RimStrength);
					material.SetFloat("_AlphaBoost", _AlphaBoost);
					material.SetFloat("_IntersectionStrength", _IntersectionStrength);
					material.SetFloat("_Cull", Convert.ToSingle(_Cull_Mode));
					SetShaderKeywordBasedOnBool(_FadeFromVertexColorsOn, material, "FADE_FROM_VERTEX_COLORS");
					SetShaderKeywordBasedOnBool(_EnableTriplanarProjectionsForClouds, material, "TRIPLANAR");
				}
			}
		}

		public class HGSolidParallaxController : MaterialController
		{
			public enum _RampEnum
			{
				TwoTone = 0,
				SmoothedTwoTone = 1,
				Unlitish = 3,
				Subsurface = 4,
				Grass = 5
			}

			public enum _CullEnum
			{
				Off,
				Front,
				Back
			}

			public Vector4 _Color;

			public Texture _MainTex;

			public Vector2 _MainTexScale;

			public Vector2 _MainTexOffset;

			public Texture _EmissionTex;

			public Vector2 _EmissionTexScale;

			public Vector2 _EmissionTexOffset;

			[Range(0.1f, 20f)]
			public float _EmissionPower;

			public Texture _Normal;

			public Vector2 _NormalScale;

			public Vector2 _NormalOffset;

			[Range(0f, 1f)]
			public float _SpecularStrength;

			[Range(0.1f, 20f)]
			public float _SpecularExponent;

			[Range(0f, 1f)]
			public float _Smoothness;

			public Texture _Height1;

			public Vector2 _Height1Scale;

			public Vector2 _Height1Offset;

			public Texture _Height2;

			public Vector2 _Height2Scale;

			public Vector2 _Height2Offset;

			[Range(0f, 20f)]
			public float _HeightStrength;

			[Range(0f, 1f)]
			public float _HeightBias;

			public Vector4 _ScrollSpeed;

			public float _Parallax;

			public _RampEnum _RampInfo;

			public _CullEnum _Cull_Mode;

			public bool _AlphaClip;

			public void Start()
			{
				GrabMaterialValues();
			}

			public void GrabMaterialValues()
			{
				//IL_001c: 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_004d: Unknown result type (might be due to invalid IL or missing references)
				//IL_0052: Unknown result type (might be due to invalid IL or missing references)
				//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_008f: 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_00aa: Unknown result type (might be due to invalid IL or missing references)
				//IL_00e7: Unknown result type (might be due to invalid IL or missing references)
				//IL_00ec: Unknown result type (might be due to invalid IL or missing references)
				//IL_00fd: Unknown result type (might be due to invalid IL or missing references)
				//IL_0102: 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_019e: Unknown result type (might be due to invalid IL or missing references)
				//IL_01af: Unknown result type (might be due to invalid IL or missing references)
				//IL_01b4: Unknown result type (might be due to invalid IL or missing references)
				//IL_01db: Unknown result type (might be due to invalid IL or missing references)
				//IL_01e0: Unknown result type (might be due to invalid IL or missing references)
				//IL_01f1: Unknown result type (might be due to invalid IL or missing references)
				//IL_01f6: Unknown result type (might be due to invalid IL or missing references)
				//IL_0249: Unknown result type (might be due to invalid IL or missing references)
				//IL_024e: Unknown result type (might be due to invalid IL or missing references)
				if (Object.op_Implicit((Object)(object)material))
				{
					_Color = Color.op_Implicit(material.GetColor("_Color"));
					_MainTex = material.GetTexture("_MainTex");
					_MainTexScale = material.GetTextureScale("_MainTex");
					_MainTexOffset = material.GetTextureOffset("_MainTex");
					_EmissionTex = material.GetTexture("_EmissionTex");
					_EmissionTexScale = material.GetTextureScale("_EmissionTex");
					_EmissionTexOffset = material.GetTextureOffset("_EmissionTex");
					_EmissionPower = material.GetFloat("_EmissionPower");
					_Normal = material.GetTexture("_Normal");
					_NormalScale = material.GetTextureScale("_Normal");
					_NormalOffset = material.GetTextureOffset("_Normal");
					_Smoothness = material.GetFloat("_Smoothness");
					_SpecularStrength = material.GetFloat("_SpecularStrength");
					_SpecularExponent = material.GetFloat("_SpecularExponent");
					_Cull_Mode = (_CullEnum)material.GetFloat("_Cull");
					_RampInfo = (_RampEnum)material.GetFloat("_RampInfo");
					_Height1 = material.GetTexture("_Height1");
					_Height1Scale = material.GetTextureScale("_Height1");
					_Height1Offset = material.GetTextureOffset("_Height1");
					_Height2 = material.GetTexture("_Height2");
					_Height2Scale = material.GetTextureScale("_Height2");
					_Height2Offset = material.GetTextureOffset("_Height2");
					_HeightStrength = material.GetFloat("_HeightStrength");
					_HeightBias = material.GetFloat("_HeightBias");
					_Parallax = material.GetFloat("_Parallax");
					_ScrollSpeed = material.GetVector("_ScrollSpeed");
					_AlphaClip = material.IsKeywordEnabled("ALPHACLIP");
					MaterialName = ((Object)material).name;
				}
			}

			public void Update()
			{
				//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_0096: Unknown result type (might be due to invalid IL or missing references)
				//IL_00ac: Unknown result type (might be due to invalid IL or missing references)
				//IL_00f8: 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_0208: Unknown result type (might be due to invalid IL or missing references)
				//IL_021e: Unknown result type (might be due to invalid IL or missing references)
				//IL_026a: Unknown result type (might be due to invalid IL or missing references)
				//IL_0280: Unknown result type (might be due to invalid IL or missing references)
				//IL_02a9: Unknown result type (might be due to invalid IL or missing references)
				if (Object.op_Implicit((Object)(object)material))
				{
					if (((Object)material).name != MaterialName && Object.op_Implicit((Object)(object)renderer))
					{
						GrabMaterialValues();
						PutMaterialIntoMeshRenderer(renderer, material);
					}
					material.SetColor("_Color", Color.op_Implicit(_Color));
					if (Object.op_Implicit((Object)(object)_MainTex))
					{
						material.SetTexture("_MainTex", _MainTex);
						material.SetTextureScale("_MainTex", _MainTexScale);
						material.SetTextureOffset("_MainTex", _MainTexOffset);
					}
					else
					{
						material.SetTexture("_MainTex", (Texture)null);
					}
					if (Object.op_Implicit((Object)(object)_EmissionTex))
					{
						material.SetTexture("_EmissionTex", _EmissionTex);
						material.SetTextureScale("_EmissionTex", _EmissionTexScale);
						material.SetTextureOffset("_EmissionTex", _EmissionTexOffset);
					}
					else
					{
						material.SetTexture("_EmissionTex", (Texture)null);
					}
					material.SetFloat("_Smoothness", _Smoothness);
					material.SetFloat("_EmissionPower", _EmissionPower);
					material.SetFloat("_SpecularExponent", _SpecularExponent);
					material.SetFloat("_SpecularStrength", _SpecularStrength);
					material.SetFloat("_Cull", Convert.ToSingle(_Cull_Mode));
					material.SetFloat("_RampInfo", Convert.ToSingle(_RampInfo));
					material.SetFloat("_HeightBias", _HeightBias);
					if (Object.op_Implicit((Object)(object)_Height1))
					{
						material.SetTexture("_Height1", _Height1);
						material.SetTextureScale("_Height1", _Height1Scale);
						material.SetTextureOffset("_Height1", _Height1Offset);
					}
					else
					{
						material.SetTexture("_Height1", (Texture)null);
					}
					if (Object.op_Implicit((Object)(object)_Height2))
					{
						material.SetTexture("_Height2", _Height2);
						material.SetTextureScale("_Height2", _Height2Scale);
						material.SetTextureOffset("_Height2", _Height2Offset);
					}
					else
					{
						material.SetTexture("_Height2", (Texture)null);
					}
					material.SetVector("_ScrollSpeed", _ScrollSpeed);
					SetShaderKeywordBasedOnBool(_AlphaClip, material, "ALPHACLIP");
					material.SetFloat("_HeightStrength", _HeightStrength);
					material.SetFloat("_Parallax", _Parallax);
				}
			}
		}

		public class HGWavyClothController : MaterialController
		{
			public enum _RampEnum
			{
				TwoTone = 0,
				SmoothedTwoTone = 1,
				Unlitish = 3,
				Subsurface = 4,
				Grass = 5
			}

			public Vector4 _Color;

			[Range(0f, 1f)]
			public float _Cutoff;

			public Texture _MainTex;

			public Vector2 _MainTexScale;

			public Vector2 _MainTexOffset;

			public Texture _ScrollingNormalMap;

			public Vector2 _NormalScale;

			public Vector2 _NormalOffset;

			[Range(0f, 5f)]
			public float _NormalStrength;

			public Vector4 _Scroll;

			[Range(0f, 5f)]
			public float _VertexOffsetStrength;

			public Vector4 _WindVector;

			[Range(0f, 1f)]
			public float _Smoothness;

			public _RampEnum _RampInfo;

			[Range(0f, 1f)]
			public float _SpecularStrength;

			[Range(0.1f, 20f)]
			public float _SpecularExponent;

			public bool _EnableVertexColorDistortion;

			public void Start()
			{
				GrabMaterialValues();
			}

			public void GrabMaterialValues()
			{
				//IL_001c: 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_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_0079: Unknown result type (might be due to invalid IL or missing references)
				//IL_007e: 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_00aa: Unknown result type (might be due to invalid IL or missing references)
				//IL_00bb: Unknown result type (might be due to invalid IL or missing references)
				//IL_00c0: Unknown result type (might be due to invalid IL or missing references)
				//IL_00e7: Unknown result type (might be due to invalid IL or missing references)
				//IL_00ec: 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_0118: Unknown result type (might be due to invalid IL or missing references)
				if (Object.op_Implicit((Object)(object)material))
				{
					_Color = Color.op_Implicit(material.GetColor("_Color"));
					_Cutoff = material.GetFloat("_Cutoff");
					_MainTex = material.GetTexture("_MainTex");
					_MainTexScale = material.GetTextureScale("_MainTex");
					_MainTexOffset = material.GetTextureOffset("_MainTex");
					_ScrollingNormalMap = material.GetTexture("_ScrollingNormalMap");
					_NormalScale = material.GetTextureScale("_ScrollingNormalMap");
					_NormalOffset = material.GetTextureOffset("_ScrollingNormalMap");
					_NormalStrength = material.GetFloat("_NormalStrength");
					_Scroll = material.GetVector("_Scroll");
					_VertexOffsetStrength = material.GetFloat("_VertexOffsetStrength");
					_WindVector = material.GetVector("_WindVector");
					_Smoothness = material.GetFloat("_Smoothness");
					_RampInfo = (_RampEnum)material.GetFloat("_RampInfo");
					_SpecularStrength = material.GetFloat("_SpecularStrength");
					_SpecularExponent = material.GetFloat("_SpecularExponent");
					_EnableVertexColorDistortion = material.IsKeywordEnabled("VERTEX_RED_FOR_DISTORTION");
					MaterialName = ((Object)material).name;
				}
			}

			public void Update()
			{
				//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_0096: Unknown result type (might be due to invalid IL or missing references)
				//IL_00ac: Unknown result type (might be due to invalid IL or missing references)
				//IL_00f8: 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_01c5: Unknown result type (might be due to invalid IL or missing references)
				//IL_01db: Unknown result type (might be due to invalid IL or missing references)
				if (Object.op_Implicit((Object)(object)material))
				{
					if (((Object)material).name != MaterialName && Object.op_Implicit((Object)(object)renderer))
					{
						GrabMaterialValues();
						PutMaterialIntoMeshRenderer(renderer, material);
					}
					material.SetColor("_Color", Color.op_Implicit(_Color));
					if (Object.op_Implicit((Object)(object)_MainTex))
					{
						material.SetTexture("_MainTex", _MainTex);
						material.SetTextureScale("_MainTex", _MainTexScale);
						material.SetTextureOffset("_MainTex", _MainTexOffset);
					}
					else
					{
						material.SetTexture("_MainTex", (Texture)null);
					}
					if (Object.op_Implicit((Object)(object)_ScrollingNormalMap))
					{
						material.SetTexture("_ScrollingNormalMap", _ScrollingNormalMap);
						material.SetTextureScale("_ScrollingNormalMap", _NormalScale);
						material.SetTextureOffset("_ScrollingNormalMap", _NormalOffset);
					}
					else
					{
						material.SetTexture("_ScrollingNormalMap", (Texture)null);
					}
					material.SetFloat("_Smoothness", _Smoothness);
					material.SetFloat("_Cutoff", _Cutoff);
					material.SetFloat("_SpecularExponent", _SpecularExponent);
					material.SetFloat("_SpecularStrength", _SpecularStrength);
					material.SetFloat("_VertexOffsetStrength", _VertexOffsetStrength);
					material.SetFloat("_RampInfo", Convert.ToSingle(_RampInfo));
					material.SetVector("_Scroll", _Scroll);
					material.SetVector("_WindVector", _WindVector);
					SetShaderKeywordBasedOnBool(_EnableVertexColorDistortion, material, "VERTEX_RED_FOR_DISTORTION");
					material.SetFloat("_NormalStrength", _NormalStrength);
				}
			}
		}

		public class HGOpaqueCloudRemap : MaterialController
		{
			public enum _RampEnum
			{
				TwoTone = 0,
				SmoothedTwoTone = 1,
				Unlitish = 3,
				Subsurface = 4,
				Grass = 5
			}

			public enum _CullEnum
			{
				Off,
				Front,
				Back
			}

			public Color _TintColor;

			public Color _EmissionColor;

			public Texture _MainTex;

			public Vector2 _MainTexScale;

			public Vector2 _MainTexOffset;

			[Range(0f, 5f)]
			public float _NormalStrength;

			public Texture _NormalTex;

			public Texture _Cloud1Tex;

			public Vector2 _Cloud1TexScale;

			public Vector2 _Cloud1TexOffset;

			public Texture _Cloud2Tex;

			public Vector2 _Cloud2TexScale;

			public Vector2 _Cloud2TexOffset;

			public Texture _RemapTex;

			public Vector2 _RemapTexScale;

			public Vector2 _RemapTexOffset;

			public Vector4 _CutoffScroll;

			[Range(0f, 30f)]
			public float _InvFade;

			[Range(0f, 20f)]
			public float _AlphaBoost;

			[Range(0f, 1f)]
			public float _Cutoff;

			[Range(0f, 1f)]
			public float _SpecularStrength;

			[Range(0.1f, 20f)]
			public float _SpecularExponent;

			[Range(0f, 10f)]
			public float _ExtrusionStrength;

			public _RampEnum _RampInfo;

			public bool _EmissionFromAlbedo;

			public bool _CloudNormalMap;

			public bool _VertexAlphaOn;

			public _CullEnum _Cull;

			public float _ExternalAlpha;

			public void Start()
			{
				GrabMaterialValues();
			}

			private void GrabMaterialValues()
			{
				//IL_001c: 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_0032: Unknown result type (might be due to invalid IL or missing references)
				//IL_0037: Unknown result type (might be due to invalid IL or missing references)
				//IL_005e: Unknown result type (might be due to invalid IL or missing references)
				//IL_0063: 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_0079: 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_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_00e7: 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_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_0150: Unknown result type (might be due to invalid IL or missing references)
				//IL_0155: Unknown result type (might be due to invalid IL or missing references)
				//IL_0166: 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_017c: Unknown result type (might be due to invalid IL or missing references)
				//IL_0181: Unknown result type (might be due to invalid IL or missing references)
				if (Object.op_Implicit((Object)(object)material))
				{
					_TintColor = material.GetColor("_TintColor");
					_EmissionColor = material.GetColor("_EmissionColor");
					_MainTex = material.GetTexture("_MainTex");
					_MainTexScale = material.GetTextureScale("_MainTex");
					_MainTexOffset = material.GetTextureOffset("_MainTex");
					_NormalStrength = material.GetFloat("_NormalStrength");
					_NormalTex = material.GetTexture("_NormalTex");
					_Cloud1Tex = material.GetTexture("_Cloud1Tex");
					_Cloud1TexScale = material.GetTextureScale("_Cloud1Tex");
					_Cloud1TexOffset = material.GetTextureOffset("_Cloud1Tex");
					_Cloud2Tex = material.GetTexture("_Cloud2Tex");
					_Cloud2TexScale = material.GetTextureScale("_Cloud2Tex");
					_Cloud2TexOffset = material.GetTextureScale("_Cloud2Tex");
					_RemapTex = material.GetTexture("_RemapTex");
					_RemapTexScale = material.GetTextureScale("_RemapTex");
					_RemapTexOffset = material.GetTextureOffset("_RemapTex");
					_CutoffScroll = material.GetVector("_CutoffScroll");
					_InvFade = material.GetFloat("_InvFade");
					_AlphaBoost = material.GetFloat("_AlphaBoost");
					_Cutoff = material.GetFloat("_Cutoff");
					_SpecularStrength = material.GetFloat("_SpecularStrength");
					_SpecularExponent = material.GetFloat("_SpecularExponent");
					_ExtrusionStrength = material.GetFloat("_ExtrusionFloat");
					_RampInfo = (_RampEnum)material.GetInt("_RampInfo");
					_EmissionFromAlbedo = material.IsKeywordEnabled("EMISSIONFROMALBEDO");
					_CloudNormalMap = material.IsKeywordEnabled("CLOUDNORMAL");
					_VertexAlphaOn = material.IsKeywordEnabled("VERTEXALPHA");
					_Cull = (_CullEnum)material.GetInt("_Cull");
					_ExternalAlpha = material.GetFloat("_ExternalAlpha");
				}
			}

			public void Update()
			{
				//IL_0055: Unknown result type (might be due to invalid IL or missing references)
				//IL_006b: Unknown result type (might be due to invalid IL or missing references)
				//IL_00a4: Unknown result type (might be due to invalid IL or missing references)
				//IL_00ba: Unknown result type (might be due to invalid IL or missing references)
				//IL_0152: Unknown result type (might be due to invalid IL or missing references)
				//IL_0168: Unknown result type (might be due to invalid IL or missing references)
				//IL_01b4: Unknown result type (might be due to invalid IL or missing references)
				//IL_01ca: Unknown result type (might be due to invalid IL or missing references)
				//IL_0216: 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_0255: Unknown result type (might be due to invalid IL or missing references)
				if (Object.op_Implicit((Object)(object)material) && ((Object)material).name != MaterialName && Object.op_Implicit((Object)(object)renderer))
				{
					GrabMaterialValues();
					PutMaterialIntoMeshRenderer(renderer, material);
				}
				material.SetColor("_TintColor", _TintColor);
				material.SetColor("_EmissionColor", _EmissionColor);
				if (Object.op_Implicit((Object)(object)_MainTex))
				{
					material.SetTexture("_MainTex", _MainTex);
					material.SetTextureScale("_MainTex", _MainTexScale);
					material.SetTextureOffset("_MainTex", _MainTexOffset);
				}
				else
				{
					material.SetTexture("_MainTex", (Texture)null);
				}
				material.SetFloat("_NormalStrength", _NormalStrength);
				if (Object.op_Implicit((Object)(object)_NormalTex))
				{
					material.SetTexture("_NormalTex", _NormalTex);
				}
				else
				{
					material.SetTexture("_NormalTex", (Texture)null);
				}
				if (Object.op_Implicit((Object)(object)_Cloud1Tex))
				{
					material.SetTexture("_Cloud1Tex", _Cloud1Tex);
					material.SetTextureScale("_Cloud1Tex", _Cloud1TexScale);
					material.SetTextureOffset("_Cloud1Tex", _Cloud1TexOffset);
				}
				else
				{
					material.SetTexture("_Cloud1Tex", (Texture)null);
				}
				if (Object.op_Implicit((Object)(object)_Cloud2Tex))
				{
					material.SetTexture("_Cloud2Tex", _Cloud2Tex);
					material.SetTextureScale("_Cloud2Tex", _Cloud2TexScale);
					material.SetTextureOffset("_Cloud2Tex", _Cloud2TexOffset);
				}
				else
				{
					material.SetTexture("_Cloud2Tex", (Texture)null);
				}
				if (Object.op_Implicit((Object)(object)_RemapTex))
				{
					material.SetTexture("_RemapTex", _RemapTex);
					material.SetTextureScale("_RemapTex", _RemapTexScale);
					material.SetTextureOffset("_RemapTex", _RemapTexOffset);
				}
				else
				{
					material.SetTexture("_RemapTex", (Texture)null);
				}
				material.SetVector("_CutoffScroll", _CutoffScroll);
				material.SetFloat("_InvFade", _InvFade);
				material.SetFloat("_AlphaBoost", _AlphaBoost);
				material.SetFloat("_Cutoff", _Cutoff);
				material.SetFloat("_SpecularStrength", _SpecularStrength);
				material.SetFloat("_SpecularExponent", _SpecularExponent);
				material.SetFloat("_ExtrusionStrength", _ExtrusionStrength);
				material.SetInt("_RampInfo", (int)_RampInfo);
				SetShaderKeywordBasedOnBool(_EmissionFromAlbedo, material, "EMISSIONFROMALBEDO");
				SetShaderKeywordBasedOnBool(_CloudNormalMap, material, "CLOUDNORMAL");
				SetShaderKeywordBasedOnBool(_VertexAlphaOn, material, "VERTEXALPHA");
				material.SetInt("_Cull", (int)_Cull);
				material.SetFloat("_ExternalAlpha", _ExternalAlpha);
			}
		}

		public class HGDistantWaterController : MaterialController
		{
			public enum _RampEnum
			{
				TwoTone = 0,
				SmoothedTwoTone = 1,
				Unlitish = 3,
				Subsurface = 4,
				Grass = 5
			}

			public new Material material;

			public new Renderer renderer;

			public new string MaterialName;

			public Vector4 _Color;

			public Texture _MainTex;

			public Vector2 _MainTexScale;

			public Vector2 _MainTexOffset;

			[Range(0f, 5f)]
			public float _NormalStrength;

			public Texture _Normal1Tex;

			public Vector2 _Normal1TexScale;

			public Vector2 _Normal1TexOffset;

			public Texture _Normal2Tex;

			public Vector2 _Normal2TexScale;

			public Vector2 _Normal2TexOffset;

			public Vector4 _Scroll;

			[Range(0f, 5f)]
			public float _VertexOffsetStrength;

			[Range(0f, 1f)]
			public float _Smoothness;

			public _RampEnum _RampInfo;

			[Range(0f, 1f)]
			public float _SpecularStrength;

			[Range(0f, 20f)]
			public float _SpecularExponent;

			public void Start()
			{
				material.shader = Resources.Load<Shader>("shaders/environment/hgdistantwater");
				GrabMaterialValues();
			}

			public void GrabMaterialValues()
			{
				//IL_001c: 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_004d: Unknown result type (might be due to invalid IL or missing references)
				//IL_0052: Unknown result type (might be due to invalid IL or missing references)
				//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_00a5: Unknown result type (might be due to invalid IL or missing references)
				//IL_00aa: Unknown result type (might be due to invalid IL or missing references)
				//IL_00bb: Unknown result type (might be due to invalid IL or missing references)
				//IL_00c0: Unknown result type (might be due to invalid IL or missing references)
				//IL_00e7: Unknown result type (might be due to invalid IL or missing references)
				//IL_00ec: Unknown result type (might be due to invalid IL or missing references)
				//IL_00fd: Unknown result type (might be due to invalid IL or missing references)
				//IL_0102: 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_0118: Unknown result type (might be due to invalid IL or missing references)
				if (Object.op_Implicit((Object)(object)material))
				{
					_Color = Color.op_Implicit(material.GetColor("_Color"));
					_MainTex = material.GetTexture("_MainTex");
					_MainTexScale = material.GetTextureScale("_MainTex");
					_MainTexOffset = material.GetTextureOffset("_MainTex");
					_NormalStrength = material.GetFloat("_NormalStrength");
					_Normal1Tex = material.GetTexture("_Normal1Tex");
					_Normal1TexScale = material.GetTextureScale("_Normal1Tex");
					_Normal1TexOffset = material.GetTextureOffset("_Normal1Tex");
					_Normal2Tex = material.GetTexture("_Normal2Tex");
					_Normal2TexScale = material.GetTextureScale("_Normal2Tex");
					_Normal2TexOffset = material.GetTextureOffset("_Normal2Tex");
					_Scroll = material.GetVector("_Scroll");
					_VertexOffsetStrength = material.GetFloat("_VertexOffsetStrength");
					_Smoothness = material.GetFloat("_Smoothness");
					_RampInfo = (_RampEnum)material.GetFloat("_RampInfo");
					_SpecularStrength = material.GetFloat("_SpecularStrength");
					_SpecularExponent = material.GetFloat("_SpecularExponent");
					MaterialName = ((Object)material).name;
				}
			}

			public void Update()
			{
				//IL_0052: Unknown result type (might be due to invalid IL or missing references)
				//IL_0057: Unknown result type (might be due to invalid IL or missing references)
				//IL_0090: Unknown result type (might be due to invalid IL or missing references)
				//IL_00a6: Unknown result type (might be due to invalid IL or missing references)
				//IL_0108: Unknown result type (might be due to invalid IL or missing references)
				//IL_011e: 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_0180: Unknown result type (might be due to invalid IL or missing references)
				//IL_01a9: Unknown result type (might be due to invalid IL or missing references)
				if (Object.op_Implicit((Object)(object)material))
				{
					if (((Object)material).name != MaterialName && Object.op_Implicit((Object)(object)renderer))
					{
						PutMaterialIntoMeshRenderer(renderer, material);
					}
					material.SetColor("_Color", Color.op_Implicit(_Color));
					if (Object.op_Implicit((Object)(object)_MainTex))
					{
						material.SetTexture("_MainTex", _MainTex);
						material.SetTextureScale("_MainTex", _MainTexScale);
						material.SetTextureOffset("_MainTex", _MainTexOffset);
					}
					else
					{
						material.SetTexture("_MainTex", (Texture)null);
					}
					material.SetFloat("_NormalStrength", _NormalStrength);
					if (Object.op_Implicit((Object)(object)_Normal1Tex))
					{
						material.SetTexture("_Normal1Tex", _Normal1Tex);
						material.SetTextureScale("_Normal1Tex", _Normal1TexScale);
						material.SetTextureOffset("_Normal1Tex", _Normal1TexOffset);
					}
					else
					{
						material.SetTexture("_Normal1Tex", (Texture)null);
					}
					if (Object.op_Implicit((Object)(object)_Normal2Tex))
					{
						material.SetTexture("_Normal2Tex", _Normal2Tex);
						material.SetTextureScale("_Normal2Tex", _Normal2TexScale);
						material.SetTextureOffset("_Normal2Tex", _Normal2TexOffset);
					}
					else
					{
						material.SetTexture("_Normal2Tex", (Texture)null);
					}
					material.SetVector("_Scroll", _Scroll);
					material.SetFloat("_VertexOffsetStrength", _VertexOffsetStrength);
					material.SetFloat("_Smoothness", _Smoothness);
					material.SetFloat("_RampInfo", Convert.ToSingle(_RampInfo));
					material.SetFloat("_SpecularExponent", _SpecularExponent);
					material.SetFloat("_SpecularStrength", _SpecularStrength);
				}
			}
		}

		public static void SetShaderKeywordBasedOnBool(bool enabled, Material material, string keyword)
		{
			if (!Object.op_Implicit((Object)(object)material))
			{
				Debug.LogError((object)"Material field was null, cannot run shader keyword method.");
			}
			else if (enabled)
			{
				if (!material.IsKeywordEnabled(keyword))
				{
					material.EnableKeyword(keyword);
				}
			}
			else if (material.IsKeywordEnabled(keyword))
			{
				material.DisableKeyword(keyword);
			}
		}

		public static void PutMaterialIntoMeshRenderer(Renderer meshRenderer, Material material)
		{
			if (Object.op_Implicit((Object)(object)material) && Object.op_Implicit((Object)(object)meshRenderer))
			{
				SkinnedMeshRenderer val;
				if ((Object)(object)(val = (SkinnedMeshRenderer)(object)((meshRenderer is SkinnedMeshRenderer) ? meshRenderer : null)) != (Object)null)
				{
					((Renderer)val).sharedMaterials = (Material[])(object)new Material[1] { material };
				}
				MeshRenderer val2;
				if ((Object)(object)(val2 = (MeshRenderer)(object)((meshRenderer is MeshRenderer) ? meshRenderer : null)) != (Object)null)
				{
					((Renderer)val2).material = material;
				}
			}
		}
	}
}
namespace PlasmaCoreSpikestripContent.Core
{
	[R2APISubmoduleDependency(new string[] { "ContentAddition", "ArtifactCodeAPI", "NetworkingAPI", "RecalculateStatsAPI" })]
	[BepInPlugin("com.plasmacore.PlasmaCoreSpikestripContent", "PlasmaCoreSpikestripContent", "1.1.6")]
	public class PlasmaCorePlugin : BaseUnityPlugin
	{
		public static AssetBundle bundle;

		public static GameObject skyShardProjectile;

		public static Dictionary<string, SSItemBaseSO> itemBaseScriptableObjects = new Dictionary<string, SSItemBaseSO>();

		public static Dictionary<string, SSEquipBaseSO> equipBaseScriptableObjects = new Dictionary<string, SSEquipBaseSO>();

		public static Dictionary<string, SSArtifactBaseSO> artifactBaseScriptableObjects = new Dictionary<string, SSArtifactBaseSO>();

		public static Dictionary<string, SSInteractibleBaseSO> interactibleBaseScriptableObjects = new Dictionary<string, SSInteractibleBaseSO>();

		public static Dictionary<string, SSSkillBaseSO> skillBaseScriptableObjects = new Dictionary<string, SSSkillBaseSO>();

		public static Dictionary<string, SSEnemyBaseSO> enemyBaseScriptableObjects = new Dictionary<string, SSEnemyBaseSO>();

		public static Dictionary<string, SSEliteBaseSO> eliteBaseScriptableObjects = new Dictionary<string, SSEliteBaseSO>();

		public static GameObject crosshairIFSActive;

		public static GameObject crosshairIFSInactive;

		public static GameObject freezeEffectIFS;

		public void Awake()
		{
			//IL_0064: Unknown result type (might be due to invalid IL or missing references)
			//IL_006e: Expected O, but got Unknown
			//IL_00c8: Unknown result type (might be due to invalid IL or missing references)
			//IL_00cd: Unknown result type (might be due to invalid IL or missing references)
			//IL_0175: Unknown result type (might be due to invalid IL or missing references)
			//IL_017f: Expected O, but got Unknown
			NetworkingAPI.RegisterMessageType<IFSClientTargetRequestNetworkMessage>();
			NetworkingAPI.RegisterMessageType<IFSTargetConfirmRequestNetworkMessage>();
			NetworkingAPI.RegisterMessageType<IFSACtivateEquipmentNetworkMessage>();
			NetworkingAPI.RegisterMessageType<ApplyWeaveDebuffNetworkMessage>();
			PlasmaLog.LogWarn("Uh oh! Someone forgot to turn off debug mode before publishing to ThunderStore!", allLogOnly: true);
			bundle = AssetBundle.LoadFromFile(Assembly.GetExecutingAssembly().Location.Replace("PlasmaCoreSpikestripContent.dll", "plasmacorespikestripcontentpack.bundle"));
			freezeEffectIFS = bundle.LoadAsset<GameObject>("FreezeEffect");
			SpikestripContentBase.effectDefContent.Add(new EffectDef(freezeEffectIFS));
			crosshairIFSActive = bundle.LoadAsset<GameObject>("IFSIndicatorActive");
			crosshairIFSInactive = bundle.LoadAsset<GameObject>("IFSIndicatorInactive");
			skyShardProjectile = bundle.LoadAsset<GameObject>("SkyShardProjectile");
			PlasmaUtils.RegisterNetworkPrefab(skyShardProjectile);
			SpikestripContentBase.projectilePrefabContent.Add(skyShardProjectile);
			Material material = ((Renderer)((Component)Addressables.LoadAssetAsync<GameObject>((object)"e478bf9d9eb031246b7262dd8171c63e").WaitForCompletion().transform.GetChild(4).GetChild(0).GetChild(2)
				.GetChild(0)).GetComponent<MeshRenderer>()).materials[0];
			((Renderer)((Component)bundle.LoadAsset<GameObject>("SkyShardImpactEffect").transform.GetChild(1).GetChild(1)).GetComponent<MeshRenderer>()).material = material;
			((Renderer)((Component)bundle.LoadAsset<GameObject>("SkyShardWarningGhost").transform.GetChild(0).GetChild(0).GetChild(0)
				.GetChild(1)).GetComponent<MeshRenderer>()).material = material;
			SpikestripContentBase.effectDefContent.Add(new EffectDef(bundle.LoadAsset<GameObject>("SkyShardImpactEffect")));
			StubShaders(bundle.LoadAllAssets<Material>());
			PlasmaLog.Log("Getting all ItemBaseSOs", allLogOnly: true);
			SSItemBaseSO[] array = bundle.LoadAllAssets<SSItemBaseSO>();
			foreach (SSItemBaseSO sSItemBaseSO in array)
			{
				PlasmaLog.Log("Adding ItemBaseSO with name " + sSItemBaseSO.ItemName, allLogOnly: true);
				itemBaseScriptableObjects.Add(sSItemBaseSO.ItemName, sSItemBaseSO);
			}
			PlasmaLog.Log("Getting all EquipBaseSOs", allLogOnly: true);
			SSEquipBaseSO[] array2 = bundle.LoadAllAssets<SSEquipBaseSO>();
			foreach (SSEquipBaseSO sSEquipBaseSO in array2)
			{
				PlasmaLog.Log("Adding EquipBaseSO with name " + sSEquipBaseSO.EquipName, allLogOnly: true);
				equipBaseScriptableObjects.Add(sSEquipBaseSO.EquipName, sSEquipBaseSO);
			}
			PlasmaLog.Log("Getting all ArtifactBaseSOs", allLogOnly: true);
			SSArtifactBaseSO[] array3 = bundle.LoadAllAssets<SSArtifactBaseSO>();
			foreach (SSArtifactBaseSO sSArtifactBaseSO in array3)
			{
				PlasmaLog.Log("Adding ArtifactBaseSO with name " + sSArtifactBaseSO.Name, allLogOnly: true);
				artifactBaseScriptableObjects.Add(sSArtifactBaseSO.Name, sSArtifactBaseSO);
			}
			PlasmaLog.Log("Getting all InteractibleBaseSOs", allLogOnly: true);
			SSInteractibleBaseSO[] array4 = bundle.LoadAllAssets<SSInteractibleBaseSO>();
			foreach (SSInteractibleBaseSO sSInteractibleBaseSO in array4)
			{
				PlasmaLog.Log("Adding InteractibleBaseSO with name " + sSInteractibleBaseSO.InteractableName, allLogOnly: true);
				interactibleBaseScriptableObjects.Add(sSInteractibleBaseSO.InteractableName, sSInteractibleBaseSO);
			}
			PlasmaLog.Log("Getting all SkillBaseSOs", allLogOnly: true);
			SSSkillBaseSO[] array5 = bundle.LoadAllAssets<SSSkillBaseSO>();
			foreach (SSSkillBaseSO sSSkillBaseSO in array5)
			{
				PlasmaLog.Log("Adding SkillBaseSO with name " + sSSkillBaseSO.Name, allLogOnly: true);
				skillBaseScriptableObjects.Add(sSSkillBaseSO.Name, sSSkillBaseSO);
			}
			PlasmaLog.Log("Getting all EnemyBaseSOs", allLogOnly: true);
			SSEnemyBaseSO[] array6 = bundle.LoadAllAssets<SSEnemyBaseSO>();
			foreach (SSEnemyBaseSO sSEnemyBaseSO in array6)
			{
				PlasmaLog.Log("Adding EnemyBaseSO with name " + sSEnemyBaseSO.Name, allLogOnly: true);
				enemyBaseScriptableObjects.Add(sSEnemyBaseSO.Name, sSEnemyBaseSO);
			}
			PlasmaLog.Log("Getting all EnemyBaseSOs", allLogOnly: true);
			SSEliteBaseSO[] array7 = bundle.LoadAllAssets<SSEliteBaseSO>();
			foreach (SSEliteBaseSO sSEliteBaseSO in array7)
			{
				PlasmaLog.Log("Adding EnemyBaseSO with name " + sSEliteBaseSO.Name, allLogOnly: true);
				eliteBaseScriptableObjects.Add(sSEliteBaseSO.Name, sSEliteBaseSO);
			}
		}

		private SkillDriverEvaluation? BaseAI_EvaluateSingleSkillDriverDebug(orig_EvaluateSingleSkillDriver orig, BaseAI self, ref SkillDriverEvaluation currentSkillDriverEvaluation, AISkillDriver aiSkillDriver, float myHealthFraction)
		{
			//IL_00b5: Unknown result type (might be due to invalid IL or missing references)
			//IL_00bb: Invalid comparison between Unknown and I4
			//IL_00c5: Unknown result type (might be due to invalid IL or missing references)
			//IL_017f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0184: Unknown result type (might be due to invalid IL or missing references)
			//IL_0186: Unknown result type (might be due to invalid IL or missing references)
			//IL_019d: Expected I4, but got Unknown
			//IL_01d9: Unknown result type (might be due to invalid IL or missing references)
			//IL_01de: 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_0205: 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_0250: Unknown result type (might be due to invalid IL or missing references)
			//IL_0255: Unknown result type (might be due to invalid IL or missing references)
			//IL_0371: 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_0388: Unknown result type (might be due to invalid IL or missing references)
			//IL_038a: Unknown result type (might be due to invalid IL or missing references)
			//IL_038d: Unknown result type (might be due to invalid IL or missing references)
			//IL_039f: Expected I4, but got Unknown
			PlasmaLog.LogWarn("Evaluating driver " + aiSkillDriver.customName);
			if (!Object.op_Implicit((Object)(object)self.body) || !Object.op_Implicit((Object)(object)self.bodySkillLocator))
			{
				PlasmaLog.LogError("No SkillLocator or Body");
			}
			float num = float.PositiveInfinity;
			if (aiSkillDriver.noRepeat && (Object)(object)currentSkillDriverEvaluation.dominantSkillDriver == (Object)(object)aiSkillDriver)
			{
				PlasmaLog.LogError("Cannot repeat driver");
			}
			if (aiSkillDriver.maxTimesSelected >= 0 && aiSkillDriver.timesSelected >= aiSkillDriver.maxTimesSelected)
			{
				PlasmaLog.LogError("Exceeded max times selected");
			}
			Target val = null;
			if (aiSkillDriver.requireEquipmentReady && self.body.equipmentSlot.stock <= 0)
			{
				PlasmaLog.LogError("Equipment not ready");
			}
			if ((int)aiSkillDriver.skillSlot != -1)
			{
				GenericSkill skill = self.bodySkillLocator.GetSkill(aiSkillDriver.skillSlot);
				if (aiSkillDriver.requireSkillReady && (!Object.op_Implicit((Object)(object)skill) || !skill.IsReady()))
				{
					PlasmaLog.LogError("Skill not ready");
				}
				if (Object.op_Implicit((Object)(object)aiSkillDriver.requiredSkill) && (!Object.op_Implicit((Object)(object)skill) || !((Object)(object)skill.skillDef == (Object)(object)aiSkillDriver.requiredSkill)))
				{
					PlasmaLog.LogError("Required skill does not match");
				}
			}
			if (aiSkillDriver.minUserHealthFraction > myHealthFraction || aiSkillDriver.maxUserHealthFraction < myHealthFraction)
			{
				PlasmaLog.LogError("Health fraction not in range");
			}
			if (Object.op_Implicit((Object)(object)self.bodyCharacterMotor) && !self.bodyCharacterMotor.isGrounded && aiSkillDriver.selectionRequiresOnGround)
			{
				PlasmaLog.LogError("Motor is not grounded");
			}
			TargetType moveTargetType = aiSkillDriver.moveTargetType;
			switch ((int)moveTargetType)
			{
			case 0:
				if (self.GameObjectPassesSkillDriverFilters(self.currentEnemy, aiSkillDriver, ref num))
				{
					val = self.currentEnemy;
				}
				break;
			case 1:
				if (Object.op_Implicit((Object)(object)self.bodyInputBank))
				{
					self.buddySearch.teamMaskFilter = TeamMask.none;
					((TeamMask)(ref self.buddySearch.teamMaskFilter)).AddTeam(self.master.teamIndex);
					self.buddySearch.sortMode = (SortMode)1;
					self.buddySearch.minDistanceFilter = aiSkillDriver.minDistanceSqr;
					self.buddySearch.maxDistanceFilter = aiSkillDriver.maxDistance;
					self.buddySearch.searchOrigin = self.bodyInputBank.aimOrigin;
					self.buddySearch.searchDirection = self.bodyInputBank.aimDirection;
					self.buddySearch.maxAngleFilter = 180f;
					self.buddySearch.filterByLoS = aiSkillDriver.activationRequiresTargetLoS;
					self.buddySearch.RefreshCandidates();
					if (Object.op_Implicit((Object)(object)self.body))
					{
						self.buddySearch.FilterOutGameObject(((Component)self.body).gameObject);
					}
					self.buddySearch.FilterCandidatesByHealthFraction(aiSkillDriver.minTargetHealthFraction, aiSkillDriver.maxTargetHealthFraction);
					HurtBox val2 = self.buddySearch.GetResults().FirstOrDefault();
					if (Object.op_Implicit((Object)(object)val2) && Object.op_Implicit((Object)(object)val2.healthComponent))
					{
						self.buddy.gameObject = ((Component)val2.healthComponent).gameObject;
						self.buddy.bestHurtBox = val2;
					}
					if (self.GameObjectPassesSkillDriverFilters(self.buddy, aiSkillDriver, ref num))
					{
						val = self.buddy;
					}
				}
				break;
			case 2:
				if (self.GameObjectPassesSkillDriverFilters(self.leader, aiSkillDriver, ref num))
				{
					val = self.leader;
				}
				break;
			case 3:
				if (self.GameObjectPassesSkillDriverFilters(self.customTarget, aiSkillDriver, ref num))
				{
					val = self.customTarget;
				}
				break;
			}
			if (val == null)
			{
				PlasmaLog.LogError("No movetarget");
			}
			Target val3 = null