Decompiled source of LethalMinLibrary v1.1.0

NoteBoxz.LethalMinLibrary.dll

Decompiled 5 days ago
using System;
using System.Diagnostics;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.Versioning;
using System.Security;
using System.Security.Permissions;
using BepInEx;
using BepInEx.Logging;
using HarmonyLib;
using LethalMin;
using LethalMin.Library;
using Microsoft.CodeAnalysis;
using NoteBoxz.LethalMinLibrary.NetcodePatcher;
using Unity.Netcode;
using UnityEngine;

[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)]
[assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")]
[assembly: AssemblyCompany("NoteBoxz.LethalMinLibrary")]
[assembly: AssemblyConfiguration("Debug")]
[assembly: AssemblyFileVersion("1.1.0.0")]
[assembly: AssemblyInformationalVersion("1.1.0+04b93df4a231f3e64e42bffc12430c61503de9b5")]
[assembly: AssemblyProduct("LethalMinLibrary")]
[assembly: AssemblyTitle("NoteBoxz.LethalMinLibrary")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("1.1.0.0")]
[module: UnverifiableCode]
[module: RefSafetyRules(11)]
[module: NetcodePatchedAssembly]
internal class <Module>
{
	static <Module>()
	{
	}
}
namespace Microsoft.CodeAnalysis
{
	[CompilerGenerated]
	[Microsoft.CodeAnalysis.Embedded]
	internal sealed class EmbeddedAttribute : Attribute
	{
	}
}
namespace System.Runtime.CompilerServices
{
	[CompilerGenerated]
	[Microsoft.CodeAnalysis.Embedded]
	[AttributeUsage(AttributeTargets.Class | AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Event | AttributeTargets.Parameter | AttributeTargets.ReturnValue | AttributeTargets.GenericParameter, AllowMultiple = false, Inherited = false)]
	internal sealed class NullableAttribute : Attribute
	{
		public readonly byte[] NullableFlags;

		public NullableAttribute(byte P_0)
		{
			NullableFlags = new byte[1] { P_0 };
		}

		public NullableAttribute(byte[] P_0)
		{
			NullableFlags = P_0;
		}
	}
	[CompilerGenerated]
	[Microsoft.CodeAnalysis.Embedded]
	[AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Method | AttributeTargets.Interface | AttributeTargets.Delegate, AllowMultiple = false, Inherited = false)]
	internal sealed class NullableContextAttribute : Attribute
	{
		public readonly byte Flag;

		public NullableContextAttribute(byte P_0)
		{
			Flag = P_0;
		}
	}
	[CompilerGenerated]
	[Microsoft.CodeAnalysis.Embedded]
	[AttributeUsage(AttributeTargets.Module, AllowMultiple = false, Inherited = false)]
	internal sealed class RefSafetyRulesAttribute : Attribute
	{
		public readonly int Version;

		public RefSafetyRulesAttribute(int P_0)
		{
			Version = P_0;
		}
	}
}
namespace LethalMinLibrary
{
	[BepInPlugin("NoteBoxz.LethalMinLibrary", "LethalMinLibrary", "1.1.0")]
	[BepInDependency(/*Could not decode attribute arguments.*/)]
	public class LethalMinLibrary : BaseUnityPlugin
	{
		public static LethalMinLibrary Instance { get; private set; }

		internal static ManualLogSource Logger { get; private set; }

		internal static Harmony? Harmony { get; set; }

		private void Awake()
		{
			Logger = ((BaseUnityPlugin)this).Logger;
			Instance = this;
			Patch();
			NetcodePatcher();
			Logger.LogInfo((object)"NoteBoxz.LethalMinLibrary v1.1.0 has loaded!");
		}

		internal static void Patch()
		{
			//IL_000d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0012: Unknown result type (might be due to invalid IL or missing references)
			//IL_0018: Expected O, but got Unknown
			if (Harmony == null)
			{
				Harmony = new Harmony("NoteBoxz.LethalMinLibrary");
			}
			Logger.LogDebug((object)"Patching...");
			Harmony.PatchAll();
			Logger.LogMessage((object)"LethalMin Libarary: Sending Library Patch Call to LethalMin...");
			LethalMin.PatchLibraryTypes();
			Logger.LogDebug((object)"Finished patching!");
		}

		private void NetcodePatcher()
		{
			Type[] types = Assembly.GetExecutingAssembly().GetTypes();
			Type[] array = types;
			foreach (Type type in array)
			{
				MethodInfo[] methods = type.GetMethods(BindingFlags.Instance | BindingFlags.Static | BindingFlags.NonPublic);
				MethodInfo[] array2 = methods;
				foreach (MethodInfo methodInfo in array2)
				{
					object[] customAttributes = methodInfo.GetCustomAttributes(typeof(RuntimeInitializeOnLoadMethodAttribute), inherit: false);
					if (customAttributes.Length != 0)
					{
						methodInfo.Invoke(null, null);
					}
				}
			}
		}

		internal static void Unpatch()
		{
			Logger.LogDebug((object)"Unpatching...");
			Harmony? harmony = Harmony;
			if (harmony != null)
			{
				harmony.UnpatchSelf();
			}
			Logger.LogDebug((object)"Finished unpatching!");
		}
	}
	[CreateAssetMenu(menuName = "LethalMin Library/OnionFuseRules", order = 1)]
	public class OnionFuseRules : ScriptableObject
	{
		[Tooltip("An array of OnionType values representing the onions that can fuse together.")]
		public OnionType[] CompatibleOnions;

		[Header("Not Implemented")]
		[Tooltip("An array of Texture2D objects representing the textures to be used for fusing onions. If this is null, the textures will be generated automatically.")]
		public Texture2D[]? FuseTextures;

		[Tooltip("Determines whether onions should fuse in order or not.")]
		public bool FuseInOrder;

		[Tooltip("Specifies whether Fuseion textures should be generated automatically.")]
		public bool GenerateFuseionTextures;

		[Tooltip("The main onion prefab to be instantiated when fusing occurs.")]
		public GameObject MainOnionPrefab;

		[Tooltip("The path to the onion's mesh that will be replaced with the fused mesh.")]
		public string OnionMeshPath;

		[Tooltip("The fused onion meshes, (Note: The first mesh should be the 2 onion fused, the second should be the 3 onion fused, etc.)")]
		public GameObject[] OnionMeshes;

		[HideInInspector]
		public bool HasBeenRegistered;

		[HideInInspector]
		public int FuseID;

		[HideInInspector]
		public string version = "0.2.4";

		public bool CanFuseWith(OnionType onion)
		{
			OnionType onion2 = onion;
			return Array.Exists(CompatibleOnions, (OnionType element) => (Object)(object)element == (Object)(object)onion2);
		}
	}
	[CreateAssetMenu(menuName = "LethalMin Library/OnionType", order = 1)]
	public class OnionType : ScriptableObject
	{
		[Header("Distinguishing Information")]
		[Tooltip("The onion's color")]
		public Color OnionColor;

		[Tooltip("The Onion's texture")]
		public Texture2D? OnionTexture;

		public Material? OnionMaterial;

		[Tooltip("The name of the onion's type.")]
		public string TypeName = "";

		[Tooltip("Set by mod, do not change.")]
		[HideInInspector]
		public int OnionTypeID;

		[Header("Onion Stats")]
		[Tooltip("The types of pikmin that the onion can hold.")]
		public PikminType[] TypesCanHold;

		[Header("Spawning")]
		[Tooltip("Whether the onion should spawn in as an item.")]
		public bool SpawnInAsItem;

		[Tooltip("Whether the onion can create sprouts.")]
		public bool CanCreateSprouts = true;

		[Tooltip("The item mesh that the onion should spawn in as. (will be set to defult if empty)")]
		public GameObject OnionItemMeshPrefab;

		[Header("Unused / Not Implemented")]
		[Tooltip("The onion's custom script")]
		public NetworkBehaviour[]? OnionScript;

		[Tooltip("The onion's icon")]
		public Sprite? OnionIcon;

		[Tooltip("Whether the onion can be fused with other onions.")]
		public bool CanBeFused;

		[Tooltip("The fuse rules for the onion.")]
		public OnionFuseRules FuesingRules;

		[Tooltip("The onion's prefab. (will be set to defult if empty)")]
		public GameObject OnionPrefab;

		[HideInInspector]
		public bool HasBeenRegistered;

		[HideInInspector]
		public string version = "0.2.4";
	}
	[CreateAssetMenu(menuName = "LethalMin Library/PikminSoundPack", order = 1)]
	public class PikminSoundPack : ScriptableObject
	{
		[Tooltip("The sound the pikmin plays before attacking")]
		public AudioClip[] AttackVoiceLine = (AudioClip[])(object)new AudioClip[0];

		[Tooltip("The sound the pikmin plays when spawned in")]
		public AudioClip[] BornVoiceLine = (AudioClip[])(object)new AudioClip[0];

		[Tooltip("The sound the pikmin plays for exiting the onion")]
		public AudioClip[] ExitOnionVoiceLine = (AudioClip[])(object)new AudioClip[0];

		[Tooltip("The sound the pikmin plays for entering the onion")]
		public AudioClip[] EnterOnionVoiceLine = (AudioClip[])(object)new AudioClip[0];

		[Tooltip("The sound the pikmin plays when it spots an item")]
		public AudioClip[] ItemNoticeVoiceLine = (AudioClip[])(object)new AudioClip[0];

		[Tooltip("The sound the pikmin plays when it dies")]
		public AudioClip[] GhostVoiceLine = (AudioClip[])(object)new AudioClip[0];

		[Tooltip("The sound the pikmin plays while carrying an item")]
		public AudioClip[] CarryVoiceLine = (AudioClip[])(object)new AudioClip[0];

		[Tooltip("The sound the pikmin plays when losing their leader")]
		public AudioClip[] LostVoiceLine = (AudioClip[])(object)new AudioClip[0];

		[Tooltip("The sound the pikmin plays when they start carrying an item")]
		public AudioClip[] LiftVoiceLine = (AudioClip[])(object)new AudioClip[0];

		[Tooltip("The sound the pikmin plays when it gets hurt")]
		public AudioClip[] HurtVoiceLine = (AudioClip[])(object)new AudioClip[0];

		[Tooltip("The sound the pikmin plays when it gets Crushed")]
		public AudioClip[] CrushedVoiceLine = (AudioClip[])(object)new AudioClip[0];

		[Tooltip("The sound the pikmin plays when spotting a player")]
		public AudioClip[] NoticeVoiceLine = (AudioClip[])(object)new AudioClip[0];

		[Tooltip("The sound the pikmin plays when thrown")]
		public AudioClip[] ThrowVoiceLine = (AudioClip[])(object)new AudioClip[0];

		[Tooltip("The sound the pikmin plays when being held by a player")]
		public AudioClip[] HoldVoiceLine = (AudioClip[])(object)new AudioClip[0];

		[Tooltip("The sound the pikmin plays for compleating action")]
		public AudioClip[] YayVoiceLine = (AudioClip[])(object)new AudioClip[0];

		[Tooltip("the sound that plays when a pikmin is poisoned")]
		public AudioClip[] CoughVoiceLine = (AudioClip[])(object)new AudioClip[0];

		[Tooltip("the 'woosh' sound that plays when a pikmin is thrown, overridden by mod if left empty")]
		public AudioClip[] ThrowSFX = (AudioClip[])(object)new AudioClip[0];

		[Tooltip("the hit sound that plays when a pikmin lands a hit on an enemy, overridden by mod if left empty")]
		public AudioClip[] HitSFX = (AudioClip[])(object)new AudioClip[0];

		public bool FillEmptyWithDefault = false;
	}
	[CreateAssetMenu(menuName = "LethalMin Library/PikminType", order = 1)]
	public class PikminType : ScriptableObject
	{
		[Header("Distinguishing Information")]
		[Tooltip("The pikmin type's name")]
		public string PikminName = "";

		[Tooltip("The pikmin's color")]
		public Color PikminColor;

		[Tooltip("The pikmin's Secondary color")]
		public Color PikminColor2;

		[Tooltip("The pikmin's icon")]
		public Sprite? PikminIcon;

		[Tooltip("The pikmin's the Idle Glow Sprite")]
		public Sprite? PikminGlow;

		public bool ReplaceGlowFXwithDefult = true;

		public PikminMeshRefernces MeshRefernces = null;

		[Tooltip("The pikmin's custom AI scripts")]
		public NetworkBehaviour[]? PikminScripts;

		[Tooltip("In the pikmin's prefab.")]
		public GameObject? MeshPrefab;

		[Tooltip("If null, the sprout will use the mesh prefab")]
		public GameObject? SproutMeshPrefab;

		[Tooltip("Set by mod, do not change.")]
		[HideInInspector]
		public int PikminTypeID;

		[Tooltip("The pikmin's sound pack.")]
		public PikminSoundPack? soundPack;

		[Header("Pikmin Stats")]
		[Tooltip("The hazards the pikmin is resistant to")]
		public LibHazardType[] HazardsResistantTo = new LibHazardType[0];

		[Tooltip("Whether the pikmin can latch on to enemies")]
		public bool CanLatchOnToEnemies = true;

		[Tooltip("Whether the pikmin can carry items")]
		public bool CanCarryItems = true;

		[Tooltip("Whether the pikmin can attack without latching on")]
		public bool CanAttackWithoutLatchingOn = true;

		[Tooltip("The speeds of the pikmin at different growth stages")]
		public float[] Speeds = new float[3] { 2f, 5f, 9f };

		[Tooltip("The force with which the pikmin is thrown")]
		public float ThrowForce = 15f;

		[Tooltip("Multiplier for the pikmin's growth speed")]
		public float GrowSpeedMultipler = 1f;

		[Tooltip("Multiplier for the pikmin's throw force")]
		public float ThrowForceMultiplier = 1f;

		[Tooltip("Multiplier for the pikmin's damage")]
		public float DamageMultiplier = 1f;

		[Tooltip("Speed multipliers for different growth stages")]
		public float[] SpeedMultipliers = new float[3] { 1f, 1f, 1f };

		[Tooltip("The amount of damage the pikmin does when it attacks.")]
		public float DamageAmmount;

		[Tooltip("The amount of damage the pikmin does when it dies.")]
		public float DamageDeltUponDeath;

		[Tooltip("The ammount of distance between the pikmin and enemies where the enemy will be delt damage from the pikmin upon death.")]
		public float DeathDamageRange;

		[Tooltip("Normalizes the damage the pikmin does when it attacks, (i.e. 5 -> 0.05)")]
		public bool NormalizeDamage;

		[Tooltip("The pikmin's carry strength (i.e. one pikmin with the CarryStrength of 5 will count as 5 pikmin on the item)")]
		public int CarryStrength = 1;

		[Tooltip("The pikmin's carry speed")]
		public float CarrySpeed = 1f;

		[Tooltip("The ammount of distance the pikmin can detect items")]
		public float ItemDetectionRange = 5f;

		[Header("Spawning")]
		[Tooltip("Whether the pikmin can spawn in from Lethal Company's spawn system (Pikmin do not affect the power level)")]
		public bool SpawnsNaturally = true;

		[Tooltip("Whether the pikmin can spawn indoors")]
		public bool SpawnsIndoors;

		[Tooltip("Whether the pikmin can spawn outdoors")]
		public bool SpawnsOutdoors;

		[Tooltip("Whether the pikmin spawns as a sprout")]
		public bool SpawnsAsSprout;

		[Tooltip("Whether the pikmin uses a pikmin container")]
		public bool UsesPikminContainer;

		[Header("Other")]
		[Tooltip("Whether the pikmin instantly enters the onion")]
		public bool InstaEnterOnion;

		[Tooltip("Multiplier for the pikmin's spawn chance")]
		public float SpawnChanceMultiplier = 1f;

		[Tooltip("To Prevent pikmin from instantly dropping the item right outside of the ship, this varible is used to delay the drop in the ship buffer.")]
		public float DropItemInShipBuffer = 1f;

		[Tooltip("Minimum knockback resistance")]
		public int MinKnockBackResistance;

		[Tooltip("Maximum knockback resistance")]
		public int MaxKnockBackResistance;

		[Tooltip("Material for the pikmin")]
		public Material? PikminMaterial;

		[Tooltip("Material for the pikmin sprout")]
		public Material? SproutMaterial;

		[Tooltip("The type of onion this pikmin targets")]
		public OnionType TargetOnion;

		[Tooltip("The ammount of extra idle animations for the pikmin")]
		public int ExtraIdleAnimsCount = 0;

		[Tooltip("The amount of Yay animations for the pikmin")]
		public int YayAnimationsCount = 0;

		[Tooltip("The Attack animation for the pikmin")]
		public AnimationClip? AttackAnimation;

		[Tooltip("The Non-Latched Attack animation for the pikmin")]
		public AnimationClip? NonLatchAttackAnimation;

		[Tooltip("The frame of your Attack animaiton when the Pikmin should hit the enemy")]
		public int AttackAnimationHitFrame;

		[Tooltip("The frame of your Non-Latched Attack animaiton when the Pikmin should hit the enemy")]
		public int NonLatchAttackAnimationHitFrame;

		[Tooltip("The Pikmin's attack rate while latched onto an enemy in seconds (Set this to -1 if you have an animation)")]
		public float AttackRate = -1f;

		[Header("Beastiary")]
		[Tooltip("The Pikmin type's scientific name")]
		public string ScientificName = "Pikminus Pikminus";

		[Tooltip("The Pikmin type's beastiary segment")]
		[TextArea(2, 20)]
		public string beastiarySegment = "";

		[HideInInspector]
		public string version = "0.2.4";
	}
	public class PikminHarmTrigger : MonoBehaviour
	{
		public LibHazardType[] hazardTypes = new LibHazardType[1] { LibHazardType.Poison };

		public bool CanBeWhistledOutOff = true;

		public float MaxKillTimer = 3f;

		public float MinKillTimer = 1f;

		public void OnTriggerEnter(Collider other)
		{
			if (((Object)other).name == "PikminColision")
			{
				LibReciver.ApplyAffectToPikmin(((Component)other).gameObject, EnumConverter.Convert_Lib_HazardToLmHazard(hazardTypes), CanBeWhistledOutOff, MinKillTimer, MaxKillTimer);
			}
		}
	}
	public enum KillType
	{
		SnapTo,
		Knockback,
		Instant
	}
	public enum LibHazardType
	{
		Lethal,
		Poison,
		Fire,
		Electric,
		Water,
		Exsplosive,
		Spore,
		Crush
	}
	public class PikminKillTrigger : MonoBehaviour
	{
		[Header("Kill Settings")]
		public KillType killType;

		public float KillTimer;

		public LibHazardType[] hazardTypes = new LibHazardType[1];

		[Header("Knockback Settings")]
		public bool FixedForce = false;

		public float KnockbackForce = 10f;

		public Vector3 FixedKnockbackForce;

		public bool KillOnLanding;

		[Header("Snap To Settings")]
		public Transform SnapToTarget;

		[Header("Debug Settings")]
		public Color gizmoColor = Color.red;

		public float arrowScaleFactor = 0.5f;

		public float minArrowLength = 0.5f;

		public float maxArrowLength = 100f;

		public void OnTriggerEnter(Collider other)
		{
			//IL_00a0: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a5: Unknown result type (might be due to invalid IL or missing references)
			//IL_00aa: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b2: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ba: Unknown result type (might be due to invalid IL or missing references)
			//IL_0073: Unknown result type (might be due to invalid IL or missing references)
			if (!(((Object)other).name == "PikminColision"))
			{
				return;
			}
			switch (killType)
			{
			case KillType.SnapTo:
				LibReciver.KillPikmin(((Component)other).gameObject, SnapToTarget, KillTimer, EnumConverter.Convert_Lib_HazardToLmHazard(hazardTypes));
				break;
			case KillType.Knockback:
			{
				if (FixedForce)
				{
					LibReciver.KillPikmin(((Component)other).gameObject, FixedKnockbackForce, KillOnLanding, KillTimer, EnumConverter.Convert_Lib_HazardToLmHazard(hazardTypes));
					break;
				}
				Vector3 val = CalculateKnockbackDirection(((Component)other).transform.position);
				LibReciver.KillPikmin(((Component)other).gameObject, val * KnockbackForce, KillOnLanding, KillTimer, EnumConverter.Convert_Lib_HazardToLmHazard(hazardTypes));
				break;
			}
			case KillType.Instant:
				LibReciver.KillPikmin(((Component)other).gameObject, KillTimer, EnumConverter.Convert_Lib_HazardToLmHazard(hazardTypes));
				break;
			}
		}

		private void OnDrawGizmos()
		{
			//IL_0013: Unknown result type (might be due to invalid IL or missing references)
			//IL_0018: Unknown result type (might be due to invalid IL or missing references)
			if (killType == KillType.Knockback && FixedForce && FixedKnockbackForce != Vector3.zero)
			{
				DrawKnockbackArrow();
			}
			if (killType == KillType.Knockback && !FixedForce && KnockbackForce != 0f)
			{
				DrawKnockbackArrows();
			}
		}

		private Vector3 CalculateKnockbackDirection(Vector3 pikminPosition)
		{
			//IL_0001: Unknown result type (might be due to invalid IL or missing references)
			//IL_0008: Unknown result type (might be due to invalid IL or missing references)
			//IL_000d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0012: Unknown result type (might be due to invalid IL or missing references)
			//IL_0015: Unknown result type (might be due to invalid IL or missing references)
			//IL_001a: Unknown result type (might be due to invalid IL or missing references)
			//IL_001b: Unknown result type (might be due to invalid IL or missing references)
			//IL_001c: Unknown result type (might be due to invalid IL or missing references)
			//IL_001f: Unknown result type (might be due to invalid IL or missing references)
			Vector3 val = pikminPosition - ((Component)this).transform.position;
			return ((Vector3)(ref val)).normalized;
		}

		private void DrawKnockbackArrow()
		{
			//IL_0007: Unknown result type (might be due to invalid IL or missing references)
			//IL_000c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0031: Unknown result type (might be due to invalid IL or missing references)
			//IL_0038: Unknown result type (might be due to invalid IL or missing references)
			//IL_003e: 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_004a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0055: Unknown result type (might be due to invalid IL or missing references)
			//IL_0056: Unknown result type (might be due to invalid IL or missing references)
			//IL_005e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0063: Unknown result type (might be due to invalid IL or missing references)
			//IL_0077: Unknown result type (might be due to invalid IL or missing references)
			//IL_007c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0090: 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_009c: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a1: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b5: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ba: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ce: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d3: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d8: Unknown result type (might be due to invalid IL or missing references)
			//IL_00da: Unknown result type (might be due to invalid IL or missing references)
			//IL_00db: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e3: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ee: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ef: Unknown result type (might be due to invalid IL or missing references)
			//IL_00f8: Unknown result type (might be due to invalid IL or missing references)
			//IL_0104: Unknown result type (might be due to invalid IL or missing references)
			//IL_0109: Unknown result type (might be due to invalid IL or missing references)
			//IL_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_0136: Unknown result type (might be due to invalid IL or missing references)
			//IL_013b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0140: Unknown result type (might be due to invalid IL or missing references)
			//IL_0143: Unknown result type (might be due to invalid IL or missing references)
			//IL_0148: Unknown result type (might be due to invalid IL or missing references)
			//IL_015c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0161: Unknown result type (might be due to invalid IL or missing references)
			//IL_0175: Unknown result type (might be due to invalid IL or missing references)
			//IL_017a: Unknown result type (might be due to invalid IL or missing references)
			//IL_017f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0181: Unknown result type (might be due to invalid IL or missing references)
			//IL_0182: Unknown result type (might be due to invalid IL or missing references)
			//IL_018b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0196: Unknown result type (might be due to invalid IL or missing references)
			//IL_0197: Unknown result type (might be due to invalid IL or missing references)
			//IL_01a0: Unknown result type (might be due to invalid IL or missing references)
			Vector3 position = ((Component)this).transform.position;
			float num = Mathf.Clamp(((Vector3)(ref FixedKnockbackForce)).magnitude * arrowScaleFactor, minArrowLength, maxArrowLength);
			Vector3 val = position + ((Vector3)(ref FixedKnockbackForce)).normalized * num;
			Gizmos.color = gizmoColor;
			Gizmos.DrawLine(position, val);
			Vector3 val2 = Quaternion.LookRotation(FixedKnockbackForce) * Quaternion.Euler(0f, 200f, 0f) * new Vector3(0f, 0f, 1f);
			Vector3 val3 = Quaternion.LookRotation(FixedKnockbackForce) * Quaternion.Euler(0f, 160f, 0f) * new Vector3(0f, 0f, 1f);
			Gizmos.DrawRay(val, val2 * (num * 0.25f));
			Gizmos.DrawRay(val, val3 * (num * 0.25f));
			Vector3 val4 = Quaternion.LookRotation(FixedKnockbackForce) * Quaternion.Euler(0f, 90f, 12f) * new Vector3(1f, 0f, 0f);
			Vector3 val5 = Quaternion.LookRotation(FixedKnockbackForce) * Quaternion.Euler(0f, 90f, -12f) * new Vector3(1f, 0f, 0f);
			Gizmos.DrawRay(val, val4 * (num * 0.25f));
			Gizmos.DrawRay(val, val5 * (num * 0.25f));
		}

		private void DrawKnockbackArrows()
		{
			//IL_0009: Unknown result type (might be due to invalid IL or missing references)
			//IL_000e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0015: Unknown result type (might be due to invalid IL or missing references)
			//IL_001a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0021: Unknown result type (might be due to invalid IL or missing references)
			//IL_0026: Unknown result type (might be due to invalid IL or missing references)
			//IL_002d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0032: Unknown result type (might be due to invalid IL or missing references)
			//IL_0039: Unknown result type (might be due to invalid IL or missing references)
			//IL_003e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0045: Unknown result type (might be due to invalid IL or missing references)
			//IL_004a: 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_0069: Unknown result type (might be due to invalid IL or missing references)
			//IL_006e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0071: Unknown result type (might be due to invalid IL or missing references)
			//IL_0073: Unknown result type (might be due to invalid IL or missing references)
			//IL_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_007e: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a0: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a2: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a6: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ab: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b0: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b3: Unknown result type (might be due to invalid IL or missing references)
			//IL_00be: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c0: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c8: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ca: 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_00e3: Unknown result type (might be due to invalid IL or missing references)
			//IL_00f7: Unknown result type (might be due to invalid IL or missing references)
			//IL_00fc: Unknown result type (might be due to invalid IL or missing references)
			//IL_0101: Unknown result type (might be due to invalid IL or missing references)
			//IL_0103: Unknown result type (might be due to invalid IL or missing references)
			//IL_0105: Unknown result type (might be due to invalid IL or missing references)
			//IL_0119: Unknown result type (might be due to invalid IL or missing references)
			//IL_011e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0132: 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_013c: Unknown result type (might be due to invalid IL or missing references)
			//IL_013e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0140: Unknown result type (might be due to invalid IL or missing references)
			//IL_014a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0155: Unknown result type (might be due to invalid IL or missing references)
			//IL_0157: Unknown result type (might be due to invalid IL or missing references)
			//IL_0161: Unknown result type (might be due to invalid IL or missing references)
			//IL_016c: Unknown result type (might be due to invalid IL or missing references)
			//IL_016e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0182: Unknown result type (might be due to invalid IL or missing references)
			//IL_0187: Unknown result type (might be due to invalid IL or missing references)
			//IL_019b: Unknown result type (might be due to invalid IL or missing references)
			//IL_01a0: Unknown result type (might be due to invalid IL or missing references)
			//IL_01a5: Unknown result type (might be due to invalid IL or missing references)
			//IL_01a7: Unknown result type (might be due to invalid IL or missing references)
			//IL_01a9: Unknown result type (might be due to invalid IL or missing references)
			//IL_01bd: Unknown result type (might be due to invalid IL or missing references)
			//IL_01c2: Unknown result type (might be due to invalid IL or missing references)
			//IL_01d6: Unknown result type (might be due to invalid IL or missing references)
			//IL_01db: Unknown result type (might be due to invalid IL or missing references)
			//IL_01e0: Unknown result type (might be due to invalid IL or missing references)
			//IL_01e2: Unknown result type (might be due to invalid IL or missing references)
			//IL_01e4: Unknown result type (might be due to invalid IL or missing references)
			//IL_01ee: Unknown result type (might be due to invalid IL or missing references)
			//IL_01f9: Unknown result type (might be due to invalid IL or missing references)
			//IL_01fb: Unknown result type (might be due to invalid IL or missing references)
			//IL_0205: Unknown result type (might be due to invalid IL or missing references)
			Vector3[] array = (Vector3[])(object)new Vector3[6]
			{
				Vector3.forward,
				Vector3.back,
				Vector3.left,
				Vector3.right,
				Vector3.up,
				Vector3.down
			};
			Vector3[] array2 = array;
			foreach (Vector3 val in array2)
			{
				Vector3 position = ((Component)this).transform.position;
				Vector3 val2 = CalculateKnockbackDirection(position + val);
				float num = Mathf.Clamp(KnockbackForce * arrowScaleFactor, minArrowLength, maxArrowLength);
				Vector3 val3 = position + val2 * num;
				Gizmos.color = gizmoColor;
				Gizmos.DrawLine(position, val3);
				Vector3 val4 = Quaternion.LookRotation(val2) * Quaternion.Euler(0f, 200f, 0f) * new Vector3(0f, 0f, 1f);
				Vector3 val5 = Quaternion.LookRotation(val2) * Quaternion.Euler(0f, 160f, 0f) * new Vector3(0f, 0f, 1f);
				Gizmos.DrawRay(val3, val4 * (num * 0.25f));
				Gizmos.DrawRay(val3, val5 * (num * 0.25f));
				Vector3 val6 = Quaternion.LookRotation(val2) * Quaternion.Euler(0f, 90f, 12f) * new Vector3(1f, 0f, 0f);
				Vector3 val7 = Quaternion.LookRotation(val2) * Quaternion.Euler(0f, 90f, -12f) * new Vector3(1f, 0f, 0f);
				Gizmos.DrawRay(val3, val6 * (num * 0.25f));
				Gizmos.DrawRay(val3, val7 * (num * 0.25f));
			}
		}
	}
	public class PikminMeshRefernces : MonoBehaviour
	{
		public GameObject PikminGlowRoot;

		[Tooltip("The Gameobjects of the pikmin's plants in the pikmin's prefab.")]
		public GameObject[] PikminGrowthStagePlants;

		public Animator PikminAnimator;
	}
	public static class MyPluginInfo
	{
		public const string PLUGIN_GUID = "NoteBoxz.LethalMinLibrary";

		public const string PLUGIN_NAME = "LethalMinLibrary";

		public const string PLUGIN_VERSION = "1.1.0";
	}
}
namespace NoteBoxz.LethalMinLibrary.NetcodePatcher
{
	[AttributeUsage(AttributeTargets.Module)]
	internal class NetcodePatchedAssemblyAttribute : Attribute
	{
	}
}