Decompiled source of ExtradimensionalItems v0.5.11

plugins/viliger-ExtradimensionalItems/ExtradimensionalItems.dll

Decompiled a week 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.InteropServices;
using System.Runtime.Versioning;
using System.Security;
using System.Security.Permissions;
using System.Text.RegularExpressions;
using BepInEx;
using BepInEx.Bootstrap;
using BepInEx.Configuration;
using BepInEx.Logging;
using EntityStates;
using ExtradimensionalItems.Modules.Content;
using ExtradimensionalItems.Modules.Effects;
using ExtradimensionalItems.Modules.Equipment;
using ExtradimensionalItems.Modules.Interactables;
using ExtradimensionalItems.Modules.Items;
using ExtradimensionalItems.Modules.Items.ItemBehaviors;
using ExtradimensionalItems.Modules.SkillStates;
using ExtradimensionalItems.Modules.UI;
using HG;
using HG.Reflection;
using HarmonyLib;
using IL.RoR2.UI;
using KinematicCharacterController;
using Mono.Cecil.Cil;
using MonoMod.Cil;
using On.RoR2;
using On.RoR2.Items;
using On.RoR2.UI;
using R2API;
using R2API.Networking;
using R2API.Networking.Interfaces;
using RiskOfOptions;
using RiskOfOptions.Components.Panel;
using RiskOfOptions.OptionConfigs;
using RiskOfOptions.Options;
using RoR2;
using RoR2.Artifacts;
using RoR2.Audio;
using RoR2.ExpansionManagement;
using RoR2.Skills;
using RoR2.UI;
using ShrineOfRepair.Modules;
using SimpleJSON;
using TMPro;
using UnityEngine;
using UnityEngine.AddressableAssets;
using UnityEngine.Bindings;
using UnityEngine.Networking;
using UnityEngine.Rendering;
using UnityEngine.UI;

[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: AssemblyInformationalVersion("1.0.0")]
[assembly: AssemblyTitle("ExtradimensionalItems")]
[assembly: AssemblyProduct("ExtradimensionalItems")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)]
[assembly: OptIn]
[assembly: AssemblyConfiguration("Release")]
[assembly: AssemblyCompany("ExtradimensionalItems")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("1.0.0.0")]
[module: UnverifiableCode]
namespace ExtradimensionalItems.Modules
{
	public static class ExtensionMethods
	{
		public static void AddOrReplace(this Dictionary<CharacterBody, bool> dictionary, CharacterBody key, bool value)
		{
			if (dictionary.ContainsKey(key))
			{
				dictionary[key] = value;
			}
			else
			{
				dictionary.Add(key, value);
			}
		}

		public static TimedBuff GetTimedBuff(this CharacterBody body, BuffDef buff, bool getLowest = false)
		{
			//IL_0015: Unknown result type (might be due to invalid IL or missing references)
			if (!NetworkServer.active)
			{
				MyLogger.LogWarning("[Server] extension function 'System.Void RoR2.CharacterBody::GetTimedBuff(RoR2.BuffDef, bool)' called on client");
				return null;
			}
			return body.GetTimedBuff(buff.buffIndex, getLowest);
		}

		public static TimedBuff GetTimedBuff(this CharacterBody body, BuffIndex buff, bool getLowest = false)
		{
			//IL_002c: 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)
			if (!NetworkServer.active)
			{
				MyLogger.LogWarning("[Server] extension function 'System.Void RoR2.CharacterBody::GetTimedBuff(RoR2.BuffIndex, bool)' called on client");
				return null;
			}
			TimedBuff val = null;
			foreach (TimedBuff timedBuff in body.timedBuffs)
			{
				if (timedBuff.buffIndex == buff)
				{
					if (!getLowest)
					{
						return timedBuff;
					}
					if (val == null || val?.timer > timedBuff.timer)
					{
						val = timedBuff;
					}
				}
			}
			return val;
		}
	}
	[BepInDependency(/*Could not decode attribute arguments.*/)]
	[BepInDependency(/*Could not decode attribute arguments.*/)]
	[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.Viliger.ExtradimensionalItems", "ExtradimensionalItems", "0.5.11")]
	[BepInDependency(/*Could not decode attribute arguments.*/)]
	[BepInDependency(/*Could not decode attribute arguments.*/)]
	[BepInDependency(/*Could not decode attribute arguments.*/)]
	[BepInDependency(/*Could not decode attribute arguments.*/)]
	public class ExtradimensionalItemsPlugin : BaseUnityPlugin
	{
		public static ConfigEntry<bool> ExtensiveLogging;

		public static PluginInfo PInfo;

		public const string BundleFolder = "Assets";

		public const string SoundBanksFolder = "Soundbanks";

		public const string LanguageFolder = "Languages";

		public static Dictionary<string, string> ShaderLookup = new Dictionary<string, string>
		{
			{ "Stubbed Hopoo Games/Deferred/Standard", "shaders/deferred/hgstandard" },
			{ "Hopoo Games/FX/Cloud Remap", "shaders/fx/hgcloudremap" },
			{ "Stubbed Hopoo Games/FX/Cloud Remap", "shaders/fx/hgcloudremap" }
		};

		private void Awake()
		{
			ExtensiveLogging = ((BaseUnityPlugin)this).Config.Bind<bool>("Logging", "Enable extensive logging?", false, "Enables extensive logging, logs every major event related to new content. Might result in worse performance because it logs a lot.");
			MyLogger.Init(((BaseUnityPlugin)this).Logger);
			PInfo = ((BaseUnityPlugin)this).Info;
			foreach (Type item in from type in Assembly.GetExecutingAssembly().GetTypes()
				where !type.IsAbstract && type.IsSubclassOf(typeof(ItemBase))
				select type)
			{
				ItemBase itemBase = (ItemBase)Activator.CreateInstance(item);
				if (ValidateItem(itemBase))
				{
					itemBase.Init(((BaseUnityPlugin)this).Config);
					MyLogger.LogInfo("Item: " + itemBase.ItemLangTokenName + " loaded.");
				}
			}
			foreach (Type item2 in from type in Assembly.GetExecutingAssembly().GetTypes()
				where !type.IsAbstract && type.IsSubclassOf(typeof(EquipmentBase))
				select type)
			{
				EquipmentBase equipmentBase = (EquipmentBase)Activator.CreateInstance(item2);
				if (ValidateEquipment(equipmentBase))
				{
					equipmentBase.Init(((BaseUnityPlugin)this).Config);
					MyLogger.LogInfo("Equipment: " + equipmentBase.EquipmentLangTokenName + " loaded.");
				}
			}
			NetworkingAPI.RegisterMessageType<Chronoshift.ChronoshiftStartMovingOnClient>();
			NetworkingAPI.RegisterMessageType<Chronoshift.ChronoshiftRestoreStateOnServer>();
			NetworkingAPI.RegisterMessageType<DamageOnCooldowns.DamageOnCooldownsSendNumberBuffs>();
			if (RiskOfOptionsCompat.enabled)
			{
				RiskOfOptionsCompat.SetDescription();
				RiskOfOptionsCompat.SetIcon();
				RiskOfOptionsCompat.CreateNewOption(ExtensiveLogging);
			}
		}

		public bool ValidateEquipment(EquipmentBase equipment)
		{
			return ((BaseUnityPlugin)this).Config.Bind<bool>("Equipment: " + equipment.EquipmentName, "Enable Equipment?", true, "Should this equipment appear in runs?").Value;
		}

		public bool ValidateItem(ItemBase item)
		{
			return ((BaseUnityPlugin)this).Config.Bind<bool>("Item: " + item.ItemName, "Enable item?", true, "Should this item appear in runs?").Value;
		}
	}
	public static class MyLogger
	{
		private static ManualLogSource logger;

		public static void Init(ManualLogSource log)
		{
			logger = log;
		}

		public static void LogWarning(object data)
		{
			logger.LogWarning(data);
		}

		public static void LogInfo(object data)
		{
			logger.LogInfo(data);
		}

		public static void LogError(object data)
		{
			logger.LogError(data);
		}

		public static void LogMessage(string data, params string[] args)
		{
			if (ExtradimensionalItemsPlugin.ExtensiveLogging.Value)
			{
				logger.LogMessage((object)string.Format(data, args));
			}
		}
	}
	public static class RiskOfOptionsCompat
	{
		private static bool? _enabled;

		public static bool enabled
		{
			get
			{
				if (!_enabled.HasValue)
				{
					_enabled = Chainloader.PluginInfos.ContainsKey("com.rune580.riskofoptions");
				}
				return _enabled.Value;
			}
		}

		[MethodImpl(MethodImplOptions.NoInlining | MethodImplOptions.NoOptimization)]
		public static void AddDelegateOnModOptionsExit(Action action)
		{
			ModOptionPanelController.OnModOptionsExit = (Action)Delegate.Combine(ModOptionPanelController.OnModOptionsExit, action);
		}

		[MethodImpl(MethodImplOptions.NoInlining | MethodImplOptions.NoOptimization)]
		public static void SetDescription()
		{
			ModSettingsManager.SetModDescription("Items from different worlds.", "com.Viliger.ExtradimensionalItems", "ExtradimensionalItems");
		}

		[MethodImpl(MethodImplOptions.NoInlining | MethodImplOptions.NoOptimization)]
		public static void SetIcon()
		{
			ModSettingsManager.SetModIcon(AssetBundle.LoadFromFile(Path.Combine(Path.GetDirectoryName(ExtradimensionalItemsPlugin.PInfo.Location), "Assets", "config")).LoadAsset<Sprite>("ModIcon.png"), "com.Viliger.ExtradimensionalItems", "ExtradimensionalItems");
		}

		[MethodImpl(MethodImplOptions.NoInlining | MethodImplOptions.NoOptimization)]
		public static void CreateNewOption(ConfigEntry<float> entry, bool restartRequired = false)
		{
			//IL_0001: Unknown result type (might be due to invalid IL or missing references)
			//IL_0006: Unknown result type (might be due to invalid IL or missing references)
			//IL_0012: Expected O, but got Unknown
			//IL_000d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0017: Expected O, but got Unknown
			ModSettingsManager.AddOption((BaseOption)new StepSliderOption(entry, new StepSliderConfig
			{
				restartRequired = restartRequired
			}));
		}

		[MethodImpl(MethodImplOptions.NoInlining | MethodImplOptions.NoOptimization)]
		public static void CreateNewOption(ConfigEntry<float> entry, float min, float max, float increment = 1f, bool restartRequired = false)
		{
			//IL_0001: Unknown result type (might be due to invalid IL or missing references)
			//IL_0006: Unknown result type (might be due to invalid IL or missing references)
			//IL_000d: 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_001b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0028: Expected O, but got Unknown
			//IL_0023: Unknown result type (might be due to invalid IL or missing references)
			//IL_002d: Expected O, but got Unknown
			ModSettingsManager.AddOption((BaseOption)new StepSliderOption(entry, new StepSliderConfig
			{
				min = min,
				max = max,
				increment = increment,
				restartRequired = restartRequired
			}));
		}

		[MethodImpl(MethodImplOptions.NoInlining | MethodImplOptions.NoOptimization)]
		public static void CreateNewOption(ConfigEntry<bool> entry, bool restartRequired = false)
		{
			//IL_0001: Unknown result type (might be due to invalid IL or missing references)
			//IL_0006: Unknown result type (might be due to invalid IL or missing references)
			//IL_0012: Expected O, but got Unknown
			//IL_000d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0017: Expected O, but got Unknown
			ModSettingsManager.AddOption((BaseOption)new CheckBoxOption(entry, new CheckBoxConfig
			{
				restartRequired = restartRequired
			}));
		}

		[MethodImpl(MethodImplOptions.NoInlining | MethodImplOptions.NoOptimization)]
		public static void CreateNewOption(ConfigEntry<int> entry, int min = 0, int max = 200, bool restartRequired = false)
		{
			//IL_0001: Unknown result type (might be due to invalid IL or missing references)
			//IL_0006: Unknown result type (might be due to invalid IL or missing references)
			//IL_000d: 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_0020: Expected O, but got Unknown
			//IL_001b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0025: Expected O, but got Unknown
			ModSettingsManager.AddOption((BaseOption)new IntSliderOption(entry, new IntSliderConfig
			{
				min = min,
				max = max,
				restartRequired = restartRequired
			}));
		}

		[MethodImpl(MethodImplOptions.NoInlining | MethodImplOptions.NoOptimization)]
		public static void CreateNewOption(ConfigEntry<RoyalGuard.ItemType> entry, bool restartRequired = false)
		{
			//IL_0001: Unknown result type (might be due to invalid IL or missing references)
			//IL_0006: Unknown result type (might be due to invalid IL or missing references)
			//IL_0012: Expected O, but got Unknown
			//IL_000d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0017: Expected O, but got Unknown
			ModSettingsManager.AddOption((BaseOption)new ChoiceOption((ConfigEntryBase)(object)entry, new ChoiceConfig
			{
				restartRequired = restartRequired
			}));
		}
	}
	public static class ShrineOfRepairCompat
	{
		private static bool? _enabled;

		public static bool enabled
		{
			get
			{
				if (!_enabled.HasValue)
				{
					_enabled = Chainloader.PluginInfos.ContainsKey("com.Viliger.ShrineOfRepair");
				}
				return _enabled.Value;
			}
		}

		[MethodImpl(MethodImplOptions.NoInlining | MethodImplOptions.NoOptimization)]
		public static void AddListenerToFillDictionary()
		{
			//IL_0007: Unknown result type (might be due to invalid IL or missing references)
			//IL_0011: Expected O, but got Unknown
			ModExtension.AddItemsListener(new DictionaryFillItemsDelegate(AddFuelCellDepletedToRepairList));
		}

		[MethodImpl(MethodImplOptions.NoInlining | MethodImplOptions.NoOptimization)]
		public static void AddFuelCellDepletedToRepairList()
		{
			//IL_0005: 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)
			ModExtension.AddItemsToList(ExtradimensionalItems.Modules.Content.Items.FuelCellDepleted.itemIndex, Items.EquipmentMagazine.itemIndex, "ExtradimensionalItems");
		}
	}
	public static class Utils
	{
		public static bool RegisterNetworkSound(string eventName)
		{
			NetworkSoundEventDef obj = ScriptableObject.CreateInstance<NetworkSoundEventDef>();
			((Object)obj).name = eventName;
			obj.eventName = eventName;
			return ContentAddition.AddNetworkSoundEventDef(obj);
		}

		public static void ShaderConversion(AssetBundle assets)
		{
			assets.LoadAllAssets<Material>();
			foreach (Material item in from material in assets.LoadAllAssets<Material>()
				where ((Object)material.shader).name.Contains("Hopoo Games")
				select material)
			{
				Shader val = LegacyResourcesAPI.Load<Shader>(ExtradimensionalItemsPlugin.ShaderLookup[((Object)item.shader).name]);
				if (Object.op_Implicit((Object)(object)val))
				{
					item.shader = val;
				}
			}
		}

		public static RendererInfo[] ItemDisplaySetup(GameObject obj)
		{
			//IL_0040: 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_0097: 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)
			List<Renderer> list = new List<Renderer>();
			MeshRenderer[] componentsInChildren = obj.GetComponentsInChildren<MeshRenderer>();
			if (componentsInChildren.Length != 0)
			{
				list.AddRange((IEnumerable<Renderer>)(object)componentsInChildren);
			}
			SkinnedMeshRenderer[] componentsInChildren2 = obj.GetComponentsInChildren<SkinnedMeshRenderer>();
			if (componentsInChildren2.Length != 0)
			{
				list.AddRange((IEnumerable<Renderer>)(object)componentsInChildren2);
			}
			RendererInfo[] array = (RendererInfo[])(object)new RendererInfo[list.Count];
			for (int i = 0; i < list.Count; i++)
			{
				array[i] = new RendererInfo
				{
					defaultMaterial = ((list[i] is SkinnedMeshRenderer) ? list[i].sharedMaterial : list[i].material),
					renderer = list[i],
					defaultShadowCastingMode = (ShadowCastingMode)1,
					ignoreOverlays = false
				};
			}
			return array;
		}

		[ConCommand(/*Could not decode attribute arguments.*/)]
		private static void CCGiveItemAI(ConCommandArgs args)
		{
			//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_0058: Unknown result type (might be due to invalid IL or missing references)
			//IL_005a: Invalid comparison between Unknown and I4
			//IL_0081: Unknown result type (might be due to invalid IL or missing references)
			//IL_0093: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e1: Unknown result type (might be due to invalid IL or missing references)
			//IL_00f3: Unknown result type (might be due to invalid IL or missing references)
			if (((ConCommandArgs)(ref args)).Count == 0)
			{
				Debug.Log((object)"No parameters specified. Requires 2 arguments: {item} [count:1]");
				return;
			}
			int result = 1;
			if (((ConCommandArgs)(ref args)).Count >= 2 && ((ConCommandArgs)(ref args))[1] != "")
			{
				result = ((!int.TryParse(((ConCommandArgs)(ref args))[1], out result)) ? 1 : result);
			}
			ItemIndex itemFromPartial = GetItemFromPartial(((ConCommandArgs)(ref args))[0]);
			if ((int)itemFromPartial != -1)
			{
				if (RunArtifactManager.instance.IsArtifactEnabled(Artifacts.monsterTeamGainsItemsArtifactDef) && Object.op_Implicit((Object)(object)MonsterTeamGainsItemsArtifactManager.monsterTeamInventory))
				{
					MonsterTeamGainsItemsArtifactManager.monsterTeamInventory.GiveItem(itemFromPartial, result);
					Debug.Log((object)$"Gave {result} {itemFromPartial} to AIs");
				}
				else if ((Object)(object)SceneCatalog.GetSceneDefForCurrentScene() == (Object)(object)SceneCatalog.GetSceneDefFromSceneName("arena") && Object.op_Implicit((Object)(object)ArenaMissionController.instance) && Object.op_Implicit((Object)(object)ArenaMissionController.instance.inventory))
				{
					ArenaMissionController.instance.inventory.GiveItem(itemFromPartial, result);
					Debug.Log((object)$"Gave {result} {itemFromPartial} to AIs");
				}
				else
				{
					Debug.Log((object)"Only works when Artifact of Evolution is enabled or if players are in Void Fields.");
				}
			}
			else
			{
				Debug.Log((object)$"Item {((ConCommandArgs)(ref args))[0]} is not found.");
			}
		}

		[ConCommand(/*Could not decode attribute arguments.*/)]
		private static void CCGiveAllEDItems(ConCommandArgs args)
		{
			int result = 1;
			if (((ConCommandArgs)(ref args)).Count >= 1)
			{
				result = ((!int.TryParse(((ConCommandArgs)(ref args))[0], out result)) ? 1 : result);
			}
			CharacterMaster senderMaster = ((ConCommandArgs)(ref args)).senderMaster;
			if ((Object)(object)senderMaster == (Object)null)
			{
				Debug.Log((object)"Couldn't find target to add items to.");
			}
			Inventory inventory = senderMaster.inventory;
			if ((Object)(object)inventory == (Object)null)
			{
				Debug.Log((object)"Target has no inventory.");
			}
			inventory.GiveItem(ExtradimensionalItems.Modules.Content.Items.Atma, result);
			inventory.GiveItem(ExtradimensionalItems.Modules.Content.Items.DamageOnPing, result);
			inventory.GiveItem(ExtradimensionalItems.Modules.Content.Items.DamageOnCooldowns, result);
			inventory.GiveItem(ExtradimensionalItems.Modules.Content.Items.RoyalGuard, result);
			inventory.GiveItem(ExtradimensionalItems.Modules.Content.Items.FuelCellDepleted, result);
			inventory.GiveItem(ExtradimensionalItems.Modules.Content.Items.ReturnalAdrenaline, result);
			inventory.GiveItem(ExtradimensionalItems.Modules.Content.Items.Sheen, result);
			inventory.GiveItem(ExtradimensionalItems.Modules.Content.Items.VoidCooldownReduction, result);
			Debug.Log((object)$"Gave {result} of all Extradimensional items.");
		}

		private static ItemIndex GetItemFromPartial(string name)
		{
			//IL_0016: 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_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)
			//IL_0014: 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_008c: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ab: Unknown result type (might be due to invalid IL or missing references)
			if (Enum.TryParse<ItemIndex>(name, ignoreCase: true, out ItemIndex result) && ItemCatalog.IsIndexValid(ref result))
			{
				return result;
			}
			Enumerator<ItemDef> enumerator = ItemCatalog.allItemDefs.GetEnumerator();
			try
			{
				while (enumerator.MoveNext())
				{
					ItemDef current = enumerator.Current;
					string langInvar = GetLangInvar(current.nameToken.ToUpper());
					if (((Object)current).name.ToUpper().Contains(name.ToUpper()) || langInvar.ToUpper().Contains(name.ToUpper()) || langInvar.ToUpper().Contains(RemoveSpacesAndAlike(name.ToUpper())))
					{
						return current.itemIndex;
					}
				}
			}
			finally
			{
				((IDisposable)enumerator).Dispose();
			}
			return (ItemIndex)(-1);
		}

		private static string GetLangInvar(string baseToken)
		{
			return RemoveSpacesAndAlike(Language.GetString(baseToken));
		}

		private static string RemoveSpacesAndAlike(string input)
		{
			return Regex.Replace(input, "[ '-]", string.Empty);
		}
	}
}
namespace ExtradimensionalItems.Modules.UI
{
	public class ReturnalAdrenalineUI : MonoBehaviour
	{
		private static List<ReturnalAdrenalineUI> instancesList = new List<ReturnalAdrenalineUI>();

		private HGTextMeshProUGUI textMesh;

		private Image levelBar;

		private HUD hud;

		private void Update()
		{
			if (Object.op_Implicit((Object)(object)hud) && Object.op_Implicit((Object)(object)hud.targetMaster))
			{
				ReturnalAdrenalineItemBehavior component = ((Component)hud.targetMaster).GetComponent<ReturnalAdrenalineItemBehavior>();
				if (Object.op_Implicit((Object)(object)component) && hud.targetMaster.inventory.GetItemCount(ExtradimensionalItems.Modules.Content.Items.ReturnalAdrenaline) > 0)
				{
					UpdateUI(component.adrenalineLevel, component.adrenalinePerLevel);
				}
			}
		}

		private void OnDestroy()
		{
			if (instancesList != null)
			{
				instancesList.Remove(this);
			}
		}

		private void UpdateUI(int adrenalineLevel, float adrenalinePerLevel)
		{
			if (Object.op_Implicit((Object)(object)textMesh))
			{
				((TMP_Text)textMesh).SetText(string.Format(Language.GetString("ITEM_RETURNAL_ADRENALINE_LEVEL"), (int)((float)adrenalineLevel / adrenalinePerLevel)), true);
			}
			if (Object.op_Implicit((Object)(object)levelBar))
			{
				if ((float)adrenalineLevel >= adrenalinePerLevel * 5f)
				{
					levelBar.fillAmount = 1f;
				}
				else
				{
					levelBar.fillAmount = Mathf.Clamp((float)adrenalineLevel % adrenalinePerLevel / adrenalinePerLevel, 0f, 1f);
				}
			}
		}

		public static void CreateUI(HUD HUD)
		{
			//IL_003d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0043: Expected O, but got Unknown
			//IL_007a: 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_00a0: 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)
			//IL_00c0: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d5: 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_00ff: 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_0127: 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_0133: Unknown result type (might be due to invalid IL or missing references)
			//IL_014c: 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_0162: 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_0182: Unknown result type (might be due to invalid IL or missing references)
			//IL_0197: 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_01d1: Unknown result type (might be due to invalid IL or missing references)
			//IL_01d6: Unknown result type (might be due to invalid IL or missing references)
			//IL_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_020a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0227: Unknown result type (might be due to invalid IL or missing references)
			//IL_023d: 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_026e: Unknown result type (might be due to invalid IL or missing references)
			//IL_027a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0290: Unknown result type (might be due to invalid IL or missing references)
			//IL_02a6: Unknown result type (might be due to invalid IL or missing references)
			//IL_02be: Unknown result type (might be due to invalid IL or missing references)
			//IL_02c3: Unknown result type (might be due to invalid IL or missing references)
			//IL_02d3: Unknown result type (might be due to invalid IL or missing references)
			Image val = default(Image);
			if (Object.op_Implicit((Object)(object)HUD) && Object.op_Implicit((Object)(object)HUD.healthBar) && Object.op_Implicit((Object)(object)HUD.itemInventoryDisplay) && ((Component)HUD.itemInventoryDisplay).gameObject.TryGetComponent<Image>(ref val))
			{
				GameObject val2 = new GameObject("AdrenalineHUD");
				ReturnalAdrenalineUI returnalAdrenalineUI = val2.AddComponent<ReturnalAdrenalineUI>();
				RectTransform obj = val2.AddComponent<RectTransform>();
				val2.transform.SetParent(((Component)HUD.healthBar).transform);
				Image obj2 = val2.AddComponent<Image>();
				obj2.sprite = val.sprite;
				((Graphic)obj2).color = ((Graphic)val).color;
				obj2.type = (Type)1;
				((Transform)obj).localPosition = Vector3.zero;
				obj.anchorMin = new Vector2(0f, 0f);
				obj.anchorMax = new Vector2(0f, 0f);
				((Transform)obj).localScale = Vector3.one;
				obj.pivot = new Vector2(0f, 1f);
				obj.sizeDelta = new Vector2(421f, 15f);
				obj.anchoredPosition = new Vector2(-1f, -5f);
				((Transform)obj).eulerAngles = new Vector3(0f, -6f, 0f);
				GameObject val3 = new GameObject("AdrenalineLevelText");
				RectTransform val4 = val3.AddComponent<RectTransform>();
				HGTextMeshProUGUI val5 = val3.AddComponent<HGTextMeshProUGUI>();
				val3.transform.SetParent(val2.transform);
				((Transform)val4).localPosition = Vector3.zero;
				val4.anchorMin = Vector2.zero;
				val4.anchorMax = Vector2.one;
				((Transform)val4).localScale = Vector3.one;
				val4.sizeDelta = new Vector2(0f, 0f);
				val4.anchoredPosition = new Vector2(380f, 0f);
				((Transform)val4).eulerAngles = new Vector3(0f, -6f, 0f);
				((TMP_Text)val5).enableAutoSizing = true;
				((TMP_Text)val5).fontSizeMax = 256f;
				((TMP_Text)val5).faceColor = Color32.op_Implicit(Color.white);
				((TMP_Text)val5).alignment = (TextAlignmentOptions)4097;
				((TMP_Text)val5).text = "Testing";
				GameObject val6 = new GameObject("AdrenalineLevelBar");
				RectTransform val7 = val6.AddComponent<RectTransform>();
				val6.transform.SetParent(val2.transform);
				val7.anchorMin = new Vector2(0f, 1f);
				val7.anchorMax = new Vector2(0f, 1f);
				val7.pivot = new Vector2(0f, 1f);
				((Transform)val7).eulerAngles = new Vector3(0f, -6f, 0f);
				((Transform)val7).localScale = Vector3.one;
				val7.anchoredPosition = new Vector2(12f, 2f);
				val7.sizeDelta = new Vector2(360f, 8f);
				Image val8 = val6.AddComponent<Image>();
				val8.sprite = Addressables.LoadAssetAsync<Sprite>((object)"RoR2/Base/UI/texUINonsegmentedHealthbar.png").WaitForCompletion();
				((Graphic)val8).color = Color.yellow;
				val8.type = (Type)3;
				val8.fillMethod = (FillMethod)0;
				val8.fillOrigin = 0;
				val8.fillAmount = 0.5f;
				returnalAdrenalineUI.hud = HUD;
				returnalAdrenalineUI.textMesh = val5;
				returnalAdrenalineUI.levelBar = val8;
				val2.gameObject.SetActive(false);
				instancesList.Add(returnalAdrenalineUI);
			}
		}

		public static ReturnalAdrenalineUI FindInstance(CharacterMaster master)
		{
			foreach (ReturnalAdrenalineUI instances in instancesList)
			{
				if ((Object)(object)instances.hud.targetMaster == (Object)(object)master)
				{
					return instances;
				}
			}
			return null;
		}

		public void Enable()
		{
			if (Object.op_Implicit((Object)(object)((Component)this).gameObject))
			{
				((Component)this).gameObject.SetActive(true);
			}
		}

		public void Disable()
		{
			if (Object.op_Implicit((Object)(object)((Component)this).gameObject))
			{
				((Component)this).gameObject.SetActive(false);
			}
		}
	}
}
namespace ExtradimensionalItems.Modules.SkillStates
{
	public class Explode : BaseSkillState
	{
		public override void OnEnter()
		{
			((BaseState)this).OnEnter();
			ExplodeNow();
		}

		public override void FixedUpdate()
		{
			((EntityState)this).FixedUpdate();
			if (!((EntityState)this).characterBody.HasBuff(Buffs.RoyalGuardDamage))
			{
				((EntityState)this).outer.SetNextStateToMain();
				MyLogger.LogMessage("Player {0}({1}) has left parry state because they don't have damage buff after using Release.", ((EntityState)this).characterBody.GetUserName(), ((Object)((EntityState)this).characterBody).name);
			}
		}

		private void ExplodeNow()
		{
			//IL_0015: 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_002a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0035: 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_0041: 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)
			//IL_0057: 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_0097: 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)
			//IL_00a9: 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)
			//IL_00ba: Unknown result type (might be due to invalid IL or missing references)
			//IL_00bf: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c5: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ca: Unknown result type (might be due to invalid IL or missing references)
			//IL_00cf: 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_00d7: Expected O, but got Unknown
			//IL_00d8: 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_0116: Unknown result type (might be due to invalid IL or missing references)
			//IL_011c: Expected O, but got Unknown
			//IL_0123: Unknown result type (might be due to invalid IL or missing references)
			if (((EntityState)this).characterBody.HasBuff(Buffs.RoyalGuardDamage))
			{
				BlastAttack val = new BlastAttack
				{
					radius = RoyalGuard.DamageRadius.Value,
					procCoefficient = 2f,
					position = ((EntityState)this).characterBody.corePosition,
					attacker = ((Component)((EntityState)this).characterBody).gameObject,
					crit = ((BaseState)this).RollCrit(),
					baseDamage = ((EntityState)this).characterBody.baseDamage * (float)((EntityState)this).characterBody.GetBuffCount(Buffs.RoyalGuardDamage) * (RoyalGuard.DamageModifier.Value / 100f),
					falloffModel = (FalloffModel)2,
					baseForce = 1f,
					teamIndex = TeamComponent.GetObjectTeam(((Component)((EntityState)this).characterBody).gameObject),
					damageType = DamageTypeCombo.op_Implicit((DamageType)131072),
					attackerFiltering = (AttackerFiltering)2
				};
				val.Fire();
				((EntityState)this).characterBody.SetBuffCount(Buffs.RoyalGuardDamage.buffIndex, 0);
				if (((EntityState)this).characterBody.HasBuff(Buffs.RoyalGuardParryState))
				{
					((EntityState)this).characterBody.RemoveOldestTimedBuff(Buffs.RoyalGuardParryState);
				}
				EffectData val2 = new EffectData();
				val2.origin = ((EntityState)this).characterBody.footPosition;
				val2.scale = 10f;
				EffectManager.SpawnEffect(RoyalGuard.RoyalGuardExplodeEffectInstance, val2, true);
				MyLogger.LogMessage("Player {0}({1}) used Release, dealing to everyone around {2} damage.", ((EntityState)this).characterBody.GetUserName(), ((Object)((EntityState)this).characterBody).name, val.baseDamage.ToString());
			}
		}
	}
	public class Parry : BaseSkillState
	{
		private float duration;

		private bool buffAdded;

		public override void OnEnter()
		{
			((BaseState)this).OnEnter();
			duration = RoyalGuard.GetParryStateDuration(((EntityState)this).characterBody);
			if (NetworkServer.active)
			{
				((EntityState)this).characterBody.AddTimedBuff(Buffs.RoyalGuardParryState, duration);
				MyLogger.LogMessage("Player {0}({1}) entered parry state for {2} seconds.", ((EntityState)this).characterBody.GetUserName(), ((Object)((EntityState)this).characterBody).name, duration.ToString());
			}
			if (((EntityState)this).isAuthority && Object.op_Implicit((Object)(object)((EntityState)this).characterBody.skillLocator) && ((EntityState)this).characterBody.HasBuff(Buffs.RoyalGuardDamage))
			{
				((EntityState)this).characterBody.skillLocator.primary.SetSkillOverride((object)((EntityState)this).characterBody, Skills.Explode, (SkillOverridePriority)3);
			}
		}

		public override void OnExit()
		{
			if (NetworkServer.active && ((EntityState)this).characterBody.HasBuff(Buffs.RoyalGuardParryState))
			{
				((EntityState)this).characterBody.RemoveOldestTimedBuff(Buffs.RoyalGuardParryState);
			}
			if (((EntityState)this).isAuthority && Object.op_Implicit((Object)(object)((EntityState)this).characterBody.skillLocator))
			{
				((EntityState)this).characterBody.skillLocator.primary.UnsetSkillOverride((object)((EntityState)this).characterBody, Skills.Explode, (SkillOverridePriority)3);
			}
			((EntityState)this).OnExit();
		}

		public override void FixedUpdate()
		{
			((EntityState)this).FixedUpdate();
			if (((EntityState)this).characterBody.HasBuff(Buffs.RoyalGuardParryState))
			{
				buffAdded = true;
			}
			if (((EntityState)this).fixedAge >= duration && ((EntityState)this).isAuthority)
			{
				((EntityState)this).outer.SetNextStateToMain();
				MyLogger.LogMessage("Player {0}({1}) has left parry state due to timeout without being damaged.", ((EntityState)this).characterBody.GetUserName(), ((Object)((EntityState)this).characterBody).name);
			}
			if (buffAdded && !((EntityState)this).characterBody.HasBuff(Buffs.RoyalGuardParryState) && ((EntityState)this).isAuthority)
			{
				((EntityState)this).outer.SetNextStateToMain();
				MyLogger.LogMessage("Player {0}({1}) has left parry state because they don't have parry state buff after being damaged.", ((EntityState)this).characterBody.GetUserName(), ((Object)((EntityState)this).characterBody).name);
			}
		}

		public override void Update()
		{
			((EntityState)this).Update();
			if (((EntityState)this).isAuthority && Object.op_Implicit((Object)(object)((EntityState)this).inputBank) && ((EntityState)this).characterBody.HasBuff(Buffs.RoyalGuardDamage) && ((ButtonState)(ref ((EntityState)this).inputBank.skill1)).justPressed)
			{
				((EntityState)this).skillLocator.primary.ExecuteIfReady();
			}
		}

		public override InterruptPriority GetMinimumInterruptPriority()
		{
			return (InterruptPriority)2;
		}
	}
}
namespace ExtradimensionalItems.Modules.NetworkAttachments
{
	public class ChronoshiftController : NetworkBehaviour
	{
		public enum ChronoshiftState
		{
			Saving,
			Moving,
			Restoring
		}

		private static readonly List<ChronoshiftController> instancesList;

		private NetworkedBodyAttachment networkedBodyAttachment;

		private SyncList<int> syncList;

		public static ChronoshiftController FindChronoshiftController(GameObject body)
		{
			if (!Object.op_Implicit((Object)(object)body))
			{
				return null;
			}
			foreach (ChronoshiftController instances in instancesList)
			{
				if ((Object)(object)instances.networkedBodyAttachment.attachedBodyObject == (Object)(object)body)
				{
					return instances;
				}
			}
			return null;
		}

		private void Awake()
		{
			networkedBodyAttachment = ((Component)this).GetComponent<NetworkedBodyAttachment>();
		}

		private void OnEnabled()
		{
			instancesList.Add(this);
		}

		private void OnDisable()
		{
			instancesList.Remove(this);
		}

		private void UNetVersion()
		{
		}

		public override bool OnSerialize(NetworkWriter writer, bool forceAll)
		{
			bool result = default(bool);
			return result;
		}

		public override void OnDeserialize(NetworkReader reader, bool initialState)
		{
		}
	}
}
namespace ExtradimensionalItems.Modules.Items
{
	public class Atma : ItemBase<Atma>
	{
		public static ConfigEntry<float> HealthPerLevel;

		public static ConfigEntry<float> PerStackScaling;

		public override string ItemName => "AtmasImpaler";

		public override string ItemLangTokenName => "ATMAS_IMPALER";

		public override ItemTier Tier => (ItemTier)1;

		public override string BundleName => "atma";

		public override ItemTag[] ItemTags => (ItemTag[])(object)new ItemTag[1] { (ItemTag)1 };

		public override GameObject ItemModel => AssetBundle.LoadAsset<GameObject>("atma");

		public override Sprite ItemIcon => AssetBundle.LoadAsset<Sprite>("texAtmaIcon");

		public override ItemDisplayRuleDict CreateItemDisplayRules()
		{
			//IL_002e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0034: Expected O, but got Unknown
			//IL_0044: 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_0061: Unknown result type (might be due to invalid IL or missing references)
			//IL_006b: Expected O, but got Unknown
			//IL_0088: Unknown result type (might be due to invalid IL or missing references)
			//IL_008d: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a3: 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_00be: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c3: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c8: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c9: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e3: 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_0100: Unknown result type (might be due to invalid IL or missing references)
			//IL_010a: Expected O, but got Unknown
			//IL_0127: 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_0142: Unknown result type (might be due to invalid IL or missing references)
			//IL_0147: 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_0162: Unknown result type (might be due to invalid IL or missing references)
			//IL_0167: 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_0182: Unknown result type (might be due to invalid IL or missing references)
			//IL_018b: Unknown result type (might be due to invalid IL or missing references)
			//IL_019f: Unknown result type (might be due to invalid IL or missing references)
			//IL_01a9: Expected O, but got Unknown
			//IL_01c6: Unknown result type (might be due to invalid IL or missing references)
			//IL_01cb: Unknown result type (might be due to invalid IL or missing references)
			//IL_01e1: Unknown result type (might be due to invalid IL or missing references)
			//IL_01e6: 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_0201: Unknown result type (might be due to invalid IL or missing references)
			//IL_0206: Unknown result type (might be due to invalid IL or missing references)
			//IL_0207: Unknown result type (might be due to invalid IL or missing references)
			//IL_0221: Unknown result type (might be due to invalid IL or missing references)
			//IL_022a: Unknown result type (might be due to invalid IL or missing references)
			//IL_023e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0248: Expected O, but got Unknown
			//IL_0265: 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_0285: Unknown result type (might be due to invalid IL or missing references)
			//IL_029b: Unknown result type (might be due to invalid IL or missing references)
			//IL_02a0: Unknown result type (might be due to invalid IL or missing references)
			//IL_02a5: Unknown result type (might be due to invalid IL or missing references)
			//IL_02a6: Unknown result type (might be due to invalid IL or missing references)
			//IL_02c0: 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_02dd: Unknown result type (might be due to invalid IL or missing references)
			//IL_02e7: Expected O, but got Unknown
			//IL_0304: 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_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_033a: 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_0344: Unknown result type (might be due to invalid IL or missing references)
			//IL_0345: Unknown result type (might be due to invalid IL or missing references)
			//IL_035f: 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_037c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0386: Expected O, but got Unknown
			//IL_03a3: Unknown result type (might be due to invalid IL or missing references)
			//IL_03a8: Unknown result type (might be due to invalid IL or missing references)
			//IL_03be: Unknown result type (might be due to invalid IL or missing references)
			//IL_03c3: Unknown result type (might be due to invalid IL or missing references)
			//IL_03d9: Unknown result type (might be due to invalid IL or missing references)
			//IL_03de: 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_03e4: 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_0407: Unknown result type (might be due to invalid IL or missing references)
			//IL_041b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0425: Expected O, but got Unknown
			//IL_0442: Unknown result type (might be due to invalid IL or missing references)
			//IL_0447: Unknown result type (might be due to invalid IL or missing references)
			//IL_045d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0462: Unknown result type (might be due to invalid IL or missing references)
			//IL_0478: Unknown result type (might be due to invalid IL or missing references)
			//IL_047d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0482: Unknown result type (might be due to invalid IL or missing references)
			//IL_0483: Unknown result type (might be due to invalid IL or missing references)
			//IL_049d: Unknown result type (might be due to invalid IL or missing references)
			//IL_04a6: 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_04c4: Expected O, but got Unknown
			//IL_04e1: Unknown result type (might be due to invalid IL or missing references)
			//IL_04e6: Unknown result type (might be due to invalid IL or missing references)
			//IL_04fc: Unknown result type (might be due to invalid IL or missing references)
			//IL_0501: Unknown result type (might be due to invalid IL or missing references)
			//IL_0517: 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_0522: Unknown result type (might be due to invalid IL or missing references)
			//IL_053c: 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_0559: Unknown result type (might be due to invalid IL or missing references)
			//IL_0563: Expected O, but got Unknown
			//IL_0580: Unknown result type (might be due to invalid IL or missing references)
			//IL_0585: Unknown result type (might be due to invalid IL or missing references)
			//IL_059b: Unknown result type (might be due to invalid IL or missing references)
			//IL_05a0: Unknown result type (might be due to invalid IL or missing references)
			//IL_05b6: Unknown result type (might be due to invalid IL or missing references)
			//IL_05bb: Unknown result type (might be due to invalid IL or missing references)
			//IL_05c0: Unknown result type (might be due to invalid IL or missing references)
			//IL_05c1: Unknown result type (might be due to invalid IL or missing references)
			//IL_05db: Unknown result type (might be due to invalid IL or missing references)
			//IL_05e4: Unknown result type (might be due to invalid IL or missing references)
			//IL_05f8: Unknown result type (might be due to invalid IL or missing references)
			//IL_0602: Expected O, but got Unknown
			//IL_061f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0624: Unknown result type (might be due to invalid IL or missing references)
			//IL_063a: Unknown result type (might be due to invalid IL or missing references)
			//IL_063f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0655: Unknown result type (might be due to invalid IL or missing references)
			//IL_065a: Unknown result type (might be due to invalid IL or missing references)
			//IL_065f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0660: Unknown result type (might be due to invalid IL or missing references)
			//IL_067a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0683: Unknown result type (might be due to invalid IL or missing references)
			//IL_0697: Unknown result type (might be due to invalid IL or missing references)
			//IL_06a1: Expected O, but got Unknown
			//IL_06be: Unknown result type (might be due to invalid IL or missing references)
			//IL_06c3: Unknown result type (might be due to invalid IL or missing references)
			//IL_06d9: Unknown result type (might be due to invalid IL or missing references)
			//IL_06de: Unknown result type (might be due to invalid IL or missing references)
			//IL_06f4: Unknown result type (might be due to invalid IL or missing references)
			//IL_06f9: Unknown result type (might be due to invalid IL or missing references)
			//IL_06fe: Unknown result type (might be due to invalid IL or missing references)
			//IL_06ff: Unknown result type (might be due to invalid IL or missing references)
			//IL_0719: Unknown result type (might be due to invalid IL or missing references)
			//IL_0722: Unknown result type (might be due to invalid IL or missing references)
			//IL_0736: Unknown result type (might be due to invalid IL or missing references)
			//IL_0740: Expected O, but got Unknown
			//IL_075d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0762: Unknown result type (might be due to invalid IL or missing references)
			//IL_0778: Unknown result type (might be due to invalid IL or missing references)
			//IL_077d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0793: Unknown result type (might be due to invalid IL or missing references)
			//IL_0798: Unknown result type (might be due to invalid IL or missing references)
			//IL_079d: 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_07b8: Unknown result type (might be due to invalid IL or missing references)
			//IL_07c1: Unknown result type (might be due to invalid IL or missing references)
			//IL_07d5: Unknown result type (might be due to invalid IL or missing references)
			//IL_07df: Expected O, but got Unknown
			//IL_07fc: Unknown result type (might be due to invalid IL or missing references)
			//IL_0801: Unknown result type (might be due to invalid IL or missing references)
			//IL_0817: Unknown result type (might be due to invalid IL or missing references)
			//IL_081c: 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_0837: Unknown result type (might be due to invalid IL or missing references)
			//IL_083c: Unknown result type (might be due to invalid IL or missing references)
			//IL_083d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0857: Unknown result type (might be due to invalid IL or missing references)
			//IL_0860: Unknown result type (might be due to invalid IL or missing references)
			//IL_0874: Unknown result type (might be due to invalid IL or missing references)
			//IL_087e: Expected O, but got Unknown
			//IL_089b: Unknown result type (might be due to invalid IL or missing references)
			//IL_08a0: Unknown result type (might be due to invalid IL or missing references)
			//IL_08b6: Unknown result type (might be due to invalid IL or missing references)
			//IL_08bb: Unknown result type (might be due to invalid IL or missing references)
			//IL_08d1: Unknown result type (might be due to invalid IL or missing references)
			//IL_08d6: Unknown result type (might be due to invalid IL or missing references)
			//IL_08db: Unknown result type (might be due to invalid IL or missing references)
			//IL_08dc: Unknown result type (might be due to invalid IL or missing references)
			//IL_08f6: Unknown result type (might be due to invalid IL or missing references)
			//IL_08ff: Unknown result type (might be due to invalid IL or missing references)
			//IL_0913: Unknown result type (might be due to invalid IL or missing references)
			//IL_091d: Expected O, but got Unknown
			//IL_093a: Unknown result type (might be due to invalid IL or missing references)
			//IL_093f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0955: Unknown result type (might be due to invalid IL or missing references)
			//IL_095a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0970: Unknown result type (might be due to invalid IL or missing references)
			//IL_0975: Unknown result type (might be due to invalid IL or missing references)
			//IL_097a: Unknown result type (might be due to invalid IL or missing references)
			//IL_097b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0995: Unknown result type (might be due to invalid IL or missing references)
			//IL_099e: Unknown result type (might be due to invalid IL or missing references)
			//IL_09b2: Unknown result type (might be due to invalid IL or missing references)
			//IL_09bc: Expected O, but got Unknown
			//IL_09d9: Unknown result type (might be due to invalid IL or missing references)
			//IL_09de: Unknown result type (might be due to invalid IL or missing references)
			//IL_09f4: Unknown result type (might be due to invalid IL or missing references)
			//IL_09f9: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a0f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a14: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a19: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a1a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a34: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a3d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a51: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a5b: Expected O, but got Unknown
			//IL_0a78: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a7d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a93: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a98: Unknown result type (might be due to invalid IL or missing references)
			//IL_0aae: Unknown result type (might be due to invalid IL or missing references)
			//IL_0ab3: Unknown result type (might be due to invalid IL or missing references)
			//IL_0ab8: Unknown result type (might be due to invalid IL or missing references)
			//IL_0ab9: Unknown result type (might be due to invalid IL or missing references)
			//IL_0ad3: Unknown result type (might be due to invalid IL or missing references)
			//IL_0adc: Unknown result type (might be due to invalid IL or missing references)
			//IL_0af0: Unknown result type (might be due to invalid IL or missing references)
			//IL_0afa: Expected O, but got Unknown
			//IL_0b17: Unknown result type (might be due to invalid IL or missing references)
			//IL_0b1c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0b32: Unknown result type (might be due to invalid IL or missing references)
			//IL_0b37: Unknown result type (might be due to invalid IL or missing references)
			//IL_0b4d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0b52: Unknown result type (might be due to invalid IL or missing references)
			//IL_0b57: Unknown result type (might be due to invalid IL or missing references)
			//IL_0b58: Unknown result type (might be due to invalid IL or missing references)
			//IL_0b72: Unknown result type (might be due to invalid IL or missing references)
			//IL_0b7b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0b8f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0b99: Expected O, but got Unknown
			//IL_0bb6: Unknown result type (might be due to invalid IL or missing references)
			//IL_0bbb: Unknown result type (might be due to invalid IL or missing references)
			//IL_0bd1: Unknown result type (might be due to invalid IL or missing references)
			//IL_0bd6: Unknown result type (might be due to invalid IL or missing references)
			//IL_0bec: Unknown result type (might be due to invalid IL or missing references)
			//IL_0bf1: Unknown result type (might be due to invalid IL or missing references)
			//IL_0bf6: Unknown result type (might be due to invalid IL or missing references)
			//IL_0bf7: Unknown result type (might be due to invalid IL or missing references)
			//IL_0c11: Unknown result type (might be due to invalid IL or missing references)
			//IL_0c1a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0c2e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0c38: Expected O, but got Unknown
			//IL_0c55: Unknown result type (might be due to invalid IL or missing references)
			//IL_0c5a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0c70: Unknown result type (might be due to invalid IL or missing references)
			//IL_0c75: Unknown result type (might be due to invalid IL or missing references)
			//IL_0c8b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0c90: Unknown result type (might be due to invalid IL or missing references)
			//IL_0c95: Unknown result type (might be due to invalid IL or missing references)
			//IL_0c96: Unknown result type (might be due to invalid IL or missing references)
			GameObject val = AssetBundle.LoadAsset<GameObject>("atma");
			val.AddComponent<ItemDisplay>();
			val.GetComponent<ItemDisplay>().rendererInfos = Utils.ItemDisplaySetup(val);
			ItemDisplayRuleDict val2 = new ItemDisplayRuleDict(Array.Empty<ItemDisplayRule>());
			val2.Add("mdlCommandoDualies", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
			{
				new ItemDisplayRule
				{
					ruleType = (ItemDisplayRuleType)0,
					followerPrefab = val,
					followerPrefabAddress = new AssetReferenceGameObject(""),
					childName = "Chest",
					localPos = new Vector3(0.05931f, 0.11769f, -0.21938f),
					localAngles = new Vector3(23.27695f, 5.91633f, 22.06631f),
					localScale = new Vector3(2.11112f, 2.11112f, 2.11112f)
				}
			});
			val2.Add("mdlHuntress", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
			{
				new ItemDisplayRule
				{
					ruleType = (ItemDisplayRuleType)0,
					followerPrefab = val,
					followerPrefabAddress = new AssetReferenceGameObject(""),
					childName = "Chest",
					localPos = new Vector3(-0.00121f, -0.01595f, -0.11217f),
					localAngles = new Vector3(9.08415f, 326.9416f, 324.1578f),
					localScale = new Vector3(2.18992f, 2.18992f, 2.18992f)
				}
			});
			val2.Add("mdlToolbot", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
			{
				new ItemDisplayRule
				{
					ruleType = (ItemDisplayRuleType)0,
					followerPrefab = val,
					followerPrefabAddress = new AssetReferenceGameObject(""),
					childName = "LowerArmR",
					localPos = new Vector3(0.53324f, 2.89081f, 0.01006f),
					localAngles = new Vector3(20.63849f, 243.5134f, 358.9025f),
					localScale = new Vector3(18.88126f, 18.88126f, 18.88126f)
				}
			});
			val2.Add("mdlEngi", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
			{
				new ItemDisplayRule
				{
					ruleType = (ItemDisplayRuleType)0,
					followerPrefab = val,
					followerPrefabAddress = new AssetReferenceGameObject(""),
					childName = "Chest",
					localPos = new Vector3(-0.03588f, 0.0123f, -0.2605f),
					localAngles = new Vector3(19.14014f, 357.4113f, 346.8241f),
					localScale = new Vector3(2.76281f, 2.76281f, 2.76281f)
				}
			});
			val2.Add("mdlMage", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
			{
				new ItemDisplayRule
				{
					ruleType = (ItemDisplayRuleType)0,
					followerPrefab = val,
					followerPrefabAddress = new AssetReferenceGameObject(""),
					childName = "Chest",
					localPos = new Vector3(-0.03411f, -0.30607f, -0.12951f),
					localAngles = new Vector3(9.03134f, 359.823f, 356.4779f),
					localScale = new Vector3(2.64689f, 2.64689f, 2.64689f)
				}
			});
			val2.Add("mdlMerc", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
			{
				new ItemDisplayRule
				{
					ruleType = (ItemDisplayRuleType)0,
					followerPrefab = val,
					followerPrefabAddress = new AssetReferenceGameObject(""),
					childName = "HandR",
					localPos = new Vector3(-0.25078f, 0.078f, 0.04389f),
					localAngles = new Vector3(337.2337f, 332.8286f, 305.9801f),
					localScale = new Vector3(3.25417f, 3.25417f, 3.25417f)
				}
			});
			val2.Add("mdlTreebot", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
			{
				new ItemDisplayRule
				{
					ruleType = (ItemDisplayRuleType)0,
					followerPrefab = val,
					followerPrefabAddress = new AssetReferenceGameObject(""),
					childName = "FlowerBase",
					localPos = new Vector3(-0.10445f, -0.35228f, -0.6879f),
					localAngles = new Vector3(28.78763f, 36.88558f, 97.3734f),
					localScale = new Vector3(3.71836f, 3.71836f, 3.71836f)
				}
			});
			val2.Add("mdlLoader", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
			{
				new ItemDisplayRule
				{
					ruleType = (ItemDisplayRuleType)0,
					followerPrefab = val,
					followerPrefabAddress = new AssetReferenceGameObject(""),
					childName = "MechHandR",
					localPos = new Vector3(0.0391f, -0.27704f, 0.07467f),
					localAngles = new Vector3(18.69483f, 16.37429f, 359.6162f),
					localScale = new Vector3(3f, 3f, 3f)
				}
			});
			val2.Add("mdlCroco", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
			{
				new ItemDisplayRule
				{
					ruleType = (ItemDisplayRuleType)0,
					followerPrefab = val,
					followerPrefabAddress = new AssetReferenceGameObject(""),
					childName = "Chest",
					localPos = new Vector3(-1.51356f, 3.06965f, 9.13635f),
					localAngles = new Vector3(16.712f, 35.78552f, 237.5622f),
					localScale = new Vector3(20f, 15f, 20f)
				}
			});
			val2.Add("mdlCaptain", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
			{
				new ItemDisplayRule
				{
					ruleType = (ItemDisplayRuleType)0,
					followerPrefab = val,
					followerPrefabAddress = new AssetReferenceGameObject(""),
					childName = "Head",
					localPos = new Vector3(0.0603f, 0.06345f, -0.00892f),
					localAngles = new Vector3(345.2615f, 324.2955f, 335.8669f),
					localScale = new Vector3(2f, 1f, 2f)
				}
			});
			val2.Add("mdlBandit2", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
			{
				new ItemDisplayRule
				{
					ruleType = (ItemDisplayRuleType)0,
					followerPrefab = val,
					followerPrefabAddress = new AssetReferenceGameObject(""),
					childName = "MainWeapon",
					localPos = new Vector3(-0.01876f, 0.67848f, 0.01137f),
					localAngles = new Vector3(16.80556f, 356.7202f, 359.0283f),
					localScale = new Vector3(1.47453f, 1.47453f, 1.47453f)
				}
			});
			val2.Add("mdlHeretic", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
			{
				new ItemDisplayRule
				{
					ruleType = (ItemDisplayRuleType)0,
					followerPrefab = val,
					followerPrefabAddress = new AssetReferenceGameObject(""),
					childName = "Chest",
					localPos = new Vector3(0.33803f, -0.34522f, 0.16156f),
					localAngles = new Vector3(286.6828f, 287.9903f, 141.7693f),
					localScale = new Vector3(5f, 5f, 5f)
				}
			});
			val2.Add("mdlRailGunner", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
			{
				new ItemDisplayRule
				{
					ruleType = (ItemDisplayRuleType)0,
					followerPrefab = val,
					followerPrefabAddress = new AssetReferenceGameObject(""),
					childName = "Backpack",
					localPos = new Vector3(0.23427f, -0.10423f, -0.05527f),
					localAngles = new Vector3(19.80791f, 840f / MathF.PI, 0.90511f),
					localScale = new Vector3(3f, 3f, 3f)
				}
			});
			val2.Add("mdlVoidSurvivor", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
			{
				new ItemDisplayRule
				{
					ruleType = (ItemDisplayRuleType)0,
					followerPrefab = val,
					followerPrefabAddress = new AssetReferenceGameObject(""),
					childName = "LargeExhaust2R",
					localPos = new Vector3(0.02325f, -0.07614f, -0.01583f),
					localAngles = new Vector3(53.4817f, 5.6685f, 127f / 160f),
					localScale = new Vector3(3f, 1f, 3f)
				}
			});
			val2.Add("mdlMiner", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
			{
				new ItemDisplayRule
				{
					ruleType = (ItemDisplayRuleType)0,
					followerPrefab = val,
					followerPrefabAddress = new AssetReferenceGameObject(""),
					childName = "Chest",
					localPos = new Vector3(0.00079f, 0.00048f, -0.00194f),
					localAngles = new Vector3(11.8281f, 9.81263f, 17.99667f),
					localScale = new Vector3(0.02779f, 0.02779f, 0.02779f)
				}
			});
			val2.Add("mdlNemforcer(Clone)", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
			{
				new ItemDisplayRule
				{
					ruleType = (ItemDisplayRuleType)0,
					followerPrefab = val,
					followerPrefabAddress = new AssetReferenceGameObject(""),
					childName = "Chest",
					localPos = new Vector3(0.01594f, -0.00074f, 0.00416f),
					localAngles = new Vector3(352.4106f, 77.70187f, 339.1572f),
					localScale = new Vector3(0.12158f, 0.12158f, 0.12158f)
				}
			});
			val2.Add("mdlEnforcer", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
			{
				new ItemDisplayRule
				{
					ruleType = (ItemDisplayRuleType)0,
					followerPrefab = val,
					followerPrefabAddress = new AssetReferenceGameObject(""),
					childName = "Chest",
					localPos = new Vector3(0.31749f, -0.1789f, 0.11174f),
					localAngles = new Vector3(20.46696f, 83.04866f, 334.5096f),
					localScale = new Vector3(3.92409f, 3.92409f, 3.92409f)
				}
			});
			val2.Add("mdlPaladin", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
			{
				new ItemDisplayRule
				{
					ruleType = (ItemDisplayRuleType)0,
					followerPrefab = val,
					followerPrefabAddress = new AssetReferenceGameObject(""),
					childName = "Chest",
					localPos = new Vector3(0.15985f, -0.69306f, -0.13191f),
					localAngles = new Vector3(1.69802f, 8.71632f, 15.83549f),
					localScale = new Vector3(4.30285f, 5.79825f, 4.30285f)
				}
			});
			val2.Add("mdlRocket", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
			{
				new ItemDisplayRule
				{
					ruleType = (ItemDisplayRuleType)0,
					followerPrefab = val,
					followerPrefabAddress = new AssetReferenceGameObject(""),
					childName = "Chest",
					localPos = new Vector3(-0.18752f, -0.52693f, 0.03871f),
					localAngles = new Vector3(34.70107f, 248.6318f, 354.8853f),
					localScale = new Vector3(3.94916f, 3.94916f, 3.94916f)
				}
			});
			val2.Add("mdlSniper", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
			{
				new ItemDisplayRule
				{
					ruleType = (ItemDisplayRuleType)0,
					followerPrefab = val,
					followerPrefabAddress = new AssetReferenceGameObject(""),
					childName = "GunBarrel",
					localPos = new Vector3(0.00144f, 0.02943f, 0.3023f),
					localAngles = new Vector3(70.40952f, 185.3266f, 184.8057f),
					localScale = new Vector3(1.80279f, 1.80279f, 1.80279f)
				}
			});
			return val2;
		}

		public override void Init(ConfigFile config)
		{
			CreateConfig(config);
			LoadAssetBundle();
			SetLogbookCameraPosition();
			LoadLanguageFile();
			CreateItem(ref ExtradimensionalItems.Modules.Content.Items.Atma);
			Hooks();
		}

		protected override void Hooks()
		{
			//IL_000d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0017: Expected O, but got Unknown
			base.Hooks();
			RecalculateStatsAPI.GetStatCoefficients += new StatHookEventHandler(RecalculateStatsAPI_GetStatCoefficients);
		}

		private void RecalculateStatsAPI_GetStatCoefficients(CharacterBody sender, StatHookEventArgs args)
		{
			int count = GetCount(sender);
			if (count > 0)
			{
				float num = sender.maxHealth / (HealthPerLevel.Value * ((100f - Util.ConvertAmplificationPercentageIntoReductionPercentage(PerStackScaling.Value * (float)(count - 1))) / 100f));
				if (num < 1f)
				{
					num = 1f;
				}
				args.baseDamageAdd += num * sender.levelDamage;
			}
		}

		public override string GetOverlayDescription(string value, JSONNode tokensNode)
		{
			return string.Format(value, HealthPerLevel.Value, (PerStackScaling.Value / 100f).ToString("0.#%"));
		}

		public override void CreateConfig(ConfigFile config)
		{
			HealthPerLevel = config.Bind<float>("Item: " + ItemName, "Health Per Level", 250f, "How much health item requires to grand additional level of damage.");
			PerStackScaling = config.Bind<float>("Item: " + ItemName, "Per Stack Scaling", 25f, "By how much, in percent, health requirement lowers per stack.");
			if (RiskOfOptionsCompat.enabled)
			{
				RiskOfOptionsCompat.CreateNewOption(HealthPerLevel, 10f, 500f);
				RiskOfOptionsCompat.CreateNewOption(PerStackScaling, 1f, 100f, 0.5f);
				RiskOfOptionsCompat.AddDelegateOnModOptionsExit(OnModOptionsExit);
			}
		}
	}
	public class DamageOnCooldowns : ItemBase<DamageOnCooldowns>
	{
		public class DamageOnCooldownsSendNumberBuffs : INetMessage, ISerializableObject
		{
			private NetworkInstanceId netId;

			private int numberOfBuffsFromClient;

			public DamageOnCooldownsSendNumberBuffs()
			{
			}

			public DamageOnCooldownsSendNumberBuffs(NetworkInstanceId netId, int buffsCount)
			{
				//IL_0007: 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)
				this.netId = netId;
				numberOfBuffsFromClient = buffsCount;
			}

			public void Deserialize(NetworkReader reader)
			{
				//IL_0002: Unknown result type (might be due to invalid IL or missing references)
				//IL_0007: Unknown result type (might be due to invalid IL or missing references)
				netId = reader.ReadNetworkId();
				numberOfBuffsFromClient = reader.ReadInt32();
			}

			public void OnReceived()
			{
				//IL_0013: Unknown result type (might be due to invalid IL or missing references)
				if (!NetworkServer.active)
				{
					MyLogger.LogInfo("Recieved ChronoshiftRestoreStateOnServer message on client, doing nothing...");
					return;
				}
				GameObject val = Util.FindNetworkObject(netId);
				CharacterBody body = default(CharacterBody);
				if (Object.op_Implicit((Object)(object)val) && val.TryGetComponent<CharacterBody>(ref body))
				{
					ApplyBuffs(body, numberOfBuffsFromClient);
				}
			}

			public void Serialize(NetworkWriter writer)
			{
				//IL_0002: Unknown result type (might be due to invalid IL or missing references)
				writer.Write(netId);
				writer.Write(numberOfBuffsFromClient);
			}
		}

		public static ConfigEntry<float> DamageBonus;

		public static ConfigEntry<float> DamageBonusPerStack;

		public override string ItemName => "DamageOnCooldowns";

		public override string ItemLangTokenName => "DAMAGE_ON_COOLDOWNS";

		public override ItemTier Tier => (ItemTier)1;

		public override string BundleName => "damageoncooldowns";

		public override ItemTag[] ItemTags => (ItemTag[])(object)new ItemTag[1] { (ItemTag)1 };

		public override GameObject ItemModel => AssetBundle.LoadAsset<GameObject>("damageoncooldowns");

		public override Sprite ItemIcon => AssetBundle.LoadAsset<Sprite>("texDamageOnCooldownIcon");

		public override ItemDisplayRuleDict CreateItemDisplayRules()
		{
			//IL_002e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0034: Expected O, but got Unknown
			//IL_0044: 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_0061: Unknown result type (might be due to invalid IL or missing references)
			//IL_006b: Expected O, but got Unknown
			//IL_0088: Unknown result type (might be due to invalid IL or missing references)
			//IL_008d: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a3: 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_00be: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c3: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c8: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c9: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e3: 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_0100: Unknown result type (might be due to invalid IL or missing references)
			//IL_010a: Expected O, but got Unknown
			//IL_0127: 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_0142: Unknown result type (might be due to invalid IL or missing references)
			//IL_0147: 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_0162: Unknown result type (might be due to invalid IL or missing references)
			//IL_0167: 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_0182: Unknown result type (might be due to invalid IL or missing references)
			//IL_018b: Unknown result type (might be due to invalid IL or missing references)
			//IL_019f: Unknown result type (might be due to invalid IL or missing references)
			//IL_01a9: Expected O, but got Unknown
			//IL_01c6: Unknown result type (might be due to invalid IL or missing references)
			//IL_01cb: Unknown result type (might be due to invalid IL or missing references)
			//IL_01e1: Unknown result type (might be due to invalid IL or missing references)
			//IL_01e6: 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_0201: Unknown result type (might be due to invalid IL or missing references)
			//IL_0206: Unknown result type (might be due to invalid IL or missing references)
			//IL_0207: Unknown result type (might be due to invalid IL or missing references)
			//IL_0221: Unknown result type (might be due to invalid IL or missing references)
			//IL_022a: Unknown result type (might be due to invalid IL or missing references)
			//IL_023e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0248: Expected O, but got Unknown
			//IL_0265: 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_0285: Unknown result type (might be due to invalid IL or missing references)
			//IL_029b: Unknown result type (might be due to invalid IL or missing references)
			//IL_02a0: Unknown result type (might be due to invalid IL or missing references)
			//IL_02a5: Unknown result type (might be due to invalid IL or missing references)
			//IL_02a6: Unknown result type (might be due to invalid IL or missing references)
			//IL_02c0: 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_02dd: Unknown result type (might be due to invalid IL or missing references)
			//IL_02e7: Expected O, but got Unknown
			//IL_0304: 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_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_033a: 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_0344: Unknown result type (might be due to invalid IL or missing references)
			//IL_0345: Unknown result type (might be due to invalid IL or missing references)
			//IL_035f: 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_037c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0386: Expected O, but got Unknown
			//IL_03a3: Unknown result type (might be due to invalid IL or missing references)
			//IL_03a8: Unknown result type (might be due to invalid IL or missing references)
			//IL_03be: Unknown result type (might be due to invalid IL or missing references)
			//IL_03c3: Unknown result type (might be due to invalid IL or missing references)
			//IL_03d9: Unknown result type (might be due to invalid IL or missing references)
			//IL_03de: 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_03e4: 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_0407: Unknown result type (might be due to invalid IL or missing references)
			//IL_041b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0425: Expected O, but got Unknown
			//IL_0442: Unknown result type (might be due to invalid IL or missing references)
			//IL_0447: Unknown result type (might be due to invalid IL or missing references)
			//IL_045d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0462: Unknown result type (might be due to invalid IL or missing references)
			//IL_0478: Unknown result type (might be due to invalid IL or missing references)
			//IL_047d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0482: Unknown result type (might be due to invalid IL or missing references)
			//IL_0483: Unknown result type (might be due to invalid IL or missing references)
			//IL_049d: Unknown result type (might be due to invalid IL or missing references)
			//IL_04a6: 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_04c4: Expected O, but got Unknown
			//IL_04e1: Unknown result type (might be due to invalid IL or missing references)
			//IL_04e6: Unknown result type (might be due to invalid IL or missing references)
			//IL_04fc: Unknown result type (might be due to invalid IL or missing references)
			//IL_0501: Unknown result type (might be due to invalid IL or missing references)
			//IL_0517: 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_0522: Unknown result type (might be due to invalid IL or missing references)
			//IL_053c: 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_0559: Unknown result type (might be due to invalid IL or missing references)
			//IL_0563: Expected O, but got Unknown
			//IL_0580: Unknown result type (might be due to invalid IL or missing references)
			//IL_0585: Unknown result type (might be due to invalid IL or missing references)
			//IL_059b: Unknown result type (might be due to invalid IL or missing references)
			//IL_05a0: Unknown result type (might be due to invalid IL or missing references)
			//IL_05b6: Unknown result type (might be due to invalid IL or missing references)
			//IL_05bb: Unknown result type (might be due to invalid IL or missing references)
			//IL_05c0: Unknown result type (might be due to invalid IL or missing references)
			//IL_05c1: Unknown result type (might be due to invalid IL or missing references)
			//IL_05db: Unknown result type (might be due to invalid IL or missing references)
			//IL_05e4: Unknown result type (might be due to invalid IL or missing references)
			//IL_05f8: Unknown result type (might be due to invalid IL or missing references)
			//IL_0602: Expected O, but got Unknown
			//IL_061f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0624: Unknown result type (might be due to invalid IL or missing references)
			//IL_063a: Unknown result type (might be due to invalid IL or missing references)
			//IL_063f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0655: Unknown result type (might be due to invalid IL or missing references)
			//IL_065a: Unknown result type (might be due to invalid IL or missing references)
			//IL_065f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0660: Unknown result type (might be due to invalid IL or missing references)
			//IL_067a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0683: Unknown result type (might be due to invalid IL or missing references)
			//IL_0697: Unknown result type (might be due to invalid IL or missing references)
			//IL_06a1: Expected O, but got Unknown
			//IL_06be: Unknown result type (might be due to invalid IL or missing references)
			//IL_06c3: Unknown result type (might be due to invalid IL or missing references)
			//IL_06d9: Unknown result type (might be due to invalid IL or missing references)
			//IL_06de: Unknown result type (might be due to invalid IL or missing references)
			//IL_06f4: Unknown result type (might be due to invalid IL or missing references)
			//IL_06f9: Unknown result type (might be due to invalid IL or missing references)
			//IL_06fe: Unknown result type (might be due to invalid IL or missing references)
			//IL_06ff: Unknown result type (might be due to invalid IL or missing references)
			//IL_0719: Unknown result type (might be due to invalid IL or missing references)
			//IL_0722: Unknown result type (might be due to invalid IL or missing references)
			//IL_0736: Unknown result type (might be due to invalid IL or missing references)
			//IL_0740: Expected O, but got Unknown
			//IL_075d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0762: Unknown result type (might be due to invalid IL or missing references)
			//IL_0778: Unknown result type (might be due to invalid IL or missing references)
			//IL_077d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0793: Unknown result type (might be due to invalid IL or missing references)
			//IL_0798: Unknown result type (might be due to invalid IL or missing references)
			//IL_079d: 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_07b8: Unknown result type (might be due to invalid IL or missing references)
			//IL_07c1: Unknown result type (might be due to invalid IL or missing references)
			//IL_07d5: Unknown result type (might be due to invalid IL or missing references)
			//IL_07df: Expected O, but got Unknown
			//IL_07fc: Unknown result type (might be due to invalid IL or missing references)
			//IL_0801: Unknown result type (might be due to invalid IL or missing references)
			//IL_0817: Unknown result type (might be due to invalid IL or missing references)
			//IL_081c: 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_0837: Unknown result type (might be due to invalid IL or missing references)
			//IL_083c: Unknown result type (might be due to invalid IL or missing references)
			//IL_083d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0857: Unknown result type (might be due to invalid IL or missing references)
			//IL_0860: Unknown result type (might be due to invalid IL or missing references)
			//IL_0874: Unknown result type (might be due to invalid IL or missing references)
			//IL_087e: Expected O, but got Unknown
			//IL_089b: Unknown result type (might be due to invalid IL or missing references)
			//IL_08a0: Unknown result type (might be due to invalid IL or missing references)
			//IL_08b6: Unknown result type (might be due to invalid IL or missing references)
			//IL_08bb: Unknown result type (might be due to invalid IL or missing references)
			//IL_08d1: Unknown result type (might be due to invalid IL or missing references)
			//IL_08d6: Unknown result type (might be due to invalid IL or missing references)
			//IL_08db: Unknown result type (might be due to invalid IL or missing references)
			//IL_08dc: Unknown result type (might be due to invalid IL or missing references)
			//IL_08f6: Unknown result type (might be due to invalid IL or missing references)
			//IL_08ff: Unknown result type (might be due to invalid IL or missing references)
			//IL_0913: Unknown result type (might be due to invalid IL or missing references)
			//IL_091d: Expected O, but got Unknown
			//IL_093a: Unknown result type (might be due to invalid IL or missing references)
			//IL_093f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0955: Unknown result type (might be due to invalid IL or missing references)
			//IL_095a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0970: Unknown result type (might be due to invalid IL or missing references)
			//IL_0975: Unknown result type (might be due to invalid IL or missing references)
			//IL_097a: Unknown result type (might be due to invalid IL or missing references)
			//IL_097b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0995: Unknown result type (might be due to invalid IL or missing references)
			//IL_099e: Unknown result type (might be due to invalid IL or missing references)
			//IL_09b2: Unknown result type (might be due to invalid IL or missing references)
			//IL_09bc: Expected O, but got Unknown
			//IL_09d9: Unknown result type (might be due to invalid IL or missing references)
			//IL_09de: Unknown result type (might be due to invalid IL or missing references)
			//IL_09f4: Unknown result type (might be due to invalid IL or missing references)
			//IL_09f9: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a0f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a14: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a19: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a1a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a34: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a3d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a51: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a5b: Expected O, but got Unknown
			//IL_0a78: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a7d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a93: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a98: Unknown result type (might be due to invalid IL or missing references)
			//IL_0aae: Unknown result type (might be due to invalid IL or missing references)
			//IL_0ab3: Unknown result type (might be due to invalid IL or missing references)
			//IL_0ab8: Unknown result type (might be due to invalid IL or missing references)
			//IL_0ab9: Unknown result type (might be due to invalid IL or missing references)
			//IL_0ad3: Unknown result type (might be due to invalid IL or missing references)
			//IL_0adc: Unknown result type (might be due to invalid IL or missing references)
			//IL_0af0: Unknown result type (might be due to invalid IL or missing references)
			//IL_0afa: Expected O, but got Unknown
			//IL_0b17: Unknown result type (might be due to invalid IL or missing references)
			//IL_0b1c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0b32: Unknown result type (might be due to invalid IL or missing references)
			//IL_0b37: Unknown result type (might be due to invalid IL or missing references)
			//IL_0b4d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0b52: Unknown result type (might be due to invalid IL or missing references)
			//IL_0b57: Unknown result type (might be due to invalid IL or missing references)
			//IL_0b58: Unknown result type (might be due to invalid IL or missing references)
			//IL_0b72: Unknown result type (might be due to invalid IL or missing references)
			//IL_0b7b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0b8f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0b99: Expected O, but got Unknown
			//IL_0bb6: Unknown result type (might be due to invalid IL or missing references)
			//IL_0bbb: Unknown result type (might be due to invalid IL or missing references)
			//IL_0bd1: Unknown result type (might be due to invalid IL or missing references)
			//IL_0bd6: Unknown result type (might be due to invalid IL or missing references)
			//IL_0bec: Unknown result type (might be due to invalid IL or missing references)
			//IL_0bf1: Unknown result type (might be due to invalid IL or missing references)
			//IL_0bf6: Unknown result type (might be due to invalid IL or missing references)
			//IL_0bf7: Unknown result type (might be due to invalid IL or missing references)
			//IL_0c11: Unknown result type (might be due to invalid IL or missing references)
			//IL_0c1a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0c2e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0c38: Expected O, but got Unknown
			//IL_0c55: Unknown result type (might be due to invalid IL or missing references)
			//IL_0c5a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0c70: Unknown result type (might be due to invalid IL or missing references)
			//IL_0c75: Unknown result type (might be due to invalid IL or missing references)
			//IL_0c8b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0c90: Unknown result type (might be due to invalid IL or missing references)
			//IL_0c95: Unknown result type (might be due to invalid IL or missing references)
			//IL_0c96: Unknown result type (might be due to invalid IL or missing references)
			GameObject val = AssetBundle.LoadAsset<GameObject>("damageoncooldowns");
			val.AddComponent<ItemDisplay>();
			val.GetComponent<ItemDisplay>().rendererInfos = Utils.ItemDisplaySetup(val);
			ItemDisplayRuleDict val2 = new ItemDisplayRuleDict(Array.Empty<ItemDisplayRule>());
			val2.Add("mdlCommandoDualies", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
			{
				new ItemDisplayRule
				{
					ruleType = (ItemDisplayRuleType)0,
					followerPrefab = val,
					followerPrefabAddress = new AssetReferenceGameObject(""),
					childName = "ThighR",
					localPos = new Vector3(-0.09552f, 0.11592f, 0.06752f),
					localAngles = new Vector3(27.08141f, 304.4822f, 189.2228f),
					localScale = new Vector3(0.20751f, 0.20751f, 0.20751f)
				}
			});
			val2.Add("mdlHuntress", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
			{
				new ItemDisplayRule
				{
					ruleType = (ItemDisplayRuleType)0,
					followerPrefab = val,
					followerPrefabAddress = new AssetReferenceGameObject(""),
					childName = "ThighR",
					localPos = new Vector3(-0.11649f, 0.18389f, 0.06237f),
					localAngles = new Vector3(28.06488f, 266.8881f, 196.0231f),
					localScale = new Vector3(0.19636f, 0.19636f, 0.19636f)
				}
			});
			val2.Add("mdlToolbot", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
			{
				new ItemDisplayRule
				{
					ruleType = (ItemDisplayRuleType)0,
					followerPrefab = val,
					followerPrefabAddress = new AssetReferenceGameObject(""),
					childName = "ThighR",
					localPos = new Vector3(0.12048f, 0.90659f, 0.87745f),
					localAngles = new Vector3(23.94655f, 178.5852f, 175.6136f),
					localScale = new Vector3(2f, 2f, 2f)
				}
			});
			val2.Add("mdlEngi", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
			{
				new ItemDisplayRule
				{
					ruleType = (ItemDisplayRuleType)0,
					followerPrefab = val,
					followerPrefabAddress = new AssetReferenceGameObject(""),
					childName = "ThighR",
					localPos = new Vector3(-0.18828f, 0.13572f, 0.00151f),
					localAngles = new Vector3(30.69436f, 274.8616f, 176.1863f),
					localScale = new Vector3(0.22972f, 0.22972f, 0.22972f)
				}
			});
			val2.Add("mdlMage", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
			{
				new ItemDisplayRule
				{
					ruleType = (ItemDisplayRuleType)0,
					followerPrefab = val,
					followerPrefabAddress = new AssetReferenceGameObject(""),
					childName = "ThighR",
					localPos = new Vector3(-0.11235f, 0.22891f, 0.05888f),
					localAngles = new Vector3(25.38397f, 272.8091f, 189.4688f),
					localScale = new Vector3(0.17773f, 0.17773f, 0.17773f)
				}
			});
			val2.Add("mdlMerc", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
			{
				new ItemDisplayRule
				{
					ruleType = (ItemDisplayRuleType)0,
					followerPrefab = val,
					followerPrefabAddress = new AssetReferenceGameObject(""),
					childName = "ThighR",
					localPos = new Vector3(-0.10393f, 0.20613f, 0.06577f),
					localAngles = new Vector3(29.68564f, 300.2674f, 182.2623f),
					localScale = new Vector3(0.23426f, 0.23426f, 0.23426f)
				}
			});
			val2.Add("mdlTreebot", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
			{
				new ItemDisplayRule
				{
					ruleType = (ItemDisplayRuleType)0,
					followerPrefab = val,
					followerPrefabAddress = new AssetReferenceGameObject(""),
					childName = "ThighBackR",
					localPos = new Vector3(0.32198f, 0.39853f, 0.15919f),
					localAngles = new Vector3(333.9132f, 289.5818f, 57.39796f),
					localScale = new Vector3(0.34275f, 0.34275f, 0.34275f)
				}
			});
			val2.Add("mdlLoader", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
			{
				new ItemDisplayRule
				{
					ruleType = (ItemDisplayRuleType)0,
					followerPrefab = val,
					followerPrefabAddress = new AssetReferenceGameObject(""),
					childName = "ThighR",
					localPos = new Vector3(-0.12364f, 0.15695f, 0.09189f),
					localAngles = new Vector3(37.29633f, 301.3473f, 186.7303f),
					localScale = new Vector3(0.22691f, 0.22691f, 0.22691f)
				}
			});
			val2.Add("mdlCroco", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
			{
				new ItemDisplayRule
				{
					ruleType = (ItemDisplayRuleType)0,
					followerPrefab = val,
					followerPrefabAddress = new AssetReferenceGameObject(""),
					childName = "ThighR",
					localPos = new Vector3(-1.14331f, 1.28121f, -0.09511f),
					localAngles = new Vector3(29.22408f, 243.6448f, 166.6056f),
					localScale = new Vector3(2.34388f, 2.34388f, 2.34388f)
				}
			});
			val2.Add("mdlCaptain", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
			{
				new ItemDisplayRule
				{
					ruleType = (ItemDisplayRuleType)0,
					followerPrefab = val,
					followerPrefabAddress = new AssetReferenceGameObject(""),
					childName = "CalfR",
					localPos = new Vector3(0.12231f, 0.10491f, 0.03471f),
					localAngles = new Vector3(20.49907f, 97.37933f, 172.5078f),
					localScale = new Vector3(0.24559f, 0.24559f, 0.24559f)
				}
			});
			val2.Add("mdlBandit2", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
			{
				new ItemDisplayRule
				{
					ruleType = (ItemDisplayRuleType)0,
					followerPrefab = val,
					followerPrefabAddress = new AssetReferenceGameObject(""),
					childName = "ThighR",
					localPos = new Vector3(-0.07267f, 0.24929f, 0.03758f),
					localAngles = new Vector3(28.44042f, 288.6184f, 185.2202f),
					localScale = new Vector3(0.19305f, 0.19305f, 0.19305f)
				}
			});
			val2.Add("mdlHeretic", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
			{
				new ItemDisplayRule
				{
					ruleType = (ItemDisplayRuleType)0,
					followerPrefab = val,
					followerPrefabAddress = new AssetReferenceGameObject(""),
					childName = "ThighR",
					localPos = new Vector3(-0.22414f, 0.16346f, 0.20641f),
					localAngles = new Vector3(343.4409f, 25.48389f, 270.7061f),
					localScale = new Vector3(0.42563f, 0.42563f, 0.42563f)
				}
			});
			val2.Add("mdlRailGunner", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
			{
				new ItemDisplayRule
				{
					ruleType = (ItemDisplayRuleType)0,
					followerPrefab = val,
					followerPrefabAddress = new AssetReferenceGameObject(""),
					childName = "ThighR",
					localPos = new Vector3(-0.10685f, 0.08854f, 0.03331f),
					localAngles = new Vector3(34.29095f, 98.02614f, 174.7414f),
					localScale = new Vector3(0.19173f, 0.19173f, 0.19173f)
				}
			});
			val2.Add("mdlVoidSurvivor", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
			{
				new ItemDisplayRule
				{
					ruleType = (ItemDisplayRuleType)0,
					followerPrefab = val,
					followerPrefabAddress = new AssetReferenceGameObject(""),
					childName = "ThighR",
					localPos = new Vector3(-0.04302f, 0.27724f, -0.11008f),
					localAngles = new Vector3(39.20871f, 5.40946f, 183.1687f),
					localScale = new Vector3(0.21219f, 0.21219f, 0.21219f)
				}
			});
			val2.Add("mdlMiner", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
			{
				new ItemDisplayRule
				{
					ruleType = (ItemDisplayRuleType)0,
					followerPrefab = val,
					followerPrefabAddress = new AssetReferenceGameObject(""),
					childName = "LegR",
					localPos = new Vector3(0.00047f, 0.00182f, 0.0011f),
					localAngles = new Vector3(36.96081f, 203.9341f, 184.2606f),
					localScale = new Vector3(0.00194f, 0.00194f, 0.00194f)
				}
			});
			val2.Add("mdlNemforcer(Clone)", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
			{
				new ItemDisplayRule
				{
					ruleType = (ItemDisplayRuleType)0,
					followerPrefab = val,
					followerPrefabAddress = new AssetReferenceGameObject(""),
					childName = "LegR",
					localPos = new Vector3(-0.00262f, 0.00736f, -0.00406f),
					localAngles = new Vector3(38.16177f, 26.56483f, 169.9774f),
					localScale = new Vector3(0.00825f, 0.00825f, 0.00825f)
				}
			});
			val2.Add("mdlEnforcer", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
			{
				new ItemDisplayRule
				{
					ruleType = (ItemDisplayRuleType)0,
					followerPrefab = val,
					followerPrefabAddress = new AssetReferenceGameObject(""),
					childName = "ThighL",
					localPos = new Vector3(-0.05615f, 0.31438f, 0.13046f),
					localAngles = new Vector3(32.51384f, 163.4914f, 191.6256f),
					localScale = new Vector3(0.23618f, 0.23618f, 0.23618f)
				}
			});
			val2.Add("mdlPaladin", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
			{
				new ItemDisplayRule
				{
					ruleType = (ItemDisplayRuleType)0,
					followerPrefab = val,
					followerPrefabAddress = new AssetReferenceGameObject(""),
					childName = "ThighR",
					localPos = new Vector3(0.15149f, 0.49419f, -0.18609f),
					localAngles = new Vector3(38.69322f, 308.8141f, 179.926f),
					localScale = new Vector3(0.31299f, 0.31299f, 0.31299f)
				}
			});
			val2.Add("mdlRocket", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
			{
				new ItemDisplayRule
				{
					ruleType = (ItemDisplayRuleType)0,
					followerPrefab = val,
					followerPrefabAddress = new AssetReferenceGameObject(""),
					childName = "thigh.L",
					localPos = new Vector3(-0.08023f, 0.29315f, 0.1616f),
					localAngles = new Vector3(37.44303f, 145.909f, 184.9257f),
					localScale = new Vector3(0.18108f, 0.18108f, 0.18108f)
				}
			});
			val2.Add("mdlSniper", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
			{
				new ItemDisplayRule
				{
					ruleType = (ItemDisplayRuleType)0,
					followerPrefab = val,
					followerPrefabAddress = new AssetReferenceGameObject(""),
					childName = "UpperArmR",
					localPos = new Vector3(-0.00577f, 0.15569f, -0.08032f),
					localAngles = new Vector3(21.31146f, 187.8139f, 174.2495f),
					localScale = new Vector3(0.17465f, 0.17465f, 0.17465f)
				}
			});
			return val2;
		}

		public override string GetOverlayDescription(string value, JSONNode tokensNode)
		{
			return string.Format(value, (DamageBonus.Value / 100f).ToString("###%"), (DamageBonusPerStack.Value / 100f).ToString("###%"));
		}

		public override void Init(ConfigFile config)
		{
			LoadAssetBundle();
			SetLogbookCameraPosition();
			CreateConfig(config);
			LoadLanguageFile();
			CreateBuffs();
			CreateItem(ref ExtradimensionalItems.Modules.Content.Items.DamageOnCooldowns);