Decompiled source of BoatAdditions v1.4.2

BoatAdditions.dll

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

[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)]
[assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")]
[assembly: AssemblyCompany("blacks7ar")]
[assembly: AssemblyConfiguration("Release")]
[assembly: AssemblyFileVersion("1.4.2")]
[assembly: AssemblyInformationalVersion("1.0.0+fc3becea89c4301a659b4df269683f778b549739")]
[assembly: AssemblyProduct("BoatAdditions")]
[assembly: AssemblyTitle("BoatAdditions")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("1.4.2.0")]
[module: UnverifiableCode]
[module: RefSafetyRules(11)]
namespace Microsoft.CodeAnalysis
{
	[CompilerGenerated]
	[Microsoft.CodeAnalysis.Embedded]
	internal sealed class EmbeddedAttribute : Attribute
	{
	}
}
namespace System.Runtime.CompilerServices
{
	[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 BoatAdditions
{
	[BepInPlugin("blacks7ar.BoatAdditions", "BoatAdditions", "1.4.2")]
	public class Plugin : BaseUnityPlugin
	{
		private const string modGUID = "blacks7ar.BoatAdditions";

		public const string modName = "BoatAdditions";

		public const string modAuthor = "blacks7ar";

		public const string modVersion = "1.4.2";

		public const string modLink = "https://valheim.thunderstore.io/package/blacks7ar/BoatAdditions/";

		private static readonly Harmony _harmony = new Harmony("blacks7ar.BoatAdditions");

		private static readonly ConfigSync _configSync = new ConfigSync("blacks7ar.BoatAdditions")
		{
			DisplayName = "BoatAdditions",
			CurrentVersion = "1.4.2",
			MinimumRequiredVersion = "1.4.2"
		};

		private static ConfigEntry<BoatAdditions.Functions.Toggle> _serverConfigLocked;

		public static ConfigEntry<KeyboardShortcut> _anchorKey;

		public static ConfigEntry<BoatAdditions.Functions.Toggle> _enableCustomSail;

		public static Plugin _Instance;

		public ConfigEntry<T> config<T>(string group, string name, T value, ConfigDescription description, bool synchronizedConfig = true)
		{
			//IL_002a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0030: Expected O, but got Unknown
			ConfigDescription val = new ConfigDescription(description.Description + (synchronizedConfig ? " [Synced with Server]" : " [Not Synced with Server]"), description.AcceptableValues, description.Tags);
			ConfigEntry<T> val2 = ((BaseUnityPlugin)this).Config.Bind<T>(group, name, value, val);
			_configSync.AddConfigEntry<T>(val2).SynchronizedConfig = synchronizedConfig;
			return val2;
		}

		public void Awake()
		{
			//IL_002e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0039: Expected O, but got Unknown
			//IL_006e: Unknown result type (might be due to invalid IL or missing references)
			_Instance = this;
			((BaseUnityPlugin)this).Config.SaveOnConfigSet = false;
			Localizer.Load();
			_serverConfigLocked = config("1- ServerSync", "Lock Configuration", BoatAdditions.Functions.Toggle.On, new ConfigDescription("If On, the configuration is locked and can be changed by server admins only.", (AcceptableValueBase)null, Array.Empty<object>()));
			_configSync.AddLockingConfigEntry<BoatAdditions.Functions.Toggle>(_serverConfigLocked);
			_anchorKey = ((BaseUnityPlugin)this).Config.Bind<KeyboardShortcut>("2- General", "Anchor Key", new KeyboardShortcut((KeyCode)102, (KeyCode[])(object)new KeyCode[1] { (KeyCode)304 }), "Hotkey combination to raise or drop anchors while hovering your mouse to the rudder");
			_enableCustomSail = ((BaseUnityPlugin)this).Config.Bind<BoatAdditions.Functions.Toggle>("2- General", "Enable Custom Sail", BoatAdditions.Functions.Toggle.Off, "Enable/Disable my custom sail (blacks7ar logo).\n(NOTE: Needs a Logout to take effect.)");
			ConfigSetup.Init();
			SetupPrefabs.Init();
			Assembly executingAssembly = Assembly.GetExecutingAssembly();
			_harmony.PatchAll(executingAssembly);
			((BaseUnityPlugin)this).Config.SaveOnConfigSet = true;
			((BaseUnityPlugin)this).Config.Save();
		}

		public void OnDestroy()
		{
			((BaseUnityPlugin)this).Config.Save();
		}
	}
}
namespace BoatAdditions.Patches
{
	[HarmonyPatch(typeof(Container), "Awake")]
	public class ContainerPatch
	{
		private static void Postfix(Container __instance, ref Inventory ___m_inventory)
		{
			if (!((Object)(object)__instance == (Object)null) && ___m_inventory != null)
			{
				ref int width = ref ___m_inventory.m_width;
				ref int height = ref ___m_inventory.m_height;
				switch (__instance.m_name)
				{
				case "$bba_outrigger_karve_storage":
					width = ConfigSetup._outriggerKarveContainerWidth.Value;
					height = ConfigSetup._outriggerKarveContainerHeight.Value;
					break;
				case "$bba_outrigger_skeid":
					width = ConfigSetup._outriggerSkeidContainerWidth.Value;
					height = ConfigSetup._outriggerSkeidContainerHeight.Value;
					break;
				case "$bba_snekkja_storage":
					width = ConfigSetup._snekkjaContainerWidth.Value;
					height = ConfigSetup._snekkjaContainerHeight.Value;
					break;
				case "$bba_largeraft_cargo":
					width = ConfigSetup._largeRaftContainerWidth.Value;
					height = ConfigSetup._largeRaftContainerHeight.Value;
					break;
				case "$bba_knarr_storage":
					width = ConfigSetup._knarrContainerWidth.Value;
					height = ConfigSetup._knarrContainerHeight.Value;
					break;
				}
			}
		}
	}
	[HarmonyPatch]
	public class ShipControlsPatch
	{
		private static readonly int _isAnchored = StringExtensionMethods.GetStableHashCode("IsAnchored");

		[HarmonyPostfix]
		[HarmonyPatch(typeof(ShipControlls), "Awake")]
		public static void Awake_Postfix(ShipControlls __instance)
		{
			if ((Object)(object)__instance == (Object)null || (Object)(object)__instance.m_ship == (Object)null || (Object)(object)__instance.m_nview == (Object)null || !__instance.m_nview.IsValid())
			{
				return;
			}
			Rigidbody componentInParent = ((Component)__instance).gameObject.GetComponentInParent<Rigidbody>();
			Piece componentInParent2 = ((Component)__instance).gameObject.GetComponentInParent<Piece>();
			if (!((Object)(object)componentInParent == (Object)null) && !((Object)(object)componentInParent2 == (Object)null) && (componentInParent2.m_name.Contains("$ship_long") || componentInParent2.m_name.Contains("$ship_karve") || componentInParent2.m_name.Contains("$ship_raft") || componentInParent2.m_name.Contains("longship_ashlands") || componentInParent2.m_name.StartsWith("$bba_")))
			{
				if (__instance.m_nview.GetZDO().GetBool(_isAnchored, false))
				{
					componentInParent.constraints = (RigidbodyConstraints)10;
				}
				else
				{
					componentInParent.constraints = (RigidbodyConstraints)0;
				}
			}
		}

		[HarmonyPostfix]
		[HarmonyPatch(typeof(ShipControlls), "GetHoverText")]
		public static void GetHoverText_Postfix(ShipControlls __instance, ref string __result)
		{
			//IL_0037: Unknown result type (might be due to invalid IL or missing references)
			//IL_003c: Unknown result type (might be due to invalid IL or missing references)
			//IL_013c: Unknown result type (might be due to invalid IL or missing references)
			//IL_00fa: Unknown result type (might be due to invalid IL or missing references)
			//IL_0156: 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_0217: Unknown result type (might be due to invalid IL or missing references)
			//IL_0218: Unknown result type (might be due to invalid IL or missing references)
			//IL_0232: Unknown result type (might be due to invalid IL or missing references)
			//IL_0233: Unknown result type (might be due to invalid IL or missing references)
			//IL_025a: Unknown result type (might be due to invalid IL or missing references)
			//IL_01a3: Unknown result type (might be due to invalid IL or missing references)
			//IL_01a4: Unknown result type (might be due to invalid IL or missing references)
			//IL_01be: Unknown result type (might be due to invalid IL or missing references)
			//IL_01bf: Unknown result type (might be due to invalid IL or missing references)
			//IL_01e7: Unknown result type (might be due to invalid IL or missing references)
			if ((Object)(object)__instance == (Object)null || (Object)(object)__instance.m_nview == (Object)null || !__instance.m_nview.IsValid())
			{
				return;
			}
			Rigidbody componentInParent = ((Component)__instance).gameObject.GetComponentInParent<Rigidbody>();
			Vector3 position = ((Component)__instance).transform.position;
			Piece componentInParent2 = ((Component)__instance).gameObject.GetComponentInParent<Piece>();
			if ((Object)(object)componentInParent == (Object)null || (Object)(object)componentInParent2 == (Object)null || (!componentInParent2.m_name.Contains("$ship_long") && !componentInParent2.m_name.Contains("$ship_karve") && !componentInParent2.m_name.Contains("$ship_raft") && !componentInParent2.m_name.Contains("longship_ashlands") && !componentInParent2.m_name.StartsWith("$bba_")))
			{
				return;
			}
			if (!__instance.m_nview.GetZDO().GetBool(_isAnchored, false))
			{
				if (!__instance.InUseDistance((Humanoid)(object)Player.m_localPlayer))
				{
					__result = Localization.instance.Localize("<color=grey>$piece_toofar</color>");
				}
				__result += $"\n[<color=yellow><b>{Plugin._anchorKey.Value}</b></color>] Drop Anchors";
			}
			else
			{
				if (!__instance.InUseDistance((Humanoid)(object)Player.m_localPlayer))
				{
					__result = Localization.instance.Localize("<color=grey>$piece_toofar</color>");
				}
				__result += $"\n[<color=yellow><b>{Plugin._anchorKey.Value}</b></color>] Raise Anchors";
			}
			KeyboardShortcut value = Plugin._anchorKey.Value;
			if (((KeyboardShortcut)(ref value)).IsDown())
			{
				if (!__instance.m_nview.GetZDO().GetBool(_isAnchored, false))
				{
					__instance.m_nview.GetZDO().Set(_isAnchored, true);
					Object.Instantiate<GameObject>(ZNetScene.instance.GetPrefab("vfx_Place_wood_pole"), position, Quaternion.identity);
					Object.Instantiate<GameObject>(ZNetScene.instance.GetPrefab("sfx_build_hammer_metal"), position, Quaternion.identity);
					componentInParent.constraints = (RigidbodyConstraints)10;
					ZDOMan.instance.ForceSendZDO(ZNetView.Everybody, __instance.m_nview.GetZDO().m_uid);
				}
				else
				{
					__instance.m_nview.GetZDO().Set(_isAnchored, false);
					Object.Instantiate<GameObject>(ZNetScene.instance.GetPrefab("vfx_Place_wood_pole"), position, Quaternion.identity);
					Object.Instantiate<GameObject>(ZNetScene.instance.GetPrefab("sfx_build_hammer_metal"), position, Quaternion.identity);
					componentInParent.constraints = (RigidbodyConstraints)0;
					ZDOMan.instance.ForceSendZDO(ZNetView.Everybody, __instance.m_nview.GetZDO().m_uid);
				}
			}
		}
	}
	[HarmonyPatch]
	public class ShipPatch
	{
		[HarmonyPostfix]
		[HarmonyPatch(typeof(Ship), "Awake")]
		public static void Awake_Postfix(Ship __instance)
		{
			if ((Object)(object)__instance == (Object)null || !__instance.m_nview.IsValid())
			{
				return;
			}
			string text = ((Component)__instance).gameObject.GetComponent<Piece>()?.m_name;
			if (text == null)
			{
				return;
			}
			switch (text.Length)
			{
			case 10:
				switch (text[5])
				{
				case 'c':
					if (text == "$bba_canoe")
					{
						ShipStats.Canoe(__instance);
					}
					break;
				case 'k':
					if (text == "$bba_knarr")
					{
						ShipStats.Knarr(__instance);
						Helper.CustomSail(((Component)__instance).gameObject);
					}
					break;
				}
				break;
			case 20:
				switch (text[15])
				{
				case 'k':
					if (text == "$bba_outrigger_karve")
					{
						ShipStats.OutriggerKarve(__instance);
						Helper.CustomSail(((Component)__instance).gameObject);
					}
					break;
				case 's':
					if (text == "$bba_outrigger_skeid")
					{
						ShipStats.OutriggerSkeid(__instance);
						Helper.CustomSail(((Component)__instance).gameObject);
					}
					break;
				}
				break;
			case 12:
				switch (text[5])
				{
				case 's':
					if (text == "$bba_snekkja")
					{
						ShipStats.Snekkja(__instance);
						Helper.CustomSail(((Component)__instance).gameObject);
					}
					break;
				case 'd':
					if (text == "$bba_drakker")
					{
						ShipStats.Drakker(__instance);
					}
					break;
				}
				break;
			case 14:
				if (text == "$bba_largeraft")
				{
					ShipStats.LargeRaft(__instance);
				}
				break;
			case 13:
				if (text == "$bba_kvalsund")
				{
					ShipStats.Kvalsund(__instance);
				}
				break;
			}
		}

		[HarmonyPrefix]
		[HarmonyPatch(typeof(Ship), "RPC_Forward")]
		public static void RpcForward_Prefix(Ship __instance, long sender)
		{
			//IL_005d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0063: Invalid comparison between Unknown and I4
			//IL_0068: Unknown result type (might be due to invalid IL or missing references)
			if (!((Object)(object)__instance == (Object)null) && !((Object)(object)((Component)__instance).gameObject == (Object)null) && !((Object)(object)__instance.m_nview == (Object)null) && __instance.m_nview.IsValid())
			{
				Piece component = ((Component)__instance).gameObject.GetComponent<Piece>();
				if (!((Object)(object)component == (Object)null) && !(component.m_name != "$bba_canoe") && (int)__instance.m_speed != 1)
				{
					__instance.m_speed = (Speed)0;
				}
			}
		}
	}
	[HarmonyPatch(typeof(ZNetScene), "Awake")]
	public class ZNetScenePatch
	{
		public static void Postfix(ZNetScene __instance)
		{
			//IL_0000: Unknown result type (might be due to invalid IL or missing references)
			//IL_0005: Unknown result type (might be due to invalid IL or missing references)
			Scene activeScene = SceneManager.GetActiveScene();
			if (((Scene)(ref activeScene)).name != "start")
			{
				return;
			}
			foreach (GameObject prefab in __instance.m_prefabs)
			{
				switch (((Object)prefab).name)
				{
				case "BBA_Canoe":
					ShipStats.Canoe(prefab.GetComponent<Ship>());
					break;
				case "BBA_Knarr":
					ShipStats.Knarr(prefab.GetComponent<Ship>());
					break;
				case "BBA_LargeRaft":
					ShipStats.LargeRaft(prefab.GetComponent<Ship>());
					break;
				case "BBA_OutriggerKarve":
					ShipStats.OutriggerKarve(prefab.GetComponent<Ship>());
					break;
				case "BBA_OutriggerSkeid":
					ShipStats.OutriggerSkeid(prefab.GetComponent<Ship>());
					break;
				case "BBA_Snekkja":
					ShipStats.Snekkja(prefab.GetComponent<Ship>());
					break;
				case "$bba_drakker":
					ShipStats.Drakker(prefab.GetComponent<Ship>());
					break;
				case "$bba_kvalsund":
					ShipStats.Kvalsund(prefab.GetComponent<Ship>());
					break;
				}
			}
		}
	}
}
namespace BoatAdditions.Functions
{
	public class Anchor : MonoBehaviour, Hoverable
	{
		public Ship m_ship;

		public float m_maxUseRange = 10f;

		public ZNetView m_nview;

		public Rigidbody m_rigidBody;

		private static readonly int m_isAnchored = StringExtensionMethods.GetStableHashCode("IsAnchored");

		public void Awake()
		{
			m_nview = ((Component)m_ship).GetComponent<ZNetView>();
			m_rigidBody = ((Component)m_ship).GetComponent<Rigidbody>();
			m_nview.Register<long>("UseAnchor", (Action<long, long>)RPC_UseAnchor);
			m_nview.Register<bool>("RequestAnchor", (Action<long, bool>)RPC_RequestAnchor);
			if (m_nview.IsValid())
			{
				if (m_nview.GetZDO().GetBool(m_isAnchored, false))
				{
					m_rigidBody.constraints = (RigidbodyConstraints)10;
				}
				else
				{
					m_rigidBody.constraints = (RigidbodyConstraints)0;
				}
			}
		}

		public bool UseItem(Humanoid user, ItemData item)
		{
			return false;
		}

		public string GetHoverText()
		{
			//IL_0005: 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_00bc: 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)
			KeyboardShortcut value = Plugin._anchorKey.Value;
			if (((KeyboardShortcut)(ref value)).IsDown())
			{
				m_nview.InvokeRPC("UseAnchor", new object[1] { ((ZDOID)(ref ((Character)Player.m_localPlayer).m_nview.GetZDO().m_uid)).UserID });
			}
			if (!m_nview.GetZDO().GetBool(m_isAnchored, false))
			{
				if (!InUseDistance((Humanoid)(object)Player.m_localPlayer))
				{
					return "";
				}
				return Localization.instance.Localize($"\n[<color=yellow><b>{Plugin._anchorKey.Value}</b></color>] $drop_anchors");
			}
			if (!InUseDistance((Humanoid)(object)Player.m_localPlayer))
			{
				return "";
			}
			return Localization.instance.Localize($"\n[<color=yellow><b>{Plugin._anchorKey.Value}</b></color>] $raise_anchors");
		}

		public string GetHoverName()
		{
			return "";
		}

		public void RPC_UseAnchor(long sender, long playerID)
		{
			if (m_nview.IsOwner() && m_ship.IsPlayerInBoat(playerID))
			{
				if (GetUser() == playerID || !HaveValidUser())
				{
					m_nview.InvokeRPC(sender, "RequestAnchor", new object[1] { true });
				}
				else
				{
					m_nview.InvokeRPC(sender, "RequestAnchor", new object[1] { false });
				}
			}
		}

		public void RPC_RequestAnchor(long sender, bool granted)
		{
			//IL_00e3: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e8: Unknown result type (might be due to invalid IL or missing references)
			//IL_0112: Unknown result type (might be due to invalid IL or missing references)
			//IL_0117: 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_0066: 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)
			if (Object.op_Implicit((Object)(object)Player.m_localPlayer) && granted)
			{
				if (!m_nview.GetZDO().GetBool(m_isAnchored, false))
				{
					m_nview.GetZDO().Set(m_isAnchored, true);
					Object.Instantiate<GameObject>(ZNetScene.instance.GetPrefab("vfx_Place_wood_pole"), ((Component)m_ship.m_shipControlls).transform.position, Quaternion.identity);
					Object.Instantiate<GameObject>(ZNetScene.instance.GetPrefab("sfx_build_hammer_metal"), ((Component)m_ship.m_shipControlls).transform.position, Quaternion.identity);
					m_rigidBody.constraints = (RigidbodyConstraints)10;
				}
				else
				{
					m_nview.GetZDO().Set(m_isAnchored, false);
					Object.Instantiate<GameObject>(ZNetScene.instance.GetPrefab("vfx_Place_wood_pole"), ((Component)m_ship.m_shipControlls).transform.position, Quaternion.identity);
					Object.Instantiate<GameObject>(ZNetScene.instance.GetPrefab("sfx_build_hammer_metal"), ((Component)m_ship.m_shipControlls).transform.position, Quaternion.identity);
					m_rigidBody.constraints = (RigidbodyConstraints)0;
				}
			}
		}

		public bool HaveValidUser()
		{
			long user = GetUser();
			if (user != 0L)
			{
				return m_ship.IsPlayerInBoat(user);
			}
			return false;
		}

		public long GetUser()
		{
			if (m_nview.IsValid())
			{
				return m_nview.GetZDO().GetLong(ZDOVars.s_user, 0L);
			}
			return 0L;
		}

		public bool InUseDistance(Humanoid human)
		{
			//IL_0006: 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)
			return Vector3.Distance(((Component)human).transform.position, m_ship.m_shipControlls.m_attachPoint.position) < m_maxUseRange;
		}
	}
	public static class ConfigSetup
	{
		public static ConfigEntry<float> _canoeWaterLevelOffset;

		public static ConfigEntry<float> _canoeForceDistance;

		public static ConfigEntry<float> _canoeForce;

		public static ConfigEntry<float> _canoeDamping;

		public static ConfigEntry<float> _canoeDampingSideway;

		public static ConfigEntry<float> _canoeDampingForward;

		public static ConfigEntry<float> _canoeAngularDamping;

		public static ConfigEntry<float> _canoeDisableLevel;

		public static ConfigEntry<float> _canoeRudderSpeed;

		public static ConfigEntry<float> _canoeStearForceOffset;

		public static ConfigEntry<float> _canoeStearForce;

		public static ConfigEntry<float> _canoeStearVelForceFactor;

		public static ConfigEntry<float> _canoeBackwardForce;

		public static ConfigEntry<float> _canoeRudderRotationMax;

		public static ConfigEntry<float> _canoeMinWaterImpactForce;

		public static ConfigEntry<float> _canoeMinWaterImpactInterval;

		public static ConfigEntry<float> _canoeWaterImpactDamage;

		public static ConfigEntry<float> _canoeUpsideDownDmgInterval;

		public static ConfigEntry<float> _canoeUpsideDownDmg;

		public static ConfigEntry<float> _canoeHealthPoints;

		public static ConfigEntry<int> _knarrContainerWidth;

		public static ConfigEntry<int> _knarrContainerHeight;

		public static ConfigEntry<float> _knarrWaterLevelOffset;

		public static ConfigEntry<float> _knarrForceDistance;

		public static ConfigEntry<float> _knarrForce;

		public static ConfigEntry<float> _knarrDamping;

		public static ConfigEntry<float> _knarrDampingSideway;

		public static ConfigEntry<float> _knarrDampingForward;

		public static ConfigEntry<float> _knarrAngularDamping;

		public static ConfigEntry<float> _knarrDisableLevel;

		public static ConfigEntry<float> _knarrSailForceOffset;

		public static ConfigEntry<float> _knarrSailForceFactor;

		public static ConfigEntry<float> _knarrRudderSpeed;

		public static ConfigEntry<float> _knarrStearForceOffset;

		public static ConfigEntry<float> _knarrStearForce;

		public static ConfigEntry<float> _knarrStearVelForceFactor;

		public static ConfigEntry<float> _knarrBackwardForce;

		public static ConfigEntry<float> _knarrRudderRotationMax;

		public static ConfigEntry<float> _knarrMinWaterImpactForce;

		public static ConfigEntry<float> _knarrMinWaterImpactInterval;

		public static ConfigEntry<float> _knarrWaterImpactDamage;

		public static ConfigEntry<float> _knarrUpsideDownDmgInterval;

		public static ConfigEntry<float> _knarrUpsideDownDmg;

		public static ConfigEntry<float> _knarrHealthPoints;

		public static ConfigEntry<int> _largeRaftContainerWidth;

		public static ConfigEntry<int> _largeRaftContainerHeight;

		public static ConfigEntry<float> _largeRaftWaterLevelOffset;

		public static ConfigEntry<float> _largeRaftForceDistance;

		public static ConfigEntry<float> _largeRaftForce;

		public static ConfigEntry<float> _largeRaftDamping;

		public static ConfigEntry<float> _largeRaftDampingSideway;

		public static ConfigEntry<float> _largeRaftDampingForward;

		public static ConfigEntry<float> _largeRaftAngularDamping;

		public static ConfigEntry<float> _largeRaftDisableLevel;

		public static ConfigEntry<float> _largeRaftSailForceOffset;

		public static ConfigEntry<float> _largeRaftSailForceFactor;

		public static ConfigEntry<float> _largeRaftRudderSpeed;

		public static ConfigEntry<float> _largeRaftStearForceOffset;

		public static ConfigEntry<float> _largeRaftStearForce;

		public static ConfigEntry<float> _largeRaftStearVelForceFactor;

		public static ConfigEntry<float> _largeRaftBackwardForce;

		public static ConfigEntry<float> _largeRaftRudderRotationMax;

		public static ConfigEntry<float> _largeRaftMinWaterImpactForce;

		public static ConfigEntry<float> _largeRaftMinWaterImpactInterval;

		public static ConfigEntry<float> _largeRaftWaterImpactDamage;

		public static ConfigEntry<float> _largeRaftUpsideDownDmgInterval;

		public static ConfigEntry<float> _largeRaftUpsideDownDmg;

		public static ConfigEntry<float> _largeRaftHealthPoints;

		public static ConfigEntry<int> _outriggerKarveContainerWidth;

		public static ConfigEntry<int> _outriggerKarveContainerHeight;

		public static ConfigEntry<float> _outriggerKarveWaterLevelOffset;

		public static ConfigEntry<float> _outriggerKarveForceDistance;

		public static ConfigEntry<float> _outriggerKarveForce;

		public static ConfigEntry<float> _outriggerKarveDamping;

		public static ConfigEntry<float> _outriggerKarveDampingSideway;

		public static ConfigEntry<float> _outriggerKarveDampingForward;

		public static ConfigEntry<float> _outriggerKarveAngularDamping;

		public static ConfigEntry<float> _outriggerKarveDisableLevel;

		public static ConfigEntry<float> _outriggerKarveSailForceOffset;

		public static ConfigEntry<float> _outriggerKarveSailForceFactor;

		public static ConfigEntry<float> _outriggerKarveRudderSpeed;

		public static ConfigEntry<float> _outriggerKarveStearForceOffset;

		public static ConfigEntry<float> _outriggerKarveStearForce;

		public static ConfigEntry<float> _outriggerKarveStearVelForceFactor;

		public static ConfigEntry<float> _outriggerKarveBackwardForce;

		public static ConfigEntry<float> _outriggerKarveRudderRotationMax;

		public static ConfigEntry<float> _outriggerKarveMinWaterImpactForce;

		public static ConfigEntry<float> _outriggerKarveMinWaterImpactInterval;

		public static ConfigEntry<float> _outriggerKarveWaterImpactDamage;

		public static ConfigEntry<float> _outriggerKarveUpsideDownDmgInterval;

		public static ConfigEntry<float> _outriggerKarveUpsideDownDmg;

		public static ConfigEntry<float> _outriggerKarveHealthPoints;

		public static ConfigEntry<int> _outriggerSkeidContainerWidth;

		public static ConfigEntry<int> _outriggerSkeidContainerHeight;

		public static ConfigEntry<float> _outriggerSkeidWaterLevelOffset;

		public static ConfigEntry<float> _outriggerSkeidForceDistance;

		public static ConfigEntry<float> _outriggerSkeidForce;

		public static ConfigEntry<float> _outriggerSkeidDamping;

		public static ConfigEntry<float> _outriggerSkeidDampingSideway;

		public static ConfigEntry<float> _outriggerSkeidDampingForward;

		public static ConfigEntry<float> _outriggerSkeidAngularDamping;

		public static ConfigEntry<float> _outriggerSkeidDisableLevel;

		public static ConfigEntry<float> _outriggerSkeidSailForceOffset;

		public static ConfigEntry<float> _outriggerSkeidSailForceFactor;

		public static ConfigEntry<float> _outriggerSkeidRudderSpeed;

		public static ConfigEntry<float> _outriggerSkeidStearForceOffset;

		public static ConfigEntry<float> _outriggerSkeidStearForce;

		public static ConfigEntry<float> _outriggerSkeidStearVelForceFactor;

		public static ConfigEntry<float> _outriggerSkeidBackwardForce;

		public static ConfigEntry<float> _outriggerSkeidRudderRotationMax;

		public static ConfigEntry<float> _outriggerSkeidMinWaterImpactForce;

		public static ConfigEntry<float> _outriggerSkeidMinWaterImpactInterval;

		public static ConfigEntry<float> _outriggerSkeidWaterImpactDamage;

		public static ConfigEntry<float> _outriggerSkeidUpsideDownDmgInterval;

		public static ConfigEntry<float> _outriggerSkeidUpsideDownDmg;

		public static ConfigEntry<float> _outriggerSkeidHealthPoints;

		public static ConfigEntry<int> _snekkjaContainerWidth;

		public static ConfigEntry<int> _snekkjaContainerHeight;

		public static ConfigEntry<float> _snekkjaWaterLevelOffset;

		public static ConfigEntry<float> _snekkjaForceDistance;

		public static ConfigEntry<float> _snekkjaForce;

		public static ConfigEntry<float> _snekkjaDamping;

		public static ConfigEntry<float> _snekkjaDampingSideway;

		public static ConfigEntry<float> _snekkjaDampingForward;

		public static ConfigEntry<float> _snekkjaAngularDamping;

		public static ConfigEntry<float> _snekkjaDisableLevel;

		public static ConfigEntry<float> _snekkjaSailForceOffset;

		public static ConfigEntry<float> _snekkjaSailForceFactor;

		public static ConfigEntry<float> _snekkjaRudderSpeed;

		public static ConfigEntry<float> _snekkjaStearForceOffset;

		public static ConfigEntry<float> _snekkjaStearForce;

		public static ConfigEntry<float> _snekkjaStearVelForceFactor;

		public static ConfigEntry<float> _snekkjaBackwardForce;

		public static ConfigEntry<float> _snekkjaRudderRotationMax;

		public static ConfigEntry<float> _snekkjaMinWaterImpactForce;

		public static ConfigEntry<float> _snekkjaMinWaterImpactInterval;

		public static ConfigEntry<float> _snekkjaWaterImpactDamage;

		public static ConfigEntry<float> _snekkjaUpsideDownDmgInterval;

		public static ConfigEntry<float> _snekkjaUpsideDownDmg;

		public static ConfigEntry<float> _snekkjaHealthPoints;

		public static ConfigEntry<int> _drakkerContainerWidth;

		public static ConfigEntry<int> _drakkerContainerHeight;

		public static ConfigEntry<float> _drakkerWaterLevelOffset;

		public static ConfigEntry<float> _drakkerForceDistance;

		public static ConfigEntry<float> _drakkerForce;

		public static ConfigEntry<float> _drakkerDamping;

		public static ConfigEntry<float> _drakkerDampingSideway;

		public static ConfigEntry<float> _drakkerDampingForward;

		public static ConfigEntry<float> _drakkerAngularDamping;

		public static ConfigEntry<float> _drakkerDisableLevel;

		public static ConfigEntry<float> _drakkerSailForceOffset;

		public static ConfigEntry<float> _drakkerSailForceFactor;

		public static ConfigEntry<float> _drakkerRudderSpeed;

		public static ConfigEntry<float> _drakkerStearForceOffset;

		public static ConfigEntry<float> _drakkerStearForce;

		public static ConfigEntry<float> _drakkerStearVelForceFactor;

		public static ConfigEntry<float> _drakkerBackwardForce;

		public static ConfigEntry<float> _drakkerRudderRotationMax;

		public static ConfigEntry<float> _drakkerMinWaterImpactForce;

		public static ConfigEntry<float> _drakkerMinWaterImpactInterval;

		public static ConfigEntry<float> _drakkerWaterImpactDamage;

		public static ConfigEntry<float> _drakkerUpsideDownDmgInterval;

		public static ConfigEntry<float> _drakkerUpsideDownDmg;

		public static ConfigEntry<float> _drakkerHealthPoints;

		public static ConfigEntry<int> _kvalsundContainerWidth;

		public static ConfigEntry<int> _kvalsundContainerHeight;

		public static ConfigEntry<float> _kvalsundWaterLevelOffset;

		public static ConfigEntry<float> _kvalsundForceDistance;

		public static ConfigEntry<float> _kvalsundForce;

		public static ConfigEntry<float> _kvalsundDamping;

		public static ConfigEntry<float> _kvalsundDampingSideway;

		public static ConfigEntry<float> _kvalsundDampingForward;

		public static ConfigEntry<float> _kvalsundAngularDamping;

		public static ConfigEntry<float> _kvalsundDisableLevel;

		public static ConfigEntry<float> _kvalsundSailForceOffset;

		public static ConfigEntry<float> _kvalsundSailForceFactor;

		public static ConfigEntry<float> _kvalsundRudderSpeed;

		public static ConfigEntry<float> _kvalsundStearForceOffset;

		public static ConfigEntry<float> _kvalsundStearForce;

		public static ConfigEntry<float> _kvalsundStearVelForceFactor;

		public static ConfigEntry<float> _kvalsundBackwardForce;

		public static ConfigEntry<float> _kvalsundRudderRotationMax;

		public static ConfigEntry<float> _kvalsundMinWaterImpactForce;

		public static ConfigEntry<float> _kvalsundMinWaterImpactInterval;

		public static ConfigEntry<float> _kvalsundWaterImpactDamage;

		public static ConfigEntry<float> _kvalsundUpsideDownDmgInterval;

		public static ConfigEntry<float> _kvalsundUpsideDownDmg;

		public static ConfigEntry<float> _kvalsundHealthPoints;

		public static void Init()
		{
			Canoe();
			Knarr();
			LargeRaft();
			OutriggerKarve();
			OutriggerSkeid();
			Snekkja();
			Drakker();
			Kvalsund();
		}

		private static void Drakker()
		{
			//IL_001f: Unknown result type (might be due to invalid IL or missing references)
			//IL_002a: Expected O, but got Unknown
			//IL_004e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0059: Expected O, but got Unknown
			//IL_007d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0088: Expected O, but got Unknown
			//IL_00ac: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b7: Expected O, but got Unknown
			//IL_00db: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e6: Expected O, but got Unknown
			//IL_010a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0115: Expected O, but got Unknown
			//IL_0139: Unknown result type (might be due to invalid IL or missing references)
			//IL_0144: Expected O, but got Unknown
			//IL_0168: Unknown result type (might be due to invalid IL or missing references)
			//IL_0173: Expected O, but got Unknown
			//IL_0197: Unknown result type (might be due to invalid IL or missing references)
			//IL_01a2: Expected O, but got Unknown
			//IL_01c6: Unknown result type (might be due to invalid IL or missing references)
			//IL_01d1: Expected O, but got Unknown
			//IL_01f5: Unknown result type (might be due to invalid IL or missing references)
			//IL_0200: Expected O, but got Unknown
			//IL_0224: Unknown result type (might be due to invalid IL or missing references)
			//IL_022f: Expected O, but got Unknown
			//IL_0253: Unknown result type (might be due to invalid IL or missing references)
			//IL_025e: Expected O, but got Unknown
			//IL_0282: Unknown result type (might be due to invalid IL or missing references)
			//IL_028d: Expected O, but got Unknown
			//IL_02b1: Unknown result type (might be due to invalid IL or missing references)
			//IL_02bc: Expected O, but got Unknown
			//IL_02e0: Unknown result type (might be due to invalid IL or missing references)
			//IL_02eb: Expected O, but got Unknown
			//IL_030f: Unknown result type (might be due to invalid IL or missing references)
			//IL_031a: Expected O, but got Unknown
			//IL_033e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0349: Expected O, but got Unknown
			//IL_036d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0378: Expected O, but got Unknown
			//IL_039c: Unknown result type (might be due to invalid IL or missing references)
			//IL_03a7: Expected O, but got Unknown
			//IL_03cb: Unknown result type (might be due to invalid IL or missing references)
			//IL_03d6: Expected O, but got Unknown
			//IL_03fa: Unknown result type (might be due to invalid IL or missing references)
			//IL_0405: Expected O, but got Unknown
			_drakkerWaterLevelOffset = Plugin._Instance.config("Drakker", "Water Level Offset", 2.1f, new ConfigDescription(string.Empty, (AcceptableValueBase)null, Array.Empty<object>()));
			_drakkerForceDistance = Plugin._Instance.config("Drakker", "Force Distance", 3f, new ConfigDescription(string.Empty, (AcceptableValueBase)null, Array.Empty<object>()));
			_drakkerForce = Plugin._Instance.config("Drakker", "Force", 2f, new ConfigDescription(string.Empty, (AcceptableValueBase)null, Array.Empty<object>()));
			_drakkerDamping = Plugin._Instance.config("Drakker", "Damping", 0.1f, new ConfigDescription(string.Empty, (AcceptableValueBase)null, Array.Empty<object>()));
			_drakkerDampingSideway = Plugin._Instance.config("Drakker", "Damping Sideway", 0.5f, new ConfigDescription(string.Empty, (AcceptableValueBase)null, Array.Empty<object>()));
			_drakkerDampingForward = Plugin._Instance.config("Drakker", "Damping Forward", 0.002f, new ConfigDescription(string.Empty, (AcceptableValueBase)null, Array.Empty<object>()));
			_drakkerAngularDamping = Plugin._Instance.config("Drakker", "Angular Damping", 0.95f, new ConfigDescription(string.Empty, (AcceptableValueBase)null, Array.Empty<object>()));
			_drakkerDisableLevel = Plugin._Instance.config("Drakker", "Disable Level", -0.5f, new ConfigDescription(string.Empty, (AcceptableValueBase)null, Array.Empty<object>()));
			_drakkerSailForceOffset = Plugin._Instance.config("Drakker", "Sail Force Offset", 2f, new ConfigDescription(string.Empty, (AcceptableValueBase)null, Array.Empty<object>()));
			_drakkerSailForceFactor = Plugin._Instance.config("Drakker", "Sail Force Factor", 0.4f, new ConfigDescription(string.Empty, (AcceptableValueBase)null, Array.Empty<object>()));
			_drakkerRudderSpeed = Plugin._Instance.config("Drakker", "Rudder Speed", 2f, new ConfigDescription(string.Empty, (AcceptableValueBase)null, Array.Empty<object>()));
			_drakkerStearForceOffset = Plugin._Instance.config("Drakker", "Stear Force Offset", -22f, new ConfigDescription(string.Empty, (AcceptableValueBase)null, Array.Empty<object>()));
			_drakkerStearForce = Plugin._Instance.config("Drakker", "Stear Force", 1.75f, new ConfigDescription(string.Empty, (AcceptableValueBase)null, Array.Empty<object>()));
			_drakkerStearVelForceFactor = Plugin._Instance.config("Drakker", "Stear Vel Force Factor", 1.05f, new ConfigDescription(string.Empty, (AcceptableValueBase)null, Array.Empty<object>()));
			_drakkerBackwardForce = Plugin._Instance.config("Drakker", "Backward Force", 0.25f, new ConfigDescription(string.Empty, (AcceptableValueBase)null, Array.Empty<object>()));
			_drakkerRudderRotationMax = Plugin._Instance.config("Drakker", "Rudder Rotation Max", 45f, new ConfigDescription(string.Empty, (AcceptableValueBase)null, Array.Empty<object>()));
			_drakkerMinWaterImpactForce = Plugin._Instance.config("Drakker", "Min Water Impact Force", 5f, new ConfigDescription(string.Empty, (AcceptableValueBase)null, Array.Empty<object>()));
			_drakkerMinWaterImpactInterval = Plugin._Instance.config("Drakker", "Min Water Impact Interval", 2f, new ConfigDescription(string.Empty, (AcceptableValueBase)null, Array.Empty<object>()));
			_drakkerWaterImpactDamage = Plugin._Instance.config("Drakker", "Water Impact Damage", 10f, new ConfigDescription(string.Empty, (AcceptableValueBase)null, Array.Empty<object>()));
			_drakkerUpsideDownDmgInterval = Plugin._Instance.config("Drakker", "Upside Down Dmg Interval", 1f, new ConfigDescription(string.Empty, (AcceptableValueBase)null, Array.Empty<object>()));
			_drakkerUpsideDownDmg = Plugin._Instance.config("Drakker", "Upside Down Dmg", 20f, new ConfigDescription(string.Empty, (AcceptableValueBase)null, Array.Empty<object>()));
			_drakkerHealthPoints = Plugin._Instance.config("Drakker", "Health Points", 3000f, new ConfigDescription(string.Empty, (AcceptableValueBase)null, Array.Empty<object>()));
		}

		private static void Kvalsund()
		{
			//IL_001f: Unknown result type (might be due to invalid IL or missing references)
			//IL_002a: Expected O, but got Unknown
			//IL_004e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0059: Expected O, but got Unknown
			//IL_007d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0088: Expected O, but got Unknown
			//IL_00ac: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b7: Expected O, but got Unknown
			//IL_00db: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e6: Expected O, but got Unknown
			//IL_010a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0115: Expected O, but got Unknown
			//IL_0139: Unknown result type (might be due to invalid IL or missing references)
			//IL_0144: Expected O, but got Unknown
			//IL_0168: Unknown result type (might be due to invalid IL or missing references)
			//IL_0173: Expected O, but got Unknown
			//IL_0197: Unknown result type (might be due to invalid IL or missing references)
			//IL_01a2: Expected O, but got Unknown
			//IL_01c6: Unknown result type (might be due to invalid IL or missing references)
			//IL_01d1: Expected O, but got Unknown
			//IL_01f5: Unknown result type (might be due to invalid IL or missing references)
			//IL_0200: Expected O, but got Unknown
			//IL_0224: Unknown result type (might be due to invalid IL or missing references)
			//IL_022f: Expected O, but got Unknown
			//IL_0253: Unknown result type (might be due to invalid IL or missing references)
			//IL_025e: Expected O, but got Unknown
			//IL_0282: Unknown result type (might be due to invalid IL or missing references)
			//IL_028d: Expected O, but got Unknown
			//IL_02b1: Unknown result type (might be due to invalid IL or missing references)
			//IL_02bc: Expected O, but got Unknown
			//IL_02e0: Unknown result type (might be due to invalid IL or missing references)
			//IL_02eb: Expected O, but got Unknown
			//IL_030f: Unknown result type (might be due to invalid IL or missing references)
			//IL_031a: Expected O, but got Unknown
			//IL_033e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0349: Expected O, but got Unknown
			//IL_036d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0378: Expected O, but got Unknown
			//IL_039c: Unknown result type (might be due to invalid IL or missing references)
			//IL_03a7: Expected O, but got Unknown
			//IL_03cb: Unknown result type (might be due to invalid IL or missing references)
			//IL_03d6: Expected O, but got Unknown
			//IL_03fa: Unknown result type (might be due to invalid IL or missing references)
			//IL_0405: Expected O, but got Unknown
			_kvalsundWaterLevelOffset = Plugin._Instance.config("Kvalsund", "Water Level Offset", 2.1f, new ConfigDescription(string.Empty, (AcceptableValueBase)null, Array.Empty<object>()));
			_kvalsundForceDistance = Plugin._Instance.config("Kvalsund", "Force Distance", 3f, new ConfigDescription(string.Empty, (AcceptableValueBase)null, Array.Empty<object>()));
			_kvalsundForce = Plugin._Instance.config("Kvalsund", "Force", 2f, new ConfigDescription(string.Empty, (AcceptableValueBase)null, Array.Empty<object>()));
			_kvalsundDamping = Plugin._Instance.config("Kvalsund", "Damping", 0.1f, new ConfigDescription(string.Empty, (AcceptableValueBase)null, Array.Empty<object>()));
			_kvalsundDampingSideway = Plugin._Instance.config("Kvalsund", "Damping Sideway", 0.5f, new ConfigDescription(string.Empty, (AcceptableValueBase)null, Array.Empty<object>()));
			_kvalsundDampingForward = Plugin._Instance.config("Kvalsund", "Damping Forward", 0.002f, new ConfigDescription(string.Empty, (AcceptableValueBase)null, Array.Empty<object>()));
			_kvalsundAngularDamping = Plugin._Instance.config("Kvalsund", "Angular Damping", 0.95f, new ConfigDescription(string.Empty, (AcceptableValueBase)null, Array.Empty<object>()));
			_kvalsundDisableLevel = Plugin._Instance.config("Kvalsund", "Disable Level", -0.5f, new ConfigDescription(string.Empty, (AcceptableValueBase)null, Array.Empty<object>()));
			_kvalsundSailForceOffset = Plugin._Instance.config("Kvalsund", "Sail Force Offset", 2f, new ConfigDescription(string.Empty, (AcceptableValueBase)null, Array.Empty<object>()));
			_kvalsundSailForceFactor = Plugin._Instance.config("Kvalsund", "Sail Force Factor", 0.3f, new ConfigDescription(string.Empty, (AcceptableValueBase)null, Array.Empty<object>()));
			_kvalsundRudderSpeed = Plugin._Instance.config("Kvalsund", "Rudder Speed", 2f, new ConfigDescription(string.Empty, (AcceptableValueBase)null, Array.Empty<object>()));
			_kvalsundStearForceOffset = Plugin._Instance.config("Kvalsund", "Stear Force Offset", -22f, new ConfigDescription(string.Empty, (AcceptableValueBase)null, Array.Empty<object>()));
			_kvalsundStearForce = Plugin._Instance.config("Kvalsund", "Stear Force", 1.75f, new ConfigDescription(string.Empty, (AcceptableValueBase)null, Array.Empty<object>()));
			_kvalsundStearVelForceFactor = Plugin._Instance.config("Kvalsund", "Stear Vel Force Factor", 1.05f, new ConfigDescription(string.Empty, (AcceptableValueBase)null, Array.Empty<object>()));
			_kvalsundBackwardForce = Plugin._Instance.config("Kvalsund", "Backward Force", 0.25f, new ConfigDescription(string.Empty, (AcceptableValueBase)null, Array.Empty<object>()));
			_kvalsundRudderRotationMax = Plugin._Instance.config("Kvalsund", "Rudder Rotation Max", 45f, new ConfigDescription(string.Empty, (AcceptableValueBase)null, Array.Empty<object>()));
			_kvalsundMinWaterImpactForce = Plugin._Instance.config("Kvalsund", "Min Water Impact Force", 5f, new ConfigDescription(string.Empty, (AcceptableValueBase)null, Array.Empty<object>()));
			_kvalsundMinWaterImpactInterval = Plugin._Instance.config("Kvalsund", "Min Water Impact Interval", 2f, new ConfigDescription(string.Empty, (AcceptableValueBase)null, Array.Empty<object>()));
			_kvalsundWaterImpactDamage = Plugin._Instance.config("Kvalsund", "Water Impact Damage", 10f, new ConfigDescription(string.Empty, (AcceptableValueBase)null, Array.Empty<object>()));
			_kvalsundUpsideDownDmgInterval = Plugin._Instance.config("Kvalsund", "Upside Down Dmg Interval", 1f, new ConfigDescription(string.Empty, (AcceptableValueBase)null, Array.Empty<object>()));
			_kvalsundUpsideDownDmg = Plugin._Instance.config("Kvalsund", "Upside Down Dmg", 20f, new ConfigDescription(string.Empty, (AcceptableValueBase)null, Array.Empty<object>()));
			_kvalsundHealthPoints = Plugin._Instance.config("Kvalsund", "Health Points", 3000f, new ConfigDescription(string.Empty, (AcceptableValueBase)null, Array.Empty<object>()));
		}

		private static void Canoe()
		{
			//IL_001f: Unknown result type (might be due to invalid IL or missing references)
			//IL_002a: Expected O, but got Unknown
			//IL_004e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0059: Expected O, but got Unknown
			//IL_007d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0088: Expected O, but got Unknown
			//IL_00ac: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b7: Expected O, but got Unknown
			//IL_00db: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e6: Expected O, but got Unknown
			//IL_010a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0115: Expected O, but got Unknown
			//IL_0139: Unknown result type (might be due to invalid IL or missing references)
			//IL_0144: Expected O, but got Unknown
			//IL_0168: Unknown result type (might be due to invalid IL or missing references)
			//IL_0173: Expected O, but got Unknown
			//IL_0197: Unknown result type (might be due to invalid IL or missing references)
			//IL_01a2: Expected O, but got Unknown
			//IL_01c6: Unknown result type (might be due to invalid IL or missing references)
			//IL_01d1: Expected O, but got Unknown
			//IL_01f5: Unknown result type (might be due to invalid IL or missing references)
			//IL_0200: Expected O, but got Unknown
			//IL_0224: Unknown result type (might be due to invalid IL or missing references)
			//IL_022f: Expected O, but got Unknown
			//IL_0253: Unknown result type (might be due to invalid IL or missing references)
			//IL_025e: Expected O, but got Unknown
			//IL_0282: Unknown result type (might be due to invalid IL or missing references)
			//IL_028d: Expected O, but got Unknown
			//IL_02b1: Unknown result type (might be due to invalid IL or missing references)
			//IL_02bc: Expected O, but got Unknown
			//IL_02e0: Unknown result type (might be due to invalid IL or missing references)
			//IL_02eb: Expected O, but got Unknown
			//IL_030f: Unknown result type (might be due to invalid IL or missing references)
			//IL_031a: Expected O, but got Unknown
			//IL_033e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0349: Expected O, but got Unknown
			//IL_036d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0378: Expected O, but got Unknown
			//IL_03aa: Unknown result type (might be due to invalid IL or missing references)
			//IL_03b5: Expected O, but got Unknown
			_canoeWaterLevelOffset = Plugin._Instance.config("Canoe", "Water Level Offset", 1.2f, new ConfigDescription(string.Empty, (AcceptableValueBase)null, Array.Empty<object>()));
			_canoeForceDistance = Plugin._Instance.config("Canoe", "Force Distance", 2f, new ConfigDescription(string.Empty, (AcceptableValueBase)null, Array.Empty<object>()));
			_canoeForce = Plugin._Instance.config("Canoe", "Force", 1f, new ConfigDescription(string.Empty, (AcceptableValueBase)null, Array.Empty<object>()));
			_canoeDamping = Plugin._Instance.config("Canoe", "Damping", 0.05f, new ConfigDescription(string.Empty, (AcceptableValueBase)null, Array.Empty<object>()));
			_canoeDampingSideway = Plugin._Instance.config("Canoe", "Damping Sideway", 0.15f, new ConfigDescription(string.Empty, (AcceptableValueBase)null, Array.Empty<object>()));
			_canoeDampingForward = Plugin._Instance.config("Canoe", "Damping Forward", 0.001f, new ConfigDescription(string.Empty, (AcceptableValueBase)null, Array.Empty<object>()));
			_canoeAngularDamping = Plugin._Instance.config("Canoe", "Angular Damping", 0.05f, new ConfigDescription(string.Empty, (AcceptableValueBase)null, Array.Empty<object>()));
			_canoeDisableLevel = Plugin._Instance.config("Canoe", "Disable Level", -0.5f, new ConfigDescription(string.Empty, (AcceptableValueBase)null, Array.Empty<object>()));
			_canoeRudderSpeed = Plugin._Instance.config("Canoe", "Rudder Speed", 1.8f, new ConfigDescription(string.Empty, (AcceptableValueBase)null, Array.Empty<object>()));
			_canoeStearForceOffset = Plugin._Instance.config("Canoe", "Steer Force Offset", -3.5f, new ConfigDescription(string.Empty, (AcceptableValueBase)null, Array.Empty<object>()));
			_canoeStearForce = Plugin._Instance.config("Canoe", "Steer Force", 0.2f, new ConfigDescription(string.Empty, (AcceptableValueBase)null, Array.Empty<object>()));
			_canoeStearVelForceFactor = Plugin._Instance.config("Canoe", "Steer Vel Force Factor", 0.18f, new ConfigDescription(string.Empty, (AcceptableValueBase)null, Array.Empty<object>()));
			_canoeBackwardForce = Plugin._Instance.config("Canoe", "Backward Force", 0.2f, new ConfigDescription(string.Empty, (AcceptableValueBase)null, Array.Empty<object>()));
			_canoeRudderRotationMax = Plugin._Instance.config("Canoe", "Rudder Rotation Max", 45f, new ConfigDescription(string.Empty, (AcceptableValueBase)null, Array.Empty<object>()));
			_canoeMinWaterImpactForce = Plugin._Instance.config("Canoe", "Min Water Impact Force", 4f, new ConfigDescription(string.Empty, (AcceptableValueBase)null, Array.Empty<object>()));
			_canoeMinWaterImpactInterval = Plugin._Instance.config("Canoe", "Min Water Impact Interval", 2f, new ConfigDescription(string.Empty, (AcceptableValueBase)null, Array.Empty<object>()));
			_canoeWaterImpactDamage = Plugin._Instance.config("Canoe", "Water Impact Damage", 10f, new ConfigDescription(string.Empty, (AcceptableValueBase)null, Array.Empty<object>()));
			_canoeUpsideDownDmgInterval = Plugin._Instance.config("Canoe", "Upside Down Dmg Interval", 1f, new ConfigDescription(string.Empty, (AcceptableValueBase)null, Array.Empty<object>()));
			_canoeUpsideDownDmg = Plugin._Instance.config("Canoe", "Upside Down Dmg", 20f, new ConfigDescription(string.Empty, (AcceptableValueBase)null, Array.Empty<object>()));
			_canoeHealthPoints = Plugin._Instance.config("Canoe", "Health Points", 200f, new ConfigDescription("Canoes health points.", (AcceptableValueBase)(object)new AcceptableValueRange<float>(1f, 5000f), Array.Empty<object>()));
		}

		private static void Knarr()
		{
			//IL_0021: Unknown result type (might be due to invalid IL or missing references)
			//IL_002c: Expected O, but got Unknown
			//IL_0052: Unknown result type (might be due to invalid IL or missing references)
			//IL_005d: Expected O, but got Unknown
			//IL_0081: Unknown result type (might be due to invalid IL or missing references)
			//IL_008c: Expected O, but got Unknown
			//IL_00b0: Unknown result type (might be due to invalid IL or missing references)
			//IL_00bb: Expected O, but got Unknown
			//IL_00df: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ea: Expected O, but got Unknown
			//IL_010e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0119: Expected O, but got Unknown
			//IL_013d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0148: Expected O, but got Unknown
			//IL_016c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0177: Expected O, but got Unknown
			//IL_019b: Unknown result type (might be due to invalid IL or missing references)
			//IL_01a6: Expected O, but got Unknown
			//IL_01ca: Unknown result type (might be due to invalid IL or missing references)
			//IL_01d5: Expected O, but got Unknown
			//IL_01f9: Unknown result type (might be due to invalid IL or missing references)
			//IL_0204: Expected O, but got Unknown
			//IL_0228: Unknown result type (might be due to invalid IL or missing references)
			//IL_0233: Expected O, but got Unknown
			//IL_0257: Unknown result type (might be due to invalid IL or missing references)
			//IL_0262: Expected O, but got Unknown
			//IL_0286: Unknown result type (might be due to invalid IL or missing references)
			//IL_0291: Expected O, but got Unknown
			//IL_02b5: Unknown result type (might be due to invalid IL or missing references)
			//IL_02c0: Expected O, but got Unknown
			//IL_02e4: Unknown result type (might be due to invalid IL or missing references)
			//IL_02ef: Expected O, but got Unknown
			//IL_0313: Unknown result type (might be due to invalid IL or missing references)
			//IL_031e: Expected O, but got Unknown
			//IL_0342: Unknown result type (might be due to invalid IL or missing references)
			//IL_034d: Expected O, but got Unknown
			//IL_0371: Unknown result type (might be due to invalid IL or missing references)
			//IL_037c: Expected O, but got Unknown
			//IL_03a0: Unknown result type (might be due to invalid IL or missing references)
			//IL_03ab: Expected O, but got Unknown
			//IL_03cf: Unknown result type (might be due to invalid IL or missing references)
			//IL_03da: Expected O, but got Unknown
			//IL_03fe: Unknown result type (might be due to invalid IL or missing references)
			//IL_0409: Expected O, but got Unknown
			//IL_042d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0438: Expected O, but got Unknown
			//IL_046a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0475: Expected O, but got Unknown
			_knarrContainerWidth = Plugin._Instance.config("Knarr", "Storage Width", 8, new ConfigDescription("Knarr's storage row size.\n(NOTE: Need to restart the game to take effect)", (AcceptableValueBase)(object)new AcceptableValueRange<int>(1, 8), Array.Empty<object>()));
			_knarrContainerHeight = Plugin._Instance.config("Knarr", "Storage Height", 4, new ConfigDescription("Knarr's storage column size.\n(NOTE: Need to restart the game to take effect)", (AcceptableValueBase)(object)new AcceptableValueRange<int>(1, 4), Array.Empty<object>()));
			_knarrWaterLevelOffset = Plugin._Instance.config("Knarr", "Water Level Offset", 1.5f, new ConfigDescription(string.Empty, (AcceptableValueBase)null, Array.Empty<object>()));
			_knarrForceDistance = Plugin._Instance.config("Knarr", "Force Distance", 3f, new ConfigDescription(string.Empty, (AcceptableValueBase)null, Array.Empty<object>()));
			_knarrForce = Plugin._Instance.config("Knarr", "Force", 1f, new ConfigDescription(string.Empty, (AcceptableValueBase)null, Array.Empty<object>()));
			_knarrDamping = Plugin._Instance.config("Knarr", "Damping", 0.1f, new ConfigDescription(string.Empty, (AcceptableValueBase)null, Array.Empty<object>()));
			_knarrDampingSideway = Plugin._Instance.config("Knarr", "Damping Sideway", 0.5f, new ConfigDescription(string.Empty, (AcceptableValueBase)null, Array.Empty<object>()));
			_knarrDampingForward = Plugin._Instance.config("Knarr", "Damping Forward", 0.002f, new ConfigDescription(string.Empty, (AcceptableValueBase)null, Array.Empty<object>()));
			_knarrAngularDamping = Plugin._Instance.config("Knarr", "Angular Damping", 0.95f, new ConfigDescription(string.Empty, (AcceptableValueBase)null, Array.Empty<object>()));
			_knarrDisableLevel = Plugin._Instance.config("Knarr", "Disable Level", -0.5f, new ConfigDescription(string.Empty, (AcceptableValueBase)null, Array.Empty<object>()));
			_knarrSailForceOffset = Plugin._Instance.config("Knarr", "Sail Force Offset", 2f, new ConfigDescription(string.Empty, (AcceptableValueBase)null, Array.Empty<object>()));
			_knarrSailForceFactor = Plugin._Instance.config("Knarr", "Sail Force Factor", 0.12f, new ConfigDescription(string.Empty, (AcceptableValueBase)null, Array.Empty<object>()));
			_knarrRudderSpeed = Plugin._Instance.config("Knarr", "Rudder Speed", 2f, new ConfigDescription(string.Empty, (AcceptableValueBase)null, Array.Empty<object>()));
			_knarrStearForceOffset = Plugin._Instance.config("Knarr", "Steer Force Offset", -22f, new ConfigDescription(string.Empty, (AcceptableValueBase)null, Array.Empty<object>()));
			_knarrStearForce = Plugin._Instance.config("Knarr", "Steer Force", 1.5f, new ConfigDescription(string.Empty, (AcceptableValueBase)null, Array.Empty<object>()));
			_knarrStearVelForceFactor = Plugin._Instance.config("Knarr", "Steer Vel Force Factor", 1.05f, new ConfigDescription(string.Empty, (AcceptableValueBase)null, Array.Empty<object>()));
			_knarrBackwardForce = Plugin._Instance.config("Knarr", "Backward Force", 0.35f, new ConfigDescription(string.Empty, (AcceptableValueBase)null, Array.Empty<object>()));
			_knarrRudderRotationMax = Plugin._Instance.config("Knarr", "Rudder Rotation Max", 45f, new ConfigDescription(string.Empty, (AcceptableValueBase)null, Array.Empty<object>()));
			_knarrMinWaterImpactForce = Plugin._Instance.config("Knarr", "Min Water Impact Force", 5f, new ConfigDescription(string.Empty, (AcceptableValueBase)null, Array.Empty<object>()));
			_knarrMinWaterImpactInterval = Plugin._Instance.config("Knarr", "Min Water Impact Interval", 2f, new ConfigDescription(string.Empty, (AcceptableValueBase)null, Array.Empty<object>()));
			_knarrWaterImpactDamage = Plugin._Instance.config("Knarr", "Water Impact Damage", 10f, new ConfigDescription(string.Empty, (AcceptableValueBase)null, Array.Empty<object>()));
			_knarrUpsideDownDmgInterval = Plugin._Instance.config("Knarr", "Upside Down Dmg Interval", 1f, new ConfigDescription(string.Empty, (AcceptableValueBase)null, Array.Empty<object>()));
			_knarrUpsideDownDmg = Plugin._Instance.config("Knarr", "Upside Down Dmg", 20f, new ConfigDescription(string.Empty, (AcceptableValueBase)null, Array.Empty<object>()));
			_knarrHealthPoints = Plugin._Instance.config("Knarr", "Health Points", 2000f, new ConfigDescription("Knarrs health points.", (AcceptableValueBase)(object)new AcceptableValueRange<float>(1f, 5000f), Array.Empty<object>()));
		}

		private static void LargeRaft()
		{
			//IL_0021: Unknown result type (might be due to invalid IL or missing references)
			//IL_002c: Expected O, but got Unknown
			//IL_0052: Unknown result type (might be due to invalid IL or missing references)
			//IL_005d: Expected O, but got Unknown
			//IL_0081: Unknown result type (might be due to invalid IL or missing references)
			//IL_008c: Expected O, but got Unknown
			//IL_00b0: Unknown result type (might be due to invalid IL or missing references)
			//IL_00bb: Expected O, but got Unknown
			//IL_00df: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ea: Expected O, but got Unknown
			//IL_010e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0119: Expected O, but got Unknown
			//IL_013d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0148: Expected O, but got Unknown
			//IL_016c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0177: Expected O, but got Unknown
			//IL_019b: Unknown result type (might be due to invalid IL or missing references)
			//IL_01a6: Expected O, but got Unknown
			//IL_01ca: Unknown result type (might be due to invalid IL or missing references)
			//IL_01d5: Expected O, but got Unknown
			//IL_01f9: Unknown result type (might be due to invalid IL or missing references)
			//IL_0204: Expected O, but got Unknown
			//IL_0228: Unknown result type (might be due to invalid IL or missing references)
			//IL_0233: Expected O, but got Unknown
			//IL_0257: Unknown result type (might be due to invalid IL or missing references)
			//IL_0262: Expected O, but got Unknown
			//IL_0286: Unknown result type (might be due to invalid IL or missing references)
			//IL_0291: Expected O, but got Unknown
			//IL_02b5: Unknown result type (might be due to invalid IL or missing references)
			//IL_02c0: Expected O, but got Unknown
			//IL_02e4: Unknown result type (might be due to invalid IL or missing references)
			//IL_02ef: Expected O, but got Unknown
			//IL_0313: Unknown result type (might be due to invalid IL or missing references)
			//IL_031e: Expected O, but got Unknown
			//IL_0342: Unknown result type (might be due to invalid IL or missing references)
			//IL_034d: Expected O, but got Unknown
			//IL_0371: Unknown result type (might be due to invalid IL or missing references)
			//IL_037c: Expected O, but got Unknown
			//IL_03a0: Unknown result type (might be due to invalid IL or missing references)
			//IL_03ab: Expected O, but got Unknown
			//IL_03cf: Unknown result type (might be due to invalid IL or missing references)
			//IL_03da: Expected O, but got Unknown
			//IL_03fe: Unknown result type (might be due to invalid IL or missing references)
			//IL_0409: Expected O, but got Unknown
			//IL_042d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0438: Expected O, but got Unknown
			//IL_046a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0475: Expected O, but got Unknown
			_largeRaftContainerWidth = Plugin._Instance.config("Large Raft", "Storage Width", 2, new ConfigDescription("Large Raft storage row size.\n(NOTE: Need to restart the game to take effect)", (AcceptableValueBase)(object)new AcceptableValueRange<int>(1, 8), Array.Empty<object>()));
			_largeRaftContainerHeight = Plugin._Instance.config("Large Raft", "Storage Height", 2, new ConfigDescription("Large Raft storage column size.\n(NOTE: Need to restart the game to take effect)", (AcceptableValueBase)(object)new AcceptableValueRange<int>(1, 4), Array.Empty<object>()));
			_largeRaftWaterLevelOffset = Plugin._Instance.config("Large Raft", "Water Level Offset", 1.5f, new ConfigDescription(string.Empty, (AcceptableValueBase)null, Array.Empty<object>()));
			_largeRaftForceDistance = Plugin._Instance.config("Large Raft", "Force Distance", 2f, new ConfigDescription(string.Empty, (AcceptableValueBase)null, Array.Empty<object>()));
			_largeRaftForce = Plugin._Instance.config("Large Raft", "Force", 0.5f, new ConfigDescription(string.Empty, (AcceptableValueBase)null, Array.Empty<object>()));
			_largeRaftDamping = Plugin._Instance.config("Large Raft", "Damping", 0.05f, new ConfigDescription(string.Empty, (AcceptableValueBase)null, Array.Empty<object>()));
			_largeRaftDampingSideway = Plugin._Instance.config("Large Raft", "Damping Sideway", 0.1f, new ConfigDescription(string.Empty, (AcceptableValueBase)null, Array.Empty<object>()));
			_largeRaftDampingForward = Plugin._Instance.config("Large Raft", "Damping Forward", 0.005f, new ConfigDescription(string.Empty, (AcceptableValueBase)null, Array.Empty<object>()));
			_largeRaftAngularDamping = Plugin._Instance.config("Large Raft", "Angular Damping", 0.05f, new ConfigDescription(string.Empty, (AcceptableValueBase)null, Array.Empty<object>()));
			_largeRaftDisableLevel = Plugin._Instance.config("Large Raft", "Disable Level", -0.5f, new ConfigDescription(string.Empty, (AcceptableValueBase)null, Array.Empty<object>()));
			_largeRaftSailForceOffset = Plugin._Instance.config("Large Raft", "Sail Force Offset", 0.5f, new ConfigDescription(string.Empty, (AcceptableValueBase)null, Array.Empty<object>()));
			_largeRaftSailForceFactor = Plugin._Instance.config("Large Raft", "Sail Force Factor", 0.05f, new ConfigDescription(string.Empty, (AcceptableValueBase)null, Array.Empty<object>()));
			_largeRaftRudderSpeed = Plugin._Instance.config("Large Raft", "Rudder Speed", 1f, new ConfigDescription(string.Empty, (AcceptableValueBase)null, Array.Empty<object>()));
			_largeRaftStearForceOffset = Plugin._Instance.config("Large Raft", "Steer Force Offset", -2.5f, new ConfigDescription(string.Empty, (AcceptableValueBase)null, Array.Empty<object>()));
			_largeRaftStearForce = Plugin._Instance.config("Large Raft", "Steer Force", 0.3f, new ConfigDescription(string.Empty, (AcceptableValueBase)null, Array.Empty<object>()));
			_largeRaftStearVelForceFactor = Plugin._Instance.config("Large Raft", "Steer Vel Force Factor", 0.2f, new ConfigDescription(string.Empty, (AcceptableValueBase)null, Array.Empty<object>()));
			_largeRaftBackwardForce = Plugin._Instance.config("Large Raft", "Backward Force", 0.5f, new ConfigDescription(string.Empty, (AcceptableValueBase)null, Array.Empty<object>()));
			_largeRaftRudderRotationMax = Plugin._Instance.config("Large Raft", "Rudder Rotation Max", 45f, new ConfigDescription(string.Empty, (AcceptableValueBase)null, Array.Empty<object>()));
			_largeRaftMinWaterImpactForce = Plugin._Instance.config("Large Raft", "Min Water Impact Force", 3f, new ConfigDescription(string.Empty, (AcceptableValueBase)null, Array.Empty<object>()));
			_largeRaftMinWaterImpactInterval = Plugin._Instance.config("LargeRaft", "Min Water Impact Interval", 2f, new ConfigDescription(string.Empty, (AcceptableValueBase)null, Array.Empty<object>()));
			_largeRaftWaterImpactDamage = Plugin._Instance.config("Large Raft", "Water Impact Damage", 10f, new ConfigDescription(string.Empty, (AcceptableValueBase)null, Array.Empty<object>()));
			_largeRaftUpsideDownDmgInterval = Plugin._Instance.config("LargeRaft", "Upside Down Dmg Interval", 1f, new ConfigDescription(string.Empty, (AcceptableValueBase)null, Array.Empty<object>()));
			_largeRaftUpsideDownDmg = Plugin._Instance.config("Large Raft", "Upside Down Dmg", 20f, new ConfigDescription(string.Empty, (AcceptableValueBase)null, Array.Empty<object>()));
			_largeRaftHealthPoints = Plugin._Instance.config("Large Raft", "Health Points", 350f, new ConfigDescription("Large rafts health points.", (AcceptableValueBase)(object)new AcceptableValueRange<float>(1f, 5000f), Array.Empty<object>()));
		}

		private static void OutriggerKarve()
		{
			//IL_0021: Unknown result type (might be due to invalid IL or missing references)
			//IL_002c: Expected O, but got Unknown
			//IL_0052: Unknown result type (might be due to invalid IL or missing references)
			//IL_005d: Expected O, but got Unknown
			//IL_0081: Unknown result type (might be due to invalid IL or missing references)
			//IL_008c: Expected O, but got Unknown
			//IL_00b0: Unknown result type (might be due to invalid IL or missing references)
			//IL_00bb: Expected O, but got Unknown
			//IL_00df: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ea: Expected O, but got Unknown
			//IL_010e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0119: Expected O, but got Unknown
			//IL_013d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0148: Expected O, but got Unknown
			//IL_016c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0177: Expected O, but got Unknown
			//IL_019b: Unknown result type (might be due to invalid IL or missing references)
			//IL_01a6: Expected O, but got Unknown
			//IL_01ca: Unknown result type (might be due to invalid IL or missing references)
			//IL_01d5: Expected O, but got Unknown
			//IL_01f9: Unknown result type (might be due to invalid IL or missing references)
			//IL_0204: Expected O, but got Unknown
			//IL_0228: Unknown result type (might be due to invalid IL or missing references)
			//IL_0233: Expected O, but got Unknown
			//IL_0257: Unknown result type (might be due to invalid IL or missing references)
			//IL_0262: Expected O, but got Unknown
			//IL_0286: Unknown result type (might be due to invalid IL or missing references)
			//IL_0291: Expected O, but got Unknown
			//IL_02b5: Unknown result type (might be due to invalid IL or missing references)
			//IL_02c0: Expected O, but got Unknown
			//IL_02e4: Unknown result type (might be due to invalid IL or missing references)
			//IL_02ef: Expected O, but got Unknown
			//IL_0313: Unknown result type (might be due to invalid IL or missing references)
			//IL_031e: Expected O, but got Unknown
			//IL_0342: Unknown result type (might be due to invalid IL or missing references)
			//IL_034d: Expected O, but got Unknown
			//IL_0371: Unknown result type (might be due to invalid IL or missing references)
			//IL_037c: Expected O, but got Unknown
			//IL_03a0: Unknown result type (might be due to invalid IL or missing references)
			//IL_03ab: Expected O, but got Unknown
			//IL_03cf: Unknown result type (might be due to invalid IL or missing references)
			//IL_03da: Expected O, but got Unknown
			//IL_03fe: Unknown result type (might be due to invalid IL or missing references)
			//IL_0409: Expected O, but got Unknown
			//IL_042d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0438: Expected O, but got Unknown
			//IL_046a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0475: Expected O, but got Unknown
			_outriggerKarveContainerWidth = Plugin._Instance.config("Outrigger Karve", "Storage Width", 4, new ConfigDescription("Outrigger Karve storage row size.\n(NOTE: Need to restart the game to take effect)", (AcceptableValueBase)(object)new AcceptableValueRange<int>(1, 8), Array.Empty<object>()));
			_outriggerKarveContainerHeight = Plugin._Instance.config("Outrigger Karve", "Storage Height", 3, new ConfigDescription("Outrigger Karve storage column size.\n(NOTE: Need to restart the game to take effect)", (AcceptableValueBase)(object)new AcceptableValueRange<int>(1, 4), Array.Empty<object>()));
			_outriggerKarveWaterLevelOffset = Plugin._Instance.config("Outrigger Karve", "Water Level Offset", 1.2f, new ConfigDescription(string.Empty, (AcceptableValueBase)null, Array.Empty<object>()));
			_outriggerKarveForceDistance = Plugin._Instance.config("Outrigger Karve", "Force Distance", 2f, new ConfigDescription(string.Empty, (AcceptableValueBase)null, Array.Empty<object>()));
			_outriggerKarveForce = Plugin._Instance.config("OutriggerKarve", "Force", 1f, new ConfigDescription(string.Empty, (AcceptableValueBase)null, Array.Empty<object>()));
			_outriggerKarveDamping = Plugin._Instance.config("Outrigger Karve", "Damping", 0.05f, new ConfigDescription(string.Empty, (AcceptableValueBase)null, Array.Empty<object>()));
			_outriggerKarveDampingSideway = Plugin._Instance.config("Outrigger Karve", "Damping Sideway", 0.15f, new ConfigDescription(string.Empty, (AcceptableValueBase)null, Array.Empty<object>()));
			_outriggerKarveDampingForward = Plugin._Instance.config("Outrigger Karve", "Damping Forward", 0.001f, new ConfigDescription(string.Empty, (AcceptableValueBase)null, Array.Empty<object>()));
			_outriggerKarveAngularDamping = Plugin._Instance.config("Outrigger Karve", "Angular Damping", 0.05f, new ConfigDescription(string.Empty, (AcceptableValueBase)null, Array.Empty<object>()));
			_outriggerKarveDisableLevel = Plugin._Instance.config("Outrigger Karve", "Disable Level", -0.5f, new ConfigDescription(string.Empty, (AcceptableValueBase)null, Array.Empty<object>()));
			_outriggerKarveSailForceOffset = Plugin._Instance.config("Outrigger Karve", "Sail Force Offset", 1.3f, new ConfigDescription(string.Empty, (AcceptableValueBase)null, Array.Empty<object>()));
			_outriggerKarveSailForceFactor = Plugin._Instance.config("Outrigger Karve", "Sail Force Factor", 0.03f, new ConfigDescription(string.Empty, (AcceptableValueBase)null, Array.Empty<object>()));
			_outriggerKarveRudderSpeed = Plugin._Instance.config("Outrigger Karve", "Rudder Speed", 1.5f, new ConfigDescription(string.Empty, (AcceptableValueBase)null, Array.Empty<object>()));
			_outriggerKarveStearForceOffset = Plugin._Instance.config("Outrigger Karve", "Steer Force Offset", -3.5f, new ConfigDescription(string.Empty, (AcceptableValueBase)null, Array.Empty<object>()));
			_outriggerKarveStearForce = Plugin._Instance.config("Outrigger Karve", "Steer Force", 0.2f, new ConfigDescription(string.Empty, (AcceptableValueBase)null, Array.Empty<object>()));
			_outriggerKarveStearVelForceFactor = Plugin._Instance.config("Outrigger Karve", "Steer Vel Force Factor", 0.18f, new ConfigDescription(string.Empty, (AcceptableValueBase)null, Array.Empty<object>()));
			_outriggerKarveBackwardForce = Plugin._Instance.config("Outrigger Karve", "Backward Force", 0.2f, new ConfigDescription(string.Empty, (AcceptableValueBase)null, Array.Empty<object>()));
			_outriggerKarveRudderRotationMax = Plugin._Instance.config("Outrigger Karve", "Rudder Rotation Max", 45f, new ConfigDescription(string.Empty, (AcceptableValueBase)null, Array.Empty<object>()));
			_outriggerKarveMinWaterImpactForce = Plugin._Instance.config("Outrigger Karve", "Min Water Impact Force", 4f, new ConfigDescription(string.Empty, (AcceptableValueBase)null, Array.Empty<object>()));
			_outriggerKarveMinWaterImpactInterval = Plugin._Instance.config("Outrigger Karve", "Min Water Impact Interval", 2f, new ConfigDescription(string.Empty, (AcceptableValueBase)null, Array.Empty<object>()));
			_outriggerKarveWaterImpactDamage = Plugin._Instance.config("Outrigger Karve", "Water Impact Damage", 10f, new ConfigDescription(string.Empty, (AcceptableValueBase)null, Array.Empty<object>()));
			_outriggerKarveUpsideDownDmgInterval = Plugin._Instance.config("Outrigger Karve", "Upside Down Dmg Interval", 1f, new ConfigDescription(string.Empty, (AcceptableValueBase)null, Array.Empty<object>()));
			_outriggerKarveUpsideDownDmg = Plugin._Instance.config("Outrigger Karve", "Upside Down Dmg", 20f, new ConfigDescription(string.Empty, (AcceptableValueBase)null, Array.Empty<object>()));
			_outriggerKarveHealthPoints = Plugin._Instance.config("Outrigger Karve", "Health Points", 500f, new ConfigDescription("Outrigger karves health points.", (AcceptableValueBase)(object)new AcceptableValueRange<float>(1f, 5000f), Array.Empty<object>()));
		}

		private static void OutriggerSkeid()
		{
			//IL_0021: Unknown result type (might be due to invalid IL or missing references)
			//IL_002c: Expected O, but got Unknown
			//IL_0052: Unknown result type (might be due to invalid IL or missing references)
			//IL_005d: Expected O, but got Unknown
			//IL_0081: Unknown result type (might be due to invalid IL or missing references)
			//IL_008c: Expected O, but got Unknown
			//IL_00b0: Unknown result type (might be due to invalid IL or missing references)
			//IL_00bb: Expected O, but got Unknown
			//IL_00df: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ea: Expected O, but got Unknown
			//IL_010e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0119: Expected O, but got Unknown
			//IL_013d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0148: Expected O, but got Unknown
			//IL_016c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0177: Expected O, but got Unknown
			//IL_019b: Unknown result type (might be due to invalid IL or missing references)
			//IL_01a6: Expected O, but got Unknown
			//IL_01ca: Unknown result type (might be due to invalid IL or missing references)
			//IL_01d5: Expected O, but got Unknown
			//IL_01f9: Unknown result type (might be due to invalid IL or missing references)
			//IL_0204: Expected O, but got Unknown
			//IL_0228: Unknown result type (might be due to invalid IL or missing references)
			//IL_0233: Expected O, but got Unknown
			//IL_0257: Unknown result type (might be due to invalid IL or missing references)
			//IL_0262: Expected O, but got Unknown
			//IL_0286: Unknown result type (might be due to invalid IL or missing references)
			//IL_0291: Expected O, but got Unknown
			//IL_02b5: Unknown result type (might be due to invalid IL or missing references)
			//IL_02c0: Expected O, but got Unknown
			//IL_02e4: Unknown result type (might be due to invalid IL or missing references)
			//IL_02ef: Expected O, but got Unknown
			//IL_0313: Unknown result type (might be due to invalid IL or missing references)
			//IL_031e: Expected O, but got Unknown
			//IL_0342: Unknown result type (might be due to invalid IL or missing references)
			//IL_034d: Expected O, but got Unknown
			//IL_0371: Unknown result type (might be due to invalid IL or missing references)
			//IL_037c: Expected O, but got Unknown
			//IL_03a0: Unknown result type (might be due to invalid IL or missing references)
			//IL_03ab: Expected O, but got Unknown
			//IL_03cf: Unknown result type (might be due to invalid IL or missing references)
			//IL_03da: Expected O, but got Unknown
			//IL_03fe: Unknown result type (might be due to invalid IL or missing references)
			//IL_0409: Expected O, but got Unknown
			//IL_042d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0438: Expected O, but got Unknown
			//IL_046a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0475: Expected O, but got Unknown
			_outriggerSkeidContainerWidth = Plugin._Instance.config("Outrigger Skeid", "Storage Width", 8, new ConfigDescription("Outrigger Skeid storage row size.\n(NOTE: Need to restart the game to take effect)", (AcceptableValueBase)(object)new AcceptableValueRange<int>(1, 8), Array.Empty<object>()));
			_outriggerSkeidContainerHeight = Plugin._Instance.config("Outrigger Skeid", "Storage Height", 4, new ConfigDescription("Outrigger Skeid storage column size.\n(NOTE: Need to restart the game to take effect)", (AcceptableValueBase)(object)new AcceptableValueRange<int>(1, 4), Array.Empty<object>()));
			_outriggerSkeidWaterLevelOffset = Plugin._Instance.config("Outrigger Skeid", "Water Level Offset", 1.5f, new ConfigDescription(string.Empty, (AcceptableValueBase)null, Array.Empty<object>()));
			_outriggerSkeidForceDistance = Plugin._Instance.config("Outrigger Skeid", "Force Distance", 3f, new ConfigDescription(string.Empty, (AcceptableValueBase)null, Array.Empty<object>()));
			_outriggerSkeidForce = Plugin._Instance.config("OutriggerSkeid", "Force", 1f, new ConfigDescription(string.Empty, (AcceptableValueBase)null, Array.Empty<object>()));
			_outriggerSkeidDamping = Plugin._Instance.config("Outrigger Skeid", "Damping", 0.05f, new ConfigDescription(string.Empty, (AcceptableValueBase)null, Array.Empty<object>()));
			_outriggerSkeidDampingSideway = Plugin._Instance.config("Outrigger Skeid", "Damping Sideway", 0.15f, new ConfigDescription(string.Empty, (AcceptableValueBase)null, Array.Empty<object>()));
			_outriggerSkeidDampingForward = Plugin._Instance.config("Outrigger Skeid", "Damping Forward", 0.001f, new ConfigDescription(string.Empty, (AcceptableValueBase)null, Array.Empty<object>()));
			_outriggerSkeidAngularDamping = Plugin._Instance.config("Outrigger Skeid", "Angular Damping", 0.3f, new ConfigDescription(string.Empty, (AcceptableValueBase)null, Array.Empty<object>()));
			_outriggerSkeidDisableLevel = Plugin._Instance.config("Outrigger Skeid", "Disable Level", -0.5f, new ConfigDescription(string.Empty, (AcceptableValueBase)null, Array.Empty<object>()));
			_outriggerSkeidSailForceOffset = Plugin._Instance.config("Outrigger Skeid", "Sail Force Offset", 2f, new ConfigDescription(string.Empty, (AcceptableValueBase)null, Array.Empty<object>()));
			_outriggerSkeidSailForceFactor = Plugin._Instance.config("Outrigger Skeid", "Sail Force Factor", 0.1f, new ConfigDescription(string.Empty, (AcceptableValueBase)null, Array.Empty<object>()));
			_outriggerSkeidRudderSpeed = Plugin._Instance.config("Outrigger Skeid", "Rudder Speed", 1.5f, new ConfigDescription(string.Empty, (AcceptableValueBase)null, Array.Empty<object>()));
			_outriggerSkeidStearForceOffset = Plugin._Instance.config("Outrigger Skeid", "Stear Force Offset", -8f, new ConfigDescription(string.Empty, (AcceptableValueBase)null, Array.Empty<object>()));
			_outriggerSkeidStearForce = Plugin._Instance.config("Outrigger Skeid", "Stear Force", 1.5f, new ConfigDescription(string.Empty, (AcceptableValueBase)null, Array.Empty<object>()));
			_outriggerSkeidStearVelForceFactor = Plugin._Instance.config("Outrigger Skeid", "Stear Vel Force Factor", 0.8f, new ConfigDescription(string.Empty, (AcceptableValueBase)null, Array.Empty<object>()));
			_outriggerSkeidBackwardForce = Plugin._Instance.config("Outrigger Skeid", "Backward Force", 0.2f, new ConfigDescription(string.Empty, (AcceptableValueBase)null, Array.Empty<object>()));
			_outriggerSkeidRudderRotationMax = Plugin._Instance.config("Outrigger Skeid", "Rudder Rotation Max", 45f, new ConfigDescription(string.Empty, (AcceptableValueBase)null, Array.Empty<object>()));
			_outriggerSkeidMinWaterImpactForce = Plugin._Instance.config("Outrigger Skeid", "Min Water Impact Force", 5f, new ConfigDescription(string.Empty, (AcceptableValueBase)null, Array.Empty<object>()));
			_outriggerSkeidMinWaterImpactInterval = Plugin._Instance.config("Outrigger Skeid", "Min Water Impact Interval", 2f, new ConfigDescription(string.Empty, (AcceptableValueBase)null, Array.Empty<object>()));
			_outriggerSkeidWaterImpactDamage = Plugin._Instance.config("Outrigger Skeid", "Water Impact Damage", 10f, new ConfigDescription(string.Empty, (AcceptableValueBase)null, Array.Empty<object>()));
			_outriggerSkeidUpsideDownDmgInterval = Plugin._Instance.config("Outrigger Skeid", "Upside Down Dmg Interval", 1f, new ConfigDescription(string.Empty, (AcceptableValueBase)null, Array.Empty<object>()));
			_outriggerSkeidUpsideDownDmg = Plugin._Instance.config("Outrigger Skeid", "Upside Down Dmg", 20f, new ConfigDescription(string.Empty, (AcceptableValueBase)null, Array.Empty<object>()));
			_outriggerSkeidHealthPoints = Plugin._Instance.config("Outrigger Skeid", "Health Points", 1000f, new ConfigDescription("Outrigger skeids health points.", (AcceptableValueBase)(object)new AcceptableValueRange<float>(1f, 5000f), Array.Empty<object>()));
		}

		private static void Snekkja()
		{
			//IL_0021: Unknown result type (might be due to invalid IL or missing references)
			//IL_002c: Expected O, but got Unknown
			//IL_0052: Unknown result type (might be due to invalid IL or missing references)
			//IL_005d: Expected O, but got Unknown
			//IL_0081: Unknown result type (might be due to invalid IL or missing references)
			//IL_008c: Expected O, but got Unknown
			//IL_00b0: Unknown result type (might be due to invalid IL or missing references)
			//IL_00bb: Expected O, but got Unknown
			//IL_00df: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ea: Expected O, but got Unknown
			//IL_010e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0119: Expected O, but got Unknown
			//IL_013d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0148: Expected O, but got Unknown
			//IL_016c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0177: Expected O, but got Unknown
			//IL_019b: Unknown result type (might be due to invalid IL or missing references)
			//IL_01a6: Expected O, but got Unknown
			//IL_01ca: Unknown result type (might be due to invalid IL or missing references)
			//IL_01d5: Expected O, but got Unknown
			//IL_01f9: Unknown result type (might be due to invalid IL or missing references)
			//IL_0204: Expected O, but got Unknown
			//IL_0228: Unknown result type (might be due to invalid IL or missing references)
			//IL_0233: Expected O, but got Unknown
			//IL_0257: Unknown result type (might be due to invalid IL or missing references)
			//IL_0262: Expected O, but got Unknown
			//IL_0286: Unknown result type (might be due to invalid IL or missing references)
			//IL_0291: Expected O, but got Unknown
			//IL_02b5: Unknown result type (might be due to invalid IL or missing references)
			//IL_02c0: Expected O, but got Unknown
			//IL_02e4: Unknown result type (might be due to invalid IL or missing references)
			//IL_02ef: Expected O, but got Unknown
			//IL_0313: Unknown result type (might be due to invalid IL or missing references)
			//IL_031e: Expected O, but got Unknown
			//IL_0342: Unknown result type (might be due to invalid IL or missing references)
			//IL_034d: Expected O, but got Unknown
			//IL_0371: Unknown result type (might be due to invalid IL or missing references)
			//IL_037c: Expected O, but got Unknown
			//IL_03a0: Unknown result type (might be due to invalid IL or missing references)
			//IL_03ab: Expected O, but got Unknown
			//IL_03cf: Unknown result type (might be due to invalid IL or missing references)
			//IL_03da: Expected O, but got Unknown
			//IL_03fe: Unknown result type (might be due to invalid IL or missing references)
			//IL_0409: Expected O, but got Unknown
			//IL_042d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0438: Expected O, but got Unknown
			//IL_046a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0475: Expected O, but got Unknown
			_snekkjaContainerWidth = Plugin._Instance.config("Snekkja", "Storage Width", 7, new ConfigDescription("Snekkja storage row size.\n(NOTE: Need to restart the game to take effect)", (AcceptableValueBase)(object)new AcceptableValueRange<int>(1, 8), Array.Empty<object>()));
			_snekkjaContainerHeight = Plugin._Instance.config("Snekkja", "Storage Height", 4, new ConfigDescription("Snekkja storage column size.\n(NOTE: Need to restart the game to take effect)", (AcceptableValueBase)(object)new AcceptableValueRange<int>(1, 4), Array.Empty<object>()));
			_snekkjaWaterLevelOffset = Plugin._Instance.config("Snekkja", "Water Level Offset", 1.5f, new ConfigDescription(string.Empty, (AcceptableValueBase)null, Array.Empty<object>()));
			_snekkjaForceDistance = Plugin._Instance.config("Snekkja", "Force Distance", 3f, new ConfigDescription(string.Empty, (AcceptableValueBase)null, Array.Empty<object>()));
			_snekkjaForce = Plugin._Instance.config("Snekkja", "Force", 1f, new ConfigDescription(string.Empty, (AcceptableValueBase)null, Array.Empty<object>()));
			_snekkjaDamping = Plugin._Instance.config("Snekkja", "Damping", 0.05f, new ConfigDescription(string.Empty, (AcceptableValueBase)null, Array.Empty<object>()));
			_snekkjaDampingSideway = Plugin._Instance.config("Snekkja", "Damping Sideway", 0.15f, new ConfigDescription(string.Empty, (AcceptableValueBase)null, Array.Empty<object>()));
			_snekkjaDampingForward = Plugin._Instance.config("Snekkja", "Damping Forward", 0.001f, new ConfigDescription(string.Empty, (AcceptableValueBase)null, Array.Empty<object>()));
			_snekkjaAngularDamping = Plugin._Instance.config("Snekkja", "Angular Damping", 0.3f, new ConfigDescription(string.Empty, (AcceptableValueBase)null, Array.Empty<object>()));
			_snekkjaDisableLevel = Plugin._Instance.config("Snekkja", "Disable Level", -0.5f, new ConfigDescription(string.Empty, (AcceptableValueBase)null, Array.Empty<object>()));
			_snekkjaSailForceOffset = Plugin._Instance.config("Snekkja", "Sail Force Offset", 2f, new ConfigDescription(string.Empty, (AcceptableValueBase)null, Array.Empty<object>()));
			_snekkjaSailForceFactor = Plugin._Instance.config("Snekkja", "Sail Force Factor", 0.1f, new ConfigDescription(string.Empty, (AcceptableValueBase)null, Array.Empty<object>()));
			_snekkjaRudderSpeed = Plugin._Instance.config("Snekkja", "Rudder Speed", 1.2f, new ConfigDescription(string.Empty, (AcceptableValueBase)null, Array.Empty<object>()));
			_snekkjaStearForceOffset = Plugin._Instance.config("Snekkja", "Stear Force Offset", -8f, new ConfigDescription(string.Empty, (AcceptableValueBase)null, Array.Empty<object>()));
			_snekkjaStearForce = Plugin._Instance.config("Snekkja", "Stear Force", 1.2f, new ConfigDescription(string.Empty, (AcceptableValueBase)null, Array.Empty<object>()));
			_snekkjaStearVelForceFactor = Plugin._Instance.config("Snekkja", "Stear Vel Force Factor", 0.8f, new ConfigDescription(string.Empty, (AcceptableValueBase)null, Array.Empty<object>()));
			_snekkjaBackwardForce = Plugin._Instance.config("Snekkja", "Backward Force", 0.2f, new ConfigDescription(string.Empty, (AcceptableValueBase)null, Array.Empty<object>()));
			_snekkjaRudderRotationMax = Plugin._Instance.config("Snekkja", "Rudder Rotation Max", 45f, new ConfigDescription(string.Empty, (AcceptableValueBase)null, Array.Empty<object>()));
			_snekkjaMinWaterImpactForce = Plugin._Instance.config("Snekkja", "Min Water Impact Force", 5f, new ConfigDescription(string.Empty, (AcceptableValueBase)null, Array.Empty<object>()));
			_snekkjaMinWaterImpactInterval = Plugin._Instance.config("Snekkja", "Min Water Impact Interval", 2f, new ConfigDescription(string.Empty, (AcceptableValueBase)null, Array.Empty<object>()));
			_snekkjaWaterImpactDamage = Plugin._Instance.config("Snekkja", "Water Impact Damage", 10f, new ConfigDescription(string.Empty, (AcceptableValueBase)null, Array.Empty<object>()));
			_snekkjaUpsideDownDmgInterval = Plugin._Instance.config("Snekkja", "Upside Down Dmg Interval", 1f, new ConfigDescription(string.Empty, (AcceptableValueBase)null, Array.Empty<object>()));
			_snekkjaUpsideDownDmg = Plugin._Instance.config("Snekkja", "Upside Down Dmg", 20f, new ConfigDescription(string.Empty, (AcceptableValueBase)null, Array.Empty<object>()));
			_snekkjaHealthPoints = Plugin._Instance.config("Snekkja", "Health Points", 1500f, new ConfigDescription("Snekkjas health points.", (AcceptableValueBase)(object)new AcceptableValueRange<float>(1f, 5000f), Array.Empty<object>()));
		}
	}
	public static class Helper
	{
		public static void CustomSail(GameObject gameObject)
		{
			Renderer[] componentsInChildren = gameObject.GetComponentsInChildren<Renderer>(true);
			foreach (Renderer val in componentsInChildren)
			{
				if ((Object)(object)val == (Object)null)
				{
					continue;
				}
				Material[] sharedMaterials = val.sharedMaterials;
				foreach (Material val2 in sharedMaterials)
				{
					if (!((Object)(object)val2 == (Object)null) && ((Object)val2).name == "bba_sail_white")
					{
						val.material = SetupPrefabs._boatBundle.LoadAsset<Material>((Plugin._enableCustomSail.Value == Toggle.On) ? "bba_sail_white" : "bba_sail");
					}
				}
			}
		}
	}
	public static class SetupPrefabs
	{
		public static AssetBundle _boatBundle;

		private const string _category = "BoatAdditions";

		public static void Init()
		{
			_boatBundle = PiecePrefabManager.RegisterAssetBundle("shipbundle");
			BoatYard();
			BoatItems();
			Boats();
			Others();
		}

		private static void BoatYard()
		{
			BuildPiece buildPiece = new BuildPiece(_boatBundle, "BBA_Boatyard");
			buildPiece.Crafting.Set(PieceManager.CraftingTable.Workbench);
			buildPiece.Category.Set("BoatAdditions");
			buildPiece.RequiredItems.Add("FineWood", 120, recover: true);
			buildPiece.RequiredItems.Add("Stone", 16, recover: true);
			buildPiece.RequiredItems.Add("Resin", 22, recover: true);
			buildPiece.RequiredItems.Add("DeerHide", 12, recover: true);
			buildPiece.RequiredItems.Add("Bronze", 16, recover: true);
			buildPiece.SpecialProperties = new SpecialProperties
			{
				AdminOnly = false,
				NoConfig = false
			};
			ShaderReplacer.Replace(buildPiece.Prefab);
		}

		private static void Boats()
		{
			BuildPiece buildPiece = new BuildPiece(_boatBundle, "BBA_Canoe");
			buildPiece.Crafting.Set(PieceManager.CraftingTable.Workbench);
			buildPiece.Category.Set("BoatAdditions");
			buildPiece.RequiredItems.Add("BBA_SmallHull", 1, recover: true);
			buildPiece.RequiredItems.Add("Wood", 4, recover: true);
			buildPiece.RequiredItems.Add("Resin", 10, recover: true);
			buildPiece.SpecialProperties = new SpecialProperties
			{
				AdminOnly = false,
				NoConfig = false
			};
			ShaderReplacer.Replace(buildPiece.Prefab);
			BuildPiece buildPiece2 = new BuildPiece(_boatBundle, "BBA_Knarr");
			buildPiece2.Crafting.Set(PieceManager.CraftingTable.Workbench);
			buildPiece2.Category.Set("BoatAdditions");
			buildPiece2.RequiredItems.Add("BBA_LargeHull", 1, recover: true);
			buildPiece2.RequiredItems.Add("BBA_Mast", 1, recover: true);
			buildPiece2.RequiredItems.Add("YggdrasilWood", 40, recover: true);
			buildPiece2.RequiredItems.Add("BlackMetal", 50, recover: true);
			buildPiece2.RequiredItems.Add("Resin", 70, recover: true);
			ShaderReplacer.Replace(buildPiece2.Prefab);
			Helper.CustomSail(buildPiece2.Prefab);
			BuildPiece buildPiece3 = new BuildPiece(_boatBundle, "BBA_LargeRaft");
			buildPiece3.Crafting.Set(PieceManager.CraftingTable.Workbench);
			buildPiece3.Category.Set("BoatAdditions");
			buildPiece3.RequiredItems.Add("Wood", 40, recover: true);
			buildPiece3.RequiredItems.Add("LeatherScraps", 12, recover: true);
			buildPiece3.RequiredItems.Add("DeerHide", 6, recover: true);
			buildPiece3.RequiredItems.Add("Resin", 15, recover: true);
			ShaderReplacer.Replace(buildPiece3.Prefab);
			BuildPiece buildPiece4 = new BuildPiece(_boatBundle, "BBA_OutriggerKarve");
			buildPiece4.Crafting.Set(PieceManager.CraftingTable.Workbench);
			buildPiece4.Category.Set("BoatAdditions");
			buildPiece4.RequiredItems.Add("BBA_SmallHull", 1, recover: true);
			buildPiece4.RequiredItems.Add("BBA_Mast", 1, recover: true);
			buildPiece4.RequiredItems.Add("Wood", 12, recover: true);
			buildPiece4.RequiredItems.Add("Copper", 8, recover: true);
			buildPiece4.RequiredItems.Add("Resin", 20, recover: true);
			ShaderReplacer.Replace(buildPiece4.Prefab);
			Helper.CustomSail(buildPiece4.Prefab);
			BuildPiece buildPiece5 = new BuildPiece(_boatBundle, "BBA_OutriggerSkeid");
			buildPiece5.Crafting.Set(PieceManager.CraftingTable.Workbench);
			buildPiece5.Category.Set("BoatAdditions");
			buildPiece5.RequiredItems.Add("BBA_LargeHull", 1, recover: true);
			buildPiece5.RequiredItems.Add("BBA_Mast", 1, recover: true);
			buildPiece5.RequiredItems.Add("Wood", 40, recover: true);
			buildPiece5.RequiredItems.Add("Iron", 10, recover: true);
			buildPiece5.RequiredItems.Add("Resin", 30, recover: true);
			ShaderReplacer.Replace(buildPiece5.Prefab);
			Helper.CustomSail(buildPiece5.Prefab);
			BuildPiece buildPiece6 = new BuildPiece(_boatBundle, "BBA_Snekkja");
			buildPiece6.Crafting.Set(PieceManager.CraftingTable.Workbench);
			buildPiece6.Category.Set("BoatAdditions");
			buildPiece6.RequiredItems.Add("BBA_LargeHull", 1, recover: true);
			buildPiece6.RequiredItems.Add("BBA_Mast", 1, recover: true);
			buildPiece6.RequiredItems.Add("DeerHide", 30, recover: true);
			buildPiece6.RequiredItems.Add("Iron", 10, recover: true);
			buildPiece6.RequiredItems.Add("Resin", 50, recover: true);
			ShaderReplacer.Replace(buildPiece6.Prefab);
			Helper.CustomSail(buildPiece6.Prefab);
			BuildPiece buildPiece7 = new BuildPiece(_boatBundle, "BBA_Kvalsund");
			buildPiece7.Crafting.Set(PieceManager.CraftingTable.Workbench);
			buildPiece7.Category.Set("BoatAdditions");
			buildPiece7.RequiredItems.Add("BBA_SturdyHull", 1, recover: true);
			buildPiece7.RequiredItems.Add("BBA_Mast", 1, recover: true);
			buildPiece7.RequiredItems.Add("YggdrasilWood", 84, recover: true);
			buildPiece7.RequiredItems.Add("Iron", 60, recover: true);
			buildPiece7.RequiredItems.Add("JuteRed", 32, recover: true);
			ShaderReplacer.Replace(buildPiece7.Prefab);
			BuildPiece buildPiece8 = new BuildPiece(_boatBundle, "BBA_Drakker");
			buildPiece8.Crafting.Set(PieceManager.CraftingTable.Workbench);
			buildPiece8.Category.Set("BoatAdditions");
			buildPiece8.RequiredItems.Add("BBA_SturdyHull", 1, recover: true);
			buildPiece8.RequiredItems.Add("BBA_Mast", 1, recover: true);
			buildPiece8.RequiredItems.Add("BlackMetal", 92, recover: true);
			buildPiece8.RequiredItems.Add("Iron", 40, recover: true);
			buildPiece8.RequiredItems.Add("CeramicPlate", 36, recover: true);
			ShaderReplacer.Replace(buildPiece8.Prefab);
			Helper.CustomSail(buildPiece8.Prefab);
		}

		private static void BoatItems()
		{
			Item item = new Item(_boatBundle, "BBA_LargeHull");
			item.Crafting.Add("BBA_Boatyard", 1);
			item.RequiredItems.Add("ElderBark", 60);
			item.RequiredItems.Add("FineWood", 60);
			item.RequiredItems.Add("Wood", 30);
			item.RequiredItems.Add("IronNails", 140);
			item.Configurable = Configurability.Recipe;
			ShaderReplacer.Replace(item.Prefab);
			Item item2 = new Item(_boatBundle, "BBA_Mast");
			item2.Crafting.Add("BBA_Boatyard", 1);
			item2.RequiredItems.Add("DeerHide", 40);
			item2.RequiredItems.Add("LeatherScraps", 20);
			item2.RequiredItems.Add("RoundLog", 2);
			item2.RequiredItems.Add("Raspberry", 10);
			item2.Configurable = Configurability.Recipe;
			ShaderReplacer.Replace(item2.Prefab);
			Item item3 = new Item(_boatBundle, "BBA_SmallHull");
			item3.Crafting.Add("BBA_Boatyard", 1);
			item3.RequiredItems.Add("FineWood", 30);
			item3.RequiredItems.Add("Wood", 15);
			item3.RequiredItems.Add("RoundLog", 4);
			item3.RequiredItems.Add("BronzeNails", 100);
			item3.Configurable = Configurability.Recipe;
			ShaderReplacer.Replace(item3.Prefab);
			Item item4 = new Item(_boatBundle, "BBA_SturdyHull");
			item4.Crafting.Add("BBA_Boatyard", 1);
			item4.RequiredItems.Add("ElderBark", 76);
			item4.RequiredItems.Add("YggdrasilWood", 62);
			item4.RequiredItems.Add("FineWood", 48);
			item4.RequiredItems.Add("IronNails", 220);
			item4.Configurable = Configurability.Recipe;
			ShaderReplacer.Replace(item4.Prefab);
		}

		private static void Others()
		{
			PrefabManager.RegisterPrefab(_boatBundle, "BBA_CargoCrate");
			PrefabManager.RegisterPrefab(_boatBundle, "bba_sfx_build_hammer_wood");
			PrefabManager.RegisterPrefab(_boatBundle, "bba_sfx_chest_close");
			PrefabManager.RegisterPrefab(_boatBundle, "bba_sfx_chest_open");
			PrefabManager.RegisterPrefab(_boatBundle, "bba_sfx_gui_craftitem_workbench");
			PrefabManager.RegisterPrefab(_boatBundle, "bba_sfx_gui_craftitem_workbench_end");
			PrefabManager.RegisterPrefab(_boatBundle, "bba_sfx_gui_repairitem_workbench");
			PrefabManager.RegisterPrefab(_boatBundle, "bba_sfx_ship_destroyed");
			PrefabManager.RegisterPrefab(_boatBundle, "bba_sfx_ship_impact");
			PrefabManager.RegisterPrefab(_boatBundle, "bba_sfx_ship_waterimpact");
			PrefabManager.RegisterPrefab(_boatBundle, "bba_vfx_clubhit");
			PrefabManager.RegisterPrefab(_boatBundle, "bba_vfx_Damaged_Karve");
			PrefabManager.RegisterPrefab(_boatBundle, "bba_vfx_Damaged_Raft");
			PrefabManager.RegisterPrefab(_boatBundle, "bba_vfx_Damaged_VikingShip");
			PrefabManager.RegisterPrefab(_boatBundle, "bba_vfx_Destroyed_Karve");
			PrefabManager.RegisterPrefab(_boatBundle, "bba_vfx_Destroyed_Raft");
			PrefabManager.RegisterPrefab(_boatBundle, "bba_vfx_Destroyed_VikingShip");
			PrefabManager.RegisterPrefab(_boatBundle, "bba_vfx_Place_charcoalkiln");
			PrefabManager.RegisterPrefab(_boatBundle, "bba_vfx_Place_Karve");
			PrefabManager.RegisterPrefab(_boatBundle, "bba_vfx_Place_Raft");
			PrefabManager.RegisterPrefab(_boatBundle, "bba_vfx_Place_VikingShip");
			PrefabManager.RegisterPrefab(_boatBundle, "bba_vfx_Place_workbench");
			PrefabManager.RegisterPrefab(_boatBundle, "bba_vfx_SawDust");
			ShaderReplacer.Replace(PrefabManager.RegisterPrefab(_boatBundle, "bba_vfx_WaterImpact_Karve"));
			ShaderReplacer.Replace(PrefabManager.RegisterPrefab(_boatBundle, "bba_vfx_WaterImpact_Raft"));
			ShaderReplacer.Replace(PrefabManager.RegisterPrefab(_boatBundle, "bba_vfx_WaterImpact_VikingShip"));
			ShaderReplacer.Replace(PrefabManager.RegisterPrefab(_boatBundle, "bba_vfx_watersplash_karve"));
			ShaderReplacer.Replace(PrefabManager.RegisterPrefab(_boatBundle, "bba_vfx_watersplash_longship"));
		}
	}
	public static class ShaderReplacer
	{
		private static readonly List<GameObject> GOToSwap;

		static ShaderReplacer()
		{
			//IL_000f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0041: Unknown result type (might be due to invalid IL or missing references)
			//IL_004e: Expected O, but got Unknown
			GOToSwap = new List<GameObject>();
			new Harmony("blacks7ar.utilities.ShaderReplacer").Patch((MethodBase)