Decompiled source of SeekingTheVoid v1.9.1

SeekingTheVoid.dll

Decompiled a week ago
using System;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.Versioning;
using System.Security;
using System.Security.Permissions;
using BepInEx;
using BepInEx.Logging;
using EntityStates;
using EntityStates.Gup;
using HG;
using HG.Reflection;
using Microsoft.CodeAnalysis;
using On.EntityStates;
using On.EntityStates.Gup;
using R2API;
using R2API.Networking;
using R2API.Networking.Interfaces;
using RoR2;
using RoR2.CharacterAI;
using RoR2.ContentManagement;
using RoR2.ExpansionManagement;
using RoR2.Items;
using RoR2.Navigation;
using RoR2.Orbs;
using RoR2.Projectile;
using RoR2BepInExPack.GameAssetPathsBetter;
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]
	[Embedded]
	internal sealed class EmbeddedAttribute : Attribute
	{
	}
}
namespace System.Runtime.CompilerServices
{
	[AttributeUsage(AttributeTargets.Module, AllowMultiple = false, Inherited = false)]
	[CompilerGenerated]
	[Embedded]
	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_0056: Unknown result type (might be due to invalid IL or missing references)
				//IL_005b: Unknown result type (might be due to invalid IL or missing references)
				//IL_0069: Unknown result type (might be due to invalid IL or missing references)
				//IL_0083: Unknown result type (might be due to invalid IL or missing references)
				//IL_009d: Unknown result type (might be due to invalid IL or missing references)
				//IL_00a2: Unknown result type (might be due to invalid IL or missing references)
				//IL_00d7: Unknown result type (might be due to invalid IL or missing references)
				//IL_00d8: Unknown result type (might be due to invalid IL or missing references)
				//IL_00d9: Unknown result type (might be due to invalid IL or missing references)
				//IL_00de: Unknown result type (might be due to invalid IL or missing references)
				//IL_00e0: Unknown result type (might be due to invalid IL or missing references)
				//IL_00e2: 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_00f2: Unknown result type (might be due to invalid IL or missing references)
				//IL_00ff: Unknown result type (might be due to invalid IL or missing references)
				//IL_0104: Unknown result type (might be due to invalid IL or missing references)
				//IL_0118: Unknown result type (might be due to invalid IL or missing references)
				//IL_011d: Unknown result type (might be due to invalid IL or missing references)
				//IL_0122: Unknown result type (might be due to invalid IL or missing references)
				//IL_0151: Unknown result type (might be due to invalid IL or missing references)
				//IL_0159: Unknown result type (might be due to invalid IL or missing references)
				//IL_015e: Unknown result type (might be due to invalid IL or missing references)
				//IL_0167: Unknown result type (might be due to invalid IL or missing references)
				//IL_017b: Unknown result type (might be due to invalid IL or missing references)
				//IL_0192: Unknown result type (might be due to invalid IL or missing references)
				//IL_0194: 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_01a6: Unknown result type (might be due to invalid IL or missing references)
				//IL_01b2: Unknown result type (might be due to invalid IL or missing references)
				//IL_01c1: Unknown result type (might be due to invalid IL or missing references)
				//IL_01cc: Unknown result type (might be due to invalid IL or missing references)
				//IL_01dc: Unknown result type (might be due to invalid IL or missing references)
				//IL_01ec: Unknown result type (might be due to invalid IL or missing references)
				//IL_0207: Unknown result type (might be due to invalid IL or missing references)
				//IL_0214: Unknown result type (might be due to invalid IL or missing references)
				if (!NetworkClient.active || !((NetworkBehaviour)((BaseItemBodyBehavior)this).body).hasAuthority || !Object.op_Implicit((Object)(object)((BaseItemBodyBehavior)this).body.characterMotor))
				{
					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 = "AcanthiCoralCoastal";
			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)
			//IL_09e8: Unknown result type (might be due to invalid IL or missing references)
			//IL_09f1: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a29: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a2e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a44: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a49: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a5f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a64: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a69: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a6a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a85: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a8e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0ac6: Unknown result type (might be due to invalid IL or missing references)
			//IL_0acb: Unknown result type (might be due to invalid IL or missing references)
			//IL_0ae1: Unknown result type (might be due to invalid IL or missing references)
			//IL_0ae6: Unknown result type (might be due to invalid IL or missing references)
			//IL_0afc: Unknown result type (might be due to invalid IL or missing references)
			//IL_0b01: Unknown result type (might be due to invalid IL or missing references)
			//IL_0b06: Unknown result type (might be due to invalid IL or missing references)
			//IL_0b07: 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)
				}
			});
			val.Add("mdlAcolyteUnion", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
			{
				new ItemDisplayRule
				{
					ruleType = (ItemDisplayRuleType)0,
					followerPrefab = SeekingTheVoid.SeekingTheVoidAssets.LoadAsset<GameObject>("CoastalCoral.prefab"),
					childName = "Head",
					localPos = new Vector3(-0.44986f, -0.12866f, 0.35669f),
					localAngles = new Vector3(355.3256f, 186.3525f, 289.452f),
					localScale = new Vector3(0.8f, 0.8f, 0.8f)
				}
			});
			val.Add("mdlEnforcer", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
			{
				new ItemDisplayRule
				{
					ruleType = (ItemDisplayRuleType)0,
					followerPrefab = SeekingTheVoid.SeekingTheVoidAssets.LoadAsset<GameObject>("CoastalCoral.prefab"),
					childName = "Head",
					localPos = new Vector3(-0.18901f, -0.00342f, 0.15675f),
					localAngles = new Vector3(355.3256f, 186.3525f, 289.452f),
					localScale = new Vector3(0.5f, 0.5f, 0.5f)
				}
			});
			return val;
		}
	}
	public static class ConversionPeriapt
	{
		public class ConversionPeriaptBehavior : BaseItemBodyBehavior
		{
			[ItemDefAssociation(useOnServer = true, useOnClient = false)]
			private static ItemDef GetItemDef()
			{
				return ConversionPeriaptDef;
			}

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

		public static ItemDef ConversionPeriaptDef;

		public static ItemRelationshipType VoidItemRelationshipType;

		public static void Init()
		{
			//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_00a5: Unknown result type (might be due to invalid IL or missing references)
			//IL_00aa: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c2: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c7: Unknown result type (might be due to invalid IL or missing references)
			//IL_010c: 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_017b: Unknown result type (might be due to invalid IL or missing references)
			//IL_01ab: Unknown result type (might be due to invalid IL or missing references)
			//IL_01df: Unknown result type (might be due to invalid IL or missing references)
			//IL_01e9: Expected O, but got Unknown
			//IL_01ef: Unknown result type (might be due to invalid IL or missing references)
			//IL_01f4: Unknown result type (might be due to invalid IL or missing references)
			//IL_0216: Unknown result type (might be due to invalid IL or missing references)
			//IL_021b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0234: Unknown result type (might be due to invalid IL or missing references)
			//IL_024e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0250: Unknown result type (might be due to invalid IL or missing references)
			VoidItemRelationshipType = Addressables.LoadAssetAsync<ItemRelationshipType>((object)RoR2_DLC1_Common.ContagiousItem_asset).WaitForCompletion();
			new PeriaptTransfomationContent().Initialize();
			CreateLang();
			ConversionPeriaptDef = ScriptableObject.CreateInstance<ItemDef>();
			((Object)ConversionPeriaptDef).name = "AcanthiConversionPeriapt";
			ConversionPeriaptDef.nameToken = "SEEKINTHEVOID_CONVERSIONPERIAPT_NAME";
			ConversionPeriaptDef.pickupToken = "SEEKINTHEVOID_CONVERSIONPERIAPT_PICKUP";
			ConversionPeriaptDef.descriptionToken = "SEEKINTHEVOID_CONVERSIONPERIAPT_DESC";
			ConversionPeriaptDef.loreToken = "SEEKINTHEVOID_CONVERSIONPERIAPT_LORE";
			ItemDef conversionPeriaptDef = ConversionPeriaptDef;
			ItemTag[] array = new ItemTag[4];
			RuntimeHelpers.InitializeArray(array, (RuntimeFieldHandle)/*OpCode not supported: LdMemberToken*/);
			conversionPeriaptDef.tags = (ItemTag[])(object)array;
			ConversionPeriaptDef._itemTierDef = Addressables.LoadAssetAsync<ItemTierDef>((object)"RoR2/DLC1/Common/VoidTier2Def.asset").WaitForCompletion();
			ConversionPeriaptDef.requiredExpansion = Addressables.LoadAssetAsync<ExpansionDef>((object)"RoR2/DLC3/DLC3.asset").WaitForCompletion();
			ConversionPeriaptDef.pickupIconSprite = SeekingTheVoid.SeekingTheVoidAssets.LoadAsset<Sprite>("ConversionPeriaptIcon.png");
			ConversionPeriaptDef.pickupModelPrefab = SeekingTheVoid.SeekingTheVoidAssets.LoadAsset<GameObject>("ConversionPeriapt.prefab");
			Material val = Addressables.LoadAssetAsync<Material>((object)RoR2_Base_Nullifier.matNullifierGemPortal2_mat).WaitForCompletion();
			((Renderer)((Component)ConversionPeriaptDef.pickupModelPrefab.transform.Find("Void")).gameObject.GetComponent<MeshRenderer>()).SetMaterial(val);
			ConversionPeriaptDef.pickupModelPrefab.GetComponent<ItemDisplay>().rendererInfos[1].defaultMaterial = val;
			ModelPanelParameters val2 = ConversionPeriaptDef.pickupModelPrefab.AddComponent<ModelPanelParameters>();
			val2.focusPointTransform = new GameObject("FocusPoint").transform;
			val2.focusPointTransform.SetParent(ConversionPeriaptDef.pickupModelPrefab.transform);
			val2.cameraPositionTransform = new GameObject("CameraPosition").transform;
			val2.cameraPositionTransform.SetParent(ConversionPeriaptDef.pickupModelPrefab.transform);
			ItemAPI.Add(new CustomItem(ConversionPeriaptDef, ItemDisplayTransformations()));
			ItemDef itemDef = Addressables.LoadAssetAsync<ItemDef>((object)"RoR2/DLC1/RegeneratingScrap/RegeneratingScrap.asset").WaitForCompletion();
			ItemRelationshipProvider val3 = ScriptableObject.CreateInstance<ItemRelationshipProvider>();
			((Object)val3).name = "ConversionPeriaptContagiousItemProvider";
			val3.relationshipType = Addressables.LoadAssetAsync<ItemRelationshipType>((object)"RoR2/DLC1/Common/ContagiousItem.asset").WaitForCompletion();
			val3.relationships = (Pair[])(object)new Pair[1]
			{
				new Pair
				{
					itemDef1 = itemDef,
					itemDef2 = ConversionPeriaptDef
				}
			};
			ContentAddition.AddItemRelationshipProvider(val3);
		}

		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
			return new ItemDisplayRuleDict((ItemDisplayRule[])null);
		}

		public static void CreateLang()
		{
			LanguageAPI.Add("SEEKINTHEVOID_CONVERSIONPERIAPT_NAME", "Corruption Periapt");
			LanguageAPI.Add("SEEKINTHEVOID_CONVERSIONPERIAPT_LORE", "\"It's good to be quick with your hands.\r\n\r\n'Fer example, just the other day, I'd found a lemurian rummaging through our loot, lookin' for something. Looked real lost, too. Only problem is, I were out of ammo, so I took a long look at my surroundin's. What do I see but a large rubber band, and some glass shards? Concocted a home-made slingshot and slugged the 'lem with the glass. Poor bastard didn't stand a chance.\r\n\r\nAlways spend some time to think about how you can turn a bad 'run' into a good 'run', y'hear? This aint a race, this'all tactics.\"\r\n\r\n- Lost Journal, recovered from Petrichor V");
			LanguageAPI.Add("SEEKINTHEVOID_CONVERSIONPERIAPT_PICKUP", "Infects items when used as an ingredient. <style=cIsVoid>Corrupts all Regenerating Scrap</style>.");
			LanguageAPI.Add("SEEKINTHEVOID_CONVERSIONPERIAPT_DESC", "Does nothing. When crafted against another item, the result is it's <style=cIsVoid>void</style> equivalent. <style=cIsVoid>Corrupts all Regenerating Scrap</style>. ");
		}
	}
	public class PeriaptTransfomationContent : IContentPackProvider
	{
		internal ContentPack content = new ContentPack();

		public static List<CraftableDef> craftables = new List<CraftableDef>();

		public string identifier => "acanthi.SeekingTheVoid.PeriaptRecipes";

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

		private void AddSelf(AddContentPackProviderDelegate add)
		{
			add.Invoke((IContentPackProvider)(object)this);
		}

		public IEnumerator LoadStaticContentAsync(LoadStaticContentAsyncArgs args)
		{
			content.identifier = identifier;
			content.craftableDefs.Add(craftables.ToArray());
			args.ReportProgress(1f);
			yield break;
		}

		public IEnumerator GenerateContentPackAsync(GetContentPackAsyncArgs args)
		{
			ContentPack.Copy(content, args.output);
			List<CraftableDef> craftableDefList = new List<CraftableDef>();
			List<Pair> voidPairs = new List<Pair>();
			Enumerator<ContentPackLoadInfo> enumerator = args.peerLoadInfos.GetEnumerator();
			try
			{
				while (enumerator.MoveNext())
				{
					ContentPackLoadInfo peerLoadInfo = enumerator.Current;
					Dictionary<ItemRelationshipType, Pair[]> itemRelationships = new Dictionary<ItemRelationshipType, Pair[]>();
					ReadOnlyNamedAssetCollection<ItemRelationshipProvider> relationshipProviders = ((ReadOnlyContentPack)(ref peerLoadInfo.previousContentPack)).itemRelationshipProviders;
					Dictionary<ItemRelationshipType, HashSet<Pair>> dictionary = new Dictionary<ItemRelationshipType, HashSet<Pair>>();
					AssetEnumerator<ItemRelationshipProvider> enumerator2 = relationshipProviders.GetEnumerator();
					try
					{
						while (enumerator2.MoveNext())
						{
							ItemRelationshipProvider itemRelationshipProvider = enumerator2.Current;
							if (!dictionary.ContainsKey(itemRelationshipProvider.relationshipType))
							{
								dictionary.Add(itemRelationshipProvider.relationshipType, new HashSet<Pair>());
							}
							try
							{
								if (itemRelationshipProvider.relationships != null && dictionary.TryGetValue(itemRelationshipProvider.relationshipType, out var value))
								{
									value.UnionWith(itemRelationshipProvider.relationships);
								}
								value = null;
							}
							catch (Exception arg)
							{
								Log.Warning($"Error while adding relationships for type '{itemRelationshipProvider.relationshipType}': {arg}");
							}
						}
					}
					finally
					{
						((IDisposable)enumerator2/*cast due to .constrained prefix*/).Dispose();
					}
					itemRelationships.Clear();
					foreach (KeyValuePair<ItemRelationshipType, HashSet<Pair>> item in dictionary)
					{
						IEnumerable<Pair> enumerable = item.Value.Where((Pair val2) => !Object.op_Implicit((Object)(object)val2.itemDef1) || !Object.op_Implicit((Object)(object)val2.itemDef2));
						foreach (Pair item2 in enumerable)
						{
							string[] obj = new string[7]
							{
								"Trying to define a ",
								((Object)item.Key).name,
								" relationship between ",
								null,
								null,
								null,
								null
							};
							ItemDef itemDef = item2.itemDef1;
							obj[3] = ((itemDef != null) ? ((Object)itemDef).name : null);
							obj[4] = " and ";
							ItemDef itemDef2 = item2.itemDef2;
							obj[5] = ((itemDef2 != null) ? ((Object)itemDef2).name : null);
							obj[6] = ".";
							Log.Warning(string.Concat(obj));
						}
						item.Value.ExceptWith(enumerable);
						itemRelationships.Add(item.Key, item.Value.ToArray());
					}
					if (!itemRelationships.TryGetValue(ConversionPeriapt.VoidItemRelationshipType, out var newVoidPairs))
					{
						continue;
					}
					Pair[] array = newVoidPairs;
					foreach (Pair voidPair in array)
					{
						if (!voidPairs.Contains(voidPair))
						{
							voidPairs.Add(voidPair);
						}
					}
					newVoidPairs = null;
					peerLoadInfo = default(ContentPackLoadInfo);
				}
			}
			finally
			{
				((IDisposable)enumerator/*cast due to .constrained prefix*/).Dispose();
			}
			foreach (Pair pair in voidPairs)
			{
				if (!Object.op_Implicit((Object)(object)pair.itemDef1) || !Object.op_Implicit((Object)(object)pair.itemDef2) || !Object.op_Implicit((Object)(object)ConversionPeriapt.ConversionPeriaptDef))
				{
					Log.Warning($"itemDef1 is null: {(Object)(object)pair.itemDef1 == (Object)null} itemDef2 is null: {(Object)(object)pair.itemDef2 == (Object)null} ConversionPeriaptDef is null: {(Object)(object)ConversionPeriapt.ConversionPeriaptDef == (Object)null}");
					continue;
				}
				string name = "Periapt" + ((Object)pair.itemDef1).name + "To" + ((Object)pair.itemDef2).name + "CraftableDef";
				CraftableDef craftable = ScriptableObject.CreateInstance<CraftableDef>();
				craftable.pickup = (Object)(object)pair.itemDef2;
				((Object)craftable).name = name;
				Recipe val = new Recipe();
				val.amountToDrop = 1;
				val.ingredients = (RecipeIngredient[])(object)new RecipeIngredient[2]
				{
					new RecipeIngredient
					{
						pickup = (Object)(object)pair.itemDef1,
						type = (IngredientTypeIndex)0
					},
					new RecipeIngredient
					{
						pickup = (Object)(object)ConversionPeriapt.ConversionPeriaptDef,
						type = (IngredientTypeIndex)0
					}
				};
				Recipe recipe = val;
				craftable.recipes = (Recipe[])(object)new Recipe[1] { recipe };
				craftableDefList.Add(craftable);
				Log.Debug("Added " + ((Object)pair.itemDef1).name + " + Corruption Periapt = " + ((Object)pair.itemDef2).name);
			}
			args.output.craftableDefs.Add(craftableDefList.ToArray());
			args.ReportProgress(1f);
			yield break;
		}

		public IEnumerator FinalizeAsync(FinalizeAsyncArgs args)
		{
			args.ReportProgress(1f);
			yield break;
		}
	}
	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);
		}
	}
	public static class RazorPenny
	{
		public class RazorPennyBehavior : BaseItemBodyBehavior, IOnDamageDealtServerReceiver
		{
			[ItemDefAssociation(useOnServer = true, useOnClient = false)]
			private static ItemDef GetItemDef()
			{
				return RazorPennyDef;
			}

			public void OnDamageDealtServer(DamageReport damageReport)
			{
				//IL_0022: 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: Expected O, but got Unknown
				//IL_0092: Unknown result type (might be due to invalid IL or missing references)
				//IL_0097: Unknown result type (might be due to invalid IL or missing references)
				//IL_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)
				if (base.stack > 0 && !(damageReport.damageDealt <= 0f) && !((Enum)damageReport.damageInfo.damageType.damageType).HasFlag((Enum)(object)(DamageType)67108864) && damageReport.damageInfo.crit && Util.CheckRoll(100f * damageReport.damageInfo.procCoefficient, damageReport.attackerMaster))
				{
					int num = 1;
					GoldOrb val = new GoldOrb();
					((Orb)val).origin = damageReport.damageInfo.position;
					((Orb)val).target = ((BaseItemBodyBehavior)this).body.mainHurtBox;
					val.goldAmount = (uint)((float)(GetStackCount() * num) * Run.instance.difficultyCoefficient);
					OrbManager.instance.AddOrb((Orb)(object)val);
					EffectManager.SimpleImpactEffect(MoneyGainPrefab, damageReport.damageInfo.position, Vector3.up, true);
				}
			}

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

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

		public static ItemDef RazorPennyDef;

		public static GameObject MoneyGainPrefab;

		public static void Init()
		{
			//IL_0082: Unknown result type (might be due to invalid IL or missing references)
			//IL_0087: Unknown result type (might be due to invalid IL or missing references)
			//IL_0099: Unknown result type (might be due to invalid IL or missing references)
			//IL_009e: Unknown result type (might be due to invalid IL or missing references)
			//IL_00f4: Unknown result type (might be due to invalid IL or missing references)
			//IL_0124: Unknown result type (might be due to invalid IL or missing references)
			//IL_0158: Unknown result type (might be due to invalid IL or missing references)
			//IL_0162: Expected O, but got Unknown
			//IL_0168: Unknown result type (might be due to invalid IL or missing references)
			//IL_016d: Unknown result type (might be due to invalid IL or missing references)
			//IL_018f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0194: 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_01c7: 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_01ea: 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_01f5: Expected O, but got Unknown
			CreateLang();
			RazorPennyDef = ScriptableObject.CreateInstance<ItemDef>();
			((Object)RazorPennyDef).name = "AcanthiRazorPenny";
			RazorPennyDef.nameToken = "SEEKINTHEVOID_RAZORPENNY_NAME";
			RazorPennyDef.pickupToken = "SEEKINTHEVOID_RAZORPENNY_PICKUP";
			RazorPennyDef.descriptionToken = "SEEKINTHEVOID_RAZORPENNY_DESC";
			RazorPennyDef.loreToken = "SEEKINTHEVOID_RAZORPENNY_LORE";
			ItemDef razorPennyDef = RazorPennyDef;
			ItemTag[] array = new ItemTag[5];
			RuntimeHelpers.InitializeArray(array, (RuntimeFieldHandle)/*OpCode not supported: LdMemberToken*/);
			razorPennyDef.tags = (ItemTag[])(object)array;
			RazorPennyDef._itemTierDef = Addressables.LoadAssetAsync<ItemTierDef>((object)"RoR2/DLC1/Common/VoidTier1Def.asset").WaitForCompletion();
			MoneyGainPrefab = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/DLC1/GoldOnHurt/GainCoinsImpact.prefab").WaitForCompletion();
			RazorPennyDef.pickupIconSprite = SeekingTheVoid.SeekingTheVoidAssets.LoadAsset<Sprite>("RazorPennyIcon.png");
			RazorPennyDef.pickupModelPrefab = SeekingTheVoid.SeekingTheVoidAssets.LoadAsset<GameObject>("RazorPenny.prefab");
			ModelPanelParameters val = RazorPennyDef.pickupModelPrefab.AddComponent<ModelPanelParameters>();
			val.focusPointTransform = new GameObject("FocusPoint").transform;
			val.focusPointTransform.SetParent(RazorPennyDef.pickupModelPrefab.transform);
			val.cameraPositionTransform = new GameObject("CameraPosition").transform;
			val.cameraPositionTransform.SetParent(RazorPennyDef.pickupModelPrefab.transform);
			ItemAPI.Add(new CustomItem(RazorPennyDef, ItemDisplayTransformations()));
			ItemDef itemDef = Addressables.LoadAssetAsync<ItemDef>((object)"RoR2/DLC1/GoldOnHurt/GoldOnHurt.asset").WaitForCompletion();
			ItemRelationshipProvider val2 = ScriptableObject.CreateInstance<ItemRelationshipProvider>();
			((Object)val2).name = "RazorPennyContagiousItemProvider";
			val2.relationshipType = Addressables.LoadAssetAsync<ItemRelationshipType>((object)"RoR2/DLC1/Common/ContagiousItem.asset").WaitForCompletion();
			val2.relationships = (Pair[])(object)new Pair[1]
			{
				new Pair
				{
					itemDef1 = itemDef,
					itemDef2 = RazorPennyDef
				}
			};
			ContentAddition.AddItemRelationshipProvider(val2);
			object obj = <>O.<0>__RecalculateStatsAPI_GetStatCoefficients;
			if (obj == null)
			{
				StatHookEventHandler val3 = RecalculateStatsAPI_GetStatCoefficients;
				<>O.<0>__RecalculateStatsAPI_GetStatCoefficients = val3;
				obj = (object)val3;
			}
			RecalculateStatsAPI.GetStatCoefficients += (StatHookEventHandler)obj;
		}

		private static void RecalculateStatsAPI_GetStatCoefficients(CharacterBody sender, StatHookEventArgs args)
		{
			//IL_0021: Unknown result type (might be due to invalid IL or missing references)
			if (Object.op_Implicit((Object)(object)sender.inventory))
			{
				int itemCountEffective = sender.inventory.GetItemCountEffective(RazorPennyDef.itemIndex);
				if (itemCountEffective > 0)
				{
					args.critAdd += 7f;
				}
			}
		}

		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>("RazorPenny.prefab"),
					childName = "Backpack",
					localPos = new Vector3(-0.27356f, 0.2252f, -0.154f),
					localAngles = new Vector3(34.11581f, 55.09098f, 51.73f),
					localScale = new Vector3(0.3f, 0.3f, 0.3f)
				}
			});
			val.Add("mdlCommandoDualies", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
			{
				new ItemDisplayRule
				{
					ruleType = (ItemDisplayRuleType)0,
					followerPrefab = SeekingTheVoid.SeekingTheVoidAssets.LoadAsset<GameObject>("RazorPenny.prefab"),
					childName = "UpperArmL",
					localPos = new Vector3(0.07009f, 0.3995f, 0.02139f),
					localAngles = new Vector3(51.00508f, 227.0994f, 168.4932f),
					localScale = new Vector3(0.3f, 0.3f, 0.3f)
				}
			});
			val.Add("mdlHuntress", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
			{
				new ItemDisplayRule
				{
					ruleType = (ItemDisplayRuleType)0,
					followerPrefab = SeekingTheVoid.SeekingTheVoidAssets.LoadAsset<GameObject>("RazorPenny.prefab"),
					childName = "Pelvis",
					localPos = new Vector3(0.18543f, -0.04743f, 0.05304f),
					localAngles = new Vector3(17.80074f, 46.31346f, 263.4986f),
					localScale = new Vector3(0.3f, 0.3f, 0.3f)
				}
			});
			val.Add("mdlBandit2", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
			{
				new ItemDisplayRule
				{
					ruleType = (ItemDisplayRuleType)0,
					followerPrefab = SeekingTheVoid.SeekingTheVoidAssets.LoadAsset<GameObject>("RazorPenny.prefab"),
					childName = "Pelvis",
					localPos = new Vector3(0.18913f, -0.03552f, -0.06692f),
					localAngles = new Vector3(38.06308f, 52.30616f, 202.6207f),
					localScale = new Vector3(0.3f, 0.3f, 0.3f)
				}
			});
			val.Add("mdlToolbot", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
			{
				new ItemDisplayRule
				{
					ruleType = (ItemDisplayRuleType)0,
					followerPrefab = SeekingTheVoid.SeekingTheVoidAssets.LoadAsset<GameObject>("RazorPenny.prefab"),
					childName = "Hip",
					localPos = new Vector3(-0.68692f, -0.12292f, -0.76982f),
					localAngles = new Vector3(300.7301f, 125.6211f, 331.606f),
					localScale = new Vector3(3f, 3f, 3f)
				}
			});
			val.Add("mdlEngi", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
			{
				new ItemDisplayRule
				{
					ruleType = (ItemDisplayRuleType)0,
					followerPrefab = SeekingTheVoid.SeekingTheVoidAssets.LoadAsset<GameObject>("RazorPenny.prefab"),
					childName = "Chest",
					localPos = new Vector3(0.00181f, 0.34032f, -0.27679f),
					localAngles = new Vector3(42.79879f, 8.28229f, 3.33728f),
					localScale = new Vector3(0.3f, 0.3f, 0.3f)
				}
			});
			val.Add("mdlMage", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
			{
				new ItemDisplayRule
				{
					ruleType = (ItemDisplayRuleType)0,
					followerPrefab = SeekingTheVoid.SeekingTheVoidAssets.LoadAsset<GameObject>("RazorPenny.prefab"),
					childName = "Chest",
					localPos = new Vector3(0.22407f, 0.0553f, -0.22967f),
					localAngles = new Vector3(312.2103f, 292.5466f, 0.61502f),
					localScale = new Vector3(0.3f, 0.3f, 0.3f)
				}
			});
			val.Add("mdlMerc", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
			{
				new ItemDisplayRule
				{
					ruleType = (ItemDisplayRuleType)0,
					followerPrefab = SeekingTheVoid.SeekingTheVoidAssets.LoadAsset<GameObject>("RazorPenny.prefab"),
					childName = "UpperArmL",
					localPos = new Vector3(0.05402f, -0.01413f, -0.05768f),
					localAngles = new Vector3(324.4029f, 216.5361f, 155.4175f),
					localScale = new Vector3(0.3f, 0.3f, 0.3f)
				}
			});
			val.Add("mdlLoader", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
			{
				new ItemDisplayRule
				{
					ruleType = (ItemDisplayRuleType)0,
					followerPrefab = SeekingTheVoid.SeekingTheVoidAssets.LoadAsset<GameObject>("RazorPenny.prefab"),
					childName = "MechBase",
					localPos = new Vector3(-0.00482f, 0.48952f, -0.1405f),
					localAngles = new Vector3(20.56559f, 319.641f, 31.04041f),
					localScale = new Vector3(0.3f, 0.3f, 0.3f)
				}
			});
			val.Add("mdlCaptain", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
			{
				new ItemDisplayRule
				{
					ruleType = (ItemDisplayRuleType)0,
					followerPrefab = SeekingTheVoid.SeekingTheVoidAssets.LoadAsset<GameObject>("RazorPenny.prefab"),
					childName = "Stomach",
					localPos = new Vector3(-0.16847f, 0.12629f, 0.12408f),
					localAngles = new Vector3(285.865f, 163.129f, 53.06815f),
					localScale = new Vector3(0.3f, 0.3f, 0.3f)
				}
			});
			val.Add("mdlVoidSurvivor", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
			{
				new ItemDisplayRule
				{
					ruleType = (ItemDisplayRuleType)0,
					followerPrefab = SeekingTheVoid.SeekingTheVoidAssets.LoadAsset<GameObject>("RazorPenny.prefab"),
					childName = "ForeArmL",
					localPos = new Vector3(0.08556f, -0.01749f, 0.0192f),
					localAngles = new Vector3(11.09823f, 241.8175f, 28.03457f),
					localScale = new Vector3(0.3f, 0.3f, 0.3f)
				}
			});
			val.Add("mdlSeeker", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
			{
				new ItemDisplayRule
				{
					ruleType = (ItemDisplayRuleType)0,
					followerPrefab = SeekingTheVoid.SeekingTheVoidAssets.LoadAsset<GameObject>("RazorPenny.prefab"),
					childName = "LowerArmL",
					localPos = new Vector3(-0.0753f, 0.10456f, -0.02496f),
					localAngles = new Vector3(29.59687f, 87.57333f, 189.9938f),
					localScale = new Vector3(0.3f, 0.3f, 0.3f)
				}
			});
			val.Add("mdlDroneTech", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
			{
				new ItemDisplayRule
				{
					ruleType = (ItemDisplayRuleType)0,
					followerPrefab = SeekingTheVoid.SeekingTheVoidAssets.LoadAsset<GameObject>("RazorPenny.prefab"),
					childName = "LowerArmL",
					localPos = new Vector3(-0.09707f, 0.06112f, -0.0221f),
					localAngles = new Vector3(37.58004f, 69.06066f, 341.6664f),
					localScale = new Vector3(0.3f, 0.3f, 0.3f)
				}
			});
			val.Add("mdlDrifter", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
			{
				new ItemDisplayRule
				{
					ruleType = (ItemDisplayRuleType)0,
					followerPrefab = SeekingTheVoid.SeekingTheVoidAssets.LoadAsset<GameObject>("RazorPenny.prefab"),
					childName = "UpperArmR",
					localPos = new Vector3(-0.11092f, 0.14737f, 0.00301f),
					localAngles = new Vector3(301.7656f, 344.2759f, 125.7951f),
					localScale = new Vector3(0.075f, 0.075f, 0.075f)
				}
			});
			val.Add("mdlAcolyteUnion", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
			{
				new ItemDisplayRule
				{
					ruleType = (ItemDisplayRuleType)0,
					followerPrefab = SeekingTheVoid.SeekingTheVoidAssets.LoadAsset<GameObject>("RazorPenny.prefab"),
					childName = "HandR",
					localPos = new Vector3(0.13545f, 0.01318f, -0.1073f),
					localAngles = new Vector3(349.646f, 283.4493f, 328.2784f),
					localScale = new Vector3(0.3f, 0.3f, 0.3f)
				}
			});
			val.Add("mdlEnforcer", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
			{
				new ItemDisplayRule
				{
					ruleType = (ItemDisplayRuleType)0,
					followerPrefab = SeekingTheVoid.SeekingTheVoidAssets.LoadAsset<GameObject>("RazorPenny.prefab"),
					childName = "UpperArmL",
					localPos = new Vector3(-0.10996f, 0.00966f, 0.14652f),
					localAngles = new Vector3(24.57791f, 69.82506f, 32.16931f),
					localScale = new Vector3(0.3f, 0.3f, 0.3f)
				}
			});
			return val;
		}

		public static void CreateLang()
		{
			LanguageAPI.Add("SEEKINTHEVOID_RAZORPENNY_NAME", "Razor Penny");
			LanguageAPI.Add("SEEKINTHEVOID_RAZORPENNY_LORE", "<style=cMono>//--AUTO-TRANSCRIPTION FROM UES [Redacted]--//</style>\r\n\r\n\"Hey, doesn't this one look kinda familiar?\"\r\n\r\n\"What?\"\r\n\r\n\"I mean, I swear we've had coins like this before. In the past.\"\r\n\r\n\"It's a damn metal circle. Of course it's gonna look like a coin.\"\r\n\r\n\"Well yeah, but...\"\r\n\r\n\"And why the hell is it so sharp? You'll cut yourself on that.\"\r\n\r\n\"No I wont?\"\r\n\r\n\"...\"\r\n\r\n\"...Ah, shit...\"\r\n\r\n\"You cut yourself. Didn't you.\"");
			LanguageAPI.Add("SEEKINTHEVOID_RAZORPENNY_PICKUP", "Gain a small critical chance to strike. Critical strikes drop gold. <style=cIsVoid>Corrupts all Roll of Pennies</style>.");
			LanguageAPI.Add("SEEKINTHEVOID_RAZORPENNY_DESC", "Gain <style=cIsDamage>7%</style> <style=cIsDamage>critical strike</style> chance. Critical strikes drop <style=cIsUtility>1</style> <style=cStack>(+1 per stack)</style> gold. <style=cIsUtility>Scales over time.</style> <style=cIsVoid>Corrupts all Roll of Pennies</style>.");
		}
	}
	[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.*/)]
	[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 float gupSizeModifier;

		public static bool isToxicEnabled;

		public static bool isPennyEnabled;

		public static bool isPeriaptEnabled;

		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();
			}
			if (isPennyEnabled)
			{
				RazorPenny.Init();
			}
			if (isPeriaptEnabled)
			{
				ConversionPeriapt.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;
			isPennyEnabled = ((BaseUnityPlugin)this).Config.Bind<bool>("Razor Penny", "Enabled", true, "Is this item enabled?").Value;
			isPeriaptEnabled = ((BaseUnityPlugin)this).Config.Bind<bool>("Conversion Periapt", "Enabled", true, "Is this item enabled?").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;
			gupSizeModifier = ((BaseUnityPlugin)this).Config.Bind<float>("Straw-Pair-y", "Gup Size Modifier", 0.7f, "Multiplicative size value for the ally Gup.").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)
				//IL_0098: 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.itemIndex, 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()
			{