Decompiled source of Warfare v1.8.2

Warfare.dll

Decompiled 2 weeks ago
using System;
using System.Collections;
using System.Collections.Concurrent;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.ComponentModel;
using System.Diagnostics;
using System.Diagnostics.CodeAnalysis;
using System.Globalization;
using System.IO;
using System.IO.Compression;
using System.Linq;
using System.Linq.Expressions;
using System.Reflection;
using System.Reflection.Emit;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Runtime.Serialization;
using System.Runtime.Versioning;
using System.Security;
using System.Security.Permissions;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading;
using BepInEx;
using BepInEx.Bootstrap;
using BepInEx.Configuration;
using BepInEx.Logging;
using HarmonyLib;
using ItemManager;
using JetBrains.Annotations;
using Jewelcrafting;
using KG_Managers;
using LocalizationManager;
using Microsoft.CodeAnalysis;
using PieceManager;
using ServerSync;
using SkillManager;
using SoftReferenceableAssets;
using TMPro;
using UnityEngine;
using UnityEngine.UI;
using Warfare.Util;
using Warfare_StatusEffects;
using Warfare_StatusEffects.StatusEffects;
using YamlDotNet.Core;
using YamlDotNet.Core.Events;
using YamlDotNet.Core.Tokens;
using YamlDotNet.Helpers;
using YamlDotNet.Serialization;
using YamlDotNet.Serialization.Converters;
using YamlDotNet.Serialization.EventEmitters;
using YamlDotNet.Serialization.NamingConventions;
using YamlDotNet.Serialization.NodeDeserializers;
using YamlDotNet.Serialization.NodeTypeResolvers;
using YamlDotNet.Serialization.ObjectFactories;
using YamlDotNet.Serialization.ObjectGraphTraversalStrategies;
using YamlDotNet.Serialization.ObjectGraphVisitors;
using YamlDotNet.Serialization.Schemas;
using YamlDotNet.Serialization.TypeInspectors;
using YamlDotNet.Serialization.TypeResolvers;
using YamlDotNet.Serialization.Utilities;
using YamlDotNet.Serialization.ValueDeserializers;

[assembly: ComVisible(false)]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCopyright("Copyright ©  2022")]
[assembly: AssemblyProduct("Warfare")]
[assembly: AssemblyCompany("Therzie")]
[assembly: AssemblyFileVersion("1.8.1")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyTitle("Warfare")]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: CompilationRelaxations(8)]
[assembly: TargetFramework(".NETFramework,Version=v4.8", FrameworkDisplayName = ".NET Framework 4.8")]
[assembly: Guid("E0E2F92E-557C-4A05-9D89-AA92A0BD75C4")]
[assembly: AssemblyConfiguration("")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("1.8.1.0")]
[module: <b13175d2-316b-4ac0-b714-a498d37e145b>RefSafetyRules(11)]
[module: UnverifiableCode]
namespace Microsoft.CodeAnalysis
{
	[CompilerGenerated]
	[<18a8df95-248b-4545-8840-16ae2707b416>Embedded]
	internal sealed class <18a8df95-248b-4545-8840-16ae2707b416>EmbeddedAttribute : Attribute
	{
	}
}
namespace System.Runtime.CompilerServices
{
	[CompilerGenerated]
	[<18a8df95-248b-4545-8840-16ae2707b416>Embedded]
	[AttributeUsage(AttributeTargets.Class | AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Event | AttributeTargets.Parameter | AttributeTargets.ReturnValue | AttributeTargets.GenericParameter, AllowMultiple = false, Inherited = false)]
	internal sealed class <7c6e2ac3-f28b-4ae5-8c94-6a181d0e54f4>NullableAttribute : Attribute
	{
		public readonly byte[] NullableFlags;

		public <7c6e2ac3-f28b-4ae5-8c94-6a181d0e54f4>NullableAttribute(byte P_0)
		{
			NullableFlags = new byte[1] { P_0 };
		}

		public <7c6e2ac3-f28b-4ae5-8c94-6a181d0e54f4>NullableAttribute(byte[] P_0)
		{
			NullableFlags = P_0;
		}
	}
	[CompilerGenerated]
	[<18a8df95-248b-4545-8840-16ae2707b416>Embedded]
	[AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Method | AttributeTargets.Interface | AttributeTargets.Delegate, AllowMultiple = false, Inherited = false)]
	internal sealed class <18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContextAttribute : Attribute
	{
		public readonly byte Flag;

		public <18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContextAttribute(byte P_0)
		{
			Flag = P_0;
		}
	}
	[<18a8df95-248b-4545-8840-16ae2707b416>Embedded]
	[CompilerGenerated]
	[AttributeUsage(AttributeTargets.Module, AllowMultiple = false, Inherited = false)]
	internal sealed class <b13175d2-316b-4ac0-b714-a498d37e145b>RefSafetyRulesAttribute : Attribute
	{
		public readonly int Version;

		public <b13175d2-316b-4ac0-b714-a498d37e145b>RefSafetyRulesAttribute(int P_0)
		{
			Version = P_0;
		}
	}
}
namespace UpgradeWorld
{
	[<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(1)]
	[<7c6e2ac3-f28b-4ae5-8c94-6a181d0e54f4>Nullable(0)]
	public class Register
	{
		public string name = "";

		public string description = "";

		public string[] commands = new string[0];

		public void AddCommand()
		{
			//IL_0014: Unknown result type (might be due to invalid IL or missing references)
			//IL_0027: Expected O, but got Unknown
			//IL_0022: Unknown result type (might be due to invalid IL or missing references)
			new ConsoleCommand(name, description, (ConsoleEvent)([<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(0)] (ConsoleEventArgs args) =>
			{
				string[] array = commands;
				foreach (string text in array)
				{
					args.Context.TryRunCommand(text, false, false);
				}
			}), false, false, false, false, false, (ConsoleOptionsFetcher)null, false, false, false);
		}
	}
	[HarmonyPatch(typeof(Terminal), "InitTerminal")]
	[<7c6e2ac3-f28b-4ae5-8c94-6a181d0e54f4>Nullable(0)]
	[<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(1)]
	public static class Upgrade
	{
		private static List<Register> registers = new List<Register>();

		public const string GUID = "upgrade_world";

		private static void Postfix()
		{
			foreach (Register register in registers)
			{
				register.AddCommand();
			}
		}

		public static void Register(string name, string description, params string[] commands)
		{
			if (Chainloader.PluginInfos.ContainsKey("upgrade_world"))
			{
				registers.Add(new Register
				{
					name = name,
					description = description,
					commands = commands
				});
			}
		}
	}
}
namespace Warfare_StatusEffects
{
	[<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(1)]
	[<7c6e2ac3-f28b-4ae5-8c94-6a181d0e54f4>Nullable(0)]
	public static class LightningBurstStacking
	{
		[<7c6e2ac3-f28b-4ae5-8c94-6a181d0e54f4>Nullable(0)]
		public class SE_Warfare_LightningBurstStacking : StatusEffect
		{
			public int stack;

			private float _timer = 1f;

			public void OnEnable()
			{
				//IL_003a: Unknown result type (might be due to invalid IL or missing references)
				//IL_0040: Expected O, but got Unknown
				//IL_0049: Unknown result type (might be due to invalid IL or missing references)
				//IL_004e: Unknown result type (might be due to invalid IL or missing references)
				//IL_0055: Unknown result type (might be due to invalid IL or missing references)
				//IL_005c: Unknown result type (might be due to invalid IL or missing references)
				//IL_0063: Unknown result type (might be due to invalid IL or missing references)
				//IL_006a: Unknown result type (might be due to invalid IL or missing references)
				//IL_0075: Unknown result type (might be due to invalid IL or missing references)
				//IL_007c: Unknown result type (might be due to invalid IL or missing references)
				//IL_0084: Expected O, but got Unknown
				((Object)this).name = "Warfare_LightningBurstStacking";
				base.m_tooltip = "";
				base.m_name = "";
				base.m_ttl = 0f;
				base.m_icon = Icon;
				EffectList val = new EffectList();
				val.m_effectPrefabs = (EffectData[])(object)new EffectData[1]
				{
					new EffectData
					{
						m_attach = true,
						m_enabled = true,
						m_inheritParentRotation = true,
						m_inheritParentScale = true,
						m_prefab = VFX,
						m_randomRotation = false,
						m_scale = true
					}
				};
				base.m_startEffects = val;
			}

			public override void UpdateStatusEffect(float dt)
			{
				((StatusEffect)this).UpdateStatusEffect(dt);
				_timer -= dt;
				if (_timer <= 0f)
				{
					_timer = 6f;
					if (stack < 3)
					{
						stack++;
					}
				}
			}

			public override void ModifyAttack(SkillType skill, ref HitData hitData)
			{
				//IL_001f: Unknown result type (might be due to invalid IL or missing references)
				if (stack > 0)
				{
					stack = 0;
					float value;
					float num = (DamageMap.TryGetValue(skill, out value) ? value : 10f);
					hitData.m_damage.m_lightning += stack * 6;
					HitData obj = hitData;
					obj.m_pushForce += (float)(stack * 3);
				}
			}

			public override string GetIconText()
			{
				return stack.ToString();
			}
		}

		[<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(0)]
		[HarmonyPatch(typeof(ObjectDB), "Awake")]
		public static class ObjectDBAwake
		{
			[<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(1)]
			public static void Postfix(ObjectDB __instance)
			{
				AddSE(__instance);
			}
		}

		[<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(0)]
		[HarmonyPatch(typeof(ObjectDB), "CopyOtherDB")]
		public static class ObjectDBCopyOtherDB
		{
			[<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(1)]
			public static void Postfix(ObjectDB __instance)
			{
				AddSE(__instance);
			}
		}

		private static StatusEffect _se;

		private static GameObject VFX;

		private static Sprite Icon;

		private const float DEFAULT_DAMAGE = 10f;

		private static readonly Dictionary<SkillType, float> DamageMap = new Dictionary<SkillType, float>
		{
			{
				(SkillType)3,
				20f
			},
			{
				(SkillType)1,
				50f
			}
		};

		public static void UseVFX(GameObject vfx)
		{
			VFX = vfx;
		}

		public static void UseIcon(Sprite icon)
		{
			Icon = icon;
		}

		public static void AddToWeapon(GameObject prefab)
		{
			if (_se == null)
			{
				_se = (StatusEffect)(object)ScriptableObject.CreateInstance<SE_Warfare_LightningBurstStacking>();
			}
			prefab.GetComponent<ItemDrop>().m_itemData.m_shared.m_equipStatusEffect = _se;
		}

		private static void AddSE(ObjectDB odb)
		{
			if (!((Object)(object)ObjectDB.instance == (Object)null) && ObjectDB.instance.m_items.Count != 0 && !((Object)(object)ObjectDB.instance.GetItemPrefab("Amber") == (Object)null) && !Object.op_Implicit((Object)(object)odb.m_StatusEffects.Find([<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(0)] (StatusEffect se) => ((Object)se).name == "Warfare_LightningBurstStacking")))
			{
				odb.m_StatusEffects.Add(_se);
			}
		}
	}
}
namespace Warfare_StatusEffects.StatusEffects
{
	[<7c6e2ac3-f28b-4ae5-8c94-6a181d0e54f4>Nullable(0)]
	[<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(1)]
	public static class Adrenaline
	{
		[<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(0)]
		[HarmonyPatch(typeof(Character), "Damage")]
		private static class Character_Damage_Patch
		{
			[<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(1)]
			private static void Prefix(Character __instance, ref HitData hit)
			{
				if (__instance.m_nview.IsValid() && !((Object)(object)hit.GetAttacker() != (Object)(object)Player.m_localPlayer) && WarfareUtils.TryGetAttackWeapon(out var prefab) && Targets.TryGetValue(prefab, out var value))
				{
					((Character)Player.m_localPlayer).m_seman.AddStatusEffect(StringExtensionMethods.GetStableHashCode("Warfare_Adrenaline"), true, value, 0f);
				}
			}
		}

		[<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(0)]
		public class SE_Warfare_Adrenaline : StatusEffect
		{
			public int stack;

			public void OnEnable()
			{
				((Object)this).name = "Warfare_Adrenaline";
				base.m_tooltip = "Adrenaline";
				base.m_name = "Adrenaline";
				base.m_ttl = 6f;
			}

			public override void SetLevel(int itemLevel, float skillLevel)
			{
				//IL_003c: Unknown result type (might be due to invalid IL or missing references)
				//IL_004c: Unknown result type (might be due to invalid IL or missing references)
				stack++;
				if (stack >= 5)
				{
					if (Object.op_Implicit((Object)(object)VFX))
					{
						Object.Instantiate<GameObject>(VFX, ((Component)base.m_character).transform.position, ((Component)base.m_character).transform.rotation);
					}
					float num = ((Character)Player.m_localPlayer).GetMaxStamina() * (float)itemLevel / 350f;
					((Character)Player.m_localPlayer).AddStamina(num);
					base.m_character.m_seman.RemoveStatusEffect((StatusEffect)(object)this, true);
				}
			}
		}

		[<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(0)]
		[HarmonyPatch(typeof(ObjectDB), "Awake")]
		public static class ObjectDBAwake
		{
			[<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(1)]
			public static void Postfix(ObjectDB __instance)
			{
				AddSE(__instance);
			}
		}

		[<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(0)]
		[HarmonyPatch(typeof(ObjectDB), "CopyOtherDB")]
		public static class ObjectDBCopyOtherDB
		{
			[<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(1)]
			public static void Postfix(ObjectDB __instance)
			{
				AddSE(__instance);
			}
		}

		private static readonly Dictionary<string, int> Targets = new Dictionary<string, int>();

		private static GameObject VFX;

		private static Sprite Icon;

		public static void UseVFX(GameObject vfx)
		{
			VFX = vfx;
		}

		public static void UseIcon(Sprite icon)
		{
			Icon = icon;
		}

		public static void AddToItem(string prefab, int value)
		{
			Targets.Add(prefab, value);
		}

		private static void AddSE(ObjectDB odb)
		{
			if (!((Object)(object)ObjectDB.instance == (Object)null) && ObjectDB.instance.m_items.Count != 0 && !((Object)(object)ObjectDB.instance.GetItemPrefab("Amber") == (Object)null) && !Object.op_Implicit((Object)(object)odb.m_StatusEffects.Find([<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(0)] (StatusEffect se) => ((Object)se).name == "Warfare_Adrenaline")))
			{
				SE_Warfare_Adrenaline item = ScriptableObject.CreateInstance<SE_Warfare_Adrenaline>();
				odb.m_StatusEffects.Add((StatusEffect)(object)item);
			}
		}
	}
	[<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(1)]
	[<7c6e2ac3-f28b-4ae5-8c94-6a181d0e54f4>Nullable(0)]
	public static class Bash
	{
		[HarmonyPatch(typeof(Character), "Damage")]
		[<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(0)]
		private static class Character_Damage_Patch
		{
			[<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(1)]
			private static void Prefix(Character __instance, ref HitData hit)
			{
				//IL_007b: Unknown result type (might be due to invalid IL or missing references)
				//IL_00a1: Unknown result type (might be due to invalid IL or missing references)
				//IL_00a6: Unknown result type (might be due to invalid IL or missing references)
				if (!__instance.m_nview.IsValid() || (Object)(object)hit.GetAttacker() != (Object)(object)Player.m_localPlayer || !WarfareUtils.TryGetAttackWeapon(out var prefab) || !Targets.TryGetValue(prefab, out var value) || ((Humanoid)Player.m_localPlayer).m_currentAttackIsSecondary)
				{
					return;
				}
				int num = Random.Range(0, 100);
				if (num <= value)
				{
					__instance.Stagger(Vector3.zero);
					if (Object.op_Implicit((Object)(object)VFX))
					{
						Object.Instantiate<GameObject>(VFX, ((Component)__instance).transform.position, Quaternion.identity);
					}
				}
			}
		}

		private static readonly Dictionary<string, int> Targets = new Dictionary<string, int>();

		private static GameObject VFX;

		public static void UseVFX(GameObject vfx)
		{
			VFX = vfx;
		}

		public static void AddToItem(string prefab, int value)
		{
			Targets.Add(prefab, value);
		}
	}
	[<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(1)]
	[<7c6e2ac3-f28b-4ae5-8c94-6a181d0e54f4>Nullable(0)]
	public static class Bleeding
	{
		[<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(0)]
		[HarmonyPatch(typeof(Character), "Damage")]
		private static class Character_Damage_Patch
		{
			[<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(1)]
			private static void Prefix(Character __instance, ref HitData hit)
			{
				if (__instance.m_nview.IsValid() && !((Object)(object)hit.GetAttacker() != (Object)(object)Player.m_localPlayer) && WarfareUtils.TryGetAttackWeapon(out var prefab) && Targets.TryGetValue(prefab, out var value))
				{
					__instance.m_seman.AddStatusEffect(StringExtensionMethods.GetStableHashCode("Warfare_Bleeding"), true, value, 0f);
				}
			}
		}

		[<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(0)]
		public class SE_Warfare_Bleeding : StatusEffect
		{
			public int stack;

			public void OnEnable()
			{
				((Object)this).name = "Warfare_Bleeding";
				base.m_tooltip = "Bleeding";
				base.m_name = "Bleeding";
				base.m_ttl = 4f;
			}

			public override void SetLevel(int itemLevel, float skillLevel)
			{
				stack++;
				if (stack >= 4)
				{
					base.m_character.m_seman.AddStatusEffect(StringExtensionMethods.GetStableHashCode("Warfare_Bleeding_Stacking"), true, itemLevel, 0f);
					base.m_character.m_seman.RemoveStatusEffect((StatusEffect)(object)this, true);
				}
			}
		}

		[<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(0)]
		public class SE_Warfare_Bleeding_Stacking : StatusEffect
		{
			public float counter;

			public int maxHP;

			public void OnEnable()
			{
				//IL_003a: Unknown result type (might be due to invalid IL or missing references)
				//IL_0040: Expected O, but got Unknown
				//IL_0049: Unknown result type (might be due to invalid IL or missing references)
				//IL_004e: Unknown result type (might be due to invalid IL or missing references)
				//IL_0055: Unknown result type (might be due to invalid IL or missing references)
				//IL_005c: Unknown result type (might be due to invalid IL or missing references)
				//IL_0063: Unknown result type (might be due to invalid IL or missing references)
				//IL_006a: Unknown result type (might be due to invalid IL or missing references)
				//IL_0075: Unknown result type (might be due to invalid IL or missing references)
				//IL_007c: Unknown result type (might be due to invalid IL or missing references)
				//IL_0084: Expected O, but got Unknown
				((Object)this).name = "Warfare_Bleeding_Stacking";
				base.m_tooltip = "Bleeding";
				base.m_name = "Bleeding";
				base.m_ttl = 4f;
				base.m_icon = Icon;
				EffectList val = new EffectList();
				val.m_effectPrefabs = (EffectData[])(object)new EffectData[1]
				{
					new EffectData
					{
						m_attach = true,
						m_enabled = true,
						m_inheritParentRotation = true,
						m_inheritParentScale = true,
						m_prefab = VFX,
						m_randomRotation = false,
						m_scale = true
					}
				};
				base.m_startEffects = val;
			}

			public override void SetLevel(int itemLevel, float skillLevel)
			{
				maxHP = itemLevel;
			}

			public override void UpdateStatusEffect(float dt)
			{
				//IL_0051: Unknown result type (might be due to invalid IL or missing references)
				//IL_0057: Expected O, but got Unknown
				//IL_006f: Unknown result type (might be due to invalid IL or missing references)
				//IL_0074: Unknown result type (might be due to invalid IL or missing references)
				((StatusEffect)this).UpdateStatusEffect(dt);
				counter += dt;
				if (counter >= 1f)
				{
					counter = 0f;
					float pierce = base.m_character.GetMaxHealth() * (float)maxHP * 0.0025f;
					HitData val = new HitData();
					val.m_damage.m_pierce = pierce;
					val.m_point = ((Component)base.m_character).transform.position;
					base.m_character.Damage(val);
				}
			}
		}

		[HarmonyPatch(typeof(ObjectDB), "Awake")]
		[<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(0)]
		public static class ObjectDBAwake
		{
			[<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(1)]
			public static void Postfix(ObjectDB __instance)
			{
				AddSE(__instance);
			}
		}

		[<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(0)]
		[HarmonyPatch(typeof(ObjectDB), "CopyOtherDB")]
		public static class ObjectDBCopyOtherDB
		{
			[<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(1)]
			public static void Postfix(ObjectDB __instance)
			{
				AddSE(__instance);
			}
		}

		private static readonly Dictionary<string, int> Targets = new Dictionary<string, int>();

		private static GameObject VFX;

		private static Sprite Icon;

		public static void UseVFX(GameObject vfx)
		{
			VFX = vfx;
		}

		public static void UseIcon(Sprite icon)
		{
			Icon = icon;
		}

		public static void AddToItem(string prefab, int value)
		{
			Targets.Add(prefab, value);
		}

		private static void AddSE(ObjectDB odb)
		{
			if (!((Object)(object)ObjectDB.instance == (Object)null) && ObjectDB.instance.m_items.Count != 0 && !((Object)(object)ObjectDB.instance.GetItemPrefab("Amber") == (Object)null))
			{
				if (!Object.op_Implicit((Object)(object)odb.m_StatusEffects.Find([<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(0)] (StatusEffect se) => ((Object)se).name == "Warfare_Bleeding")))
				{
					SE_Warfare_Bleeding item = ScriptableObject.CreateInstance<SE_Warfare_Bleeding>();
					odb.m_StatusEffects.Add((StatusEffect)(object)item);
				}
				if (!Object.op_Implicit((Object)(object)odb.m_StatusEffects.Find([<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(0)] (StatusEffect se) => ((Object)se).name == "Warfare_Bleeding_Stacking")))
				{
					SE_Warfare_Bleeding_Stacking item2 = ScriptableObject.CreateInstance<SE_Warfare_Bleeding_Stacking>();
					odb.m_StatusEffects.Add((StatusEffect)(object)item2);
				}
			}
		}
	}
	[<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(1)]
	[<7c6e2ac3-f28b-4ae5-8c94-6a181d0e54f4>Nullable(0)]
	public static class BleedingSecondaryAttack
	{
		[HarmonyPatch(typeof(Character), "Damage")]
		[<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(0)]
		private static class Character_Damage_Patch
		{
			[<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(1)]
			private static void Prefix(Character __instance, ref HitData hit)
			{
				if (__instance.m_nview.IsValid() && !((Object)(object)hit.GetAttacker() != (Object)(object)Player.m_localPlayer) && WarfareUtils.TryGetAttackWeapon(out var prefab) && Targets.TryGetValue(prefab, out var value) && ((Humanoid)Player.m_localPlayer).m_currentAttackIsSecondary)
				{
					__instance.m_seman.AddStatusEffect(StringExtensionMethods.GetStableHashCode("Warfare_BleedingSecondaryAttack"), true, value, 0f);
				}
			}
		}

		[<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(0)]
		public class SE_Warfare_BleedingSecondaryAttack : StatusEffect
		{
			public float counter;

			public int percentage;

			public void OnEnable()
			{
				//IL_003a: Unknown result type (might be due to invalid IL or missing references)
				//IL_0040: Expected O, but got Unknown
				//IL_0049: Unknown result type (might be due to invalid IL or missing references)
				//IL_004e: Unknown result type (might be due to invalid IL or missing references)
				//IL_0055: Unknown result type (might be due to invalid IL or missing references)
				//IL_005c: Unknown result type (might be due to invalid IL or missing references)
				//IL_0063: Unknown result type (might be due to invalid IL or missing references)
				//IL_006a: Unknown result type (might be due to invalid IL or missing references)
				//IL_0075: Unknown result type (might be due to invalid IL or missing references)
				//IL_007c: Unknown result type (might be due to invalid IL or missing references)
				//IL_0084: Expected O, but got Unknown
				((Object)this).name = "Warfare_BleedingSecondaryAttack";
				base.m_tooltip = "BleedingSecondaryAttack";
				base.m_name = "BleedingSecondaryAttack";
				base.m_ttl = 8f;
				base.m_icon = Icon;
				EffectList val = new EffectList();
				val.m_effectPrefabs = (EffectData[])(object)new EffectData[1]
				{
					new EffectData
					{
						m_attach = true,
						m_enabled = true,
						m_inheritParentRotation = true,
						m_inheritParentScale = true,
						m_prefab = VFX,
						m_randomRotation = false,
						m_scale = true
					}
				};
				base.m_startEffects = val;
			}

			public override void SetLevel(int itemLevel, float skillLevel)
			{
				percentage = itemLevel;
			}

			public override void UpdateStatusEffect(float dt)
			{
				//IL_0051: Unknown result type (might be due to invalid IL or missing references)
				//IL_0057: Expected O, but got Unknown
				//IL_006f: Unknown result type (might be due to invalid IL or missing references)
				//IL_0074: Unknown result type (might be due to invalid IL or missing references)
				((StatusEffect)this).UpdateStatusEffect(dt);
				counter += dt;
				if (counter >= 1f)
				{
					counter = 0f;
					float pierce = base.m_character.GetMaxHealth() * (float)percentage * 0.00125f;
					HitData val = new HitData();
					val.m_damage.m_pierce = pierce;
					val.m_point = ((Component)base.m_character).transform.position;
					base.m_character.Damage(val);
				}
			}
		}

		[<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(0)]
		[HarmonyPatch(typeof(ObjectDB), "Awake")]
		public static class ObjectDBAwake
		{
			[<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(1)]
			public static void Postfix(ObjectDB __instance)
			{
				AddSE(__instance);
			}
		}

		[HarmonyPatch(typeof(ObjectDB), "CopyOtherDB")]
		[<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(0)]
		public static class ObjectDBCopyOtherDB
		{
			[<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(1)]
			public static void Postfix(ObjectDB __instance)
			{
				AddSE(__instance);
			}
		}

		private static readonly Dictionary<string, int> Targets = new Dictionary<string, int>();

		private static GameObject VFX;

		private static Sprite Icon;

		public static void UseVFX(GameObject vfx)
		{
			VFX = vfx;
		}

		public static void UseIcon(Sprite icon)
		{
			Icon = icon;
		}

		public static void AddToItem(string prefab, int value)
		{
			Targets.Add(prefab, value);
		}

		private static void AddSE(ObjectDB odb)
		{
			if (!((Object)(object)ObjectDB.instance == (Object)null) && ObjectDB.instance.m_items.Count != 0 && !((Object)(object)ObjectDB.instance.GetItemPrefab("Amber") == (Object)null) && !Object.op_Implicit((Object)(object)odb.m_StatusEffects.Find([<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(0)] (StatusEffect se) => ((Object)se).name == "Warfare_BleedingSecondaryAttack")))
			{
				SE_Warfare_BleedingSecondaryAttack item = ScriptableObject.CreateInstance<SE_Warfare_BleedingSecondaryAttack>();
				odb.m_StatusEffects.Add((StatusEffect)(object)item);
			}
		}
	}
	[<7c6e2ac3-f28b-4ae5-8c94-6a181d0e54f4>Nullable(0)]
	[<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(1)]
	public static class Bludgeoner
	{
		[<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(0)]
		[HarmonyPatch(typeof(Character), "Damage")]
		private static class Character_Damage_Patch
		{
			[<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(1)]
			private static void Prefix(Character __instance, ref HitData hit)
			{
				if (!((Object)(object)hit.GetAttacker() != (Object)(object)Player.m_localPlayer) && WarfareUtils.TryGetAttackWeapon(out var prefab) && Targets.TryGetValue(prefab, out var value))
				{
					__instance.m_seman.AddStatusEffect(StringExtensionMethods.GetStableHashCode("Warfare_Bludgeoner"), true, value, 0f);
				}
			}
		}

		[<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(0)]
		public class SE_Warfare_Bludgeoner : StatusEffect
		{
			public int stack;

			public void OnEnable()
			{
				((Object)this).name = "Warfare_Bludgeoner";
				base.m_tooltip = "Bludgeoner";
				base.m_name = "Bludgeoner";
				base.m_ttl = 3f;
				base.m_icon = Icon_Secondary;
			}

			public override void SetLevel(int itemLevel, float skillLevel)
			{
				stack++;
				if (stack >= 5)
				{
					base.m_character.m_seman.AddStatusEffect(StringExtensionMethods.GetStableHashCode("Warfare_Bludgeoner_ShreadResistance"), true, itemLevel, 0f);
					base.m_character.m_seman.RemoveStatusEffect((StatusEffect)(object)this, true);
				}
			}
		}

		[<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(0)]
		public class SE_Warfare_Bludgeoner_Stacking : StatusEffect
		{
			public int shread;

			public void OnEnable()
			{
				//IL_003a: Unknown result type (might be due to invalid IL or missing references)
				//IL_0040: Expected O, but got Unknown
				//IL_0049: Unknown result type (might be due to invalid IL or missing references)
				//IL_004e: Unknown result type (might be due to invalid IL or missing references)
				//IL_0055: Unknown result type (might be due to invalid IL or missing references)
				//IL_005c: Unknown result type (might be due to invalid IL or missing references)
				//IL_0063: Unknown result type (might be due to invalid IL or missing references)
				//IL_006a: Unknown result type (might be due to invalid IL or missing references)
				//IL_0075: Unknown result type (might be due to invalid IL or missing references)
				//IL_007c: Unknown result type (might be due to invalid IL or missing references)
				//IL_0084: Expected O, but got Unknown
				((Object)this).name = "Warfare_Bludgeoner_ShreadResistance";
				base.m_tooltip = "Bludgeoner";
				base.m_name = "Bludgeoner";
				base.m_ttl = 3f;
				base.m_icon = Icon;
				EffectList val = new EffectList();
				val.m_effectPrefabs = (EffectData[])(object)new EffectData[1]
				{
					new EffectData
					{
						m_attach = true,
						m_enabled = true,
						m_inheritParentRotation = true,
						m_inheritParentScale = true,
						m_prefab = VFX,
						m_randomRotation = false,
						m_scale = true
					}
				};
				base.m_startEffects = val;
			}

			public override void SetLevel(int itemLevel, float skillLevel)
			{
				shread = itemLevel;
			}

			public override void ModifyDamageMods(ref DamageModifiers modifiers)
			{
				//IL_0003: Unknown result type (might be due to invalid IL or missing references)
				modifiers.m_blunt = (DamageModifier)2;
			}
		}

		[HarmonyPatch(typeof(ObjectDB), "Awake")]
		[<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(0)]
		public static class ObjectDBAwake
		{
			[<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(1)]
			public static void Postfix(ObjectDB __instance)
			{
				AddSE(__instance);
			}
		}

		[<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(0)]
		[HarmonyPatch(typeof(ObjectDB), "CopyOtherDB")]
		public static class ObjectDBCopyOtherDB
		{
			[<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(1)]
			public static void Postfix(ObjectDB __instance)
			{
				AddSE(__instance);
			}
		}

		private static readonly Dictionary<string, int> Targets = new Dictionary<string, int>();

		private static GameObject VFX;

		private static Sprite Icon;

		private static Sprite Icon_Secondary;

		public static void UseVFX(GameObject vfx)
		{
			VFX = vfx;
		}

		public static void UseIcon(Sprite icon)
		{
			Icon = icon;
		}

		public static void UseIcon_Secondary(Sprite icon)
		{
			Icon_Secondary = icon;
		}

		public static void AddToItem(string prefab, int value)
		{
			Targets.Add(prefab, value);
		}

		private static void AddSE(ObjectDB odb)
		{
			if (!((Object)(object)ObjectDB.instance == (Object)null) && ObjectDB.instance.m_items.Count != 0 && !((Object)(object)ObjectDB.instance.GetItemPrefab("Amber") == (Object)null))
			{
				if (!Object.op_Implicit((Object)(object)odb.m_StatusEffects.Find([<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(0)] (StatusEffect se) => ((Object)se).name == "Warfare_Bludgeoner")))
				{
					SE_Warfare_Bludgeoner item = ScriptableObject.CreateInstance<SE_Warfare_Bludgeoner>();
					odb.m_StatusEffects.Add((StatusEffect)(object)item);
				}
				if (!Object.op_Implicit((Object)(object)odb.m_StatusEffects.Find([<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(0)] (StatusEffect se) => ((Object)se).name == "Warfare_Bludgeoner_ShreadResistance")))
				{
					SE_Warfare_Bludgeoner_Stacking item2 = ScriptableObject.CreateInstance<SE_Warfare_Bludgeoner_Stacking>();
					odb.m_StatusEffects.Add((StatusEffect)(object)item2);
				}
			}
		}
	}
	[<7c6e2ac3-f28b-4ae5-8c94-6a181d0e54f4>Nullable(0)]
	[<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(1)]
	public static class BurningSecondaryAttack
	{
		[HarmonyPatch(typeof(Character), "Damage")]
		[<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(0)]
		private static class Character_Damage_Patch
		{
			[<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(1)]
			private static void Prefix(Character __instance, ref HitData hit)
			{
				if (__instance.m_nview.IsValid() && !((Object)(object)hit.GetAttacker() != (Object)(object)Player.m_localPlayer) && WarfareUtils.TryGetAttackWeapon(out var prefab) && Targets.TryGetValue(prefab, out var value) && ((Humanoid)Player.m_localPlayer).m_currentAttackIsSecondary)
				{
					__instance.m_seman.AddStatusEffect(StringExtensionMethods.GetStableHashCode("Warfare_BurningSecondaryAttack"), true, value, 0f);
				}
			}
		}

		[<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(0)]
		public class SE_Warfare_BurningSecondaryAttack : StatusEffect
		{
			public float counter;

			public int percentage;

			public void OnEnable()
			{
				//IL_003a: Unknown result type (might be due to invalid IL or missing references)
				//IL_0040: Expected O, but got Unknown
				//IL_0049: Unknown result type (might be due to invalid IL or missing references)
				//IL_004e: Unknown result type (might be due to invalid IL or missing references)
				//IL_0055: Unknown result type (might be due to invalid IL or missing references)
				//IL_005c: Unknown result type (might be due to invalid IL or missing references)
				//IL_0063: Unknown result type (might be due to invalid IL or missing references)
				//IL_006a: Unknown result type (might be due to invalid IL or missing references)
				//IL_0075: Unknown result type (might be due to invalid IL or missing references)
				//IL_007c: Unknown result type (might be due to invalid IL or missing references)
				//IL_0084: Expected O, but got Unknown
				((Object)this).name = "Warfare_BurningSecondaryAttack";
				base.m_tooltip = "BurningSecondaryAttack";
				base.m_name = "BurningSecondaryAttack";
				base.m_ttl = 6f;
				base.m_icon = Icon;
				EffectList val = new EffectList();
				val.m_effectPrefabs = (EffectData[])(object)new EffectData[1]
				{
					new EffectData
					{
						m_attach = true,
						m_enabled = true,
						m_inheritParentRotation = true,
						m_inheritParentScale = true,
						m_prefab = VFX,
						m_randomRotation = false,
						m_scale = true
					}
				};
				base.m_startEffects = val;
			}

			public override void SetLevel(int itemLevel, float skillLevel)
			{
				percentage = itemLevel;
			}

			public override void UpdateStatusEffect(float dt)
			{
				//IL_0051: Unknown result type (might be due to invalid IL or missing references)
				//IL_0057: Expected O, but got Unknown
				//IL_006f: Unknown result type (might be due to invalid IL or missing references)
				//IL_0074: Unknown result type (might be due to invalid IL or missing references)
				((StatusEffect)this).UpdateStatusEffect(dt);
				counter += dt;
				if (counter >= 1f)
				{
					counter = 0f;
					float fire = base.m_character.GetMaxHealth() * (float)percentage * 0.00125f;
					HitData val = new HitData();
					val.m_damage.m_fire = fire;
					val.m_point = ((Component)base.m_character).transform.position;
					base.m_character.Damage(val);
				}
			}
		}

		[HarmonyPatch(typeof(ObjectDB), "Awake")]
		[<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(0)]
		public static class ObjectDBAwake
		{
			[<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(1)]
			public static void Postfix(ObjectDB __instance)
			{
				AddSE(__instance);
			}
		}

		[HarmonyPatch(typeof(ObjectDB), "CopyOtherDB")]
		[<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(0)]
		public static class ObjectDBCopyOtherDB
		{
			[<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(1)]
			public static void Postfix(ObjectDB __instance)
			{
				AddSE(__instance);
			}
		}

		private static readonly Dictionary<string, int> Targets = new Dictionary<string, int>();

		private static GameObject VFX;

		private static Sprite Icon;

		public static void UseVFX(GameObject vfx)
		{
			VFX = vfx;
		}

		public static void UseIcon(Sprite icon)
		{
			Icon = icon;
		}

		public static void AddToItem(string prefab, int value)
		{
			Targets.Add(prefab, value);
		}

		private static void AddSE(ObjectDB odb)
		{
			if (!((Object)(object)ObjectDB.instance == (Object)null) && ObjectDB.instance.m_items.Count != 0 && !((Object)(object)ObjectDB.instance.GetItemPrefab("Amber") == (Object)null) && !Object.op_Implicit((Object)(object)odb.m_StatusEffects.Find([<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(0)] (StatusEffect se) => ((Object)se).name == "Warfare_BurningSecondaryAttack")))
			{
				SE_Warfare_BurningSecondaryAttack item = ScriptableObject.CreateInstance<SE_Warfare_BurningSecondaryAttack>();
				odb.m_StatusEffects.Add((StatusEffect)(object)item);
			}
		}
	}
	[<7c6e2ac3-f28b-4ae5-8c94-6a181d0e54f4>Nullable(0)]
	[<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(1)]
	public static class Decapitator4
	{
		[<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(0)]
		[HarmonyPatch(typeof(Character), "Damage")]
		private static class Character_Damage_Patch
		{
			[<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(1)]
			private static void Prefix(Character __instance, ref HitData hit)
			{
				if (__instance.m_nview.IsValid() && !((Object)(object)hit.GetAttacker() != (Object)(object)Player.m_localPlayer) && WarfareUtils.TryGetAttackWeapon(out var prefab) && Targets.TryGetValue(prefab, out var value))
				{
					__instance.m_seman.AddStatusEffect(StringExtensionMethods.GetStableHashCode("Warfare_Decapitator"), true, value, 0f);
				}
			}
		}

		[<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(0)]
		public class SE_Warfare_Decapitator : StatusEffect
		{
			public int stack;

			public void OnEnable()
			{
				((Object)this).name = "Warfare_Decapitator";
				base.m_tooltip = "Decapitator";
				base.m_name = "Decapitator";
				base.m_ttl = 6f;
			}

			public override void SetLevel(int itemLevel, float skillLevel)
			{
				stack++;
				if (stack >= 4)
				{
					base.m_character.m_seman.AddStatusEffect(StringExtensionMethods.GetStableHashCode("Warfare_Decapitator_ShreadResistance"), true, itemLevel, 0f);
					base.m_ttl = 0.1f;
				}
			}
		}

		[<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(0)]
		public class SE_Warfare_Decapitator_Stacking : StatusEffect
		{
			public int shread;

			public void OnEnable()
			{
				//IL_003a: Unknown result type (might be due to invalid IL or missing references)
				//IL_0040: Expected O, but got Unknown
				//IL_0049: Unknown result type (might be due to invalid IL or missing references)
				//IL_004e: Unknown result type (might be due to invalid IL or missing references)
				//IL_0055: Unknown result type (might be due to invalid IL or missing references)
				//IL_005c: Unknown result type (might be due to invalid IL or missing references)
				//IL_0063: Unknown result type (might be due to invalid IL or missing references)
				//IL_006a: Unknown result type (might be due to invalid IL or missing references)
				//IL_0075: Unknown result type (might be due to invalid IL or missing references)
				//IL_007c: Unknown result type (might be due to invalid IL or missing references)
				//IL_0084: Expected O, but got Unknown
				((Object)this).name = "Warfare_Decapitator_ShreadResistance";
				base.m_tooltip = "Decapitator";
				base.m_name = "Decapitator";
				base.m_ttl = 6f;
				base.m_icon = Icon;
				EffectList val = new EffectList();
				val.m_effectPrefabs = (EffectData[])(object)new EffectData[1]
				{
					new EffectData
					{
						m_attach = true,
						m_enabled = true,
						m_inheritParentRotation = true,
						m_inheritParentScale = true,
						m_prefab = VFX,
						m_randomRotation = false,
						m_scale = true
					}
				};
				base.m_startEffects = val;
			}

			public override void SetLevel(int itemLevel, float skillLevel)
			{
				shread = itemLevel;
			}

			public override void ModifyDamageMods(ref DamageModifiers modifiers)
			{
				//IL_0003: Unknown result type (might be due to invalid IL or missing references)
				modifiers.m_slash = (DamageModifier)2;
				base.m_ttl = 0.1f;
			}
		}

		[<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(0)]
		[HarmonyPatch(typeof(ObjectDB), "Awake")]
		public static class ObjectDBAwake
		{
			[<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(1)]
			public static void Postfix(ObjectDB __instance)
			{
				AddSE(__instance);
			}
		}

		[<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(0)]
		[HarmonyPatch(typeof(ObjectDB), "CopyOtherDB")]
		public static class ObjectDBCopyOtherDB
		{
			[<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(1)]
			public static void Postfix(ObjectDB __instance)
			{
				AddSE(__instance);
			}
		}

		private static readonly Dictionary<string, int> Targets = new Dictionary<string, int>();

		private static GameObject VFX;

		private static Sprite Icon;

		public static void UseVFX(GameObject vfx)
		{
			VFX = vfx;
		}

		public static void UseIcon(Sprite icon)
		{
			Icon = icon;
		}

		public static void AddToItem(string prefab, int value)
		{
			Targets.Add(prefab, value);
		}

		private static void AddSE(ObjectDB odb)
		{
			if (!((Object)(object)ObjectDB.instance == (Object)null) && ObjectDB.instance.m_items.Count != 0 && !((Object)(object)ObjectDB.instance.GetItemPrefab("Amber") == (Object)null))
			{
				if (!Object.op_Implicit((Object)(object)odb.m_StatusEffects.Find([<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(0)] (StatusEffect se) => ((Object)se).name == "Warfare_Decapitator")))
				{
					SE_Warfare_Decapitator item = ScriptableObject.CreateInstance<SE_Warfare_Decapitator>();
					odb.m_StatusEffects.Add((StatusEffect)(object)item);
				}
				if (!Object.op_Implicit((Object)(object)odb.m_StatusEffects.Find([<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(0)] (StatusEffect se) => ((Object)se).name == "Warfare_Decapitator_ShreadResistance")))
				{
					SE_Warfare_Decapitator_Stacking item2 = ScriptableObject.CreateInstance<SE_Warfare_Decapitator_Stacking>();
					odb.m_StatusEffects.Add((StatusEffect)(object)item2);
				}
			}
		}
	}
	[<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(1)]
	[<7c6e2ac3-f28b-4ae5-8c94-6a181d0e54f4>Nullable(0)]
	public static class Decapitator5
	{
		[<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(0)]
		[HarmonyPatch(typeof(Character), "Damage")]
		private static class Character_Damage_Patch
		{
			[<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(1)]
			private static void Prefix(Character __instance, ref HitData hit)
			{
				if (__instance.m_nview.IsValid() && !((Object)(object)hit.GetAttacker() != (Object)(object)Player.m_localPlayer) && WarfareUtils.TryGetAttackWeapon(out var prefab) && Targets.TryGetValue(prefab, out var value))
				{
					__instance.m_seman.AddStatusEffect(StringExtensionMethods.GetStableHashCode("Warfare_Decapitator"), true, value, 0f);
				}
			}
		}

		[<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(0)]
		public class SE_Warfare_Decapitator : StatusEffect
		{
			public int stack;

			public void OnEnable()
			{
				((Object)this).name = "Warfare_Decapitator";
				base.m_tooltip = "Decapitator";
				base.m_name = "Decapitator";
				base.m_ttl = 6f;
			}

			public override void SetLevel(int itemLevel, float skillLevel)
			{
				stack++;
				if (stack >= 5)
				{
					base.m_character.m_seman.AddStatusEffect(StringExtensionMethods.GetStableHashCode("Warfare_Decapitator_ShreadResistance"), true, itemLevel, 0f);
					base.m_ttl = 0.1f;
				}
			}
		}

		[<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(0)]
		public class SE_Warfare_Decapitator_Stacking : StatusEffect
		{
			public int shread;

			public void OnEnable()
			{
				//IL_003a: Unknown result type (might be due to invalid IL or missing references)
				//IL_0040: Expected O, but got Unknown
				//IL_0049: Unknown result type (might be due to invalid IL or missing references)
				//IL_004e: Unknown result type (might be due to invalid IL or missing references)
				//IL_0055: Unknown result type (might be due to invalid IL or missing references)
				//IL_005c: Unknown result type (might be due to invalid IL or missing references)
				//IL_0063: Unknown result type (might be due to invalid IL or missing references)
				//IL_006a: Unknown result type (might be due to invalid IL or missing references)
				//IL_0075: Unknown result type (might be due to invalid IL or missing references)
				//IL_007c: Unknown result type (might be due to invalid IL or missing references)
				//IL_0084: Expected O, but got Unknown
				((Object)this).name = "Warfare_Decapitator_ShreadResistance";
				base.m_tooltip = "Decapitator";
				base.m_name = "Decapitator";
				base.m_ttl = 6f;
				base.m_icon = Icon;
				EffectList val = new EffectList();
				val.m_effectPrefabs = (EffectData[])(object)new EffectData[1]
				{
					new EffectData
					{
						m_attach = true,
						m_enabled = true,
						m_inheritParentRotation = true,
						m_inheritParentScale = true,
						m_prefab = VFX,
						m_randomRotation = false,
						m_scale = true
					}
				};
				base.m_startEffects = val;
			}

			public override void SetLevel(int itemLevel, float skillLevel)
			{
				shread = itemLevel;
			}

			public override void ModifyDamageMods(ref DamageModifiers modifiers)
			{
				//IL_0003: Unknown result type (might be due to invalid IL or missing references)
				modifiers.m_slash = (DamageModifier)2;
				base.m_ttl = 0.1f;
			}
		}

		[<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(0)]
		[HarmonyPatch(typeof(ObjectDB), "Awake")]
		public static class ObjectDBAwake
		{
			[<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(1)]
			public static void Postfix(ObjectDB __instance)
			{
				AddSE(__instance);
			}
		}

		[<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(0)]
		[HarmonyPatch(typeof(ObjectDB), "CopyOtherDB")]
		public static class ObjectDBCopyOtherDB
		{
			[<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(1)]
			public static void Postfix(ObjectDB __instance)
			{
				AddSE(__instance);
			}
		}

		private static readonly Dictionary<string, int> Targets = new Dictionary<string, int>();

		private static GameObject VFX;

		private static Sprite Icon;

		public static void UseVFX(GameObject vfx)
		{
			VFX = vfx;
		}

		public static void UseIcon(Sprite icon)
		{
			Icon = icon;
		}

		public static void AddToItem(string prefab, int value)
		{
			Targets.Add(prefab, value);
		}

		private static void AddSE(ObjectDB odb)
		{
			if (!((Object)(object)ObjectDB.instance == (Object)null) && ObjectDB.instance.m_items.Count != 0 && !((Object)(object)ObjectDB.instance.GetItemPrefab("Amber") == (Object)null))
			{
				if (!Object.op_Implicit((Object)(object)odb.m_StatusEffects.Find([<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(0)] (StatusEffect se) => ((Object)se).name == "Warfare_Decapitator")))
				{
					SE_Warfare_Decapitator item = ScriptableObject.CreateInstance<SE_Warfare_Decapitator>();
					odb.m_StatusEffects.Add((StatusEffect)(object)item);
				}
				if (!Object.op_Implicit((Object)(object)odb.m_StatusEffects.Find([<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(0)] (StatusEffect se) => ((Object)se).name == "Warfare_Decapitator_ShreadResistance")))
				{
					SE_Warfare_Decapitator_Stacking item2 = ScriptableObject.CreateInstance<SE_Warfare_Decapitator_Stacking>();
					odb.m_StatusEffects.Add((StatusEffect)(object)item2);
				}
			}
		}
	}
	[<7c6e2ac3-f28b-4ae5-8c94-6a181d0e54f4>Nullable(0)]
	[<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(1)]
	public static class EikthyrCrossbow
	{
		[<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(0)]
		[HarmonyPatch(typeof(Character), "Damage")]
		private static class Character_Damage_Patch
		{
			[<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(1)]
			private static void Prefix(Character __instance, ref HitData hit)
			{
				if (__instance.m_nview.IsValid() && !((Object)(object)hit.GetAttacker() != (Object)(object)Player.m_localPlayer) && WarfareUtils.TryGetAttackWeapon(out var prefab) && Targets.TryGetValue(prefab, out var value))
				{
					__instance.m_seman.AddStatusEffect(StringExtensionMethods.GetStableHashCode("Warfare_EikthyrCrossbow"), true, value, 0f);
				}
			}
		}

		[<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(0)]
		public class SE_Warfare_EikthyrCrossbow : StatusEffect
		{
			public int stack;

			public void OnEnable()
			{
				((Object)this).name = "Warfare_EikthyrCrossbow";
				base.m_tooltip = "EikthyrCrossbow";
				base.m_name = "EikthyrCrossbow";
				base.m_ttl = 10f;
				base.m_icon = Icon;
			}

			public override void SetLevel(int itemLevel, float skillLevel)
			{
				//IL_0036: Unknown result type (might be due to invalid IL or missing references)
				//IL_003c: Expected O, but got Unknown
				//IL_0054: Unknown result type (might be due to invalid IL or missing references)
				//IL_0059: Unknown result type (might be due to invalid IL or missing references)
				//IL_0089: 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)
				stack++;
				if (stack >= 4)
				{
					float pierce = base.m_character.GetMaxHealth() * (float)itemLevel * 0f;
					HitData val = new HitData();
					val.m_damage.m_pierce = pierce;
					val.m_point = ((Component)base.m_character).transform.position;
					base.m_character.Damage(val);
					if (Object.op_Implicit((Object)(object)VFX))
					{
						Object.Instantiate<GameObject>(VFX, ((Component)base.m_character).transform.position, ((Component)base.m_character).transform.rotation);
					}
					base.m_character.m_seman.RemoveStatusEffect((StatusEffect)(object)this, true);
				}
			}
		}

		[<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(0)]
		[HarmonyPatch(typeof(ObjectDB), "Awake")]
		public static class ObjectDBAwake
		{
			[<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(1)]
			public static void Postfix(ObjectDB __instance)
			{
				AddSE(__instance);
			}
		}

		[<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(0)]
		[HarmonyPatch(typeof(ObjectDB), "CopyOtherDB")]
		public static class ObjectDBCopyOtherDB
		{
			[<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(1)]
			public static void Postfix(ObjectDB __instance)
			{
				AddSE(__instance);
			}
		}

		private static readonly Dictionary<string, int> Targets = new Dictionary<string, int>();

		private static GameObject VFX;

		private static Sprite Icon;

		public static void UseVFX(GameObject vfx)
		{
			VFX = vfx;
		}

		public static void UseIcon(Sprite icon)
		{
			Icon = icon;
		}

		public static void AddToItem(string prefab, int value)
		{
			Targets.Add(prefab, value);
		}

		private static void AddSE(ObjectDB odb)
		{
			if (!((Object)(object)ObjectDB.instance == (Object)null) && ObjectDB.instance.m_items.Count != 0 && !((Object)(object)ObjectDB.instance.GetItemPrefab("Amber") == (Object)null) && !Object.op_Implicit((Object)(object)odb.m_StatusEffects.Find([<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(0)] (StatusEffect se) => ((Object)se).name == "Warfare_EikthyrCrossbow")))
			{
				SE_Warfare_EikthyrCrossbow item = ScriptableObject.CreateInstance<SE_Warfare_EikthyrCrossbow>();
				odb.m_StatusEffects.Add((StatusEffect)(object)item);
			}
		}
	}
	[<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(1)]
	[<7c6e2ac3-f28b-4ae5-8c94-6a181d0e54f4>Nullable(0)]
	public static class Executioner
	{
		[HarmonyPatch(typeof(Character), "Damage")]
		[<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(0)]
		private static class Character_Damage_Patch
		{
			[<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(1)]
			private static void Prefix(Character __instance, ref HitData hit)
			{
				if (!((Object)(object)hit.GetAttacker() != (Object)(object)Player.m_localPlayer) && WarfareUtils.TryGetAttackWeapon(out var prefab) && Targets.TryGetValue(prefab, out var value))
				{
					float maxHealth = __instance.GetMaxHealth();
					float health = __instance.GetHealth();
					if (health / maxHealth <= 0.25f)
					{
						hit.ApplyModifier(1f + (float)value / 100f);
					}
				}
			}
		}

		private static readonly Dictionary<string, int> Targets = new Dictionary<string, int>();

		private static GameObject VFX;

		public static void UseVFX(GameObject vfx)
		{
			VFX = vfx;
		}

		public static void AddToItem(string prefab, int value)
		{
			Targets.Add(prefab, value);
		}
	}
	[<7c6e2ac3-f28b-4ae5-8c94-6a181d0e54f4>Nullable(0)]
	[<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(1)]
	public static class Ghost
	{
		[HarmonyPatch(typeof(Character), "Damage")]
		[<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(0)]
		private static class Character_Damage_Patch
		{
			[<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(1)]
			private static void Prefix(ref HitData hit)
			{
				if (!((Object)(object)hit.GetAttacker() != (Object)(object)Player.m_localPlayer) && WarfareUtils.TryGetAttackWeapon(out var prefab) && Targets.TryGetValue(prefab, out var value))
				{
					((Character)Player.m_localPlayer).m_seman.AddStatusEffect(StringExtensionMethods.GetStableHashCode("Warfare_Ghost"), true, value, 0f);
				}
			}
		}

		[<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(0)]
		public class SE_Warfare_Ghost : StatusEffect
		{
			public int stack;

			public int modifier;

			public void OnEnable()
			{
				((Object)this).name = "Warfare_Ghost";
				base.m_tooltip = "Ghost";
				base.m_name = "Ghost";
				base.m_ttl = 3f;
				base.m_icon = Icon;
			}

			public void ModifySpeed(float baseSpeed, ref float speed)
			{
				speed *= 1f + 0.05f * (float)modifier * (float)stack;
			}

			public override void SetLevel(int itemLevel, float skillLevel)
			{
				stack = Mathf.Min(3, stack + 1);
				modifier = itemLevel;
			}
		}

		[<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(0)]
		[HarmonyPatch(typeof(ObjectDB), "Awake")]
		public static class ObjectDBAwake
		{
			[<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(1)]
			public static void Postfix(ObjectDB __instance)
			{
				AddSE(__instance);
			}
		}

		[<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(0)]
		[HarmonyPatch(typeof(ObjectDB), "CopyOtherDB")]
		public static class ObjectDBCopyOtherDB
		{
			[<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(1)]
			public static void Postfix(ObjectDB __instance)
			{
				AddSE(__instance);
			}
		}

		private static readonly Dictionary<string, int> Targets = new Dictionary<string, int>();

		private static GameObject VFX;

		private static Sprite Icon;

		public static void UseVFX(GameObject vfx)
		{
			VFX = vfx;
		}

		public static void UseIcon(Sprite icon)
		{
			Icon = icon;
		}

		public static void AddToItem(string prefab, int value)
		{
			Targets.Add(prefab, value);
		}

		private static void AddSE(ObjectDB odb)
		{
			if (!((Object)(object)ObjectDB.instance == (Object)null) && ObjectDB.instance.m_items.Count != 0 && !((Object)(object)ObjectDB.instance.GetItemPrefab("Amber") == (Object)null) && !Object.op_Implicit((Object)(object)odb.m_StatusEffects.Find([<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(0)] (StatusEffect se) => ((Object)se).name == "Warfare_Ghost")))
			{
				SE_Warfare_Ghost item = ScriptableObject.CreateInstance<SE_Warfare_Ghost>();
				odb.m_StatusEffects.Add((StatusEffect)(object)item);
			}
		}
	}
	[<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(1)]
	[<7c6e2ac3-f28b-4ae5-8c94-6a181d0e54f4>Nullable(0)]
	public static class HacknSlash
	{
		[HarmonyPatch(typeof(Character), "Damage")]
		[<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(0)]
		private static class Character_Damage_Patch
		{
			[<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(1)]
			private static void Prefix(Character __instance, ref HitData hit)
			{
				if (__instance.m_nview.IsValid() && !((Object)(object)hit.GetAttacker() != (Object)(object)Player.m_localPlayer) && WarfareUtils.TryGetAttackWeapon(out var prefab) && Targets.TryGetValue(prefab, out var value))
				{
					__instance.m_seman.AddStatusEffect(StringExtensionMethods.GetStableHashCode("Warfare_HacknSlash"), true, value, 0f);
				}
			}
		}

		[<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(0)]
		public class SE_Warfare_HacknSlash : StatusEffect
		{
			public int stack;

			public void OnEnable()
			{
				((Object)this).name = "Warfare_HacknSlash";
				base.m_tooltip = "HacknSlash";
				base.m_name = "HacknSlash";
				base.m_ttl = 2.5f;
				base.m_icon = Icon_Secondary;
			}

			public override void SetLevel(int itemLevel, float skillLevel)
			{
				stack++;
				if (stack >= 6)
				{
					base.m_character.m_seman.AddStatusEffect(StringExtensionMethods.GetStableHashCode("Warfare_HacknSlash_ShreadResistance"), true, itemLevel, 0f);
					base.m_character.m_seman.RemoveStatusEffect((StatusEffect)(object)this, true);
				}
			}
		}

		[<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(0)]
		public class SE_Warfare_HacknSlash_Stacking : StatusEffect
		{
			public int shread;

			public void OnEnable()
			{
				//IL_003a: Unknown result type (might be due to invalid IL or missing references)
				//IL_0040: Expected O, but got Unknown
				//IL_0049: Unknown result type (might be due to invalid IL or missing references)
				//IL_004e: Unknown result type (might be due to invalid IL or missing references)
				//IL_0055: Unknown result type (might be due to invalid IL or missing references)
				//IL_005c: Unknown result type (might be due to invalid IL or missing references)
				//IL_0063: Unknown result type (might be due to invalid IL or missing references)
				//IL_006a: Unknown result type (might be due to invalid IL or missing references)
				//IL_0075: Unknown result type (might be due to invalid IL or missing references)
				//IL_007c: Unknown result type (might be due to invalid IL or missing references)
				//IL_0084: Expected O, but got Unknown
				((Object)this).name = "Warfare_HacknSlash_ShreadResistance";
				base.m_tooltip = "HacknSlash";
				base.m_name = "HacknSlash";
				base.m_ttl = 1f;
				base.m_icon = Icon;
				EffectList val = new EffectList();
				val.m_effectPrefabs = (EffectData[])(object)new EffectData[1]
				{
					new EffectData
					{
						m_attach = true,
						m_enabled = true,
						m_inheritParentRotation = true,
						m_inheritParentScale = true,
						m_prefab = VFX,
						m_randomRotation = false,
						m_scale = true
					}
				};
				base.m_startEffects = val;
			}

			public override void SetLevel(int itemLevel, float skillLevel)
			{
				shread = itemLevel;
			}

			public override void ModifyDamageMods(ref DamageModifiers modifiers)
			{
				//IL_0003: Unknown result type (might be due to invalid IL or missing references)
				modifiers.m_slash = (DamageModifier)2;
			}
		}

		[<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(0)]
		[HarmonyPatch(typeof(ObjectDB), "Awake")]
		public static class ObjectDBAwake
		{
			[<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(1)]
			public static void Postfix(ObjectDB __instance)
			{
				AddSE(__instance);
			}
		}

		[<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(0)]
		[HarmonyPatch(typeof(ObjectDB), "CopyOtherDB")]
		public static class ObjectDBCopyOtherDB
		{
			[<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(1)]
			public static void Postfix(ObjectDB __instance)
			{
				AddSE(__instance);
			}
		}

		private static readonly Dictionary<string, int> Targets = new Dictionary<string, int>();

		private static GameObject VFX;

		private static Sprite Icon;

		private static Sprite Icon_Secondary;

		public static void UseVFX(GameObject vfx)
		{
			VFX = vfx;
		}

		public static void UseIcon(Sprite icon)
		{
			Icon = icon;
		}

		public static void UseIcon_Secondary(Sprite icon)
		{
			Icon_Secondary = icon;
		}

		public static void AddToItem(string prefab, int value)
		{
			Targets.Add(prefab, value);
		}

		private static void AddSE(ObjectDB odb)
		{
			if (!((Object)(object)ObjectDB.instance == (Object)null) && ObjectDB.instance.m_items.Count != 0 && !((Object)(object)ObjectDB.instance.GetItemPrefab("Amber") == (Object)null))
			{
				if (!Object.op_Implicit((Object)(object)odb.m_StatusEffects.Find([<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(0)] (StatusEffect se) => ((Object)se).name == "Warfare_HacknSlash")))
				{
					SE_Warfare_HacknSlash item = ScriptableObject.CreateInstance<SE_Warfare_HacknSlash>();
					odb.m_StatusEffects.Add((StatusEffect)(object)item);
				}
				if (!Object.op_Implicit((Object)(object)odb.m_StatusEffects.Find([<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(0)] (StatusEffect se) => ((Object)se).name == "Warfare_HacknSlash_ShreadResistance")))
				{
					SE_Warfare_HacknSlash_Stacking item2 = ScriptableObject.CreateInstance<SE_Warfare_HacknSlash_Stacking>();
					odb.m_StatusEffects.Add((StatusEffect)(object)item2);
				}
			}
		}
	}
	[<7c6e2ac3-f28b-4ae5-8c94-6a181d0e54f4>Nullable(0)]
	[<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(1)]
	public static class Haste
	{
		[<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(0)]
		[HarmonyPatch(typeof(Character), "Damage")]
		private static class Character_Damage_Patch
		{
			[<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(1)]
			private static void Prefix(Character __instance, ref HitData hit)
			{
				if (__instance.m_nview.IsValid() && !((Object)(object)hit.GetAttacker() != (Object)(object)Player.m_localPlayer) && WarfareUtils.TryGetAttackWeapon(out var prefab) && Targets.Contains(prefab))
				{
					((Character)Player.m_localPlayer).m_seman.AddStatusEffect(StringExtensionMethods.GetStableHashCode("Warfare_Haste"), true, 0, 0f);
				}
			}
		}

		[<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(0)]
		public class SE_Warfare_Haste : StatusEffect
		{
			public float counter;

			public int percentage;

			private int stack;

			public void OnEnable()
			{
				((Object)this).name = "Warfare_Haste";
				base.m_tooltip = "Haste";
				base.m_name = "Haste";
				base.m_ttl = 6f;
			}

			public override void SetLevel(int itemLevel, float skillLevel)
			{
				stack++;
				if (stack >= 6)
				{
					base.m_character.m_seman.AddStatusEffect(StringExtensionMethods.GetStableHashCode("Warfare_Haste_Stacking"), true, itemLevel, 0f);
					base.m_character.m_seman.RemoveStatusEffect((StatusEffect)(object)this, true);
				}
			}
		}

		[<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(0)]
		public class SE_Warfare_Haste_Stacking : StatusEffect
		{
			public void OnEnable()
			{
				//IL_003a: Unknown result type (might be due to invalid IL or missing references)
				//IL_0040: Expected O, but got Unknown
				//IL_0049: Unknown result type (might be due to invalid IL or missing references)
				//IL_004e: Unknown result type (might be due to invalid IL or missing references)
				//IL_0055: Unknown result type (might be due to invalid IL or missing references)
				//IL_005c: Unknown result type (might be due to invalid IL or missing references)
				//IL_0063: Unknown result type (might be due to invalid IL or missing references)
				//IL_006a: Unknown result type (might be due to invalid IL or missing references)
				//IL_0075: Unknown result type (might be due to invalid IL or missing references)
				//IL_007c: Unknown result type (might be due to invalid IL or missing references)
				//IL_0084: Expected O, but got Unknown
				((Object)this).name = "Warfare_Haste_Stacking";
				base.m_tooltip = "Haste";
				base.m_name = "Haste";
				base.m_ttl = 6f;
				base.m_icon = Icon;
				EffectList val = new EffectList();
				val.m_effectPrefabs = (EffectData[])(object)new EffectData[1]
				{
					new EffectData
					{
						m_attach = true,
						m_enabled = true,
						m_inheritParentRotation = true,
						m_inheritParentScale = true,
						m_prefab = VFX,
						m_randomRotation = false,
						m_scale = true
					}
				};
				base.m_startEffects = val;
			}

			public void ModifySpeed(float baseSpeed, ref float speed)
			{
				speed *= 1.4f;
			}
		}

		[<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(0)]
		[HarmonyPatch(typeof(ObjectDB), "Awake")]
		public static class ObjectDBAwake
		{
			[<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(1)]
			public static void Postfix(ObjectDB __instance)
			{
				AddSE(__instance);
			}
		}

		[<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(0)]
		[HarmonyPatch(typeof(ObjectDB), "CopyOtherDB")]
		public static class ObjectDBCopyOtherDB
		{
			[<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(1)]
			public static void Postfix(ObjectDB __instance)
			{
				AddSE(__instance);
			}
		}

		private static readonly HashSet<string> Targets = new HashSet<string>();

		private static GameObject VFX;

		private static Sprite Icon;

		public static void UseVFX(GameObject vfx)
		{
			VFX = vfx;
		}

		public static void UseIcon(Sprite icon)
		{
			Icon = icon;
		}

		public static void AddToItem(string prefab)
		{
			Targets.Add(prefab);
		}

		private static void AddSE(ObjectDB odb)
		{
			if (!((Object)(object)ObjectDB.instance == (Object)null) && ObjectDB.instance.m_items.Count != 0 && !((Object)(object)ObjectDB.instance.GetItemPrefab("Amber") == (Object)null))
			{
				if (!Object.op_Implicit((Object)(object)odb.m_StatusEffects.Find([<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(0)] (StatusEffect se) => ((Object)se).name == "Warfare_Haste")))
				{
					SE_Warfare_Haste item = ScriptableObject.CreateInstance<SE_Warfare_Haste>();
					odb.m_StatusEffects.Add((StatusEffect)(object)item);
				}
				if (!Object.op_Implicit((Object)(object)odb.m_StatusEffects.Find([<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(0)] (StatusEffect se) => ((Object)se).name == "Warfare_Haste_Stacking")))
				{
					SE_Warfare_Haste_Stacking item2 = ScriptableObject.CreateInstance<SE_Warfare_Haste_Stacking>();
					odb.m_StatusEffects.Add((StatusEffect)(object)item2);
				}
			}
		}
	}
	[<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(1)]
	[<7c6e2ac3-f28b-4ae5-8c94-6a181d0e54f4>Nullable(0)]
	public static class Impale
	{
		[<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(0)]
		[HarmonyPatch(typeof(Character), "Damage")]
		private static class Character_Damage_Patch
		{
			[<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(1)]
			private static void Prefix(Character __instance, ref HitData hit)
			{
				if (__instance.m_nview.IsValid() && !((Object)(object)hit.GetAttacker() != (Object)(object)Player.m_localPlayer) && WarfareUtils.TryGetAttackWeapon(out var prefab) && Targets.TryGetValue(prefab, out var value) && ((Humanoid)Player.m_localPlayer).m_currentAttackIsSecondary)
				{
					__instance.m_seman.AddStatusEffect(StringExtensionMethods.GetStableHashCode("Warfare_Impale"), true, value, 0f);
				}
			}
		}

		[<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(0)]
		public class SE_Warfare_Impale : StatusEffect
		{
			public float counter;

			public int percentage;

			public void OnEnable()
			{
				//IL_003a: Unknown result type (might be due to invalid IL or missing references)
				//IL_0040: Expected O, but got Unknown
				//IL_0049: Unknown result type (might be due to invalid IL or missing references)
				//IL_004e: Unknown result type (might be due to invalid IL or missing references)
				//IL_0055: Unknown result type (might be due to invalid IL or missing references)
				//IL_005c: Unknown result type (might be due to invalid IL or missing references)
				//IL_0063: Unknown result type (might be due to invalid IL or missing references)
				//IL_006a: Unknown result type (might be due to invalid IL or missing references)
				//IL_0075: Unknown result type (might be due to invalid IL or missing references)
				//IL_007c: Unknown result type (might be due to invalid IL or missing references)
				//IL_0084: Expected O, but got Unknown
				((Object)this).name = "Warfare_Impale";
				base.m_tooltip = "Impale";
				base.m_name = "Impale";
				base.m_ttl = 10f;
				base.m_icon = Icon;
				EffectList val = new EffectList();
				val.m_effectPrefabs = (EffectData[])(object)new EffectData[1]
				{
					new EffectData
					{
						m_attach = true,
						m_enabled = true,
						m_inheritParentRotation = true,
						m_inheritParentScale = true,
						m_prefab = VFX,
						m_randomRotation = false,
						m_scale = true
					}
				};
				base.m_startEffects = val;
			}

			public override void SetLevel(int itemLevel, float skillLevel)
			{
				percentage = itemLevel;
			}

			public override void UpdateStatusEffect(float dt)
			{
				//IL_0051: Unknown result type (might be due to invalid IL or missing references)
				//IL_0057: Expected O, but got Unknown
				//IL_006f: Unknown result type (might be due to invalid IL or missing references)
				//IL_0074: Unknown result type (might be due to invalid IL or missing references)
				((StatusEffect)this).UpdateStatusEffect(dt);
				counter += dt;
				if (counter >= 1f)
				{
					counter = 0f;
					float pierce = base.m_character.GetMaxHealth() * (float)percentage * 0.0025f;
					HitData val = new HitData();
					val.m_damage.m_pierce = pierce;
					val.m_point = ((Component)base.m_character).transform.position;
					base.m_character.Damage(val);
				}
			}
		}

		[<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(0)]
		[HarmonyPatch(typeof(ObjectDB), "Awake")]
		public static class ObjectDBAwake
		{
			[<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(1)]
			public static void Postfix(ObjectDB __instance)
			{
				AddSE(__instance);
			}
		}

		[<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(0)]
		[HarmonyPatch(typeof(ObjectDB), "CopyOtherDB")]
		public static class ObjectDBCopyOtherDB
		{
			[<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(1)]
			public static void Postfix(ObjectDB __instance)
			{
				AddSE(__instance);
			}
		}

		private static readonly Dictionary<string, int> Targets = new Dictionary<string, int>();

		private static GameObject VFX;

		private static Sprite Icon;

		public static void UseVFX(GameObject vfx)
		{
			VFX = vfx;
		}

		public static void UseIcon(Sprite icon)
		{
			Icon = icon;
		}

		public static void AddToItem(string prefab, int value)
		{
			Targets.Add(prefab, value);
		}

		private static void AddSE(ObjectDB odb)
		{
			if (!((Object)(object)ObjectDB.instance == (Object)null) && ObjectDB.instance.m_items.Count != 0 && !((Object)(object)ObjectDB.instance.GetItemPrefab("Amber") == (Object)null) && !Object.op_Implicit((Object)(object)odb.m_StatusEffects.Find([<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(0)] (StatusEffect se) => ((Object)se).name == "Warfare_Impale")))
			{
				SE_Warfare_Impale item = ScriptableObject.CreateInstance<SE_Warfare_Impale>();
				odb.m_StatusEffects.Add((StatusEffect)(object)item);
			}
		}
	}
	[<7c6e2ac3-f28b-4ae5-8c94-6a181d0e54f4>Nullable(0)]
	[<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(1)]
	public static class Juggernaut
	{
		[HarmonyPatch(typeof(Character), "Damage")]
		[<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(0)]
		private static class Character_Damage_Patch
		{
			[<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(1)]
			private static void Prefix(Character __instance, ref HitData hit)
			{
				if (__instance.m_nview.IsValid() && !((Object)(object)hit.GetAttacker() != (Object)(object)Player.m_localPlayer) && WarfareUtils.TryGetAttackWeapon(out var prefab) && Targets.TryGetValue(prefab, out var value))
				{
					__instance.m_seman.AddStatusEffect(StringExtensionMethods.GetStableHashCode("Warfare_Juggernaut"), true, value, 0f);
				}
			}
		}

		[<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(0)]
		public class SE_Warfare_Juggernaut : StatusEffect
		{
			public int stack;

			public void OnEnable()
			{
				((Object)this).name = "Warfare_Juggernaut";
				base.m_tooltip = "Juggernaut";
				base.m_name = "Juggernaut";
				base.m_ttl = 6f;
			}

			public override void SetLevel(int itemLevel, float skillLevel)
			{
				stack++;
				if (stack >= 4)
				{
					base.m_character.m_seman.AddStatusEffect(StringExtensionMethods.GetStableHashCode("Warfare_Juggernaut_ShreadResistance"), true, itemLevel, 0f);
					base.m_ttl = 0.1f;
				}
			}
		}

		[<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(0)]
		public class SE_Warfare_Juggernaut_Stacking : StatusEffect
		{
			public int shread;

			public void OnEnable()
			{
				//IL_003a: Unknown result type (might be due to invalid IL or missing references)
				//IL_0040: Expected O, but got Unknown
				//IL_0049: Unknown result type (might be due to invalid IL or missing references)
				//IL_004e: Unknown result type (might be due to invalid IL or missing references)
				//IL_0055: Unknown result type (might be due to invalid IL or missing references)
				//IL_005c: Unknown result type (might be due to invalid IL or missing references)
				//IL_0063: Unknown result type (might be due to invalid IL or missing references)
				//IL_006a: Unknown result type (might be due to invalid IL or missing references)
				//IL_0075: Unknown result type (might be due to invalid IL or missing references)
				//IL_007c: Unknown result type (might be due to invalid IL or missing references)
				//IL_0084: Expected O, but got Unknown
				((Object)this).name = "Warfare_Juggernaut_ShreadResistance";
				base.m_tooltip = "Juggernaut";
				base.m_name = "Juggernaut";
				base.m_ttl = 6f;
				base.m_icon = Icon;
				EffectList val = new EffectList();
				val.m_effectPrefabs = (EffectData[])(object)new EffectData[1]
				{
					new EffectData
					{
						m_attach = true,
						m_enabled = true,
						m_inheritParentRotation = true,
						m_inheritParentScale = true,
						m_prefab = VFX,
						m_randomRotation = false,
						m_scale = true
					}
				};
				base.m_startEffects = val;
			}

			public override void SetLevel(int itemLevel, float skillLevel)
			{
				shread = itemLevel;
			}

			public override void ModifyDamageMods(ref DamageModifiers modifiers)
			{
				//IL_0003: Unknown result type (might be due to invalid IL or missing references)
				modifiers.m_pierce = (DamageModifier)2;
				base.m_ttl = 0.1f;
			}
		}

		[HarmonyPatch(typeof(ObjectDB), "Awake")]
		[<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(0)]
		public static class ObjectDBAwake
		{
			[<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(1)]
			public static void Postfix(ObjectDB __instance)
			{
				AddSE(__instance);
			}
		}

		[HarmonyPatch(typeof(ObjectDB), "CopyOtherDB")]
		[<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(0)]
		public static class ObjectDBCopyOtherDB
		{
			[<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(1)]
			public static void Postfix(ObjectDB __instance)
			{
				AddSE(__instance);
			}
		}

		private static readonly Dictionary<string, int> Targets = new Dictionary<string, int>();

		private static GameObject VFX;

		private static Sprite Icon;

		public static void UseVFX(GameObject vfx)
		{
			VFX = vfx;
		}

		public static void UseIcon(Sprite icon)
		{
			Icon = icon;
		}

		public static void AddToItem(string prefab, int value)
		{
			Targets.Add(prefab, value);
		}

		private static void AddSE(ObjectDB odb)
		{
			if (!((Object)(object)ObjectDB.instance == (Object)null) && ObjectDB.instance.m_items.Count != 0 && !((Object)(object)ObjectDB.instance.GetItemPrefab("Amber") == (Object)null))
			{
				if (!Object.op_Implicit((Object)(object)odb.m_StatusEffects.Find([<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(0)] (StatusEffect se) => ((Object)se).name == "Warfare_Juggernaut")))
				{
					SE_Warfare_Juggernaut item = ScriptableObject.CreateInstance<SE_Warfare_Juggernaut>();
					odb.m_StatusEffects.Add((StatusEffect)(object)item);
				}
				if (!Object.op_Implicit((Object)(object)odb.m_StatusEffects.Find([<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(0)] (StatusEffect se) => ((Object)se).name == "Warfare_Juggernaut_ShreadResistance")))
				{
					SE_Warfare_Juggernaut_Stacking item2 = ScriptableObject.CreateInstance<SE_Warfare_Juggernaut_Stacking>();
					odb.m_StatusEffects.Add((StatusEffect)(object)item2);
				}
			}
		}
	}
	[<7c6e2ac3-f28b-4ae5-8c94-6a181d0e54f4>Nullable(0)]
	[<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(1)]
	public static class Madness
	{
		[HarmonyPatch(typeof(Character), "Damage")]
		[<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(0)]
		private static class Character_Damage_Patch
		{
			[<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(1)]
			private static void Prefix(Character __instance, ref HitData hit)
			{
				if (!((Object)(object)hit.GetAttacker() != (Object)(object)Player.m_localPlayer) && WarfareUtils.TryGetAttackWeapon(out var prefab) && Targets.TryGetValue(prefab, out var value))
				{
					float durability = ((Humanoid)Player.m_localPlayer).m_currentAttack.m_weapon.m_durability;
					float maxDurability = ((Humanoid)Player.m_localPlayer).m_currentAttack.m_weapon.m_shared.m_maxDurability;
					float num = durability / maxDurability;
					if ((double)num <= 0.3)
					{
						hit.ApplyModifier(1f + (float)value / 100f);
					}
				}
			}
		}

		private static readonly Dictionary<string, int> Targets = new Dictionary<string, int>();

		private static GameObject VFX;

		public static void UseVFX(GameObject vfx)
		{
			VFX = vfx;
		}

		public static void AddToItem(string prefab, int value)
		{
			Targets.Add(prefab, value);
		}
	}
	[<7c6e2ac3-f28b-4ae5-8c94-6a181d0e54f4>Nullable(0)]
	[<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(1)]
	public static class Pierced
	{
		[<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(0)]
		[HarmonyPatch(typeof(Character), "Damage")]
		private static class Character_Damage_Patch
		{
			[<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(1)]
			private static void Prefix(Character __instance, ref HitData hit)
			{
				if (__instance.m_nview.IsValid() && !((Object)(object)hit.GetAttacker() != (Object)(object)Player.m_localPlayer) && WarfareUtils.TryGetAttackWeapon(out var prefab) && Targets.TryGetValue(prefab, out var value))
				{
					__instance.m_seman.AddStatusEffect(StringExtensionMethods.GetStableHashCode("Warfare_Pierced"), true, value, 0f);
				}
			}
		}

		[<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(0)]
		public class SE_Warfare_Pierced : StatusEffect
		{
			public int stack;

			public void OnEnable()
			{
				((Object)this).name = "Warfare_Pierced";
				base.m_tooltip = "Pierced";
				base.m_name = "Pierced";
				base.m_ttl = 10f;
				base.m_icon = Icon;
			}

			public override void SetLevel(int itemLevel, float skillLevel)
			{
				//IL_0036: Unknown result type (might be due to invalid IL or missing references)
				//IL_003c: Expected O, but got Unknown
				//IL_0054: Unknown result type (might be due to invalid IL or missing references)
				//IL_0059: Unknown result type (might be due to invalid IL or missing references)
				//IL_0089: 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)
				stack++;
				if (stack >= 4)
				{
					float pierce = base.m_character.GetMaxHealth() * (float)itemLevel * 0.0002f;
					HitData val = new HitData();
					val.m_damage.m_pierce = pierce;
					val.m_point = ((Component)base.m_character).transform.position;
					base.m_character.Damage(val);
					if (Object.op_Implicit((Object)(object)VFX))
					{
						Object.Instantiate<GameObject>(VFX, ((Component)base.m_character).transform.position, ((Component)base.m_character).transform.rotation);
					}
					base.m_character.m_seman.RemoveStatusEffect((StatusEffect)(object)this, true);
				}
			}
		}

		[HarmonyPatch(typeof(ObjectDB), "Awake")]
		[<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(0)]
		public static class ObjectDBAwake
		{
			[<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(1)]
			public static void Postfix(ObjectDB __instance)
			{
				AddSE(__instance);
			}
		}

		[<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(0)]
		[HarmonyPatch(typeof(ObjectDB), "CopyOtherDB")]
		public static class ObjectDBCopyOtherDB
		{
			[<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(1)]
			public static void Postfix(ObjectDB __instance)
			{
				AddSE(__instance);
			}
		}

		private static readonly Dictionary<string, int> Targets = new Dictionary<string, int>();

		private static GameObject VFX;

		private static Sprite Icon;

		public static void UseVFX(GameObject vfx)
		{
			VFX = vfx;
		}

		public static void UseIcon(Sprite icon)
		{
			Icon = icon;
		}

		public static void AddToItem(string prefab, int value)
		{
			Targets.Add(prefab, value);
		}

		private static void AddSE(ObjectDB odb)
		{
			if (!((Object)(object)ObjectDB.instance == (Object)null) && ObjectDB.instance.m_items.Count != 0 && !((Object)(object)ObjectDB.instance.GetItemPrefab("Amber") == (Object)null) && !Object.op_Implicit((Object)(object)odb.m_StatusEffects.Find([<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(0)] (StatusEffect se) => ((Object)se).name == "Warfare_Pierced")))
			{
				SE_Warfare_Pierced item = ScriptableObject.CreateInstance<SE_Warfare_Pierced>();
				odb.m_StatusEffects.Add((StatusEffect)(object)item);
			}
		}
	}
	[<7c6e2ac3-f28b-4ae5-8c94-6a181d0e54f4>Nullable(0)]
	[<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(1)]
	public static class Pinned
	{
		[HarmonyPatch(typeof(Character), "Damage")]
		[<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(0)]
		private static class Character_Damage_Patch
		{
			[<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(1)]
			private static void Prefix(Character __instance, ref HitData hit)
			{
				if (__instance.m_nview.IsValid() && !((Object)(object)hit.GetAttacker() != (Object)(object)Player.m_localPlayer) && WarfareUtils.TryGetAttackWeapon(out var prefab) && Targets.TryGetValue(prefab, out var value))
				{
					__instance.m_seman.AddStatusEffect(StringExtensionMethods.GetStableHashCode("Warfare_Pinned"), true, value, 0f);
				}
			}
		}

		[<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(0)]
		public class SE_Warfare_Pinned : StatusEffect
		{
			public void OnEnable()
			{
				//IL_003a: Unknown result type (might be due to invalid IL or missing references)
				//IL_0040: Expected O, but got Unknown
				//IL_0049: Unknown result type (might be due to invalid IL or missing references)
				//IL_004e: Unknown result type (might be due to invalid IL or missing references)
				//IL_0055: Unknown result type (might be due to invalid IL or missing references)
				//IL_005c: Unknown result type (might be due to invalid IL or missing references)
				//IL_0063: Unknown result type (might be due to invalid IL or missing references)
				//IL_006a: Unknown result type (might be due to invalid IL or missing references)
				//IL_0075: Unknown result type (might be due to invalid IL or missing references)
				//IL_007c: Unknown result type (might be due to invalid IL or missing references)
				//IL_0084: Expected O, but got Unknown
				((Object)this).name = "Warfare_Pinned";
				base.m_tooltip = "Pinned";
				base.m_name = "Pinned";
				base.m_ttl = 4f;
				base.m_icon = Icon;
				EffectList val = new EffectList();
				val.m_effectPrefabs = (EffectData[])(object)new EffectData[1]
				{
					new EffectData
					{
						m_attach = true,
						m_enabled = true,
						m_inheritParentRotation = true,
						m_inheritParentScale = true,
						m_prefab = VFX,
						m_randomRotation = false,
						m_scale = true
					}
				};
				base.m_startEffects = val;
			}

			public override void SetLevel(int itemLevel, float skillLevel)
			{
				base.m_ttl = itemLevel;
			}

			public void ModifySpeed(float baseSpeed, ref float speed)
			{
				speed = 0f;
			}
		}

		[<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(0)]
		[HarmonyPatch(typeof(ObjectDB), "Awake")]
		public static class ObjectDBAwake
		{
			[<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(1)]
			public static void Postfix(ObjectDB __instance)
			{
				AddSE(__instance);
			}
		}

		[<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(0)]
		[HarmonyPatch(typeof(ObjectDB), "CopyOtherDB")]
		public static class ObjectDBCopyOtherDB
		{
			[<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(1)]
			public static void Postfix(ObjectDB __instance)
			{
				AddSE(__instance);
			}
		}

		private static readonly Dictionary<string, int> Targets = new Dictionary<string, int>();

		private static GameObject VFX;

		private static Sprite Icon;

		public static void UseVFX(GameObject vfx)
		{
			VFX = vfx;
		}

		public static void UseIcon(Sprite icon)
		{
			Icon = icon;
		}

		public static void AddToItem(string prefab, int value)
		{
			Targets.Add(prefab, value);
		}

		private static void AddSE(ObjectDB odb)
		{
			if (!((Object)(object)ObjectDB.instance == (Object)null) && ObjectDB.instance.m_items.Count != 0 && !((Object)(object)ObjectDB.instance.GetItemPrefab("Amber") == (Object)null) && !Object.op_Implicit((Object)(object)odb.m_StatusEffects.Find([<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(0)] (StatusEffect se) => ((Object)se).name == "Warfare_Pinned")))
			{
				SE_Warfare_Pinned item = ScriptableObject.CreateInstance<SE_Warfare_Pinned>();
				odb.m_StatusEffects.Add((StatusEffect)(object)item);
			}
		}
	}
	[<7c6e2ac3-f28b-4ae5-8c94-6a181d0e54f4>Nullable(0)]
	[<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(1)]
	public static class PinnedFrozen
	{
		[HarmonyPatch(typeof(Character), "Damage")]
		[<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(0)]
		private static class Character_Damage_Patch
		{
			[<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(1)]
			private static void Prefix(Character __instance, ref HitData hit)
			{
				if (__instance.m_nview.IsValid() && !((Object)(object)hit.GetAttacker() != (Object)(object)Player.m_localPlayer) && WarfareUtils.TryGetAttackWeapon(out var prefab) && Targets.TryGetValue(prefab, out var value))
				{
					__instance.m_seman.AddStatusEffect(StringExtensionMethods.GetStableHashCode("Warfare_PinnedFrozen"), true, value, 0f);
				}
			}
		}

		[<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(0)]
		public class SE_Warfare_PinnedFrozen : StatusEffect
		{
			public void OnEnable()
			{
				//IL_003a: Unknown result type (might be due to invalid IL or missing references)
				//IL_0040: Expected O, but got Unknown
				//IL_0049: Unknown result type (might be due to invalid IL or missing references)
				//IL_004e: Unknown result type (might be due to invalid IL or missing references)
				//IL_0055: Unknown result type (might be due to invalid IL or missing references)
				//IL_005c: Unknown result type (might be due to invalid IL or missing references)
				//IL_0063: Unknown result type (might be due to invalid IL or missing references)
				//IL_006a: Unknown result type (might be due to invalid IL or missing references)
				//IL_0075: Unknown result type (might be due to invalid IL or missing references)
				//IL_007c: Unknown result type (might be due to invalid IL or missing references)
				//IL_0084: Expected O, but got Unknown
				((Object)this).name = "Warfare_PinnedFrozen";
				base.m_tooltip = "PinnedFrozen";
				base.m_name = "PinnedFrozen";
				base.m_ttl = 4f;
				base.m_icon = Icon;
				EffectList val = new EffectList();
				val.m_effectPrefabs = (EffectData[])(object)new EffectData[1]
				{
					new EffectData
					{
						m_attach = true,
						m_enabled = true,
						m_inheritParentRotation = true,
						m_inheritParentScale = true,
						m_prefab = VFX,
						m_randomRotation = false,
						m_scale = true
					}
				};
				base.m_startEffects = val;
			}

			public override void SetLevel(int itemLevel, float skillLevel)
			{
				base.m_ttl = itemLevel;
			}

			public void ModifySpeed(float baseSpeed, ref float speed)
			{
				speed = -0.35f;
			}
		}

		[HarmonyPatch(typeof(ObjectDB), "Awake")]
		[<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(0)]
		public static class ObjectDBAwake
		{
			[<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(1)]
			public static void Postfix(ObjectDB __instance)
			{
				AddSE(__instance);
			}
		}

		[<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(0)]
		[HarmonyPatch(typeof(ObjectDB), "CopyOtherDB")]
		public static class ObjectDBCopyOtherDB
		{
			[<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(1)]
			public static void Postfix(ObjectDB __instance)
			{
				AddSE(__instance);
			}
		}

		private static readonly Dictionary<string, int> Targets = new Dictionary<string, int>();

		private static GameObject VFX;

		private static Sprite Icon;

		public static void UseVFX(GameObject vfx)
		{
			VFX = vfx;
		}

		public static void UseIcon(Sprite icon)
		{
			Icon = icon;
		}

		public static void AddToItem(string prefab, int value)
		{
			Targets.Add(prefab, value);
		}

		private static void AddSE(ObjectDB odb)
		{
			if (!((Object)(object)ObjectDB.instance == (Object)null) && ObjectDB.instance.m_items.Count != 0 && !((Object)(object)ObjectDB.instance.GetItemPrefab("Amber") == (Object)null) && !Object.op_Implicit((Object)(object)odb.m_StatusEffects.Find([<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(0)] (StatusEffect se) => ((Object)se).name == "Warfare_PinnedFrozen")))
			{
				SE_Warfare_PinnedFrozen item = ScriptableObject.CreateInstance<SE_Warfare_PinnedFrozen>();
				odb.m_StatusEffects.Add((StatusEffect)(object)item);
			}
		}
	}
	public static class Protector
	{
		[HarmonyPatch(typeof(Character), "Damage")]
		private static class Character_Damage_Patch
		{
			[<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(1)]
			private static void Prefix(Character __instance, ref HitData hit)
			{
				if (__instance.m_nview.IsValid() && !((Object)(object)hit.GetAttacker() != (Object)(object)Player.m_localPlayer) && WarfareUtils.TryGetAttackWeapon(out var prefab) && Targets.Contains(prefab))
				{
					((Character)Player.m_localPlayer).m_seman.AddStatusEffect(StringExtensionMethods.GetStableHashCode("Warfare_Protector"), true, 0, 0f);
				}
			}
		}

		public class SE_Warfare_Protector : StatusEffect
		{
			public int stack;

			public void OnEnable()
			{
				((Object)this).name = "Warfare_Protector";
				base.m_tooltip = "Protector";
				base.m_name = "Protector";
				base.m_ttl = 6f;
			}

			public override void SetLevel(int itemLevel, float skillLevel)
			{
				stack++;
				if (stack >= 4)
				{
					base.m_character.m_seman.AddStatusEffect(StringExtensionMethods.GetStableHashCode("Warfare_Protector_Stacking"), true, itemLevel, 0f);
					base.m_character.m_seman.RemoveStatusEffect((StatusEffect)(object)this, true);
				}
			}
		}

		public class SE_Warfare_Protector_Stacking : StatusEffect
		{
			public void OnEnable()
			{
				//IL_003a: Unknown result type (might be due to invalid IL or missing references)
				//IL_0040: Expected O, but got Unknown
				//IL_0049: Unknown result type (might be due to invalid IL or missing references)
				//IL_004e: Unknown result type (might be due to invalid IL or missing references)
				//IL_0055: Unknown result type (might be due to invalid IL or missing references)
				//IL_005c: Unknown result type (might be due to invalid IL or missing references)
				//IL_0063: Unknown result type (might be due to invalid IL or missing references)
				//IL_006a: Unknown result type (might be due to invalid IL or missing references)
				//IL_0075: Unknown result type (might be due to invalid IL or missing references)
				//IL_007c: Unknown result type (might be due to invalid IL or missing references)
				//IL_0084: Expected O, but got Unknown
				((Object)this).name = "Warfare_Protector_Stacking";
				base.m_tooltip = "Protector";
				base.m_name = "Protector";
				base.m_ttl = 6f;
				base.m_icon = Icon;
				EffectList val = new EffectList();
				val.m_effectPrefabs = (EffectData[])(object)new EffectData[1]
				{
					new EffectData
					{
						m_attach = true,
						m_enabled = true,
						m_inheritParentRotation = true,
						m_inheritParentScale = true,
						m_prefab = VFX,
						m_randomRotation = false,
						m_scale = true
					}
				};
				base.m_startEffects = val;
			}
		}

		[HarmonyPatch(typeof(ItemData), "GetBlockPower", new Type[] { typeof(float) })]
		private static class ItemDrop__Patch
		{
			[<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(1)]
			private static void Postfix(ItemDrop __instance, ref float __result)
			{
				SE_Warfare_Protector_Stacking sE_Warfare_Protector_Stacking = ((Character)Player.m_localPlayer).GetSEMan().GetStatusEffect(StringExtensionMethods.GetStableHashCode("Warfare_Protector_Stacking")) as SE_Warfare_Protector_Stacking;
				if (!((Object)(object)sE_Warfare_Protector_Stacking == (Object)null))
				{
					__result += 1E+09f;
					((Character)Player.m_localPlayer).GetSEMan().RemoveStatusEffect((StatusEffect)(object)sE_Warfare_Protector_Stacking, true);
				}
			}
		}

		[HarmonyPatch(typeof(ObjectDB), "Awake")]
		public static class ObjectDBAwake
		{
			[<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(1)]
			public static void Postfix(ObjectDB __instance)
			{
				AddSE(__instance);
			}
		}

		[HarmonyPatch(typeof(ObjectDB), "CopyOtherDB")]
		public static class ObjectDBCopyOtherDB
		{
			[<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(1)]
			public static void Postfix(ObjectDB __instance)
			{
				AddSE(__instance);
			}
		}

		[<7c6e2ac3-f28b-4ae5-8c94-6a181d0e54f4>Nullable(1)]
		private static readonly HashSet<string> Targets = new HashSet<string>();

		[<7c6e2ac3-f28b-4ae5-8c94-6a181d0e54f4>Nullable(1)]
		private static GameObject VFX;

		[<7c6e2ac3-f28b-4ae5-8c94-6a181d0e54f4>Nullable(1)]
		private static Sprite Icon;

		[<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(1)]
		public static void UseVFX(GameObject vfx)
		{
			VFX = vfx;
		}

		[<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(1)]
		public static void UseIcon(Sprite icon)
		{
			Icon = icon;
		}

		[<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(1)]
		public static void AddToItem(string prefab)
		{
			Targets.Add(prefab);
		}

		[<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(1)]
		private static void AddSE(ObjectDB odb)
		{
			if (!((Object)(object)ObjectDB.instance == (Object)null) && ObjectDB.instance.m_items.Count != 0 && !((Object)(object)ObjectDB.instance.GetItemPrefab("Amber") == (Object)null))
			{
				if (!Object.op_Implicit((Object)(object)odb.m_StatusEffects.Find((StatusEffect se) => ((Object)se).name == "Warfare_Protector")))
				{
					SE_Warfare_Protector item = ScriptableObject.CreateInstance<SE_Warfare_Protector>();
					odb.m_StatusEffects.Add((StatusEffect)(object)item);
				}
				if (!Object.op_Implicit((Object)(object)odb.m_StatusEffects.Find((StatusEffect se) => ((Object)se).name == "Warfare_Protector_Stacking")))
				{
					SE_Warfare_Protector_Stacking item2 = ScriptableObject.CreateInstance<SE_Warfare_Protector_Stacking>();
					odb.m_StatusEffects.Add((StatusEffect)(object)item2);
				}
			}
		}
	}
	[<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(1)]
	[<7c6e2ac3-f28b-4ae5-8c94-6a181d0e54f4>Nullable(0)]
	public static class Shatter
	{
		[<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(0)]
		[HarmonyPatch(typeof(Character), "Damage")]
		private static class Character_Damage_Patch
		{
			[<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(1)]
			private static void Prefix(Character __instance, ref HitData hit)
			{
				if (__instance.m_nview.IsValid() && !((Object)(object)hit.GetAttacker() != (Object)(object)Player.m_localPlayer) && WarfareUtils.TryGetAttackWeapon(out var prefab) && Targets.TryGetValue(prefab, out var value))
				{
					__instance.m_nview.InvokeRPC("SE_Warfare_Shatter", new object[1] { value });
				}
			}
		}

		[<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(0)]
		public class SE_Warfare_Shatter : StatusEffect
		{
			public int Multiplier;

			public void OnEnable()
			{
				//IL_003a: Unknown result type (might be due to invalid IL or missing references)
				//IL_0040: Expected O, but got Unknown
				//IL_0049: Unknown result type (might be due to invalid IL or missing references)
				//IL_004e: Unknown result type (might be due to invalid IL or missing references)
				//IL_0055: Unknown result type (might be due to invalid IL or missing references)
				//IL_005c: Unknown result type (might be due to invalid IL or missing references)
				//IL_0063: Unknown result type (might be due to invalid IL or missing references)
				//IL_006a: Unknown result type (might be due to invalid IL or missing references)
				//IL_0075: Unknown result type (might be due to invalid IL or missing references)
				//IL_007c: Unknown result type (might be due to invalid IL or missing references)
				//IL_0084: Expected O, but got Unknown
				((Object)this).name = "Warfare_Shatter";
				base.m_tooltip = "Shatter";
				base.m_name = "Shatter";
				base.m_ttl = 6f;
				base.m_icon = Icon;
				EffectList val = new EffectList();
				val.m_effectPrefabs = (EffectData[])(object)new EffectData[1]
				{
					new EffectData
					{
						m_attach = true,
						m_enabled = true,
						m_inheritParentRotation = true,
						m_inheritParentScale = true,
						m_prefab = VFX,
						m_randomRotation = false,
						m_scale = true
					}
				};
				base.m_startEffects = val;
			}

			[<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(1)]
			public override void OnDamaged(HitData hit, Character attacker)
			{
				float num = 1f + (float)Multiplier * 0.05f;
				hit.ApplyModifier(num);
			}
		}

		[HarmonyPatch(typeof(Character), "Awake")]
		[<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(0)]
		private static class Character_Awake_Patch
		{
			[<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(1)]
			private static void Postfix(Character __instance)
			{
				__instance.m_nview.Register<int>("SE_Warfare_Shatter", (Action<long, int>)delegate(long _, int value)
				{
					StatusEffect statusEffect = __instance.m_seman.GetStatusEffect(StringExtensionMethods.GetStableHashCode("SE_Warfare_Shatter"));
					if (Object.op_Implicit((Object)(object)statusEffect))
					{
						((SE_Warfare_Shatter)(object)statusEffect).Multiplier += value;
						statusEffect.ResetTime();
					}
					else
					{
						statusEffect = __instance.m_seman.AddStatusEffect(StringExtensionMethods.GetStableHashCode("SE_Warfare_Shatter"), false, 0, 0f);
						if (Object.op_Implicit((Object)(object)statusEffect))
						{
							((SE_Warfare_Shatter)(object)statusEffect).Multiplier = value;
						}
					}
				});
			}
		}

		[<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(0)]
		[HarmonyPatch(typeof(ObjectDB), "Awake")]
		public static class ObjectDBAwake
		{
			[<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(1)]
			public static void Postfix(ObjectDB __instance)
			{
				AddSE(__instance);
			}
		}

		[<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(0)]
		[HarmonyPatch(typeof(ObjectDB), "CopyOtherDB")]
		public static class ObjectDBCopyOtherDB
		{
			[<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(1)]
			public static void Postfix(ObjectDB __instance)
			{
				AddSE(__instance);
			}
		}

		private static readonly Dictionary<string, int> Targets = new Dictionary<string, int>();

		private static GameObject VFX;

		private static Sprite Icon;

		public static void UseVFX(GameObject vfx)
		{
			VFX = vfx;
		}

		public static void UseIcon(Sprite icon)
		{
			Icon = icon;
		}

		public static void AddToItem(string prefab, int value)
		{
			Targets.Add(prefab, value);
		}

		private static void AddSE(ObjectDB odb)
		{
			if (!((Object)(object)ObjectDB.instance == (Object)null) && ObjectDB.instance.m_items.Count != 0 && !((Object)(object)ObjectDB.instance.GetItemPrefab("Amber") == (Object)null) && !Object.op_Implicit((Object)(object)odb.m_StatusEffects.Find([<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(0)] (StatusEffect se) => ((Object)se).name == "Warfare_Shatter")))
			{
				SE_Warfare_Shatter item = ScriptableObject.CreateInstance<SE_Warfare_Shatter>();
				odb.m_StatusEffects.Add((StatusEffect)(object)item);
			}
		}
	}
	[<7c6e2ac3-f28b-4ae5-8c94-6a181d0e54f4>Nullable(0)]
	[<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(1)]
	public static class Smasher
	{
		[HarmonyPatch(typeof(Character), "Damage")]
		[<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(0)]
		private static class Character_Damage_Patch
		{
			[<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(1)]
			private static void Prefix(Character __instance, ref HitData hit)
			{
				if (__instance.m_nview.IsValid() && !((Object)(object)hit.GetAttacker() != (Object)(object)Player.m_localPlayer) && WarfareUtils.TryGetAttackWeapon(out var prefab) && Targets.TryGetValue(prefab, out var value))
				{
					__instance.m_seman.AddStatusEffect(StringExtensionMethods.GetStableHashCode("Warfare_Smasher"), true, value, 0f);
				}
			}
		}

		[<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(0)]
		public class SE_Warfare_Smasher : StatusEffect
		{
			public int stack;

			public void OnEnable()
			{
				((Object)this).name = "Warfare_Smasher";
				base.m_tooltip = "Smasher";
				base.m_name = "Smasher";
				base.m_ttl = 6f;
			}

			public override void SetLevel(int itemLevel, float skillLevel)
			{
				stack++;
				if (stack >= 6)
				{
					base.m_character.m_seman.AddStatusEffect(StringExtensionMethods.GetStableHashCode("Warfare_Smasher_ShreadResistance"), true, itemLevel, 0f);
					base.m_ttl = 0.1f;
				}
			}
		}

		[<18de1c69-e9b3-4808-9711-1794d5a5f868>NullableContext(0)]
		public class SE_Warfare_Smasher_Stacking : StatusEffect
		{
			public int shread;

			public void OnEnable()
			{
				//IL_003a: Unknown r