Decompiled source of SeekingTheVoid v1.3.2

SeekingTheVoid.dll

Decompiled a week ago
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.Versioning;
using System.Security;
using System.Security.Permissions;
using BepInEx;
using BepInEx.Logging;
using EntityStates;
using HG;
using HG.Reflection;
using Microsoft.CodeAnalysis;
using On.EntityStates;
using On.RoR2;
using R2API;
using R2API.Networking;
using R2API.Networking.Interfaces;
using RoR2;
using RoR2.CharacterAI;
using RoR2.ExpansionManagement;
using RoR2.Items;
using RoR2.Navigation;
using RoR2.Orbs;
using RoR2.Projectile;
using SeekingTheVoid;
using ShaderSwapper;
using UnityEngine;
using UnityEngine.AddressableAssets;
using UnityEngine.Events;
using UnityEngine.Networking;

[assembly: OptIn]
[assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)]
[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: AssemblyCompany("SeekingTheVoid")]
[assembly: AssemblyProduct("SeekingTheVoid")]
[assembly: AssemblyTitle("SeekingTheVoid")]
[assembly: AssemblyInformationalVersion("1.0.0+2bbe5ff61db64b2a87c60fbbc23aba9cddbe4c15")]
[assembly: AssemblyConfiguration("Debug")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("1.0.0.0")]
[module: UnverifiableCode]
[module: RefSafetyRules(11)]
namespace Microsoft.CodeAnalysis
{
	[CompilerGenerated]
	[Microsoft.CodeAnalysis.Embedded]
	internal sealed class EmbeddedAttribute : Attribute
	{
	}
}
namespace System.Runtime.CompilerServices
{
	[AttributeUsage(AttributeTargets.Module, AllowMultiple = false, Inherited = false)]
	[Microsoft.CodeAnalysis.Embedded]
	[CompilerGenerated]
	internal sealed class RefSafetyRulesAttribute : Attribute
	{
		public readonly int Version;

		public RefSafetyRulesAttribute(int P_0)
		{
			Version = P_0;
		}
	}
}
public class SpawnShitMessage : INetMessage, ISerializableObject
{
	private Vector3 position;

	private NetworkInstanceId owner;

	public SpawnShitMessage()
	{
	}

	public SpawnShitMessage(Vector3 position, NetworkInstanceId owner)
	{
		//IL_0009: Unknown result type (might be due to invalid IL or missing references)
		//IL_000a: Unknown result type (might be due to invalid IL or missing references)
		//IL_0010: Unknown result type (might be due to invalid IL or missing references)
		//IL_0011: Unknown result type (might be due to invalid IL or missing references)
		this.position = position;
		this.owner = owner;
	}

	public void Deserialize(NetworkReader reader)
	{
		//IL_0003: Unknown result type (might be due to invalid IL or missing references)
		//IL_0008: Unknown result type (might be due to invalid IL or missing references)
		//IL_000f: Unknown result type (might be due to invalid IL or missing references)
		//IL_0014: Unknown result type (might be due to invalid IL or missing references)
		position = reader.ReadVector3();
		owner = reader.ReadNetworkId();
	}

	public void OnReceived()
	{
		//IL_0010: Unknown result type (might be due to invalid IL or missing references)
		//IL_002e: Unknown result type (might be due to invalid IL or missing references)
		//IL_0033: Unknown result type (might be due to invalid IL or missing references)
		//IL_0038: Unknown result type (might be due to invalid IL or missing references)
		//IL_0043: Unknown result type (might be due to invalid IL or missing references)
		//IL_0048: Unknown result type (might be due to invalid IL or missing references)
		//IL_0054: Unknown result type (might be due to invalid IL or missing references)
		//IL_0085: Unknown result type (might be due to invalid IL or missing references)
		//IL_008b: Expected O, but got Unknown
		//IL_008d: Unknown result type (might be due to invalid IL or missing references)
		if (NetworkServer.active)
		{
			position += new Vector3(0f, Random.Range(3.5f, 5f), 0f);
			GameObject val = Object.Instantiate<GameObject>(CoastalCoral.CCPickupOrb, position, Quaternion.identity);
			GameObject val2 = Util.FindNetworkObject(owner);
			if (Object.op_Implicit((Object)(object)val2))
			{
				val.GetComponent<CoastalCoralPickup>().ownerBody = val2.GetComponent<CharacterBody>();
			}
			NetworkServer.Spawn(val);
			EffectData val3 = new EffectData();
			val3.origin = position;
			val3.SetNetworkedObjectReference(val);
			EffectManager.SpawnEffect(CoastalCoral.CCSpawnVFX, val3, true);
		}
	}

	public void Serialize(NetworkWriter writer)
	{
		//IL_0003: Unknown result type (might be due to invalid IL or missing references)
		//IL_0010: Unknown result type (might be due to invalid IL or missing references)
		writer.Write(position);
		writer.Write(owner);
	}
}
public class ClientBuffMessage : INetMessage, ISerializableObject
{
	private NetworkInstanceId netId;

	private BuffIndex buffIdx;

	private int number;

	public ClientBuffMessage()
	{
	}

	public ClientBuffMessage(NetworkInstanceId netId, BuffIndex buffIdx, int number)
	{
		//IL_0009: Unknown result type (might be due to invalid IL or missing references)
		//IL_000a: Unknown result type (might be due to invalid IL or missing references)
		//IL_0010: Unknown result type (might be due to invalid IL or missing references)
		//IL_0011: Unknown result type (might be due to invalid IL or missing references)
		this.netId = netId;
		this.buffIdx = buffIdx;
		this.number = number;
	}

	public void Deserialize(NetworkReader reader)
	{
		//IL_0003: Unknown result type (might be due to invalid IL or missing references)
		//IL_0008: Unknown result type (might be due to invalid IL or missing references)
		//IL_000f: Unknown result type (might be due to invalid IL or missing references)
		//IL_0014: Unknown result type (might be due to invalid IL or missing references)
		netId = reader.ReadNetworkId();
		buffIdx = NetworkExtensions.ReadBuffIndex(reader);
		number = reader.ReadInt32();
	}

	public void OnReceived()
	{
		//IL_000c: Unknown result type (might be due to invalid IL or missing references)
		//IL_002e: Unknown result type (might be due to invalid IL or missing references)
		if (NetworkServer.active)
		{
			GameObject val = Util.FindNetworkObject(netId);
			if (Object.op_Implicit((Object)(object)val))
			{
				val.GetComponent<CharacterBody>().SetBuffCount(buffIdx, number);
			}
		}
	}

	public void Serialize(NetworkWriter writer)
	{
		//IL_0003: Unknown result type (might be due to invalid IL or missing references)
		//IL_0010: Unknown result type (might be due to invalid IL or missing references)
		writer.Write(netId);
		NetworkExtensions.WriteBuffIndex(writer, buffIdx);
		writer.Write(number);
	}
}
public class CoastalCoralPickup : NetworkBehaviour
{
	private ElusiveAntlersDestroyCondition destroyCondition;

	public DestroyOnTimer destroyOnTimerComponent;

	public float despawnMinAge;

	public CharacterBody ownerBody;

	public float maxDistanceFromOwner;

	private void Start()
	{
		destroyOnTimerComponent = ((Component)this).GetComponent<DestroyOnTimer>();
		AkSoundEngine.PostEvent("Play_AntlerShield_Spawn", ((Component)this).gameObject);
		despawnMinAge = 30f;
		maxDistanceFromOwner = 80f;
	}

	private void FixedUpdate()
	{
		//IL_004d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0063: Unknown result type (might be due to invalid IL or missing references)
		//IL_0068: Unknown result type (might be due to invalid IL or missing references)
		//IL_0074: Unknown result type (might be due to invalid IL or missing references)
		//IL_0079: Unknown result type (might be due to invalid IL or missing references)
		//IL_007a: Unknown result type (might be due to invalid IL or missing references)
		//IL_0093: Unknown result type (might be due to invalid IL or missing references)
		if (!((Object)(object)ownerBody == (Object)null) && NetworkServer.active && (Object)(object)destroyOnTimerComponent != (Object)null && destroyOnTimerComponent.GetAge() >= despawnMinAge)
		{
			_ = ((Component)this).gameObject.transform.position;
			Vector3 position = ((Component)ownerBody).gameObject.transform.position;
			if (Vector3.Magnitude(((Component)this).gameObject.transform.position - position) > maxDistanceFromOwner)
			{
				destroyCondition = (ElusiveAntlersDestroyCondition)2;
				Object.Destroy((Object)(object)((Component)this).gameObject);
			}
		}
	}

	private void OnTriggerStay(Collider other)
	{
		//IL_0007: Unknown result type (might be due to invalid IL or missing references)
		//IL_000d: Invalid comparison between Unknown and I4
		//IL_00d7: Unknown result type (might be due to invalid IL or missing references)
		//IL_00ed: Unknown result type (might be due to invalid IL or missing references)
		//IL_00f4: Expected O, but got Unknown
		//IL_010a: Unknown result type (might be due to invalid IL or missing references)
		//IL_012d: Unknown result type (might be due to invalid IL or missing references)
		if ((int)TeamComponent.GetObjectTeam(((Component)other).gameObject) != 1)
		{
			return;
		}
		CharacterBody component = ((Component)other).GetComponent<CharacterBody>();
		if (!Object.op_Implicit((Object)(object)component))
		{
			return;
		}
		HealthComponent healthComponent = component.healthComponent;
		if (Object.op_Implicit((Object)(object)healthComponent) && healthComponent.alive)
		{
			if (((NetworkBehaviour)component).localPlayerAuthority)
			{
				AkSoundEngine.PostEvent("Play_AntlerShield_Pickup", ((Component)this).gameObject);
			}
			if (NetworkServer.active)
			{
				int num = ((!Object.op_Implicit((Object)(object)component.inventory)) ? 1 : component.inventory.GetItemCount(CoastalCoral.CoastalCoralDef));
				int buffCount = component.GetBuffCount(CoastalCoral.coralJump);
				int num2 = Math.Max(CoastalCoral.baseJumps, CoastalCoral.baseJumps + CoastalCoral.stackJumps * (num - 1));
				component.SetBuffCount(CoastalCoral.coralJump.buffIndex, Mathf.Min(buffCount + 1, num2));
				EffectData val = new EffectData();
				val.SetNetworkedObjectReference(((Component)component).gameObject);
				val.origin = ((Component)this).transform.position;
				component.OnPickup((PickupClass)1);
				EffectManager.SpawnEffect(CoastalCoral.CCPickupVFX, val, true);
				destroyCondition = (ElusiveAntlersDestroyCondition)1;
				Object.Destroy((Object)(object)((Component)this).gameObject);
			}
		}
	}

	private void UNetVersion()
	{
	}

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

	public override void OnDeserialize(NetworkReader reader, bool initialState)
	{
	}
}
public class CoastalCoralDisplayUpdater : MonoBehaviour
{
	public MeshRenderer meshRenderer;

	private Material buffActiveDisplayMaterial;

	private CharacterBody body;

	private BuffIndex coastalCoralBuffIndex;

	private void Start()
	{
		//IL_0041: Unknown result type (might be due to invalid IL or missing references)
		//IL_0046: Unknown result type (might be due to invalid IL or missing references)
		CharacterModel componentInParent = ((Component)this).GetComponentInParent<CharacterModel>();
		meshRenderer = ((Component)this).GetComponentInChildren<MeshRenderer>();
		if (Object.op_Implicit((Object)(object)componentInParent))
		{
			body = componentInParent.body;
			if (Object.op_Implicit((Object)(object)body))
			{
				coastalCoralBuffIndex = CoastalCoral.coralJump.buffIndex;
			}
			buffActiveDisplayMaterial = ((Renderer)meshRenderer).materials[1];
			buffActiveDisplayMaterial.SetFloat("_AlphaBoost", 0f);
		}
	}

	private void OnDestroy()
	{
	}

	private void FixedUpdate()
	{
		if (Object.op_Implicit((Object)(object)buffActiveDisplayMaterial) && Object.op_Implicit((Object)(object)meshRenderer))
		{
			float num = 0f;
			if ((float)body.GetBuffCount(CoastalCoral.coralJump) > 0f && (float)body.GetBuffCount(CoastalCoral.coralJump) < (float)CoastalCoral.costToJump)
			{
				num = 0.2f;
			}
			else if ((float)body.GetBuffCount(CoastalCoral.coralJump) >= (float)CoastalCoral.costToJump)
			{
				num = 0.6f;
			}
			buffActiveDisplayMaterial.GetFloat("_AlphaBoost");
			buffActiveDisplayMaterial.SetFloat("_AlphaBoost", num);
		}
	}
}
namespace SeekingTheVoid
{
	public static class CoastalCoral
	{
		public class CoastalCoralBehavior : BaseItemBodyBehavior
		{
			private float internalTimer = 12f;

			[ItemDefAssociation(useOnServer = true, useOnClient = true)]
			private static ItemDef GetItemDef()
			{
				return CoastalCoralDef;
			}

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

			private void OnEnable()
			{
				if (!Util.HasEffectiveAuthority(((Component)this).gameObject))
				{
					((Behaviour)this).enabled = false;
				}
			}

			private void OnDisable()
			{
			}

			public void FixedUpdate()
			{
				if (NetworkClient.active && Object.op_Implicit((Object)(object)((BaseItemBodyBehavior)this).body) && base.stack > 0)
				{
					internalTimer -= Time.fixedDeltaTime;
					if (internalTimer <= 0f)
					{
						OrbPositionFinder();
						internalTimer = 12f * Mathf.Pow(0.9f, (float)GetStackCount());
					}
				}
			}

			public void OrbPositionFinder()
			{
				//IL_0027: Unknown result type (might be due to invalid IL or missing references)
				//IL_002c: Unknown result type (might be due to invalid IL or missing references)
				//IL_003a: Unknown result type (might be due to invalid IL or missing references)
				//IL_0054: Unknown result type (might be due to invalid IL or missing references)
				//IL_006e: Unknown result type (might be due to invalid IL or missing references)
				//IL_0073: Unknown result type (might be due to invalid IL or missing references)
				//IL_00a8: Unknown result type (might be due to invalid IL or missing references)
				//IL_00a9: Unknown result type (might be due to invalid IL or missing references)
				//IL_00aa: Unknown result type (might be due to invalid IL or missing references)
				//IL_00af: Unknown result type (might be due to invalid IL or missing references)
				//IL_00b1: Unknown result type (might be due to invalid IL or missing references)
				//IL_00b3: Unknown result type (might be due to invalid IL or missing references)
				//IL_00be: Unknown result type (might be due to invalid IL or missing references)
				//IL_00c3: Unknown result type (might be due to invalid IL or missing references)
				//IL_00d0: Unknown result type (might be due to invalid IL or missing references)
				//IL_00d5: Unknown result type (might be due to invalid IL or missing references)
				//IL_00e9: Unknown result type (might be due to invalid IL or missing references)
				//IL_00ee: Unknown result type (might be due to invalid IL or missing references)
				//IL_00f3: Unknown result type (might be due to invalid IL or missing references)
				//IL_0122: Unknown result type (might be due to invalid IL or missing references)
				//IL_012a: Unknown result type (might be due to invalid IL or missing references)
				//IL_012f: Unknown result type (might be due to invalid IL or missing references)
				//IL_0138: Unknown result type (might be due to invalid IL or missing references)
				//IL_014c: Unknown result type (might be due to invalid IL or missing references)
				//IL_0163: Unknown result type (might be due to invalid IL or missing references)
				//IL_0165: Unknown result type (might be due to invalid IL or missing references)
				//IL_0172: Unknown result type (might be due to invalid IL or missing references)
				//IL_0177: Unknown result type (might be due to invalid IL or missing references)
				//IL_0183: Unknown result type (might be due to invalid IL or missing references)
				//IL_0192: Unknown result type (might be due to invalid IL or missing references)
				//IL_019d: Unknown result type (might be due to invalid IL or missing references)
				//IL_01ad: Unknown result type (might be due to invalid IL or missing references)
				//IL_01bd: Unknown result type (might be due to invalid IL or missing references)
				//IL_01d8: Unknown result type (might be due to invalid IL or missing references)
				//IL_01e5: Unknown result type (might be due to invalid IL or missing references)
				if (!NetworkClient.active)
				{
					return;
				}
				Quaternion val = Quaternion.Euler(0f, Random.Range(-45f, 45f), 0f);
				Vector3 val2 = default(Vector3);
				((Vector3)(ref val2))..ctor(((BaseItemBodyBehavior)this).body.inputBank.aimDirection.x, 0f, ((BaseItemBodyBehavior)this).body.inputBank.aimDirection.z);
				Vector3 velocity = ((BaseItemBodyBehavior)this).body.characterMotor.velocity;
				bool flag = false;
				float magnitude = ((Vector3)(ref velocity)).magnitude;
				float num = Mathf.InverseLerp(0f, 50f, magnitude);
				float num2 = Mathf.Lerp(1f, 2f, num);
				Vector3 val3 = val * val2;
				val3 = Vector3.RotateTowards(val3, velocity, MathF.PI / 12f, 0f);
				Vector3 val4 = ((Component)this).gameObject.transform.position + val3 * (Random.Range(15f, 30f) * num2);
				NodeGraph groundNodes = SceneInfo.instance.groundNodes;
				if ((Object)(object)groundNodes == (Object)null)
				{
					Debug.LogError((object)"SeekingTheVoid:: nodeIndex returned null! Report this to acanthi pls :3");
					return;
				}
				NodeIndex val5 = groundNodes.FindClosestNode(val4, (HullClassification)0, float.PositiveInfinity);
				bool flag2 = false;
				if (groundNodes.GetNodePosition(val5, ref val4))
				{
					float num3 = HullDef.Find((HullClassification)0).radius * 0.7f;
					bool flag3 = false;
					if (!HGPhysics.DoesOverlapSphere(val4 + Vector3.up * (num3 + 0.25f), num3, LayerMask.op_Implicit(((LayerIndex)(ref LayerIndex.world)).mask) | LayerMask.op_Implicit(((LayerIndex)(ref LayerIndex.defaultLayer)).mask) | LayerMask.op_Implicit(CommonMasks.fakeActorLayers) | LayerMask.op_Implicit(((LayerIndex)(ref LayerIndex.entityPrecise)).mask) | LayerMask.op_Implicit(((LayerIndex)(ref LayerIndex.debris)).mask), (QueryTriggerInteraction)0))
					{
						NetMessageExtensions.Send((INetMessage)(object)new SpawnShitMessage(val4, ((Component)((BaseItemBodyBehavior)this).body).GetComponent<NetworkIdentity>().netId), (NetworkDestination)2);
					}
				}
			}
		}

		[CompilerGenerated]
		private static class <>O
		{
			public static hook_ProcessJump_bool <0>__CoralJumpHook;

			public static StatHookEventHandler <1>__RecalculateStatsAPI_GetStatCoefficients;
		}

		public static ItemDef CoastalCoralDef;

		public static GameObject CCSpawnVFX;

		public static GameObject CCPickupVFX;

		public static GameObject CCPickupOrb;

		public static int baseJumps;

		public static int stackJumps;

		public static int costToJump;

		public static BuffDef coralJump;

		public static void Init()
		{
			//IL_0079: Unknown result type (might be due to invalid IL or missing references)
			//IL_007e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0095: Unknown result type (might be due to invalid IL or missing references)
			//IL_009a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0105: Unknown result type (might be due to invalid IL or missing references)
			//IL_0145: Unknown result type (might be due to invalid IL or missing references)
			//IL_0179: Unknown result type (might be due to invalid IL or missing references)
			//IL_0183: Expected O, but got Unknown
			//IL_0189: Unknown result type (might be due to invalid IL or missing references)
			//IL_018e: Unknown result type (might be due to invalid IL or missing references)
			//IL_01b0: Unknown result type (might be due to invalid IL or missing references)
			//IL_01b5: Unknown result type (might be due to invalid IL or missing references)
			//IL_01ce: Unknown result type (might be due to invalid IL or missing references)
			//IL_01e8: Unknown result type (might be due to invalid IL or missing references)
			//IL_01ea: Unknown result type (might be due to invalid IL or missing references)
			//IL_020b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0210: Unknown result type (might be due to invalid IL or missing references)
			//IL_0216: Expected O, but got Unknown
			//IL_022c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0231: Unknown result type (might be due to invalid IL or missing references)
			//IL_0237: Expected O, but got Unknown
			CreateLang();
			CreateEffect();
			CreateBuff();
			CreatePickup();
			CoastalCoralDef = ScriptableObject.CreateInstance<ItemDef>();
			((Object)CoastalCoralDef).name = "SEEKINTHEVOID_COASTALCORAL_NAME";
			CoastalCoralDef.nameToken = "SEEKINTHEVOID_COASTALCORAL_NAME";
			CoastalCoralDef.pickupToken = "SEEKINTHEVOID_COASTALCORAL_PICKUP";
			CoastalCoralDef.descriptionToken = "SEEKINTHEVOID_COASTALCORAL_DESC";
			CoastalCoralDef.loreToken = "SEEKINTHEVOID_COASTALCORAL_LORE";
			CoastalCoralDef._itemTierDef = Addressables.LoadAssetAsync<ItemTierDef>((object)"RoR2/DLC1/Common/VoidTier1Def.asset").WaitForCompletion();
			CoastalCoralDef.requiredExpansion = Addressables.LoadAssetAsync<ExpansionDef>((object)"RoR2/DLC2/Common/DLC2.asset").WaitForCompletion();
			CoastalCoralDef.pickupIconSprite = SeekingTheVoid.SeekingTheVoidAssets.LoadAsset<Sprite>("CoastalCoral.png");
			CoastalCoralDef.pickupModelPrefab = SeekingTheVoid.SeekingTheVoidAssets.LoadAsset<GameObject>("CoastalCoral.prefab");
			CoastalCoralDef.tags = (ItemTag[])(object)new ItemTag[1] { (ItemTag)31 };
			ModelPanelParameters val = CoastalCoralDef.pickupModelPrefab.AddComponent<ModelPanelParameters>();
			val.focusPointTransform = new GameObject("FocusPoint").transform;
			val.focusPointTransform.SetParent(CoastalCoralDef.pickupModelPrefab.transform);
			CoastalCoralDef.pickupModelPrefab.AddComponent<CoastalCoralDisplayUpdater>();
			val.cameraPositionTransform = new GameObject("CameraPosition").transform;
			val.cameraPositionTransform.SetParent(CoastalCoralDef.pickupModelPrefab.transform);
			ItemAPI.Add(new CustomItem(CoastalCoralDef, ItemDisplayTransformations()));
			ItemDef itemDef = Addressables.LoadAssetAsync<ItemDef>((object)"RoR2/DLC2/Items/SpeedBoostPickup/SpeedBoostPickup.asset").WaitForCompletion();
			ItemRelationshipProvider val2 = ScriptableObject.CreateInstance<ItemRelationshipProvider>();
			((Object)val2).name = "CoastalCoralContagiousItemProvider";
			val2.relationshipType = Addressables.LoadAssetAsync<ItemRelationshipType>((object)"RoR2/DLC1/Common/ContagiousItem.asset").WaitForCompletion();
			val2.relationships = (Pair[])(object)new Pair[1]
			{
				new Pair
				{
					itemDef1 = itemDef,
					itemDef2 = CoastalCoralDef
				}
			};
			ContentAddition.AddItemRelationshipProvider(val2);
			object obj = <>O.<0>__CoralJumpHook;
			if (obj == null)
			{
				hook_ProcessJump_bool val3 = CoralJumpHook;
				<>O.<0>__CoralJumpHook = val3;
				obj = (object)val3;
			}
			GenericCharacterMain.ProcessJump_bool += (hook_ProcessJump_bool)obj;
			object obj2 = <>O.<1>__RecalculateStatsAPI_GetStatCoefficients;
			if (obj2 == null)
			{
				StatHookEventHandler val4 = RecalculateStatsAPI_GetStatCoefficients;
				<>O.<1>__RecalculateStatsAPI_GetStatCoefficients = val4;
				obj2 = (object)val4;
			}
			RecalculateStatsAPI.GetStatCoefficients += (StatHookEventHandler)obj2;
		}

		public static void CreatePickup()
		{
			//IL_0006: Unknown result type (might be due to invalid IL or missing references)
			//IL_000b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0147: Unknown result type (might be due to invalid IL or missing references)
			//IL_018c: Unknown result type (might be due to invalid IL or missing references)
			GameObject val = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/DLC2/Items/SpeedBoostPickup/ElusiveAntlersPickup.prefab").WaitForCompletion();
			CCPickupOrb = PrefabAPI.InstantiateClone(val, "CoastalCoralOrb", false);
			Object.Destroy((Object)(object)CCPickupOrb.GetComponent<ElusiveAntlersPickup>());
			CCPickupOrb.AddComponent<CoastalCoralPickup>();
			((Renderer)((Component)CCPickupOrb.transform.GetChild(0).GetChild(0)).gameObject.GetComponent<ParticleSystemRenderer>()).material.SetTexture("_RemapTex", SeekingTheVoid.SeekingTheVoidAssets.LoadAsset<Texture>("texOutRamp.png"));
			((Renderer)((Component)CCPickupOrb.transform.GetChild(0).GetChild(0).GetChild(0)).gameObject.GetComponent<ParticleSystemRenderer>()).material.SetTexture("_RemapTex", SeekingTheVoid.SeekingTheVoidAssets.LoadAsset<Texture>("texInRamp.png"));
			((Renderer)((Component)CCPickupOrb.transform.GetChild(0).GetChild(0).GetChild(1)).gameObject.GetComponent<ParticleSystemRenderer>()).material.SetTexture("_RemapTex", SeekingTheVoid.SeekingTheVoidAssets.LoadAsset<Texture>("texInRamp.png"));
			((Renderer)((Component)CCPickupOrb.transform.GetChild(0).GetChild(0)).gameObject.GetComponent<ParticleSystemRenderer>()).material.SetColor("_TintColor", new Color(1f, 1f, 1f, 1f));
			((Component)CCPickupOrb.transform.GetChild(0).GetChild(0).GetChild(2)).gameObject.GetComponent<Light>().color = new Color(0.433f, 0.334f, 1f, 1f);
			PrefabAPI.RegisterNetworkPrefab(CCPickupOrb);
		}

		private static void CoralJumpHook(orig_ProcessJump_bool orig, GenericCharacterMain self, bool ignoreRequirements)
		{
			//IL_008a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0094: Unknown result type (might be due to invalid IL or missing references)
			//IL_0072: Unknown result type (might be due to invalid IL or missing references)
			int buffCount = ((EntityState)self).characterBody.GetBuffCount(coralJump);
			if (self.jumpInputReceived && buffCount >= costToJump && Object.op_Implicit((Object)(object)((EntityState)self).characterMotor) && ((EntityState)self).characterMotor.jumpCount >= ((EntityState)self).characterBody.maxJumpCount)
			{
				int num = buffCount - costToJump;
				if (!NetworkServer.active)
				{
					((EntityState)self).characterBody.SetBuffCount(coralJump.buffIndex, num);
				}
				NetMessageExtensions.Send((INetMessage)(object)new ClientBuffMessage(((Component)((EntityState)self).characterBody).GetComponent<NetworkIdentity>().netId, coralJump.buffIndex, num), (NetworkDestination)2);
				ignoreRequirements = true;
			}
			orig.Invoke(self, ignoreRequirements);
		}

		private static void RecalculateStatsAPI_GetStatCoefficients(CharacterBody sender, StatHookEventArgs args)
		{
			int buffCount = sender.GetBuffCount(coralJump);
			args.moveSpeedMultAdd += 0.07f * (float)buffCount;
		}

		public static void CreateBuff()
		{
			//IL_004f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0054: Unknown result type (might be due to invalid IL or missing references)
			coralJump = ScriptableObject.CreateInstance<BuffDef>();
			((Object)coralJump).name = "Co?astal Cor?al J?ump R?ea??dy";
			coralJump.iconSprite = SeekingTheVoid.SeekingTheVoidAssets.LoadAsset<Sprite>("CoralBuff.png");
			coralJump.canStack = true;
			coralJump.isCooldown = false;
			coralJump.buffColor = Color.white;
			coralJump.isHidden = false;
			coralJump.isDebuff = false;
			ContentAddition.AddBuffDef(coralJump);
		}

		public static void CreateEffect()
		{
			//IL_0006: Unknown result type (might be due to invalid IL or missing references)
			//IL_000b: Unknown result type (might be due to invalid IL or missing references)
			//IL_003f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0044: Unknown result type (might be due to invalid IL or missing references)
			//IL_005c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0061: Unknown result type (might be due to invalid IL or missing references)
			//IL_008a: Unknown result type (might be due to invalid IL or missing references)
			//IL_008f: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c5: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ca: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e2: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e7: Unknown result type (might be due to invalid IL or missing references)
			GameObject val = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/DLC2/Items/SpeedBoostPickup/ElusiveAntlersBuffGrantedVFX.prefab").WaitForCompletion();
			CCPickupVFX = PrefabAPI.InstantiateClone(val, "CoastalCoralBuffGrantedVFX", false);
			ParticleSystem[] componentsInChildren = CCPickupVFX.GetComponentsInChildren<ParticleSystem>();
			foreach (ParticleSystem val2 in componentsInChildren)
			{
				MainModule main = val2.main;
				((MainModule)(ref main)).startColor = MinMaxGradient.op_Implicit(new Color(0.8f, 0.2f, 0.8f, 0.2f));
			}
			ContentAddition.AddEffect(CCPickupVFX);
			GameObject val3 = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/DLC2/Items/SpeedBoostPickup/ElusiveAntlersPickupSpawnVFX.prefab").WaitForCompletion();
			CCSpawnVFX = PrefabAPI.InstantiateClone(val3, "CoastalCoralBuffGrantedVFX", false);
			ParticleSystem[] componentsInChildren2 = CCSpawnVFX.GetComponentsInChildren<ParticleSystem>();
			foreach (ParticleSystem val4 in componentsInChildren2)
			{
				MainModule main2 = val4.main;
				((MainModule)(ref main2)).startColor = MinMaxGradient.op_Implicit(new Color(0.8f, 0.2f, 0.8f, 0.2f));
			}
			((Renderer)((Component)CCSpawnVFX.transform.GetChild(0)).gameObject.GetComponent<ParticleSystemRenderer>()).material.SetTexture("_RemapTex", SeekingTheVoid.SeekingTheVoidAssets.LoadAsset<Texture>("texInRamp.png"));
			ContentAddition.AddEffect(CCSpawnVFX);
		}

		public static void CreateLang()
		{
			LanguageAPI.Add("SEEKINTHEVOID_COASTALCORAL_NAME", "Coastal Coral");
			LanguageAPI.Add("SEEKINTHEVOID_COASTALCORAL_LORE", "//--AUTO-TRANSCRIPTION FROM UES [REDACTED], FIELD SURVEY TEAM--//\r\n\r\nSpecimen ID: A-53-0001\r\n\r\nNotes:\r\n\r\nWhite and pink in color.\r\nExceedingly hard, crystalline structure. \r\nResembles terrestrial Coral formations.\r\nSeemingly possesses anti-gravitational properties. Weighed negative on the scale, yet behaves as if it had a normal mass.\r\nTastes like raspberry. Or grape. Maybe cotton candy? Impossible to bite through.\r\n\r\n---------------------------------\r\n\r\nHe BIT IT? Get this idiot off of the field survey team, NOW! \r\n\r\nWe will test these specimens in sensible ways, not by TRYING TO EAT THEM.\r\n\r\n//--TRANSCRIPTION COMPLETE--//");
			LanguageAPI.Add("SEEKINTHEVOID_COASTALCORAL_PICKUP", "Spawns orbs that grant energy charges. Each charge held gives you extra movement speed. Spend " + costToJump + " charge" + ((costToJump > 1) ? "s" : "") + " to jump mid-air. <style=cIsVoid>Corrupts all Elusive Antlers</style>.");
			LanguageAPI.Add("SEEKINTHEVOID_COASTALCORAL_DESC", "Spawns orbs of energy nearby every <style=cIsUtility>12s</style> <style=cStack>(-10% per stack)</style> that give you up to <style=cIsUtility>" + baseJumps + "</style> <style=cStack>(+" + stackJumps + " per stack)</style> energy charge" + ((stackJumps > 1) ? "s" : "") + ". Each charge held gives you <style=cIsUtility>+7%</style> movement speed, and <style=cIsUtility>" + costToJump + "</style> charge" + ((costToJump > 1) ? "s" : "") + " can be spent to jump mid-air. <style=cIsVoid>Corrupts all Elusive Antlers</style>.");
		}

		public static ItemDisplayRuleDict ItemDisplayTransformations()
		{
			//IL_0002: Unknown result type (might be due to invalid IL or missing references)
			//IL_0008: Expected O, but got Unknown
			//IL_0018: Unknown result type (might be due to invalid IL or missing references)
			//IL_0021: Unknown result type (might be due to invalid IL or missing references)
			//IL_0059: Unknown result type (might be due to invalid IL or missing references)
			//IL_005e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0074: Unknown result type (might be due to invalid IL or missing references)
			//IL_0079: Unknown result type (might be due to invalid IL or missing references)
			//IL_008f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0094: Unknown result type (might be due to invalid IL or missing references)
			//IL_0099: Unknown result type (might be due to invalid IL or missing references)
			//IL_009a: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b5: Unknown result type (might be due to invalid IL or missing references)
			//IL_00be: Unknown result type (might be due to invalid IL or missing references)
			//IL_00f6: Unknown result type (might be due to invalid IL or missing references)
			//IL_00fb: Unknown result type (might be due to invalid IL or missing references)
			//IL_0111: Unknown result type (might be due to invalid IL or missing references)
			//IL_0116: Unknown result type (might be due to invalid IL or missing references)
			//IL_012c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0131: Unknown result type (might be due to invalid IL or missing references)
			//IL_0136: Unknown result type (might be due to invalid IL or missing references)
			//IL_0137: Unknown result type (might be due to invalid IL or missing references)
			//IL_0152: Unknown result type (might be due to invalid IL or missing references)
			//IL_015b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0193: Unknown result type (might be due to invalid IL or missing references)
			//IL_0198: Unknown result type (might be due to invalid IL or missing references)
			//IL_01ae: Unknown result type (might be due to invalid IL or missing references)
			//IL_01b3: Unknown result type (might be due to invalid IL or missing references)
			//IL_01c9: Unknown result type (might be due to invalid IL or missing references)
			//IL_01ce: Unknown result type (might be due to invalid IL or missing references)
			//IL_01d3: Unknown result type (might be due to invalid IL or missing references)
			//IL_01d4: Unknown result type (might be due to invalid IL or missing references)
			//IL_01ef: Unknown result type (might be due to invalid IL or missing references)
			//IL_01f8: Unknown result type (might be due to invalid IL or missing references)
			//IL_0230: Unknown result type (might be due to invalid IL or missing references)
			//IL_0235: Unknown result type (might be due to invalid IL or missing references)
			//IL_024b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0250: Unknown result type (might be due to invalid IL or missing references)
			//IL_0266: Unknown result type (might be due to invalid IL or missing references)
			//IL_026b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0270: Unknown result type (might be due to invalid IL or missing references)
			//IL_0271: Unknown result type (might be due to invalid IL or missing references)
			//IL_028c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0295: Unknown result type (might be due to invalid IL or missing references)
			//IL_02cd: Unknown result type (might be due to invalid IL or missing references)
			//IL_02d2: Unknown result type (might be due to invalid IL or missing references)
			//IL_02e8: Unknown result type (might be due to invalid IL or missing references)
			//IL_02ed: Unknown result type (might be due to invalid IL or missing references)
			//IL_0303: Unknown result type (might be due to invalid IL or missing references)
			//IL_0308: Unknown result type (might be due to invalid IL or missing references)
			//IL_030d: Unknown result type (might be due to invalid IL or missing references)
			//IL_030e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0329: Unknown result type (might be due to invalid IL or missing references)
			//IL_0332: Unknown result type (might be due to invalid IL or missing references)
			//IL_036a: Unknown result type (might be due to invalid IL or missing references)
			//IL_036f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0385: Unknown result type (might be due to invalid IL or missing references)
			//IL_038a: Unknown result type (might be due to invalid IL or missing references)
			//IL_03a0: Unknown result type (might be due to invalid IL or missing references)
			//IL_03a5: Unknown result type (might be due to invalid IL or missing references)
			//IL_03aa: Unknown result type (might be due to invalid IL or missing references)
			//IL_03ab: Unknown result type (might be due to invalid IL or missing references)
			//IL_03c6: Unknown result type (might be due to invalid IL or missing references)
			//IL_03cf: Unknown result type (might be due to invalid IL or missing references)
			//IL_0407: Unknown result type (might be due to invalid IL or missing references)
			//IL_040c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0422: Unknown result type (might be due to invalid IL or missing references)
			//IL_0427: Unknown result type (might be due to invalid IL or missing references)
			//IL_043d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0442: Unknown result type (might be due to invalid IL or missing references)
			//IL_0447: Unknown result type (might be due to invalid IL or missing references)
			//IL_0448: Unknown result type (might be due to invalid IL or missing references)
			//IL_0463: Unknown result type (might be due to invalid IL or missing references)
			//IL_046c: Unknown result type (might be due to invalid IL or missing references)
			//IL_04a4: Unknown result type (might be due to invalid IL or missing references)
			//IL_04a9: Unknown result type (might be due to invalid IL or missing references)
			//IL_04bf: Unknown result type (might be due to invalid IL or missing references)
			//IL_04c4: Unknown result type (might be due to invalid IL or missing references)
			//IL_04da: Unknown result type (might be due to invalid IL or missing references)
			//IL_04df: Unknown result type (might be due to invalid IL or missing references)
			//IL_04e4: Unknown result type (might be due to invalid IL or missing references)
			//IL_04e5: Unknown result type (might be due to invalid IL or missing references)
			//IL_0500: Unknown result type (might be due to invalid IL or missing references)
			//IL_0509: Unknown result type (might be due to invalid IL or missing references)
			//IL_0541: Unknown result type (might be due to invalid IL or missing references)
			//IL_0546: Unknown result type (might be due to invalid IL or missing references)
			//IL_055c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0561: Unknown result type (might be due to invalid IL or missing references)
			//IL_0577: Unknown result type (might be due to invalid IL or missing references)
			//IL_057c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0581: Unknown result type (might be due to invalid IL or missing references)
			//IL_0582: Unknown result type (might be due to invalid IL or missing references)
			//IL_059d: Unknown result type (might be due to invalid IL or missing references)
			//IL_05a6: Unknown result type (might be due to invalid IL or missing references)
			//IL_05de: Unknown result type (might be due to invalid IL or missing references)
			//IL_05e3: Unknown result type (might be due to invalid IL or missing references)
			//IL_05f9: Unknown result type (might be due to invalid IL or missing references)
			//IL_05fe: Unknown result type (might be due to invalid IL or missing references)
			//IL_0614: Unknown result type (might be due to invalid IL or missing references)
			//IL_0619: Unknown result type (might be due to invalid IL or missing references)
			//IL_061e: Unknown result type (might be due to invalid IL or missing references)
			//IL_061f: Unknown result type (might be due to invalid IL or missing references)
			//IL_063a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0643: Unknown result type (might be due to invalid IL or missing references)
			//IL_067b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0680: Unknown result type (might be due to invalid IL or missing references)
			//IL_0696: Unknown result type (might be due to invalid IL or missing references)
			//IL_069b: Unknown result type (might be due to invalid IL or missing references)
			//IL_06b1: Unknown result type (might be due to invalid IL or missing references)
			//IL_06b6: Unknown result type (might be due to invalid IL or missing references)
			//IL_06bb: Unknown result type (might be due to invalid IL or missing references)
			//IL_06bc: Unknown result type (might be due to invalid IL or missing references)
			//IL_06d7: Unknown result type (might be due to invalid IL or missing references)
			//IL_06e0: Unknown result type (might be due to invalid IL or missing references)
			//IL_0718: Unknown result type (might be due to invalid IL or missing references)
			//IL_071d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0733: Unknown result type (might be due to invalid IL or missing references)
			//IL_0738: Unknown result type (might be due to invalid IL or missing references)
			//IL_074e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0753: Unknown result type (might be due to invalid IL or missing references)
			//IL_0758: Unknown result type (might be due to invalid IL or missing references)
			//IL_0759: Unknown result type (might be due to invalid IL or missing references)
			//IL_0774: Unknown result type (might be due to invalid IL or missing references)
			//IL_077d: Unknown result type (might be due to invalid IL or missing references)
			//IL_07b5: Unknown result type (might be due to invalid IL or missing references)
			//IL_07ba: Unknown result type (might be due to invalid IL or missing references)
			//IL_07d0: Unknown result type (might be due to invalid IL or missing references)
			//IL_07d5: Unknown result type (might be due to invalid IL or missing references)
			//IL_07eb: Unknown result type (might be due to invalid IL or missing references)
			//IL_07f0: Unknown result type (might be due to invalid IL or missing references)
			//IL_07f5: Unknown result type (might be due to invalid IL or missing references)
			//IL_07f6: Unknown result type (might be due to invalid IL or missing references)
			//IL_0811: Unknown result type (might be due to invalid IL or missing references)
			//IL_081a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0852: Unknown result type (might be due to invalid IL or missing references)
			//IL_0857: Unknown result type (might be due to invalid IL or missing references)
			//IL_086d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0872: Unknown result type (might be due to invalid IL or missing references)
			//IL_0888: Unknown result type (might be due to invalid IL or missing references)
			//IL_088d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0892: Unknown result type (might be due to invalid IL or missing references)
			//IL_0893: Unknown result type (might be due to invalid IL or missing references)
			//IL_08ae: Unknown result type (might be due to invalid IL or missing references)
			//IL_08b7: Unknown result type (might be due to invalid IL or missing references)
			//IL_08ef: Unknown result type (might be due to invalid IL or missing references)
			//IL_08f4: Unknown result type (might be due to invalid IL or missing references)
			//IL_090a: Unknown result type (might be due to invalid IL or missing references)
			//IL_090f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0925: Unknown result type (might be due to invalid IL or missing references)
			//IL_092a: Unknown result type (might be due to invalid IL or missing references)
			//IL_092f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0930: Unknown result type (might be due to invalid IL or missing references)
			//IL_094b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0954: Unknown result type (might be due to invalid IL or missing references)
			//IL_098c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0991: Unknown result type (might be due to invalid IL or missing references)
			//IL_09a7: Unknown result type (might be due to invalid IL or missing references)
			//IL_09ac: Unknown result type (might be due to invalid IL or missing references)
			//IL_09c2: Unknown result type (might be due to invalid IL or missing references)
			//IL_09c7: Unknown result type (might be due to invalid IL or missing references)
			//IL_09cc: Unknown result type (might be due to invalid IL or missing references)
			//IL_09cd: Unknown result type (might be due to invalid IL or missing references)
			ItemDisplayRuleDict val = new ItemDisplayRuleDict((ItemDisplayRule[])null);
			val.Add("mdlRailGunner", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
			{
				new ItemDisplayRule
				{
					ruleType = (ItemDisplayRuleType)0,
					followerPrefab = SeekingTheVoid.SeekingTheVoidAssets.LoadAsset<GameObject>("CoastalCoral.prefab"),
					childName = "Head",
					localPos = new Vector3(0.15f, 0.15f, -0.15f),
					localAngles = new Vector3(0f, 0f, 0f),
					localScale = new Vector3(0.8f, 0.8f, 0.8f)
				}
			});
			val.Add("mdlCommandoDualies", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
			{
				new ItemDisplayRule
				{
					ruleType = (ItemDisplayRuleType)0,
					followerPrefab = SeekingTheVoid.SeekingTheVoidAssets.LoadAsset<GameObject>("CoastalCoral.prefab"),
					childName = "Head",
					localPos = new Vector3(0.15f, 0.15f, -0.15f),
					localAngles = new Vector3(0f, 0f, 0f),
					localScale = new Vector3(0.8f, 0.8f, 0.8f)
				}
			});
			val.Add("mdlHuntress", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
			{
				new ItemDisplayRule
				{
					ruleType = (ItemDisplayRuleType)0,
					followerPrefab = SeekingTheVoid.SeekingTheVoidAssets.LoadAsset<GameObject>("CoastalCoral.prefab"),
					childName = "Head",
					localPos = new Vector3(0.15f, 0.15f, -0.15f),
					localAngles = new Vector3(0f, 0f, 0f),
					localScale = new Vector3(0.8f, 0.8f, 0.8f)
				}
			});
			val.Add("mdlBandit2", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
			{
				new ItemDisplayRule
				{
					ruleType = (ItemDisplayRuleType)0,
					followerPrefab = SeekingTheVoid.SeekingTheVoidAssets.LoadAsset<GameObject>("CoastalCoral.prefab"),
					childName = "Head",
					localPos = new Vector3(0.15f, 0.15f, -0.15f),
					localAngles = new Vector3(0f, 0f, 0f),
					localScale = new Vector3(0.8f, 0.8f, 0.8f)
				}
			});
			val.Add("mdlToolbot", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
			{
				new ItemDisplayRule
				{
					ruleType = (ItemDisplayRuleType)0,
					followerPrefab = SeekingTheVoid.SeekingTheVoidAssets.LoadAsset<GameObject>("CoastalCoral.prefab"),
					childName = "Head",
					localPos = new Vector3(0.15f, 0.15f, -0.15f),
					localAngles = new Vector3(0f, 0f, 0f),
					localScale = new Vector3(0.8f, 0.8f, 0.8f)
				}
			});
			val.Add("mdlEngi", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
			{
				new ItemDisplayRule
				{
					ruleType = (ItemDisplayRuleType)0,
					followerPrefab = SeekingTheVoid.SeekingTheVoidAssets.LoadAsset<GameObject>("CoastalCoral.prefab"),
					childName = "Head",
					localPos = new Vector3(0.15f, 0.15f, -0.15f),
					localAngles = new Vector3(0f, 0f, 0f),
					localScale = new Vector3(0.8f, 0.8f, 0.8f)
				}
			});
			val.Add("mdlEngiTurret", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
			{
				new ItemDisplayRule
				{
					ruleType = (ItemDisplayRuleType)0,
					followerPrefab = SeekingTheVoid.SeekingTheVoidAssets.LoadAsset<GameObject>("CoastalCoral.prefab"),
					childName = "Head",
					localPos = new Vector3(0.15f, 0.15f, -0.15f),
					localAngles = new Vector3(0f, 0f, 0f),
					localScale = new Vector3(0.8f, 0.8f, 0.8f)
				}
			});
			val.Add("mdlMage", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
			{
				new ItemDisplayRule
				{
					ruleType = (ItemDisplayRuleType)0,
					followerPrefab = SeekingTheVoid.SeekingTheVoidAssets.LoadAsset<GameObject>("CoastalCoral.prefab"),
					childName = "Head",
					localPos = new Vector3(0.15f, 0.15f, -0.15f),
					localAngles = new Vector3(0f, 0f, 0f),
					localScale = new Vector3(0.8f, 0.8f, 0.8f)
				}
			});
			val.Add("mdlMerc", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
			{
				new ItemDisplayRule
				{
					ruleType = (ItemDisplayRuleType)0,
					followerPrefab = SeekingTheVoid.SeekingTheVoidAssets.LoadAsset<GameObject>("CoastalCoral.prefab"),
					childName = "Head",
					localPos = new Vector3(0.15f, 0.15f, -0.15f),
					localAngles = new Vector3(0f, 0f, 0f),
					localScale = new Vector3(0.8f, 0.8f, 0.8f)
				}
			});
			val.Add("mdlLoader", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
			{
				new ItemDisplayRule
				{
					ruleType = (ItemDisplayRuleType)0,
					followerPrefab = SeekingTheVoid.SeekingTheVoidAssets.LoadAsset<GameObject>("CoastalCoral.prefab"),
					childName = "Head",
					localPos = new Vector3(0.15f, 0.15f, -0.15f),
					localAngles = new Vector3(0f, 0f, 0f),
					localScale = new Vector3(0.8f, 0.8f, 0.8f)
				}
			});
			val.Add("mdlCaptain", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
			{
				new ItemDisplayRule
				{
					ruleType = (ItemDisplayRuleType)0,
					followerPrefab = SeekingTheVoid.SeekingTheVoidAssets.LoadAsset<GameObject>("CoastalCoral.prefab"),
					childName = "Head",
					localPos = new Vector3(0.15f, 0.15f, -0.15f),
					localAngles = new Vector3(0f, 0f, 0f),
					localScale = new Vector3(0.8f, 0.8f, 0.8f)
				}
			});
			val.Add("mdlVoidSurvivor", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
			{
				new ItemDisplayRule
				{
					ruleType = (ItemDisplayRuleType)0,
					followerPrefab = SeekingTheVoid.SeekingTheVoidAssets.LoadAsset<GameObject>("CoastalCoral.prefab"),
					childName = "Head",
					localPos = new Vector3(0.15f, 0.15f, -0.15f),
					localAngles = new Vector3(0f, 0f, 0f),
					localScale = new Vector3(0.8f, 0.8f, 0.8f)
				}
			});
			val.Add("mdlSeeker", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
			{
				new ItemDisplayRule
				{
					ruleType = (ItemDisplayRuleType)0,
					followerPrefab = SeekingTheVoid.SeekingTheVoidAssets.LoadAsset<GameObject>("CoastalCoral.prefab"),
					childName = "Head",
					localPos = new Vector3(0.15f, 0.15f, -0.15f),
					localAngles = new Vector3(0f, 0f, 0f),
					localScale = new Vector3(0.8f, 0.8f, 0.8f)
				}
			});
			val.Add("mdlChef", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
			{
				new ItemDisplayRule
				{
					ruleType = (ItemDisplayRuleType)0,
					followerPrefab = SeekingTheVoid.SeekingTheVoidAssets.LoadAsset<GameObject>("CoastalCoral.prefab"),
					childName = "Head",
					localPos = new Vector3(0.15f, 0.15f, -0.15f),
					localAngles = new Vector3(0f, 0f, 0f),
					localScale = new Vector3(0.8f, 0.8f, 0.8f)
				}
			});
			val.Add("mdlDroneTech", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
			{
				new ItemDisplayRule
				{
					ruleType = (ItemDisplayRuleType)0,
					followerPrefab = SeekingTheVoid.SeekingTheVoidAssets.LoadAsset<GameObject>("CoastalCoral.prefab"),
					childName = "Head",
					localPos = new Vector3(-0.19685f, 0.02641f, 0.23207f),
					localAngles = new Vector3(339.0487f, 180.3748f, 272.2161f),
					localScale = new Vector3(-0.8f, 0.8f, 0.8f)
				}
			});
			val.Add("mdlDrifter", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
			{
				new ItemDisplayRule
				{
					ruleType = (ItemDisplayRuleType)0,
					followerPrefab = SeekingTheVoid.SeekingTheVoidAssets.LoadAsset<GameObject>("CoastalCoral.prefab"),
					childName = "Head",
					localPos = new Vector3(-0.19685f, 0.02641f, 0.23207f),
					localAngles = new Vector3(339.0487f, 180.3748f, 272.2161f),
					localScale = new Vector3(-0.8f, 0.8f, 0.8f)
				}
			});
			return val;
		}
	}
	internal static class Log
	{
		private static ManualLogSource _logSource;

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

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

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

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

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

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

		internal static void Warning(object data)
		{
			_logSource.LogWarning(data);
		}
	}
	[BepInDependency(/*Could not decode attribute arguments.*/)]
	[BepInDependency(/*Could not decode attribute arguments.*/)]
	[BepInDependency(/*Could not decode attribute arguments.*/)]
	[BepInDependency(/*Could not decode attribute arguments.*/)]
	[BepInDependency(/*Could not decode attribute arguments.*/)]
	[BepInDependency(/*Could not decode attribute arguments.*/)]
	[BepInPlugin("acanthi.SeekingTheVoid", "SeekingTheVoid", "1.0.0")]
	[BepInDependency(/*Could not decode attribute arguments.*/)]
	public class SeekingTheVoid : BaseUnityPlugin
	{
		public const string PluginGUID = "acanthi.SeekingTheVoid";

		public const string PluginAuthor = "acanthi";

		public const string PluginName = "SeekingTheVoid";

		public const string PluginVersion = "1.0.0";

		public static AssetBundle SeekingTheVoidAssets;

		public static bool isCoralEnabled;

		public static bool isPairyEnabled;

		public static bool isToxicEnabled;

		public void Awake()
		{
			Log.Init(((BaseUnityPlugin)this).Logger);
			using (Stream stream = Assembly.GetExecutingAssembly().GetManifestResourceStream("SeekingTheVoid.seekingthevoid_assets"))
			{
				SeekingTheVoidAssets = AssetBundle.LoadFromStream(stream);
			}
			((MonoBehaviour)this).StartCoroutine(ShaderSwapper.UpgradeStubbedShadersAsync(SeekingTheVoidAssets));
			CreateConfig();
			NetworkingAPI.RegisterMessageType<ClientBuffMessage>();
			NetworkingAPI.RegisterMessageType<SpawnShitMessage>();
			if (isCoralEnabled)
			{
				CoastalCoral.Init();
			}
			if (isPairyEnabled)
			{
				StrawPairy.Init();
			}
			if (isToxicEnabled)
			{
				ToxicodendronBrine.Init();
			}
		}

		private void CreateConfig()
		{
			isCoralEnabled = ((BaseUnityPlugin)this).Config.Bind<bool>("Coastal Coral", "Enabled", true, "Is this item enabled?").Value;
			CoastalCoral.baseJumps = ((BaseUnityPlugin)this).Config.Bind<int>("Coastal Coral", "Base Jumps", 2, "Base jump charges granted.").Value;
			CoastalCoral.stackJumps = ((BaseUnityPlugin)this).Config.Bind<int>("Coastal Coral", "Jumps Per Stack", 2, "Jump charges granted per stack.").Value;
			CoastalCoral.costToJump = ((BaseUnityPlugin)this).Config.Bind<int>("Coastal Coral", "Charges Spent To Jump", 2, "How many charges you need to spend to jump.").Value;
			isToxicEnabled = ((BaseUnityPlugin)this).Config.Bind<bool>("Toxicodendron Brine", "Enabled", true, "Is this item enabled?").Value;
			ToxicodendronBrine.itemMode = ((BaseUnityPlugin)this).Config.Bind<int>("Toxicodendron Brine", "Item Mode", 0, "0 = Main Version, 1 = Alternate version (Read Webpage!)").Value;
			isPairyEnabled = ((BaseUnityPlugin)this).Config.Bind<bool>("Straw-Pair-y", "Enabled", false, "Is this item enabled? (Disabled by default, and isnt a part of the theme of this mod. An extra item for those gup lovers out there.)").Value;
		}
	}
	public static class StrawPairy
	{
		public class GupChildDecayBehavior : BaseItemBodyBehavior
		{
			[ItemDefAssociation(useOnServer = true, useOnClient = false)]
			private static ItemDef GetItemDef()
			{
				return GeepGipDecayDef;
			}

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

			public void FixedUpdate()
			{
				//IL_0032: Unknown result type (might be due to invalid IL or missing references)
				//IL_0037: Unknown result type (might be due to invalid IL or missing references)
				//IL_0044: Unknown result type (might be due to invalid IL or missing references)
				//IL_0049: Unknown result type (might be due to invalid IL or missing references)
				if (base.stack > 0 && Object.op_Implicit((Object)(object)((BaseItemBodyBehavior)this).body) && (((BaseItemBodyBehavior)this).body.bodyIndex == geepBodyIndex || ((BaseItemBodyBehavior)this).body.bodyIndex == gipBodyIndex))
				{
					Inventory component = ((Component)((BaseItemBodyBehavior)this).body.master).gameObject.GetComponent<Inventory>();
					if (Object.op_Implicit((Object)(object)component))
					{
						component.GiveItem(Items.HealthDecay, base.stack);
						component.RemoveItem(GeepGipDecayDef, base.stack);
					}
				}
			}
		}

		public class StrawPairyBehavior : BaseItemBodyBehavior
		{
			private static float timeBetweenGupResummons = 30f;

			private static float timeBetweenGupRetryResummons = 30f;

			private float gupResummonCooldown = 0f;

			[ItemDefAssociation(useOnServer = true, useOnClient = false)]
			private static ItemDef GetItemDef()
			{
				return StrawPairyDef;
			}

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

			private void SummonedMaster_onBodyStart(CharacterBody body)
			{
				SetTeamFilter(((Component)body).gameObject);
				body.master.onBodyStart -= SummonedMaster_onBodyStart;
			}

			private void SetTeamFilter(GameObject bodyObject)
			{
				//IL_001f: Unknown result type (might be due to invalid IL or missing references)
				TeamFilter component = bodyObject.GetComponent<TeamFilter>();
				if (Object.op_Implicit((Object)(object)component))
				{
					component.teamIndex = ((BaseItemBodyBehavior)this).body.teamComponent.teamIndex;
				}
			}

			public void FixedUpdate()
			{
				//IL_003d: Unknown result type (might be due to invalid IL or missing references)
				//IL_0057: Unknown result type (might be due to invalid IL or missing references)
				//IL_00c8: Unknown result type (might be due to invalid IL or missing references)
				//IL_00cd: Unknown result type (might be due to invalid IL or missing references)
				//IL_00cf: Unknown result type (might be due to invalid IL or missing references)
				//IL_00d4: Unknown result type (might be due to invalid IL or missing references)
				//IL_00df: Unknown result type (might be due to invalid IL or missing references)
				//IL_00ea: Unknown result type (might be due to invalid IL or missing references)
				//IL_0100: Expected O, but got Unknown
				//IL_00fb: Unknown result type (might be due to invalid IL or missing references)
				//IL_0102: Expected O, but got Unknown
				CharacterMaster bodyMaster = ((BaseItemBodyBehavior)this).body.master;
				if (!Object.op_Implicit((Object)(object)bodyMaster) || bodyMaster.IsDeployableLimited(GupDeployable))
				{
					return;
				}
				int deployableCount = bodyMaster.GetDeployableCount(GupDeployable);
				if (deployableCount >= 1)
				{
					return;
				}
				Debug.Log((object)("Deployable Count :: " + deployableCount));
				gupResummonCooldown -= Time.fixedDeltaTime;
				if (gupResummonCooldown <= 0f)
				{
					Log.Message("Attempting to Gup...");
					DirectorSpawnRequest val = new DirectorSpawnRequest(GupAllySpawnCard, new DirectorPlacementRule
					{
						placementMode = (PlacementMode)1,
						minDistance = 10f,
						maxDistance = 45f,
						spawnOnTarget = ((Component)this).transform
					}, RoR2Application.rng);
					val.summonerBodyObject = ((Component)this).gameObject;
					val.onSpawnedServer = OnGupMasterSpawned;
					DirectorCore.instance.TrySpawnObject(val);
					if (deployableCount < 1)
					{
						gupResummonCooldown = timeBetweenGupRetryResummons;
						Debug.Log((object)gupResummonCooldown);
					}
					else
					{
						gupResummonCooldown = timeBetweenGupResummons;
						Debug.Log((object)gupResummonCooldown);
					}
				}
				void OnGupMasterSpawned(SpawnResult spawnResult)
				{
					//IL_0001: Unknown result type (might be due to invalid IL or missing references)
					//IL_00f4: Unknown result type (might be due to invalid IL or missing references)
					//IL_010d: Unknown result type (might be due to invalid IL or missing references)
					//IL_0117: Expected O, but got Unknown
					//IL_0118: Unknown result type (might be due to invalid IL or missing references)
					GameObject spawnedInstance = spawnResult.spawnedInstance;
					if (Object.op_Implicit((Object)(object)spawnedInstance))
					{
						CharacterMaster component = spawnedInstance.GetComponent<CharacterMaster>();
						if (Object.op_Implicit((Object)(object)component))
						{
							GameObject bodyObject = component.GetBodyObject();
							if (Object.op_Implicit((Object)(object)bodyObject))
							{
								SetTeamFilter(bodyObject);
							}
							else
							{
								component.onBodyStart += SummonedMaster_onBodyStart;
							}
							component.inventory.GiveItem(Items.BoostDamage, 10 * GetStackCount());
							component.inventory.GiveItem(Items.BoostHp, 10);
							component.inventory.GiveItem(GeepGipDecayDef, 45);
							Deployable component2 = ((Component)component).gameObject.GetComponent<Deployable>();
							bodyMaster.AddDeployable(component2, GupDeployable);
							component2.onUndeploy.AddListener((UnityAction)delegate
							{
								Log.Message("Help Me...");
								component.TrueKill();
							});
							AIOwnership component3 = spawnResult.spawnedInstance.GetComponent<AIOwnership>();
							if (Object.op_Implicit((Object)(object)component3))
							{
								component3.ownerMaster = ((BaseItemBodyBehavior)this).body.master;
							}
						}
					}
				}
			}
		}

		[CompilerGenerated]
		private static class <>O
		{
			public static GetDeployableSameSlotLimit <0>__GetGupCount;
		}

		public static ItemDef StrawPairyDef;

		public static ItemDef GeepGipDecayDef;

		public static BodyIndex geepBodyIndex;

		public static BodyIndex gipBodyIndex;

		public static DeployableSlot GupDeployable;

		public static SpawnCard GupAllySpawnCard;

		public static void Init()
		{
			//IL_0032: Unknown result type (might be due to invalid IL or missing references)
			//IL_0037: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ad: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b2: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c9: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ce: Unknown result type (might be due to invalid IL or missing references)
			//IL_0123: Unknown result type (might be due to invalid IL or missing references)
			//IL_0153: Unknown result type (might be due to invalid IL or missing references)
			//IL_0187: Unknown result type (might be due to invalid IL or missing references)
			//IL_0191: Expected O, but got Unknown
			//IL_0210: Unknown result type (might be due to invalid IL or missing references)
			//IL_0027: Unknown result type (might be due to invalid IL or missing references)
			//IL_002c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0032: Expected O, but got Unknown
			//IL_0264: Unknown result type (might be due to invalid IL or missing references)
			//IL_026e: Expected O, but got Unknown
			CreateLang();
			SetupSpawnCard();
			StrawPairyDef = ScriptableObject.CreateInstance<ItemDef>();
			object obj = <>O.<0>__GetGupCount;
			if (obj == null)
			{
				GetDeployableSameSlotLimit val = GetGupCount;
				<>O.<0>__GetGupCount = val;
				obj = (object)val;
			}
			GupDeployable = DeployableAPI.RegisterDeployableSlot((GetDeployableSameSlotLimit)obj);
			((Object)StrawPairyDef).name = "SEEKINTHEVOID_STRAWPAIRY_NAME";
			StrawPairyDef.nameToken = "SEEKINTHEVOID_STRAWPAIRY_NAME";
			StrawPairyDef.pickupToken = "SEEKINTHEVOID_STRAWPAIRY_PICKUP";
			StrawPairyDef.descriptionToken = "SEEKINTHEVOID_STRAWPAIRY_DESC";
			StrawPairyDef.loreToken = "SEEKINTHEVOID_STRAWPAIRY_LORE";
			ItemDef strawPairyDef = StrawPairyDef;
			ItemTag[] array = new ItemTag[3];
			RuntimeHelpers.InitializeArray(array, (RuntimeFieldHandle)/*OpCode not supported: LdMemberToken*/);
			strawPairyDef.tags = (ItemTag[])(object)array;
			StrawPairyDef._itemTierDef = Addressables.LoadAssetAsync<ItemTierDef>((object)"RoR2/Base/Common/Tier2Def.asset").WaitForCompletion();
			StrawPairyDef.requiredExpansion = Addressables.LoadAssetAsync<ExpansionDef>((object)"RoR2/DLC1/Common/DLC1.asset").WaitForCompletion();
			StrawPairyDef.pickupIconSprite = SeekingTheVoid.SeekingTheVoidAssets.LoadAsset<Sprite>("StrawPairy.png");
			StrawPairyDef.pickupModelPrefab = SeekingTheVoid.SeekingTheVoidAssets.LoadAsset<GameObject>("StrawPairy.prefab");
			ModelPanelParameters val2 = StrawPairyDef.pickupModelPrefab.AddComponent<ModelPanelParameters>();
			val2.focusPointTransform = new GameObject("FocusPoint").transform;
			val2.focusPointTransform.SetParent(StrawPairyDef.pickupModelPrefab.transform);
			val2.cameraPositionTransform = new GameObject("CameraPosition").transform;
			val2.cameraPositionTransform.SetParent(StrawPairyDef.pickupModelPrefab.transform);
			ItemAPI.Add(new CustomItem(StrawPairyDef, ItemDisplayTransformations()));
			GeepGipDecayDef = ScriptableObject.CreateInstance<ItemDef>();
			((Object)GeepGipDecayDef).name = "SEEKINTHEVOID_GUPCHILDDECAY_NAME";
			GeepGipDecayDef.nameToken = "SEEKINTHEVOID_GUPCHILDDECAY_NAME";
			GeepGipDecayDef.pickupToken = "SEEKINTHEVOID_GUPCHILDDECAY_PICKUP";
			GeepGipDecayDef.descriptionToken = "SEEKINTHEVOID_GUPCHILDDECAY_DESC";
			GeepGipDecayDef.loreToken = "SEEKINTHEVOID_GUPCHILDDECAY_LORE";
			GeepGipDecayDef.hidden = true;
			GeepGipDecayDef.canRemove = false;
			GeepGipDecayDef.tier = (ItemTier)5;
			GeepGipDecayDef.deprecatedTier = (ItemTier)5;
			ItemDef geepGipDecayDef = GeepGipDecayDef;
			ItemTag[] array2 = new ItemTag[3];
			RuntimeHelpers.InitializeArray(array2, (RuntimeFieldHandle)/*OpCode not supported: LdMemberToken*/);
			geepGipDecayDef.tags = (ItemTag[])(object)array2;
			((ResourceAvailability)(ref BodyCatalog.availability)).CallWhenAvailable((Action)delegate
			{
				//IL_0006: Unknown result type (might be due to invalid IL or missing references)
				//IL_000b: Unknown result type (might be due to invalid IL or missing references)
				//IL_0015: Unknown result type (might be due to invalid IL or missing references)
				//IL_001a: Unknown result type (might be due to invalid IL or missing references)
				geepBodyIndex = BodyCatalog.FindBodyIndexCaseInsensitive("GeepBody");
				gipBodyIndex = BodyCatalog.FindBodyIndexCaseInsensitive("GipBody");
			});
			ItemAPI.Add(new CustomItem(GeepGipDecayDef, ItemDisplayTransformationsEmpty()));
		}

		private static void SetupSpawnCard()
		{
			//IL_0006: Unknown result type (might be due to invalid IL or missing references)
			//IL_000b: Unknown result type (might be due to invalid IL or missing references)
			//IL_003b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0040: Unknown result type (might be due to invalid IL or missing references)
			GameObject val = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/DLC1/Gup/GupMaster.prefab").WaitForCompletion();
			GameObject val2 = PrefabAPI.InstantiateClone(val, "modifiedGupMaster", false);
			val2.AddComponent<Deployable>();
			val2.AddComponent<AIOwnership>();
			PrefabAPI.RegisterNetworkPrefab(val2);
			SpawnCard val3 = Addressables.LoadAssetAsync<SpawnCard>((object)"RoR2/Base/BeetleGland/cscBeetleGuardAlly.asset").WaitForCompletion();
			GupAllySpawnCard = Object.Instantiate<SpawnCard>(val3);
			GupAllySpawnCard.prefab = val2;
		}

		private static int GetGupCount(CharacterMaster master, int countMultiplier)
		{
			return 1;
		}

		public static ItemDisplayRuleDict ItemDisplayTransformationsEmpty()
		{
			//IL_0002: Unknown result type (might be due to invalid IL or missing references)
			//IL_0008: Expected O, but got Unknown
			return new ItemDisplayRuleDict((ItemDisplayRule[])null);
		}

		public static ItemDisplayRuleDict ItemDisplayTransformations()
		{
			//IL_0002: Unknown result type (might be due to invalid IL or missing references)
			//IL_0008: Expected O, but got Unknown
			//IL_0018: Unknown result type (might be due to invalid IL or missing references)
			//IL_0021: Unknown result type (might be due to invalid IL or missing references)
			//IL_0059: Unknown result type (might be due to invalid IL or missing references)
			//IL_005e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0074: Unknown result type (might be due to invalid IL or missing references)
			//IL_0079: Unknown result type (might be due to invalid IL or missing references)
			//IL_008f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0094: Unknown result type (might be due to invalid IL or missing references)
			//IL_0099: Unknown result type (might be due to invalid IL or missing references)
			//IL_009a: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b5: Unknown result type (might be due to invalid IL or missing references)
			//IL_00be: Unknown result type (might be due to invalid IL or missing references)
			//IL_00f6: Unknown result type (might be due to invalid IL or missing references)
			//IL_00fb: Unknown result type (might be due to invalid IL or missing references)
			//IL_0111: Unknown result type (might be due to invalid IL or missing references)
			//IL_0116: Unknown result type (might be due to invalid IL or missing references)
			//IL_012c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0131: Unknown result type (might be due to invalid IL or missing references)
			//IL_0136: Unknown result type (might be due to invalid IL or missing references)
			//IL_0137: Unknown result type (might be due to invalid IL or missing references)
			//IL_0152: Unknown result type (might be due to invalid IL or missing references)
			//IL_015b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0193: Unknown result type (might be due to invalid IL or missing references)
			//IL_0198: Unknown result type (might be due to invalid IL or missing references)
			//IL_01ae: Unknown result type (might be due to invalid IL or missing references)
			//IL_01b3: Unknown result type (might be due to invalid IL or missing references)
			//IL_01c9: Unknown result type (might be due to invalid IL or missing references)
			//IL_01ce: Unknown result type (might be due to invalid IL or missing references)
			//IL_01d3: Unknown result type (might be due to invalid IL or missing references)
			//IL_01d4: Unknown result type (might be due to invalid IL or missing references)
			//IL_01ef: Unknown result type (might be due to invalid IL or missing references)
			//IL_01f8: Unknown result type (might be due to invalid IL or missing references)
			//IL_0230: Unknown result type (might be due to invalid IL or missing references)
			//IL_0235: Unknown result type (might be due to invalid IL or missing references)
			//IL_024b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0250: Unknown result type (might be due to invalid IL or missing references)
			//IL_0266: Unknown result type (might be due to invalid IL or missing references)
			//IL_026b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0270: Unknown result type (might be due to invalid IL or missing references)
			//IL_0271: Unknown result type (might be due to invalid IL or missing references)
			//IL_028c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0295: Unknown result type (might be due to invalid IL or missing references)
			//IL_02cd: Unknown result type (might be due to invalid IL or missing references)
			//IL_02d2: Unknown result type (might be due to invalid IL or missing references)
			//IL_02e8: Unknown result type (might be due to invalid IL or missing references)
			//IL_02ed: Unknown result type (might be due to invalid IL or missing references)
			//IL_0303: Unknown result type (might be due to invalid IL or missing references)
			//IL_0308: Unknown result type (might be due to invalid IL or missing references)
			//IL_030d: Unknown result type (might be due to invalid IL or missing references)
			//IL_030e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0329: Unknown result type (might be due to invalid IL or missing references)
			//IL_0332: Unknown result type (might be due to invalid IL or missing references)
			//IL_036a: Unknown result type (might be due to invalid IL or missing references)
			//IL_036f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0385: Unknown result type (might be due to invalid IL or missing references)
			//IL_038a: Unknown result type (might be due to invalid IL or missing references)
			//IL_03a0: Unknown result type (might be due to invalid IL or missing references)
			//IL_03a5: Unknown result type (might be due to invalid IL or missing references)
			//IL_03aa: Unknown result type (might be due to invalid IL or missing references)
			//IL_03ab: Unknown result type (might be due to invalid IL or missing references)
			//IL_03c6: Unknown result type (might be due to invalid IL or missing references)
			//IL_03cf: Unknown result type (might be due to invalid IL or missing references)
			//IL_0407: Unknown result type (might be due to invalid IL or missing references)
			//IL_040c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0422: Unknown result type (might be due to invalid IL or missing references)
			//IL_0427: Unknown result type (might be due to invalid IL or missing references)
			//IL_043d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0442: Unknown result type (might be due to invalid IL or missing references)
			//IL_0447: Unknown result type (might be due to invalid IL or missing references)
			//IL_0448: Unknown result type (might be due to invalid IL or missing references)
			//IL_0463: Unknown result type (might be due to invalid IL or missing references)
			//IL_046c: Unknown result type (might be due to invalid IL or missing references)
			//IL_04a4: Unknown result type (might be due to invalid IL or missing references)
			//IL_04a9: Unknown result type (might be due to invalid IL or missing references)
			//IL_04bf: Unknown result type (might be due to invalid IL or missing references)
			//IL_04c4: Unknown result type (might be due to invalid IL or missing references)
			//IL_04da: Unknown result type (might be due to invalid IL or missing references)
			//IL_04df: Unknown result type (might be due to invalid IL or missing references)
			//IL_04e4: Unknown result type (might be due to invalid IL or missing references)
			//IL_04e5: Unknown result type (might be due to invalid IL or missing references)
			//IL_0500: Unknown result type (might be due to invalid IL or missing references)
			//IL_0509: Unknown result type (might be due to invalid IL or missing references)
			//IL_0541: Unknown result type (might be due to invalid IL or missing references)
			//IL_0546: Unknown result type (might be due to invalid IL or missing references)
			//IL_055c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0561: Unknown result type (might be due to invalid IL or missing references)
			//IL_0577: Unknown result type (might be due to invalid IL or missing references)
			//IL_057c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0581: Unknown result type (might be due to invalid IL or missing references)
			//IL_0582: Unknown result type (might be due to invalid IL or missing references)
			//IL_059d: Unknown result type (might be due to invalid IL or missing references)
			//IL_05a6: Unknown result type (might be due to invalid IL or missing references)
			//IL_05de: Unknown result type (might be due to invalid IL or missing references)
			//IL_05e3: Unknown result type (might be due to invalid IL or missing references)
			//IL_05f9: Unknown result type (might be due to invalid IL or missing references)
			//IL_05fe: Unknown result type (might be due to invalid IL or missing references)
			//IL_0614: Unknown result type (might be due to invalid IL or missing references)
			//IL_0619: Unknown result type (might be due to invalid IL or missing references)
			//IL_061e: Unknown result type (might be due to invalid IL or missing references)
			//IL_061f: Unknown result type (might be due to invalid IL or missing references)
			//IL_063a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0643: Unknown result type (might be due to invalid IL or missing references)
			//IL_067b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0680: Unknown result type (might be due to invalid IL or missing references)
			//IL_0696: Unknown result type (might be due to invalid IL or missing references)
			//IL_069b: Unknown result type (might be due to invalid IL or missing references)
			//IL_06b1: Unknown result type (might be due to invalid IL or missing references)
			//IL_06b6: Unknown result type (might be due to invalid IL or missing references)
			//IL_06bb: Unknown result type (might be due to invalid IL or missing references)
			//IL_06bc: Unknown result type (might be due to invalid IL or missing references)
			//IL_06d7: Unknown result type (might be due to invalid IL or missing references)
			//IL_06e0: Unknown result type (might be due to invalid IL or missing references)
			//IL_0718: Unknown result type (might be due to invalid IL or missing references)
			//IL_071d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0733: Unknown result type (might be due to invalid IL or missing references)
			//IL_0738: Unknown result type (might be due to invalid IL or missing references)
			//IL_074e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0753: Unknown result type (might be due to invalid IL or missing references)
			//IL_0758: Unknown result type (might be due to invalid IL or missing references)
			//IL_0759: Unknown result type (might be due to invalid IL or missing references)
			//IL_0774: Unknown result type (might be due to invalid IL or missing references)
			//IL_077d: Unknown result type (might be due to invalid IL or missing references)
			//IL_07b5: Unknown result type (might be due to invalid IL or missing references)
			//IL_07ba: Unknown result type (might be due to invalid IL or missing references)
			//IL_07d0: Unknown result type (might be due to invalid IL or missing references)
			//IL_07d5: Unknown result type (might be due to invalid IL or missing references)
			//IL_07eb: Unknown result type (might be due to invalid IL or missing references)
			//IL_07f0: Unknown result type (might be due to invalid IL or missing references)
			//IL_07f5: Unknown result type (might be due to invalid IL or missing references)
			//IL_07f6: Unknown result type (might be due to invalid IL or missing references)
			//IL_0811: Unknown result type (might be due to invalid IL or missing references)
			//IL_081a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0852: Unknown result type (might be due to invalid IL or missing references)
			//IL_0857: Unknown result type (might be due to invalid IL or missing references)
			//IL_086d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0872: Unknown result type (might be due to invalid IL or missing references)
			//IL_0888: Unknown result type (might be due to invalid IL or missing references)
			//IL_088d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0892: Unknown result type (might be due to invalid IL or missing references)
			//IL_0893: Unknown result type (might be due to invalid IL or missing references)
			//IL_08ae: Unknown result type (might be due to invalid IL or missing references)
			//IL_08b7: Unknown result type (might be due to invalid IL or missing references)
			//IL_08ef: Unknown result type (might be due to invalid IL or missing references)
			//IL_08f4: Unknown result type (might be due to invalid IL or missing references)
			//IL_090a: Unknown result type (might be due to invalid IL or missing references)
			//IL_090f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0925: Unknown result type (might be due to invalid IL or missing references)
			//IL_092a: Unknown result type (might be due to invalid IL or missing references)
			//IL_092f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0930: Unknown result type (might be due to invalid IL or missing references)
			ItemDisplayRuleDict val = new ItemDisplayRuleDict((ItemDisplayRule[])null);
			val.Add("mdlRailGunner", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
			{
				new ItemDisplayRule
				{
					ruleType = (ItemDisplayRuleType)0,
					followerPrefab = SeekingTheVoid.SeekingTheVoidAssets.LoadAsset<GameObject>("StrawPairy.prefab"),
					childName = "Pelvis",
					localPos = new Vector3(0.2431f, 0.13818f, 0.04886f),
					localAngles = new Vector3(16.89807f, 48.65277f, 199.8044f),
					localScale = new Vector3(0.35f, 0.35f, 0.35f)
				}
			});
			val.Add("mdlCommandoDualies", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
			{
				new ItemDisplayRule
				{
					ruleType = (ItemDisplayRuleType)0,
					followerPrefab = SeekingTheVoid.SeekingTheVoidAssets.LoadAsset<GameObject>("StrawPairy.prefab"),
					childName = "Pelvis",
					localPos = new Vector3(0.11195f, -0.02541f, -0.16878f),
					localAngles = new Vector3(33.70332f, 260.7876f, 191.66f),
					localScale = new Vector3(0.25f, 0.25f, 0.25f)
				}
			});
			val.Add("mdlHuntress", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
			{
				new ItemDisplayRule
				{
					ruleType = (ItemDisplayRuleType)0,
					followerPrefab = SeekingTheVoid.SeekingTheVoidAssets.LoadAsset<GameObject>("StrawPairy.prefab"),
					childName = "Chest",
					localPos = new Vector3(0.13092f, 0.09336f, 0.18086f),
					localAngles = new Vector3(357.252f, 42.7274f, 9.73612f),
					localScale = new Vector3(0.35f, 0.35f, 0.35f)
				}
			});
			val.Add("mdlBandit2", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
			{
				new ItemDisplayRule
				{
					ruleType = (ItemDisplayRuleType)0,
					followerPrefab = SeekingTheVoid.SeekingTheVoidAssets.LoadAsset<GameObject>("StrawPairy.prefab"),
					childName = "Head",
					localPos = new Vector3(0.12111f, 0.1301f, -0.07137f),
					localAngles = new Vector3(319.1881f, 357.8232f, 24.08452f),
					localScale = new Vector3(0.25f, 0.25f, 0.25f)
				}
			});
			val.Add("mdlToolbot", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
			{
				new ItemDisplayRule
				{
					ruleType = (ItemDisplayRuleType)0,
					followerPrefab = SeekingTheVoid.SeekingTheVoidAssets.LoadAsset<GameObject>("StrawPairy.prefab"),
					childName = "Chest",
					localPos = new Vector3(2.28961f, 2.66646f, 2.4769f),
					localAngles = new Vector3(320.192f, 35.66992f, 0.91258f),
					localScale = new Vector3(2f, 2f, 2f)
				}
			});
			val.Add("mdlEngi", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
			{
				new ItemDisplayRule
				{
					ruleType = (ItemDisplayRuleType)0,
					followerPrefab = SeekingTheVoid.SeekingTheVoidAssets.LoadAsset<GameObject>("StrawPairy.prefab"),
					childName = "Pelvis",
					localPos = new Vector3(0.11195f, -0.02541f, -0.16878f),
					localAngles = new Vector3(33.70332f, 260.7876f, 191.66f),
					localScale = new Vector3(0.25f, 0.25f, 0.25f)
				}
			});
			val.Add("mdlMage", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
			{
				new ItemDisplayRule
				{
					ruleType = (ItemDisplayRuleType)0,
					followerPrefab = SeekingTheVoid.SeekingTheVoidAssets.LoadAsset<GameObject>("StrawPairy.prefab"),
					childName = "Chest",
					localPos = new Vector3(0.08819f, 0.14239f, 0.16317f),
					localAngles = new Vector3(354.4081f, 268.3398f, 353.9101f),
					localScale = new Vector3(0.25f, 0.25f, 0.25f)
				}
			});
			val.Add("mdlMerc", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
			{
				new ItemDisplayRule
				{
					ruleType = (ItemDisplayRuleType)0,
					followerPrefab = SeekingTheVoid.SeekingTheVoidAssets.LoadAsset<GameObject>("StrawPairy.prefab"),
					childName = "Head",
					localPos = new Vector3(0.00634f, 0.00334f, 0.18894f),
					localAngles = new Vector3(351.389f, 309.4684f, 11.42171f),
					localScale = new Vector3(0.2f, 0.2f, 0.2f)
				}
			});
			val.Add("mdlLoader", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
			{
				new ItemDisplayRule
				{
					ruleType = (ItemDisplayRuleType)0,
					followerPrefab = SeekingTheVoid.SeekingTheVoidAssets.LoadAsset<GameObject>("StrawPairy.prefab"),
					childName = "Chest",
					localPos = new Vector3(0.14503f, 0.21651f, 0.24265f),
					localAngles = new Vector3(359.8532f, 34.27069f, 359.8857f),
					localScale = new Vector3(0.25f, 0.25f, 0.25f)
				}
			});
			val.Add("mdlCaptain", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
			{
				new ItemDisplayRule
				{
					ruleType = (ItemDisplayRuleType)0,
					followerPrefab = SeekingTheVoid.SeekingTheVoidAssets.LoadAsset<GameObject>("StrawPairy.prefab"),
					childName = "Pelvis",
					localPos = new Vector3(0.04155f, -0.03521f, -0.22135f),
					localAngles = new Vector3(27.20395f, 296.7981f, 187.8858f),
					localScale = new Vector3(0.25f, 0.25f, 0.25f)
				}
			});
			val.Add("mdlVoidSurvivor", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
			{
				new ItemDisplayRule
				{
					ruleType = (ItemDisplayRuleType)0,
					followerPrefab = SeekingTheVoid.SeekingTheVoidAssets.LoadAsset<GameObject>("StrawPairy.prefab"),
					childName = "Chest",
					localPos = new Vector3(0.02515f, 0.23371f, -0.18064f),
					localAngles = new Vector3(322.1277f, 243.4333f, 79.9745f),
					localScale = new Vector3(0.35f, 0.35f, 0.35f)
				}
			});
			val.Add("mdlSeeker", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
			{
				new ItemDisplayRule
				{
					ruleType = (ItemDisplayRuleType)0,
					followerPrefab = SeekingTheVoid.SeekingTheVoidAssets.LoadAsset<GameObject>("StrawPairy.prefab"),
					childName = "Pack",
					localPos = new Vector3(-0.168f, 0.15328f, -0.21157f),
					localAngles = new Vector3(325.4123f, 44.25535f, 1.24796f),
					localScale = new Vector3(0.25f, 0.25f, 0.25f)
				}
			});
			val.Add("mdlChef", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
			{
				new ItemDisplayRule
				{
					ruleType = (ItemDisplayRuleType)0,
					followerPrefab = SeekingTheVoid.SeekingTheVoidAssets.LoadAsset<GameObject>("StrawPairy.prefab"),
					childName = "Chest",
					localPos = new Vector3(-0.29829f, 0.09506f, -0.30026f),
					localAngles = new Vector3(281.5359f, 342.4525f, 130.0393f),
					localScale = new Vector3(0.25f, 0.25f, 0.25f)
				}
			});
			val.Add("mdlDroneTech", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
			{
				new ItemDisplayRule
				{
					ruleType = (ItemDisplayRuleType)0,
					followerPrefab = SeekingTheVoid.SeekingTheVoidAssets.LoadAsset<GameObject>("StrawPairy.prefab"),
					childName = "Pelvis",
					localPos = new Vector3(0.11195f, -0.02541f, -0.16878f),
					localAngles = new Vector3(33.70332f, 260.7876f, 191.66f),
					localScale = new Vector3(0.25f, 0.25f, 0.25f)
				}
			});
			val.Add("mdlDrifter", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
			{
				new ItemDisplayRule
				{
					ruleType = (ItemDisplayRuleType)0,
					followerPrefab = SeekingTheVoid.SeekingTheVoidAssets.LoadAsset<GameObject>("StrawPairy.prefab"),
					childName = "Pelvis",
					localPos = new Vector3(0.11195f, -0.02541f, -0.16878f),
					localAngles = new Vector3(33.70332f, 260.7876f, 191.66f),
					localScale = new Vector3(0.25f, 0.25f, 0.25f)
				}
			});
			return val;
		}

		public static void CreateLang()
		{
			LanguageAPI.Add("SEEKINTHEVOID_STRAWPAIRY_NAME", "Straw'Pair'y");
			LanguageAPI.Add("SEEKINTHEVOID_STRAWPAIRY_LORE", "Order: Strawberries, 2 Qty.\r\nTracking Number: 25***********\r\nEstimated Delivery: 01/19/2055\r\nShipping Method: Standard\r\nShipping Address: Fridge Lunch Pale, 305 Odysseus St., Casper Plaza, Venus\r\nShipping Details:\r\n\r\nA gift for my love! Together forever <3");
			LanguageAPI.Add("SEEKINTHEVOID_STRAWPAIRY_PICKUP", "Everybody's favorite friend!");
			LanguageAPI.Add("SEEKINTHEVOID_STRAWPAIRY_DESC", "Every 30 seconds, <style=cIsUtility>summon a Gup</style> with bonus <style=cIsDamage>100%</style> <style=cStack>(+100% per stack)</style> damage and <style=cIsHealing>100%</style> health. Can have up to <style=cIsUtility>1</style> Gup at a time.");
		}
	}
	public static class ToxicodendronBrine
	{
		public class ToxicodendronBrineBehavior : BaseItemBodyBehavior
		{
			private float fractureChance = 10f;

			[ItemDefAssociation(useOnServer = true, useOnClient = false)]
			private static ItemDef GetItemDef()
			{
				return ToxicodendronBrineDef;
			}

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

			private void OnEnable()
			{
				//IL_0015: Unknown result type (might be due to invalid IL or missing references)
				//IL_001f: Expected O, but got Unknown
				//IL_0027: Unknown result type (might be due to invalid IL or missing references)
				//IL_0031: Expected O, but got Unknown
				if (itemMode == 0)
				{
					GlobalEventManager.OnHitEnemy += new hook_OnHitEnemy(OnDamageDealt);
					CharacterBody.OnKilledOtherServer += new hook_OnKilledOtherServer(CharacterBody_OnKilledOtherServer);
				}
				else
				{
					GlobalEventManager.onServerDamageDealt += OnDamageDealtAlt;
				}
			}

			private void CharacterBody_OnKilledOtherServer(orig_OnKilledOtherServer orig, CharacterBody self, DamageReport report)
			{
				//IL_004d: Unknown result type (might be due to invalid IL or missing references)
				orig.Invoke(self, report);
				if (Object.op_Implicit((Object)(object)self.inventory) && self.inventory.GetItemCountEffective(ToxicodendronBrineDef) > 0 && report.victimBody.activeBuffsList.Contains(Buffs.Poisoned.buffIndex))
				{
					TriggerPoisonSpread(self, report);
					Debug.Log((object)"Enemy has Poison...");
					float num = report.attackerBody.skillLocator.GetSkill((SkillSlot)0).rechargeStopwatch * 0.2f;
					float num2 = report.attackerBody.skillLocator.GetSkill((SkillSlot)1).rechargeStopwatch * 0.2f;
					float num3 = report.attackerBody.skillLocator.GetSkill((SkillSlot)2).rechargeStopwatch * 0.2f;
					float num4 = report.attackerBody.skillLocator.GetSkill((SkillSlot)3).rechargeStopwatch * 0.2f;
					GenericSkill skill = report.attackerBody.skillLocator.GetSkill((SkillSlot)0);
					skill.rechargeStopwatch += num;
					GenericSkill skill2 = report.attackerBody.skillLocator.GetSkill((SkillSlot)1);
					skill2.rechargeStopwatch += num2;
					GenericSkill skill3 = report.attackerBody.skillLocator.GetSkill((SkillSlot)2);
					skill3.rechargeStopwatch += num3;
					GenericSkill skill4 = report.attackerBody.skillLocator.GetSkill((SkillSlot)3);
					skill4.rechargeStopwatch += num4;
				}
			}

			private void TriggerPoisonSpread(CharacterBody self, DamageReport report)
			{
				//IL_0032: 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_005e: Unknown result type (might be due to invalid IL or missing references)
				//IL_007f: Unknown result type (might be due to invalid IL or missing references)
				//IL_0081: Unknown result type (might be due to invalid IL or missing references)
				//IL_0083: Unknown result type (might be due to invalid IL or missing references)
				//IL_008a: Unknown result type (might be due to invalid IL or missing references)
				//IL_0091: Expected O, but got Unknown
				//IL_009f: Unknown result type (might be due to invalid IL or missing references)
				//IL_00a4: Unknown result type (might be due to invalid IL or missing references)
				//IL_00bb: Unknown result type (might be due to invalid IL or missing references)
				//IL_00c0: Unknown result type (might be due to invalid IL or missing references)
				//IL_00dd: Unknown result type (might be due to invalid IL or missing references)
				//IL_00f2: Unknown result type (might be due to invalid IL or missing references)
				//IL_00f7: Unknown result type (might be due to invalid IL or missing references)
				int itemCountEffective = self.inventory.GetItemCountEffective(Items.TriggerEnemyDebuffs);
				List<SplitDebuffInformation> list = new List<SplitDebuffInformation>();
				_ = report.damageInfo;
				DotController val = DotController.FindDotController(((Component)report.victimBody).gameObject);
				SplitDebuffInformation val2 = default(SplitDebuffInformation);
				val2.attacker = ((Component)this).gameObject;
				val2.attackerMaster = self.master;
				val2.index = Buffs.Poisoned.buffIndex;
				val2.isTimed = true;
				val2.duration = 10f;
				val2.count = 1;
				SplitDebuffInformation item = val2;
				list.Add(item);
				SphereSearch val3 = new SphereSearch();
				List<HurtBox> list2 = CollectionPool<HurtBox, List<HurtBox>>.RentCollection();
				val3.mask = ((LayerIndex)(ref LayerIndex.entityPrecise)).mask;
				val3.origin = ((Component)report.victimBody).gameObject.transform.position;
				val3.radius = 20f + 5f * (float)itemCountEffective;
				val3.queryTriggerInteraction = (QueryTriggerInteraction)0;
				val3.RefreshCandidates();
				val3.FilterCandidatesByHurtBoxTeam(TeamMask.GetEnemyTeams(self.teamComponent.teamIndex));
				val3.OrderCandidatesByDistance();
				val3.FilterCandidatesByDistinctHurtBoxEntities();
				val3.GetHurtBoxes(list2);
				val3.ClearCandidates();
				int num = itemCountEffective;
				for (int i = 0; i < list2.Count; i++)
				{
					HurtBox val4 = list2[i];
					CharacterBody body = val4.healthComponent.body;
					if (Object.op_Implicit((Object)(object)val4) && Object.op_Implicit((Object)(object)val4.healthComponent) && val4.healthComponent.alive && (Object)(object)body != (Object)(object)report.victimBody && (Object)(object)body != (Object)(object)this)
					{
						self.CreateVineOrbChain(((Component)report.victimBody).gameObject, val4, list);
						num--;
						if (num == 0)
						{
							return;
						}
					}
				}
				CollectionPool<HurtBox, List<HurtBox>>.ReturnCollection(list2);
			}

			private void OnDamageDealt(orig_OnHitEnemy orig, GlobalEventManager self, DamageInfo damageInfo, GameObject victim)
			{
				//IL_0073: Unknown result type (might be due to invalid IL or missing references)
				orig.Invoke(self, damageInfo, victim);
				if (!Object.op_Implicit((Object)(object)damageInfo.attacker))
				{
					return;
				}
				CharacterBody component = damageInfo.attacker.GetComponent<CharacterBody>();
				if (Object.op_Implicit((Object)(object)component))
				{
					Inventory inventory = component.inventory;
					if (Object.op_Implicit((Object)(object)inventory) && damageInfo.damage / component.damage >= 4f && inventory.GetItemCountEffective(ToxicodendronBrineDef.itemIndex) > 0)
					{
						DotController.InflictDot(victim, ((Component)component).gameObject, (DotIndex)4, 10f, 1f, (uint?)1u);
					}
				}
			}

			private void OnDamageDealtAlt(DamageReport report)
			{
				//IL_0046: Unknown result type (might be due to invalid IL or missing references)
				//IL_004c: Invalid comparison between Unknown and I4
				//IL_037a: Unknown result type (might be due to invalid IL or missing references)
				//IL_0380: Invalid comparison between Unknown and I4
				//IL_03b8: Unknown result type (might be due to invalid IL or missing references)
				//IL_008a: Unknown result type (might be due to invalid IL or missing references)
				//IL_008d: Unknown result type (might be due to invalid IL or missing references)
				//IL_03dc: Unknown result type (might be due to invalid IL or missing references)
				//IL_00eb: Unknown result type (might be due to invalid IL or missing references)
				//IL_01d8: Unknown result type (might be due to invalid IL or missing references)
				//IL_01df: Expected O, but got Unknown
				//IL_01ed: Unknown result type (might be due to invalid IL or missing references)
				//IL_01f2: Unknown result type (might be due to invalid IL or missing references)
				//IL_0209: Unknown result type (might be due to invalid IL or missing references)
				//IL_020e: Unknown result type (might be due to invalid IL or missing references)
				//IL_022d: Unknown result type (might be due to invalid IL or missing references)
				//IL_0247: Unknown result type (might be due to invalid IL or missing references)
				//IL_024c: Unknown result type (might be due to invalid IL or missing references)
				//IL_0121: Unknown result type (might be due to invalid IL or missing references)
				//IL_0126: Unknown result type (might be due to invalid IL or missing references)
				//IL_0128: Unknown result type (might be due to invalid IL or missing references)
				//IL_0132: Unknown result type (might be due to invalid IL or missing references)
				//IL_0162: Unknown result type (might be due to invalid IL or missing references)
				//IL_017f: Unknown result type (might be due to invalid IL or missing references)
				//IL_0181: Unknown result type (might be due to invalid IL or missing references)
				//IL_01a1: Unknown result type (might be due to invalid IL or missing references)
				//IL_01a3: Unknown result type (might be due to invalid IL or missing references)
				//IL_01a7: Unknown result type (might be due to invalid IL or missing references)
				//IL_0154: Unknown result type (might be due to invalid IL or missing references)
				//IL_02fb: Unknown result type (might be due to invalid IL or missing references)
				//IL_0302: Expected O, but got Unknown
				//IL_0314: Unknown result type (might be due to invalid IL or missing references)
				//IL_0319: Unknown result type (might be due to invalid IL or missing references)
				CharacterMaster attackerMaster = report.attackerMaster;
				if (!Object.op_Implicit((Object)(object)attackerMaster))
				{
					return;
				}
				Inventory inventory = attackerMaster.inventory;
				if (!Object.op_Implicit((Object)(object)inventory))
				{
					return;
				}
				int itemCountEffective = inventory.GetItemCountEffective(Items.TriggerEnemyDebuffs);
				if ((int)report.dotType == 8)
				{
					List<SplitDebuffInformation> list = new List<SplitDebuffInformation>();
					DotController val = DotController.FindDotController(((Component)report.victimBody).gameObject);
					BuffIndex[] debuffAndDotsIndicesExcludingNoxiousThorns = BuffCatalog.debuffAndDotsIndicesExcludingNoxiousThorns;
					BuffIndex[] array = debuffAndDotsIndicesExcludingNoxiousThorns;
					foreach (BuffIndex val2 in array)
					{
						BuffDef buffDef = BuffCatalog.GetBuffDef(val2);
						int buffCount = report.victimBody.GetBuffCount(buffDef);
						if (buffCount > 0)
						{
							int num = Mathf.RoundToInt(report.damageInfo.damage / (report.attackerBody.baseDamage * 4f));
							Debug.Log((object)num);
							int count = inventory.GetItemCountEffective(ToxicodendronBrineDef.itemIndex) * num;
							bool isTimed = false;
							float duration = 0f;
							if (buffDef.isDOT && (Object)(object)val != (Object)null)
							{
								DotIndex dotDefIndex = DotController.GetDotDefIndex(buffDef);
								DotController.GetDotDef(dotDefIndex);
								isTimed = val.GetDotStackTotalDurationForIndex(dotDefIndex, ref duration);
							}
							else if (buffDef.isDebuff)
							{
								isTimed = report.victimBody.GetTimedBuffTotalDurationForIndex(val2, ref duration);
							}
							SplitDebuffInformation val3 = default(SplitDebuffInformation);
							val3.attacker = ((Component)this).gameObject;
							val3.attackerMaster = attackerMaster;
							val3.index = val2;
							val3.isTimed = isTimed;
							val3.duration = duration;
							val3.count = count;
							SplitDebuffInformation item = val3;
							list.Add(item);
						}
					}
					if (list.Count == 0)
					{
						return;
					}
					SphereSearch val4 = new SphereSearch();
					List<HurtBox> list2 = CollectionPool<HurtBox, List<HurtBox>>.RentCollection();
					val4.mask = ((LayerIndex)(ref LayerIndex.entityPrecise)).mask;
					val4.origin = ((Component)report.victimBody).gameObject.transform.position;
					val4.radius = 15f + 5f * (float)(itemCountEffective - 1);
					val4.queryTriggerInteraction = (QueryTriggerInteraction)0;
					val4.RefreshCandidates();
					val4.FilterCandidatesByHurtBoxTeam(TeamMask.GetEnemyTeams(report.attackerBody.teamComponent.teamIndex));
					val4.OrderCandidatesByDistance();
					val4.FilterCandidatesByDistinctHurtBoxEntities();
					val4.GetHurtBoxes(list2);
					val4.ClearCandidates();
					if (!list2.Contains(report.victimBody.mainHurtBox))
					{
						list2.Prepend(report.victimBody.mainHurtBox);
					}
					int num2 = 4;
					for (int j = 0; j < list2.Count; j++)
					{
						HurtBox val5 = list2[j];
						CharacterBody body = val5.healthComponent.body;
						if (Object.op_Implicit((Object)(object)val5) && Object.op_Implicit((Object)(object)val5.healthComponent) && val5.healthComponent.alive)
						{
							VineOrb val6 = new VineOrb();
							((Orb)val6).origin = ((Component)report.victimBody).gameObject.transform.position;
							((Orb)val6).target = val5;
							val6.splitDebuffInformation = list;
							OrbManager.instance.AddOrb((Orb)(object)val6);
							num2--;
							if (num2 == 0)
							{
								return;
							}
						}
					}
					CollectionPool<HurtBox, List<HurtBox>>.ReturnCollection(list2);
				}
				if ((int)report.dotType != -1 || report.damageInfo.procCoefficient <= 0f || inventory.GetItemCountEffective(ToxicodendronBrineDef.itemIndex) < 1)
				{
					return;
				}
				fractureChance = Util.ConvertAmpli