Decompiled source of Weedheim v2.0.4

plugins/Weedheim.dll

Decompiled 4 days ago
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Runtime.Versioning;
using System.Security.Permissions;
using BepInEx;
using BepInEx.Configuration;
using HarmonyLib;
using Jotunn;
using Jotunn.Configs;
using Jotunn.Entities;
using Jotunn.Extensions;
using Jotunn.Managers;
using Jotunn.Utils;
using Microsoft.CodeAnalysis;
using UnityEngine;
using UnityEngine.PostProcessing;
using UnityEngine.SceneManagement;
using UnityEngine.UI;
using Weedheim.Effects;
using Weedheim.Updates;

[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)]
[assembly: AssemblyTitle("Weedheim")]
[assembly: AssemblyDescription("https://discord.gg/nzybGbmXfV")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("MagicMike")]
[assembly: AssemblyProduct("Weedheim")]
[assembly: AssemblyCopyright("Copyright © MagicMike 2025Weedheim")]
[assembly: AssemblyTrademark("")]
[assembly: ComVisible(false)]
[assembly: Guid("e3243d22-4307-4008-ba36-9f326008cde5")]
[assembly: AssemblyFileVersion("2.0.4")]
[assembly: TargetFramework(".NETFramework,Version=v4.8", FrameworkDisplayName = ".NET Framework 4.8")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("2.0.4.0")]
[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;
		}
	}
}
public class WH_LokiBelt : SE_Stats
{
	public bool m_enablePing;

	public EffectList m_pingEffectNear = new EffectList();

	public EffectList m_pingEffectMed = new EffectList();

	public EffectList m_pingEffectFar = new EffectList();

	public float m_closerTriggerDistance = 4f;

	public float m_furtherTriggerDistance = 6f;

	public float m_closeFrequency = 0.5f;

	public float m_distantFrequency = 3f;

	private float m_updateBeaconTimer;

	private float m_pingTimer;

	private Beacon m_beacon;

	private float m_lastDistance;

	public override void UpdateStatusEffect(float dt)
	{
		//IL_003c: Unknown result type (might be due to invalid IL or missing references)
		//IL_00b9: Unknown result type (might be due to invalid IL or missing references)
		//IL_00c9: Unknown result type (might be due to invalid IL or missing references)
		//IL_0075: Unknown result type (might be due to invalid IL or missing references)
		//IL_0085: Unknown result type (might be due to invalid IL or missing references)
		//IL_0138: Unknown result type (might be due to invalid IL or missing references)
		//IL_0148: Unknown result type (might be due to invalid IL or missing references)
		//IL_01c1: Unknown result type (might be due to invalid IL or missing references)
		//IL_01d1: Unknown result type (might be due to invalid IL or missing references)
		//IL_0182: Unknown result type (might be due to invalid IL or missing references)
		//IL_0192: Unknown result type (might be due to invalid IL or missing references)
		if (!m_enablePing)
		{
			return;
		}
		m_updateBeaconTimer += dt;
		if (m_updateBeaconTimer > 1f)
		{
			m_updateBeaconTimer = 0f;
			Beacon val = Beacon.FindClosestBeaconInRange(((Component)((StatusEffect)this).m_character).transform.position);
			if ((Object)(object)val != (Object)(object)m_beacon)
			{
				m_beacon = val;
				if (Object.op_Implicit((Object)(object)m_beacon))
				{
					m_lastDistance = Utils.DistanceXZ(((Component)((StatusEffect)this).m_character).transform.position, ((Component)m_beacon).transform.position);
					m_pingTimer = 0f;
				}
			}
		}
		if (!((Object)(object)m_beacon != (Object)null))
		{
			return;
		}
		float num = Utils.DistanceXZ(((Component)((StatusEffect)this).m_character).transform.position, ((Component)m_beacon).transform.position);
		float num2 = Mathf.Clamp01(num / m_beacon.m_range);
		float num3 = Mathf.Lerp(m_closeFrequency, m_distantFrequency, num2);
		m_pingTimer += dt;
		if (m_pingTimer > num3)
		{
			m_pingTimer = 0f;
			if (num2 < 0.2f)
			{
				m_pingEffectNear.Create(((Component)((StatusEffect)this).m_character).transform.position, ((Component)((StatusEffect)this).m_character).transform.rotation, ((Component)((StatusEffect)this).m_character).transform, 1f, -1);
			}
			else if (num2 < 0.6f)
			{
				m_pingEffectMed.Create(((Component)((StatusEffect)this).m_character).transform.position, ((Component)((StatusEffect)this).m_character).transform.rotation, ((Component)((StatusEffect)this).m_character).transform, 1f, -1);
			}
			else
			{
				m_pingEffectFar.Create(((Component)((StatusEffect)this).m_character).transform.position, ((Component)((StatusEffect)this).m_character).transform.rotation, ((Component)((StatusEffect)this).m_character).transform, 1f, -1);
			}
			m_lastDistance = num;
		}
	}
}
namespace Weedheim
{
	internal class FileWatcher
	{
		public static void WatchFileChanges(string path, Action onChanged)
		{
			FileSystemWatcher fileSystemWatcher = new FileSystemWatcher();
			string directoryName = Path.GetDirectoryName(path);
			string fileName = Path.GetFileName(path);
			fileSystemWatcher.Path = directoryName;
			fileSystemWatcher.Filter = fileName;
			fileSystemWatcher.NotifyFilter = NotifyFilters.FileName | NotifyFilters.LastWrite;
			fileSystemWatcher.Changed += delegate
			{
				onChanged?.Invoke();
			};
			fileSystemWatcher.Deleted += delegate
			{
				onChanged?.Invoke();
			};
			fileSystemWatcher.Created += delegate
			{
				onChanged?.Invoke();
			};
			fileSystemWatcher.Renamed += delegate
			{
				onChanged?.Invoke();
			};
			fileSystemWatcher.EnableRaisingEvents = true;
		}

		public static void WatchTranslationChanges(string path, Action onChanged)
		{
			if (!Directory.Exists(WeedheimMod.TranslationFilePath))
			{
				return;
			}
			try
			{
				WatchFileChanges(Path.Combine(path, "*.*"), onChanged);
			}
			catch
			{
				Logger.LogError((object)"There was an issue loading Translation files!");
			}
		}
	}
	internal static class LocalisedText
	{
		public static CustomLocalization Localization = LocalizationManager.Instance.GetLocalization();

		public static void AddLocalisations()
		{
			CustomLocalization localization = Localization;
			string text = "English";
			localization.AddTranslation(ref text, new Dictionary<string, string>
			{
				{ "piece_budmaster", "Budmaster2000" },
				{ "piece_budmaster_add_weed", "Add Buds" },
				{ "piece_budmaster_empty", "Empty" },
				{ "piece_sapling_mystic", "Blue Mystic Sapling" },
				{ "piece_sapling_mystic_desc", "Plant this to grow some stinky weed!" },
				{ "piece_sapling_honey", "Honey Badger Sapling" },
				{ "piece_sapling_honey_desc", "Plant this to grow some stinky weed!" },
				{ "piece_sapling_kush", "Purple Kush Sapling" },
				{ "piece_sapling_kush_desc", "Plant this to grow some stinky weed!" },
				{ "piece_sapling_cherry", "Black Cherry Sapling" },
				{ "piece_sapling_cherry_desc", "Plant this to grow some stinky weed!" },
				{ "piece_sapling_widow", "White Widow Sapling" },
				{ "piece_sapling_widow_desc", "Plant this to grow some stinky weed!" },
				{ "piece_sapling_desire", "Burning Desire Sapling" },
				{ "piece_sapling_desire_desc", "Plant this to grow some stinky weed!" },
				{ "piece_sapling_lights", "Northern Lights Sapling" },
				{ "piece_sapling_lights_desc", "Plant this to grow some stinky weed!" },
				{ "piece_sapling_poison", "Durban Poison Sapling" },
				{ "piece_sapling_poison_desc", "Plant this to grow some stinky weed!" },
				{ "piece_sapling_liberty", "Liberty Cap Mushrooms!" },
				{ "piece_sapling_liberty_desc", "Plant these to grow some magic mushrooms!" },
				{ "piece_sleeping_bag", "Sleeping Bag" },
				{ "piece_sleeping_bag_desc", "Sleep under the stars, no matter where you are." },
				{ "piece_mm_chair", "Chair" }
			});
			CustomLocalization localization2 = Localization;
			text = "English";
			localization2.AddTranslation(ref text, new Dictionary<string, string>
			{
				{ "item_bag_o_kush", "Bag of Purple Kush" },
				{ "item_bag_o_badger", "Bag of Honey Badger" },
				{ "item_bag_o_cherry", "Bag of Black Cherry" },
				{ "item_bag_o_mystic", "Bag of Blue Mystic" },
				{ "item_bag_o_widow", "Bag of White Widow" },
				{ "item_bag_o_desire", "Bag of Burning Desire" },
				{ "item_bag_o_lights", "Bag of Northern Lights" },
				{ "item_bag_o_poison", "Bag of Durban Poison" },
				{ "item_cannabis_seeds", "Female Cannabis Seeds" },
				{ "item_cannabis_seeds_desc", "Seeds of the Cannabis plant." },
				{ "item_mystic_bud", "Blue Mystic Bud" },
				{ "item_mystic_bud_desc", "Needs drying and grinding with the Budmaster2000 to be smokeable!" },
				{ "item_cherry_bud", "Black Cherry Bud" },
				{ "item_cherry_bud_desc", "Needs drying and grinding with the Budmaster2000 to be smokeable!" },
				{ "item_honey_bud", "Honey Badger Bud" },
				{ "item_honey_bud_desc", "Needs drying and grinding with the Budmaster2000 to be smokeable!" },
				{ "item_kush_bud", "Purple Kush Bud" },
				{ "item_kush_bud_desc", "Needs drying and grinding with the Budmaster2000 to be smokeable!" },
				{ "item_widow_bud", "White Widow Bud" },
				{ "item_widow_bud_desc", "Needs drying and grinding with the Budmaster2000 to be smokeable!" },
				{ "item_desire_bud", "Burning Desire Bud" },
				{ "item_desire_bud_desc", "Needs drying and grinding with the Budmaster2000 to be smokeable!" },
				{ "item_lights_bud", "Northern Lights Bud" },
				{ "item_lights_bud_desc", "Needs drying and grinding with the Budmaster2000 to be smokeable!" },
				{ "item_poison_bud", "Durban Poison Bud" },
				{ "item_poison_bud_desc", "Needs drying and grinding with the Budmaster2000 to be smokeable!" },
				{ "item_mushroom_spores", "Mushroom Spores" },
				{ "item_mushroom_spores_desc", "Mushroom spores for growing magic mushrooms." },
				{ "item_joint_cherry", "Black Cherry Spliff" },
				{ "item_joint_cherry_desc", "Black Cherry exhibits clear-headed uplifting effects good for productivity." },
				{ "item_joint_badger", "Honey Badger Spliff" },
				{ "item_joint_badger_desc", "Very pretty. Smooth. Happy and active high." },
				{ "item_joint_mystic", "Blue Mystic Spliff" },
				{ "item_joint_mystic_desc", "Very mellow with hints of berry and pine." },
				{ "item_joint_kush", "Purple Kush Spliff" },
				{ "item_joint_kush_desc", "Euphoria blankets the mind while physical relaxation rids the body of pain." },
				{ "item_joint_widow", "White Widow Spliff" },
				{ "item_joint_widow_desc", "Heady as f*ck with a trickle down body high." },
				{ "item_joint_desire", "Burning Desire Spliff" },
				{ "item_joint_desire_desc", "A potent high that hits immediately." },
				{ "item_joint_lights", "Northern Lights Spliff" },
				{ "item_joint_lights_desc", "Relaxing muscles and easing the mind." },
				{ "item_joint_poison", "Durban Poison Spliff" },
				{ "item_joint_poison_desc", "Helps you stay productive through a busy day." },
				{ "item_joint_paper", "Kingsize Paper" },
				{ "item_joint_paper_desc", "Roll a fat doobies with this." },
				{ "item_magic_mushrooms", "Magic Mushrooms" },
				{ "item_magic_mushrooms_desc", "Good for tripping your tits off!" },
				{ "item_lokis_utility_belt", "Lokis Utility Belt" },
				{ "item_lokis_utility_belt_desc", "Even Odin himself is astonished by the power of this belt!" },
				{ "item_lokis_bong", "Lokis Magical Bong" },
				{ "item_lokis_bong_desc", "A very nice bong for smoking Lokis special blend." },
				{ "item_lokis_blend", "Lokis Special Blend" },
				{ "item_lokis_blend_desc", "A special mystery blend created by Loki!" },
				{ "item_cbd_potion", "CBD Potion" },
				{ "item_cbd_potion_desc", "For when you need to come down quickly!" },
				{ "item_sleeping_bag", "Sleeping Bag (Packed)" },
				{ "item_sleeping_bag_desc", "Use this to craft a sleeping bag." },
				{ "item_trophy_rasta_troll", "Rasta Troll Trophy" },
				{ "item_trophy_rasta_troll_desc", "The leathery skin smells like weed!" },
				{ "item_trophy_rasta_troll_lore", "The leathery skin smells like weed!" }
			});
			CustomLocalization localization3 = Localization;
			text = "English";
			localization3.AddTranslation(ref text, new Dictionary<string, string>
			{
				{ "spliff_badger_tooltip", "Very pretty. Smooth. Happy and active high." },
				{ "spliff_badger_effect_name", "Happy Stoned" },
				{ "spliff_badger_start", "You feel happy & active!" },
				{ "spliff_cherry_effect_name", "Productive Stoned" },
				{ "spliff_cherry_tooltip", "Clear-headed, uplifting effects good for productivity." },
				{ "spliff_cherry_start", "You feel uplifted & productive!" },
				{ "spliff_kush_effect_name", "Euphoric Stoned" },
				{ "spliff_kush_tooltip", "Euphoria blankets the mind while physical relaxation rids the body of pain!" },
				{ "spliff_kush_start", "You feel euphoric & relaxed!" },
				{ "spliff_mystic_effect_name", "Mellow Stoned" },
				{ "spliff_mystic_tooltip", "Very mellow with hints of berry and pine." },
				{ "spliff_mystic_start", "You feel mellow!" },
				{ "spliff_widow_effect_name", "Heady Stoned" },
				{ "spliff_widow_tooltip", "Heady as f*ck with a trickle down body high." },
				{ "spliff_widow_start", "Your body feels heavy!" },
				{ "spliff_desire_effect_name", "Nicely Stoned" },
				{ "spliff_desire_tooltip", "A potent high that hits immediately." },
				{ "spliff_desire_start", "You feel productive!" },
				{ "spliff_lights_effect_name", "Relaxed Stoned" },
				{ "spliff_lights_tooltip", "Relaxing muscles and easing the mind." },
				{ "spliff_lights_start", "Your body feels relaxed!" },
				{ "spliff_poison_effect_name", "Productive Stoned" },
				{ "spliff_poison_tooltip", "Helps you stay productive through a busy day." },
				{ "spliff_poison_start", "You feel productive!" },
				{ "cooldown_spliff", "You can't smoke another spliff right now! {0}secs remaining." },
				{ "bong_effect_name", "High as F**k" },
				{ "bong_tooltip", "Stoned as f*ck with a trickle down body high." },
				{ "bong_effect_start", "Your mind is racing. Your body feels heavy!" },
				{ "cooldown_bong", "You can't smoke another bong right now! {0}secs remaining." },
				{ "liberty_effect_name", "Tripping Balls" },
				{ "liberty_tooltip", "You keep seeing funny creatures. (or do you?!)." },
				{ "liberty_effect_start", "You're tripping your balls off!" },
				{ "cooldown_mushroom", "You can't consume more mushrooms right now! {0}secs remaining." },
				{ "wh_effect_stop", "You've come down!" },
				{ "loki_ubelt_name", "Lokis Belt" },
				{ "loki_ubelt_tooltip", "Helps you find hidden things & increases your carry weight." },
				{ "loki_ubelt_start", "You sense hidden objects & feel stronger." }
			});
			CustomLocalization localization4 = Localization;
			text = "English";
			localization4.AddTranslation(ref text, new Dictionary<string, string>
			{
				{ "npc_loki_randomtalk01", "I really needed that man!" },
				{ "npc_loki_randomtalk02", "Better out than in dude!" },
				{ "npc_loki_randomtalk03", "Wow, Excuse me dude!" },
				{ "npc_loki_randomtalk04", "Hmmmm, smells well beefy man!" },
				{ "npc_loki_randomtalk05", "I once stuck a carrot up my bum dude!" },
				{ "npc_loki_randomtalk06", "I like to go commando, and feel the breeze against my balls man!" },
				{ "npc_loki_randomtalk07", "That was a bit chunky dude!" },
				{ "npc_loki_greeting01", "Hey man, wanna buy some Cannabis seeds?" },
				{ "npc_loki_greeting02", "Need a fat doobie man?" },
				{ "npc_loki_greeting03", "Want some magic mushrooms dude?" },
				{ "npc_loki_goodbye01", "Farewell dude, have a good day." },
				{ "npc_loki_goodbye02", "See you again soon dude." },
				{ "npc_loki_goodbye03", "Do not get too stoned my man!" },
				{ "npc_loki_trade01", "I'm interested in trade, not chatter!" },
				{ "npc_loki_trade02", "Dude, let us make a deal." },
				{ "npc_loki_trade03", "You're fortunate to have caught me in a good mood. Let us trade man." },
				{ "npc_loki_buy01", "These are fine items, not the sort of things you can just pick up." },
				{ "npc_loki_buy02", "Don't touch anything unless you're prepared to pay for it man." },
				{ "npc_loki_buy03", "Cast your eyes over my goods dude, but keep your hands to yourself." },
				{ "npc_loki_sell01", "Let's see what crap you've picked up dude..." },
				{ "npc_loki_sell02", "Hmm, what have we here dude?" },
				{ "npc_loki_sell03", "Show me what you have man." }
			});
			CustomLocalization localization5 = Localization;
			text = "English";
			localization5.AddTranslation(ref text, new Dictionary<string, string>
			{
				{ "freya_randomtext_1", "Wanna play hide the sausage?!" },
				{ "freya_randomtext_2", "Do you like the way I sway my hips?!" },
				{ "freya_randomtext_3", "I need another hand-print on my butt!" },
				{ "freya_randomtext_4", "Loki has a massive green todger!" },
				{ "freya_randomtext_5", "Wanna dance with me?" }
			});
			CustomLocalization localization6 = Localization;
			text = "English";
			localization6.AddTranslation(ref text, new Dictionary<string, string>
			{
				{ "stoned_troll", "Rasta Troll" },
				{ "stoned_troll_female", "Rasta Troll" },
				{ "stoned_troll_infant", "Rasta Troll Infant" },
				{ "stoned_troll_infant_female", "Rasta Troll Infant" },
				{ "tame_status", "Taming Status: " },
				{ "tame_consumables", "Consumables: " },
				{ "food_level", "Food Duration: " },
				{ "tame_pregnancy", "Pregnancy: " },
				{ "tame_pregnant", "Is Pregnant" },
				{ "love_points", "Love Points: " },
				{ "infant_troll", "Infant Troll: " },
				{ "infant_neck", "Infant Neck: " },
				{ "needs_mate", "Needs a mate" },
				{ "needs_a_mate", " needs a mate!" },
				{ "is_hungry", " is hungry!" },
				{ "is_pregnant", " is pregnant!" },
				{ "is_horny", " is horny!" },
				{ "grown", " grown" },
				{ "creature_faction", "Creature Faction: " }
			});
		}
	}
	internal class MainConfig
	{
		internal enum GlobalSpawnKeys
		{
			defeated_bonemass,
			defeated_gdking,
			defeated_goblinking,
			defeated_dragon,
			defeated_eikthyr,
			defeated_queen,
			defeated_fader,
			defeated_serpent,
			KilledTroll,
			killed_surtling,
			KilledBat,
			None
		}

		internal const string GeneralSection = "General_Settings";

		internal static ConfigEntry<bool> enablePlugin;

		internal static ConfigEntry<bool> enableLogo;

		internal static ConfigEntry<bool> enableTrippingVFX;

		internal static ConfigEntry<bool> enableStonedVFX;

		internal static ConfigEntry<bool> ignoreWindspeed;

		internal static ConfigEntry<bool> disableRoofCheck;

		internal static ConfigEntry<bool> disableRestriction;

		internal static ConfigEntry<bool> showGrowTimer;

		internal static ConfigEntry<bool> showGrowPercent;

		internal static ConfigEntry<bool> groundOnly;

		internal static ConfigEntry<bool> needCultivated;

		internal const string BeltSection = "Belt_Settings";

		internal static ConfigEntry<bool> enableWishbone;

		internal static ConfigEntry<float> DetectSilverDistance;

		internal static ConfigEntry<float> DetectMudPileDistance;

		internal static ConfigEntry<float> DetectBuriedDistance;

		internal static ConfigEntry<float> DetectMosquitoDistance;

		internal static ConfigEntry<float> closeFrequency;

		internal static ConfigEntry<float> distantFrequency;

		internal static ConfigEntry<float> maxCarryWeight;

		internal static ConfigEntry<float> stealthModifier;

		internal static ConfigEntry<float> speedModifier;

		internal static ConfigEntry<bool> enableDemister;

		internal static ConfigEntry<float> demisterRange;

		internal const string BongSection = "Bong_Settings";

		internal static ConfigEntry<float> bongDuration;

		internal static ConfigEntry<float> bongCooldown;

		internal static ConfigEntry<float> bongStaminaUsageVal;

		internal static ConfigEntry<float> bongHealthRegenVal;

		internal static ConfigEntry<float> bongStaminaRegenVal;

		internal static ConfigEntry<float> bongEitrRegenVal;

		internal static ConfigEntry<float> bongDamageVal;

		internal static ConfigEntry<float> bongSpeedVal;

		internal static ConfigEntry<float> bongJumpVal;

		internal static ConfigEntry<float> bongFallSpeed;

		internal static ConfigEntry<float> bongFallDamage;

		internal static ConfigEntry<bool> bongRested;

		internal static ConfigEntry<float> bongRestedDuration;

		internal const string SleepingBag = "Sleeping_Bag_Settings";

		internal static ConfigEntry<bool> bedCheckExposure;

		internal static ConfigEntry<bool> bedCheckWet;

		internal static ConfigEntry<bool> bedCheckFire;

		internal static ConfigEntry<bool> bedCheckEnemies;

		internal const string HoneyBadgerPlant = "Honey_Badger_Plant";

		internal static ConfigEntry<int> growTimeBadger;

		internal static ConfigEntry<int> respawnTimeBadger;

		internal static ConfigEntry<float> minScaleBadger;

		internal static ConfigEntry<float> maxScaleBadger;

		internal static ConfigEntry<float> growRadiusBadger;

		internal static ConfigEntry<int> budYieldDropBadger;

		internal const string HoneyBadgerEffects = "Honey_Badger_Effects";

		internal static ConfigEntry<float> jointDurationBadger;

		internal static ConfigEntry<float> jointCooldownBadger;

		internal static ConfigEntry<float> jointStaminaUsageValBadger;

		internal static ConfigEntry<float> jointHealthRegenValBadger;

		internal static ConfigEntry<float> jointStaminaRegenValBadger;

		internal static ConfigEntry<float> jointEitrRegenValBadger;

		internal static ConfigEntry<float> jointDamageValBadger;

		internal static ConfigEntry<float> jointSpeedValBadger;

		internal static ConfigEntry<float> jointJumpValBadger;

		internal static ConfigEntry<float> jointFallSpeedBadger;

		internal static ConfigEntry<float> jointFallDamageBadger;

		internal const string BlackCherryPlant = "Black_Cherry_Plant";

		internal static ConfigEntry<int> growTimeCherry;

		internal static ConfigEntry<int> respawnTimeCherry;

		internal static ConfigEntry<float> minScaleCherry;

		internal static ConfigEntry<float> maxScaleCherry;

		internal static ConfigEntry<float> growRadiusCherry;

		internal static ConfigEntry<int> budYieldDropCherry;

		internal const string BlackCherryEffects = "Black_Cherry_Effects";

		internal static ConfigEntry<float> jointDurationCherry;

		internal static ConfigEntry<float> jointCooldownCherry;

		internal static ConfigEntry<float> jointStaminaUsageValCherry;

		internal static ConfigEntry<float> jointHealthRegenValCherry;

		internal static ConfigEntry<float> jointStaminaRegenValCherry;

		internal static ConfigEntry<float> jointEitrRegenValCherry;

		internal static ConfigEntry<float> jointDamageValCherry;

		internal static ConfigEntry<float> jointSpeedValCherry;

		internal static ConfigEntry<float> jointJumpValCherry;

		internal static ConfigEntry<float> jointFallSpeedCherry;

		internal static ConfigEntry<float> jointFallDamageCherry;

		internal const string PurpleKushPlant = "Purple_Kush_Plant";

		internal static ConfigEntry<int> growTimeKush;

		internal static ConfigEntry<int> respawnTimeKush;

		internal static ConfigEntry<float> minScaleKush;

		internal static ConfigEntry<float> maxScaleKush;

		internal static ConfigEntry<float> growRadiusKush;

		internal static ConfigEntry<int> budYieldDropKush;

		internal const string PurpleKushEffects = "Purple_Kush_Effects";

		internal static ConfigEntry<float> jointDurationKush;

		internal static ConfigEntry<float> jointCooldownKush;

		internal static ConfigEntry<float> jointStaminaUsageValKush;

		internal static ConfigEntry<float> jointHealthRegenValKush;

		internal static ConfigEntry<float> jointStaminaRegenValKush;

		internal static ConfigEntry<float> jointEitrRegenValKush;

		internal static ConfigEntry<float> jointDamageValKush;

		internal static ConfigEntry<float> jointSpeedValKush;

		internal static ConfigEntry<float> jointJumpValKush;

		internal static ConfigEntry<float> jointFallSpeedKush;

		internal static ConfigEntry<float> jointFallDamageKush;

		internal const string BlueMysticPlant = "Blue_Mystic_Plant";

		internal static ConfigEntry<int> growTimeMystic;

		internal static ConfigEntry<int> respawnTimeMystic;

		internal static ConfigEntry<float> minScaleMystic;

		internal static ConfigEntry<float> maxScaleMystic;

		internal static ConfigEntry<float> growRadiusMystic;

		internal static ConfigEntry<int> budYieldDropMystic;

		internal const string BlueMysticEffects = "Blue_Mystic_Effects";

		internal static ConfigEntry<float> jointDurationMystic;

		internal static ConfigEntry<float> jointCooldownMystic;

		internal static ConfigEntry<float> jointStaminaUsageValMystic;

		internal static ConfigEntry<float> jointHealthRegenValMystic;

		internal static ConfigEntry<float> jointStaminaRegenValMystic;

		internal static ConfigEntry<float> jointEitrRegenValMystic;

		internal static ConfigEntry<float> jointDamageValMystic;

		internal static ConfigEntry<float> jointSpeedValMystic;

		internal static ConfigEntry<float> jointJumpValMystic;

		internal static ConfigEntry<float> jointFallSpeedMystic;

		internal static ConfigEntry<float> jointFallDamageMystic;

		internal const string WhiteWidowPlant = "White_Widow_Plant";

		internal static ConfigEntry<int> growTimeWidow;

		internal static ConfigEntry<int> respawnTimeWidow;

		internal static ConfigEntry<float> minScaleWidow;

		internal static ConfigEntry<float> maxScaleWidow;

		internal static ConfigEntry<float> growRadiusWidow;

		internal static ConfigEntry<int> budYieldDropWidow;

		internal const string WhiteWidowEffects = "White_Widow_Effects";

		internal static ConfigEntry<float> jointDurationWidow;

		internal static ConfigEntry<float> jointCooldownWidow;

		internal static ConfigEntry<float> jointStaminaUsageValWidow;

		internal static ConfigEntry<float> jointHealthRegenValWidow;

		internal static ConfigEntry<float> jointStaminaRegenValWidow;

		internal static ConfigEntry<float> jointEitrRegenValWidow;

		internal static ConfigEntry<float> jointDamageValWidow;

		internal static ConfigEntry<float> jointSpeedValWidow;

		internal static ConfigEntry<float> jointJumpValWidow;

		internal static ConfigEntry<float> jointFallSpeedWidow;

		internal static ConfigEntry<float> jointFallDamageWidow;

		internal const string BurningDesirePlant = "Burning_Desire_Plant";

		internal static ConfigEntry<int> growTimeDesire;

		internal static ConfigEntry<int> respawnTimeDesire;

		internal static ConfigEntry<float> minScaleDesire;

		internal static ConfigEntry<float> maxScaleDesire;

		internal static ConfigEntry<float> growRadiusDesire;

		internal static ConfigEntry<int> budYieldDropDesire;

		internal const string BurningDesireEffects = "Burning_Desire_Effects";

		internal static ConfigEntry<float> jointDurationDesire;

		internal static ConfigEntry<float> jointCooldownDesire;

		internal static ConfigEntry<float> jointStaminaUsageValDesire;

		internal static ConfigEntry<float> jointHealthRegenValDesire;

		internal static ConfigEntry<float> jointStaminaRegenValDesire;

		internal static ConfigEntry<float> jointEitrRegenValDesire;

		internal static ConfigEntry<float> jointDamageValDesire;

		internal static ConfigEntry<float> jointSpeedValDesire;

		internal static ConfigEntry<float> jointJumpValDesire;

		internal static ConfigEntry<float> jointFallSpeedDesire;

		internal static ConfigEntry<float> jointFallDamageDesire;

		internal const string NorthernLightsPlant = "Northern_Lights_Plant";

		internal static ConfigEntry<int> growTimeLights;

		internal static ConfigEntry<int> respawnTimeLights;

		internal static ConfigEntry<float> minScaleLights;

		internal static ConfigEntry<float> maxScaleLights;

		internal static ConfigEntry<float> growRadiusLights;

		internal static ConfigEntry<int> budYieldDropLights;

		internal const string NorthernLightsEffects = "Northern_Lights_Effects";

		internal static ConfigEntry<float> jointDurationLights;

		internal static ConfigEntry<float> jointCooldownLights;

		internal static ConfigEntry<float> jointStaminaUsageValLights;

		internal static ConfigEntry<float> jointHealthRegenValLights;

		internal static ConfigEntry<float> jointStaminaRegenValLights;

		internal static ConfigEntry<float> jointEitrRegenValLights;

		internal static ConfigEntry<float> jointDamageValLights;

		internal static ConfigEntry<float> jointSpeedValLights;

		internal static ConfigEntry<float> jointJumpValLights;

		internal static ConfigEntry<float> jointFallSpeedLights;

		internal static ConfigEntry<float> jointFallDamageLights;

		internal const string DurbanPoisonPlant = "Durban_Poison_Plant";

		internal static ConfigEntry<int> growTimePoison;

		internal static ConfigEntry<int> respawnTimePoison;

		internal static ConfigEntry<float> minScalePoison;

		internal static ConfigEntry<float> maxScalePoison;

		internal static ConfigEntry<float> growRadiusPoison;

		internal static ConfigEntry<int> budYieldDropPoison;

		internal const string DurbanPoisonEffects = "Durban_Poison_Effects";

		internal static ConfigEntry<float> jointDurationPoison;

		internal static ConfigEntry<float> jointCooldownPoison;

		internal static ConfigEntry<float> jointStaminaUsageValPoison;

		internal static ConfigEntry<float> jointHealthRegenValPoison;

		internal static ConfigEntry<float> jointStaminaRegenValPoison;

		internal static ConfigEntry<float> jointEitrRegenValPoison;

		internal static ConfigEntry<float> jointDamageValPoison;

		internal static ConfigEntry<float> jointSpeedValPoison;

		internal static ConfigEntry<float> jointJumpValPoison;

		internal static ConfigEntry<float> jointFallSpeedPoison;

		internal static ConfigEntry<float> jointFallDamagePoison;

		internal const string LibertyPlant = "Liberty_Cap_Mushroom";

		internal static ConfigEntry<int> growTimeLiberty;

		internal static ConfigEntry<int> respawnTimeLiberty;

		internal static ConfigEntry<float> minScaleLiberty;

		internal static ConfigEntry<float> maxScaleLiberty;

		internal static ConfigEntry<float> growRadiusLiberty;

		internal static ConfigEntry<int> libertyYieldDrop;

		internal const string LibertyEffects = "Liberty_Cap_Effects";

		internal static ConfigEntry<float> libertyDuration;

		internal static ConfigEntry<float> libertyCooldown;

		internal static ConfigEntry<float> libertyStaminaUsageVal;

		internal static ConfigEntry<float> libertyHealthRegenVal;

		internal static ConfigEntry<float> libertyStaminaRegenVal;

		internal static ConfigEntry<float> libertyEitrRegenVal;

		internal static ConfigEntry<float> libertyDamageVal;

		internal static ConfigEntry<float> libertySpeedVal;

		internal static ConfigEntry<float> libertyJumpVal;

		internal static ConfigEntry<float> libertyFallSpeed;

		internal static ConfigEntry<float> libertyFallDamage;

		internal const string RastaTroll = "Rasta_Trolls";

		internal static ConfigEntry<bool> enableTroll;

		internal static ConfigEntry<GlobalSpawnKeys> globalKeyTroll;

		internal static ConfigEntry<bool> outsideBlackForest;

		internal static ConfigEntry<bool> huntPlayerTroll;

		internal static ConfigEntry<int> minLevelTroll;

		internal static ConfigEntry<int> maxLevelTroll;

		internal static ConfigEntry<float> healthTroll;

		internal static ConfigEntry<bool> canBeTamedTroll;

		internal static ConfigEntry<bool> startTamedTroll;

		internal static ConfigEntry<float> tamingTimeTroll;

		internal static ConfigEntry<float> fedDurationTroll;

		internal static ConfigEntry<float> trophyDropTroll;

		internal const string RastaTrollProcreation = "Rasta_Trolls_Procreation";

		internal static ConfigEntry<bool> enableProcreationTroll;

		internal static ConfigEntry<float> totalCheckRangeTroll;

		internal static ConfigEntry<float> pregnancyChanceTroll;

		internal static ConfigEntry<float> pregnancyDurationTroll;

		internal static ConfigEntry<float> updateIntervalTroll;

		internal static ConfigEntry<float> partnerCheckRangeTroll;

		internal static ConfigEntry<int> maxCreaturesTroll;

		internal static ConfigEntry<int> requiredLoveTroll;

		internal static ConfigEntry<float> infantHealthTroll;

		internal static ConfigEntry<float> infantGrowTimeTroll;

		internal static ConfigEntry<int> infantLevelTroll;

		internal const string CreatureStats = "Creature_Status";

		internal static ConfigEntry<bool> showExtendedName;

		internal static ConfigEntry<bool> showFoodDuration;

		internal static ConfigEntry<bool> showPregnancy;

		internal static ConfigEntry<bool> showPregnancyProgress;

		internal static ConfigEntry<bool> showLovePoints;

		internal static ConfigEntry<bool> showGrowth;

		internal static ConfigEntry<float> viewDistance;

		public static void InitConfigs(ConfigFile config)
		{
			enablePlugin = ConfigFileExtensions.BindConfigInOrder<bool>(config, "General_Settings", "EnableWeedheim", true, "Enable the Weedheim plugin.\n", true, true, true, (AcceptableValueBase)null, (Action<ConfigEntryBase>)null, (ConfigurationManagerAttributes)null);
			enableLogo = ConfigFileExtensions.BindConfigInOrder<bool>(config, "General_Settings", "EnableLogo", true, "Enable the Weedheim logo.\n", false, true, true, (AcceptableValueBase)null, (Action<ConfigEntryBase>)null, (ConfigurationManagerAttributes)null);
			enableTrippingVFX = ConfigFileExtensions.BindConfigInOrder<bool>(config, "General_Settings", "EnableTrippingVFX", true, "Enable a rainbow colour effect while tripping.\n", false, true, true, (AcceptableValueBase)null, (Action<ConfigEntryBase>)null, (ConfigurationManagerAttributes)null);
			enableStonedVFX = ConfigFileExtensions.BindConfigInOrder<bool>(config, "General_Settings", "EnableStonedVFX", true, "Enable a red colour effect while stoned.\n", false, true, true, (AcceptableValueBase)null, (Action<ConfigEntryBase>)null, (ConfigurationManagerAttributes)null);
			ignoreWindspeed = ConfigFileExtensions.BindConfigInOrder<bool>(config, "General_Settings", "BudmasterWindIntensity", false, "If on Budmaster2000 always produces at average speed, regardless of wind intensity.\n", true, true, true, (AcceptableValueBase)null, (Action<ConfigEntryBase>)null, (ConfigurationManagerAttributes)null);
			disableRoofCheck = ConfigFileExtensions.BindConfigInOrder<bool>(config, "General_Settings", "DisableRoofCheck", true, "Enable this for the plants & mushrooms to be grown under a roof.\n", true, true, true, (AcceptableValueBase)null, (Action<ConfigEntryBase>)null, (ConfigurationManagerAttributes)null);
			disableRestriction = ConfigFileExtensions.BindConfigInOrder<bool>(config, "General_Settings", "DisableBiomeRestriction", true, "Enable this for the cannabis plants to be grown in any biome.\n\nDefault Biomes:\nMeadows = Purple Kush,\nSwamp = Durban Poison,\nMountain = White Widow,\nBlackForest = Black Cherry,\nPlains = Honey Badger,\nAshLands = Burning Desire,\nDeepNorth = Northern Lights,\nMistlands = Blue Mystic\n", true, true, true, (AcceptableValueBase)null, (Action<ConfigEntryBase>)null, (ConfigurationManagerAttributes)null);
			showGrowTimer = ConfigFileExtensions.BindConfigInOrder<bool>(config, "General_Settings", "ShowGrowTimer", true, "Display growth time remaining on cannabis plants and mushrooms.\n", false, true, true, (AcceptableValueBase)null, (Action<ConfigEntryBase>)null, (ConfigurationManagerAttributes)null);
			showGrowPercent = ConfigFileExtensions.BindConfigInOrder<bool>(config, "General_Settings", "ShowGrowPercent", false, "Display growth time remaining as percentage on cannabis plants and mushrooms.\n", false, true, true, (AcceptableValueBase)null, (Action<ConfigEntryBase>)null, (ConfigurationManagerAttributes)null);
			groundOnly = ConfigFileExtensions.BindConfigInOrder<bool>(config, "General_Settings", "PlantGroundOnly", true, "Enable this for the plants & mushrooms to be planted on the ground only.\n", true, true, true, (AcceptableValueBase)null, (Action<ConfigEntryBase>)null, (ConfigurationManagerAttributes)null);
			groundOnly.SettingChanged += WeedheimMod.OnMainConfigChanged;
			needCultivated = ConfigFileExtensions.BindConfigInOrder<bool>(config, "General_Settings", "PlantCultivatedGround", false, "Enable this for the plants & mushrooms to only be grown on cultivated ground.\n", true, true, true, (AcceptableValueBase)null, (Action<ConfigEntryBase>)null, (ConfigurationManagerAttributes)null);
			needCultivated.SettingChanged += WeedheimMod.OnMainConfigChanged;
			enableWishbone = ConfigFileExtensions.BindConfigInOrder<bool>(config, "Belt_Settings", "EnableWishbone", true, "Enable wishbone on the belt.\n(un-equip, then re-equip belt for setting to take effect).", false, true, true, (AcceptableValueBase)null, (Action<ConfigEntryBase>)null, (ConfigurationManagerAttributes)null);
			enableWishbone.SettingChanged += WeedheimMod.OnMainConfigChanged;
			DetectSilverDistance = ConfigFileExtensions.BindConfigInOrder<float>(config, "Belt_Settings", "SilverDistance", 20f, "At what distance to detect silver.\n (un-equip, then re-equip belt for setting to take effect).", true, true, true, (AcceptableValueBase)(object)new AcceptableValueRange<float>(10f, 60f), (Action<ConfigEntryBase>)null, (ConfigurationManagerAttributes)null);
			DetectMudPileDistance = ConfigFileExtensions.BindConfigInOrder<float>(config, "Belt_Settings", "MudPileDistance", 20f, "At what distance to detect mud piles.\n(un-equip, then re-equip belt for setting to take effect).", true, true, true, (AcceptableValueBase)(object)new AcceptableValueRange<float>(10f, 60f), (Action<ConfigEntryBase>)null, (ConfigurationManagerAttributes)null);
			DetectBuriedDistance = ConfigFileExtensions.BindConfigInOrder<float>(config, "Belt_Settings", "BuriedDistance", 20f, "At what distance to detect buried treasure.\n(un-equip, then re-equip belt for setting to take effect).", true, true, true, (AcceptableValueBase)(object)new AcceptableValueRange<float>(10f, 60f), (Action<ConfigEntryBase>)null, (ConfigurationManagerAttributes)null);
			DetectMosquitoDistance = ConfigFileExtensions.BindConfigInOrder<float>(config, "Belt_Settings", "MosquitoDistance", 80f, "At what distance to detect Deathsquitos.\n(un-equip, then re-equip belt for setting to take effect).", false, true, true, (AcceptableValueBase)(object)new AcceptableValueRange<float>(0f, 80f), (Action<ConfigEntryBase>)null, (ConfigurationManagerAttributes)null);
			closeFrequency = ConfigFileExtensions.BindConfigInOrder<float>(config, "Belt_Settings", "CloseFrequency", 0.3f, "Speed the beacon pings at.\n(un-equip, then re-equip belt for setting to take effect).", false, true, true, (AcceptableValueBase)(object)new AcceptableValueRange<float>(0.1f, 1f), (Action<ConfigEntryBase>)null, (ConfigurationManagerAttributes)null);
			closeFrequency.SettingChanged += WeedheimMod.OnMainConfigChanged;
			distantFrequency = ConfigFileExtensions.BindConfigInOrder<float>(config, "Belt_Settings", "DistantFrequency", 3f, "Speed the beacon pings at.\n(un-equip, then re-equip belt for setting to take effect).", false, true, true, (AcceptableValueBase)(object)new AcceptableValueRange<float>(2f, 5f), (Action<ConfigEntryBase>)null, (ConfigurationManagerAttributes)null);
			distantFrequency.SettingChanged += WeedheimMod.OnMainConfigChanged;
			enableDemister = ConfigFileExtensions.BindConfigInOrder<bool>(config, "Belt_Settings", "EnableDemister", true, "Enable demister on the belt.\n(un-equip, then re-equip belt for setting to take effect).", false, true, true, (AcceptableValueBase)null, (Action<ConfigEntryBase>)null, (ConfigurationManagerAttributes)null);
			demisterRange = ConfigFileExtensions.BindConfigInOrder<float>(config, "Belt_Settings", "DemisterRange", 35f, "Maximum range for the demister.\n(un-equip, then re-equip belt for setting to take effect).", true, true, true, (AcceptableValueBase)(object)new AcceptableValueRange<float>(0f, 50f), (Action<ConfigEntryBase>)null, (ConfigurationManagerAttributes)null);
			demisterRange.SettingChanged += WeedheimMod.OnMainConfigChanged;
			maxCarryWeight = ConfigFileExtensions.BindConfigInOrder<float>(config, "Belt_Settings", "CarryWeight", 150f, "Maximum additional carry weight.\n(un-equip, then re-equip belt for setting to take effect).", true, true, true, (AcceptableValueBase)(object)new AcceptableValueRange<float>(0f, 300f), (Action<ConfigEntryBase>)null, (ConfigurationManagerAttributes)null);
			maxCarryWeight.SettingChanged += WeedheimMod.OnMainConfigChanged;
			stealthModifier = ConfigFileExtensions.BindConfigInOrder<float>(config, "Belt_Settings", "StealthModifier", 0f, "Stealth modifier from belt.\n(un-equip, then re-equip belt for setting to take effect).", true, true, true, (AcceptableValueBase)null, (Action<ConfigEntryBase>)null, (ConfigurationManagerAttributes)null);
			stealthModifier.SettingChanged += WeedheimMod.OnMainConfigChanged;
			speedModifier = ConfigFileExtensions.BindConfigInOrder<float>(config, "Belt_Settings", "SpeedModifier", 0f, "Speed modifier from belt.\n(un-equip, then re-equip belt for setting to take effect).", true, true, true, (AcceptableValueBase)null, (Action<ConfigEntryBase>)null, (ConfigurationManagerAttributes)null);
			speedModifier.SettingChanged += WeedheimMod.OnMainConfigChanged;
			bongDuration = ConfigFileExtensions.BindConfigInOrder<float>(config, "Bong_Settings", "BongEffectDuration", 300f, "Effective time in seconds for smoking bongs to last.\n(Default 300 (5mins)).\n", true, true, true, (AcceptableValueBase)(object)new AcceptableValueRange<float>(1f, 1200f), (Action<ConfigEntryBase>)null, (ConfigurationManagerAttributes)null);
			bongDuration.SettingChanged += WeedheimMod.OnMainConfigChanged;
			bongCooldown = ConfigFileExtensions.BindConfigInOrder<float>(config, "Bong_Settings", "BongEffectCooldown", 60f, "Wait time in seconds before the next bong may be consumed.\n(Default 60 (1min)).\n", true, true, true, (AcceptableValueBase)(object)new AcceptableValueRange<float>(1f, 1200f), (Action<ConfigEntryBase>)null, (ConfigurationManagerAttributes)null);
			bongCooldown.SettingChanged += WeedheimMod.OnMainConfigChanged;
			bongStaminaUsageVal = ConfigFileExtensions.BindConfigInOrder<float>(config, "Bong_Settings", "BongStaminaUsage", 0.2f, "Percentage amount for stamina usage.\nThis will effect jump, attack, block, dodge, swim and run stamina.\n", true, true, true, (AcceptableValueBase)(object)new AcceptableValueRange<float>(-1f, 1f), (Action<ConfigEntryBase>)null, (ConfigurationManagerAttributes)null);
			bongStaminaUsageVal.SettingChanged += WeedheimMod.OnMainConfigChanged;
			bongStaminaRegenVal = ConfigFileExtensions.BindConfigInOrder<float>(config, "Bong_Settings", "BongStaminaRegen", 1f, "Percentage amount for stamina regeneration.\n", true, true, true, (AcceptableValueBase)(object)new AcceptableValueRange<float>(1f, 2f), (Action<ConfigEntryBase>)null, (ConfigurationManagerAttributes)null);
			bongStaminaRegenVal.SettingChanged += WeedheimMod.OnMainConfigChanged;
			bongHealthRegenVal = ConfigFileExtensions.BindConfigInOrder<float>(config, "Bong_Settings", "BongHealthRegen", 1.5f, "Percentage amount for health regeneration.\n", true, true, true, (AcceptableValueBase)(object)new AcceptableValueRange<float>(1f, 2f), (Action<ConfigEntryBase>)null, (ConfigurationManagerAttributes)null);
			bongHealthRegenVal.SettingChanged += WeedheimMod.OnMainConfigChanged;
			bongEitrRegenVal = ConfigFileExtensions.BindConfigInOrder<float>(config, "Bong_Settings", "BongEitrRegen", 1.5f, "Percentage amount for eitr regeneration.\n", true, true, true, (AcceptableValueBase)(object)new AcceptableValueRange<float>(1f, 2f), (Action<ConfigEntryBase>)null, (ConfigurationManagerAttributes)null);
			bongEitrRegenVal.SettingChanged += WeedheimMod.OnMainConfigChanged;
			bongDamageVal = ConfigFileExtensions.BindConfigInOrder<float>(config, "Bong_Settings", "BongDamageModifier", 1f, "Damage modifier from smoking bongs.\n", true, true, true, (AcceptableValueBase)(object)new AcceptableValueRange<float>(1f, 2f), (Action<ConfigEntryBase>)null, (ConfigurationManagerAttributes)null);
			bongDamageVal.SettingChanged += WeedheimMod.OnMainConfigChanged;
			bongSpeedVal = ConfigFileExtensions.BindConfigInOrder<float>(config, "Bong_Settings", "BongSpeedModifier", -0.2f, "Speed modifier from smoking bongs.\n", true, true, true, (AcceptableValueBase)(object)new AcceptableValueRange<float>(-1f, 1f), (Action<ConfigEntryBase>)null, (ConfigurationManagerAttributes)null);
			bongSpeedVal.SettingChanged += WeedheimMod.OnMainConfigChanged;
			bongJumpVal = ConfigFileExtensions.BindConfigInOrder<float>(config, "Bong_Settings", "BongJumpModifier", -0.2f, "Jump height modifier from smoking bongs.\n", true, true, true, (AcceptableValueBase)(object)new AcceptableValueRange<float>(-1f, 1f), (Action<ConfigEntryBase>)null, (ConfigurationManagerAttributes)null);
			bongJumpVal.SettingChanged += WeedheimMod.OnMainConfigChanged;
			bongFallSpeed = ConfigFileExtensions.BindConfigInOrder<float>(config, "Bong_Settings", "BongFallSpeed", 0f, "Fall Speed modifier from smoking bongs.\n", true, true, true, (AcceptableValueBase)(object)new AcceptableValueRange<float>(0f, 10f), (Action<ConfigEntryBase>)null, (ConfigurationManagerAttributes)null);
			bongFallSpeed.SettingChanged += WeedheimMod.OnMainConfigChanged;
			bongFallDamage = ConfigFileExtensions.BindConfigInOrder<float>(config, "Bong_Settings", "BongFallDamage", 0f, "Fall Damage modifier from smoking bongs.\n", true, true, true, (AcceptableValueBase)null, (Action<ConfigEntryBase>)null, (ConfigurationManagerAttributes)null);
			bongFallDamage.SettingChanged += WeedheimMod.OnMainConfigChanged;
			bongRested = ConfigFileExtensions.BindConfigInOrder<bool>(config, "Bong_Settings", "BongRestedBuff", true, "Enable bong rested buff.", true, true, true, (AcceptableValueBase)null, (Action<ConfigEntryBase>)null, (ConfigurationManagerAttributes)null);
			bongRested.SettingChanged += WeedheimMod.OnMainConfigChanged;
			bongRestedDuration = ConfigFileExtensions.BindConfigInOrder<float>(config, "Bong_Settings", "BongRestedDuration", 300f, "How many seconds should the Rested Buff last?\n", true, true, true, (AcceptableValueBase)(object)new AcceptableValueRange<float>(60f, 1200f), (Action<ConfigEntryBase>)null, (ConfigurationManagerAttributes)null);
			bongRestedDuration.SettingChanged += WeedheimMod.OnMainConfigChanged;
			bedCheckExposure = ConfigFileExtensions.BindConfigInOrder<bool>(config, "Sleeping_Bag_Settings", "DisableExposureCheck", true, "Disable exposure check when using the sleeping bag.\n", true, true, true, (AcceptableValueBase)null, (Action<ConfigEntryBase>)null, (ConfigurationManagerAttributes)null);
			bedCheckWet = ConfigFileExtensions.BindConfigInOrder<bool>(config, "Sleeping_Bag_Settings", "DisableWetCheck", true, "Disable wet check when using the sleeping bag.\n", true, true, true, (AcceptableValueBase)null, (Action<ConfigEntryBase>)null, (ConfigurationManagerAttributes)null);
			bedCheckFire = ConfigFileExtensions.BindConfigInOrder<bool>(config, "Sleeping_Bag_Settings", "DisableFireCheck", true, "Disable fire check when using the sleeping bag.\n", true, true, true, (AcceptableValueBase)null, (Action<ConfigEntryBase>)null, (ConfigurationManagerAttributes)null);
			bedCheckEnemies = ConfigFileExtensions.BindConfigInOrder<bool>(config, "Sleeping_Bag_Settings", "DisableEnemiesCheck", true, "Disable enemy check when using the sleeping bag.\n", true, true, true, (AcceptableValueBase)null, (Action<ConfigEntryBase>)null, (ConfigurationManagerAttributes)null);
			growTimeBadger = ConfigFileExtensions.BindConfigInOrder<int>(config, "Honey_Badger_Plant", "PlantGrowTime", 3600, "Time in seconds for a plant to grow.\n(86400 = 24hrs, 43200 = 12hrs, 21600 = 6hrs, 3600 = 1hr).\n", true, true, true, (AcceptableValueBase)(object)new AcceptableValueRange<int>(60, 604800), (Action<ConfigEntryBase>)null, (ConfigurationManagerAttributes)null);
			growTimeBadger.SettingChanged += WeedheimMod.OnPlantConfigChanged;
			minScaleBadger = ConfigFileExtensions.BindConfigInOrder<float>(config, "Honey_Badger_Plant", "MinimumPlantScale", 0.9f, "Minimum scale of a plant.\n", true, true, true, (AcceptableValueBase)(object)new AcceptableValueRange<float>(0.5f, 2.5f), (Action<ConfigEntryBase>)null, (ConfigurationManagerAttributes)null);
			minScaleBadger.SettingChanged += WeedheimMod.OnPlantConfigChanged;
			maxScaleBadger = ConfigFileExtensions.BindConfigInOrder<float>(config, "Honey_Badger_Plant", "MaximumPlantScale", 1.1f, "Maximum scale of a plant.\n", true, true, true, (AcceptableValueBase)(object)new AcceptableValueRange<float>(0.5f, 2.5f), (Action<ConfigEntryBase>)null, (ConfigurationManagerAttributes)null);
			maxScaleBadger.SettingChanged += WeedheimMod.OnPlantConfigChanged;
			growRadiusBadger = ConfigFileExtensions.BindConfigInOrder<float>(config, "Honey_Badger_Plant", "PlantGrowRadius", 0.5f, "Area needed for a plant to grow healthy.\n", true, true, true, (AcceptableValueBase)(object)new AcceptableValueRange<float>(0.5f, 2f), (Action<ConfigEntryBase>)null, (ConfigurationManagerAttributes)null);
			growRadiusBadger.SettingChanged += WeedheimMod.OnPlantConfigChanged;
			respawnTimeBadger = ConfigFileExtensions.BindConfigInOrder<int>(config, "Honey_Badger_Plant", "BudRespawnTime", 1440, "Time in minutes for buds to respawn.\n(1440 = 24hrs, 720 = 12hrs, 360 = 6hrs, 60 = 1hr).\n", true, true, true, (AcceptableValueBase)(object)new AcceptableValueRange<int>(1, 10080), (Action<ConfigEntryBase>)null, (ConfigurationManagerAttributes)null);
			respawnTimeBadger.SettingChanged += WeedheimMod.OnPlantConfigChanged;
			budYieldDropBadger = ConfigFileExtensions.BindConfigInOrder<int>(config, "Honey_Badger_Plant", "BudDropAmount", 9, "Amount of buds to drop from a plant.\n", true, true, true, (AcceptableValueBase)(object)new AcceptableValueRange<int>(1, 20), (Action<ConfigEntryBase>)null, (ConfigurationManagerAttributes)null);
			budYieldDropBadger.SettingChanged += WeedheimMod.OnPlantConfigChanged;
			jointDurationBadger = ConfigFileExtensions.BindConfigInOrder<float>(config, "Honey_Badger_Effects", "BadgerEffectDuration", 60f, "Effective time in seconds for smoking a spliff to last.\n(Default 60 (1min)).\n", true, true, true, (AcceptableValueBase)(object)new AcceptableValueRange<float>(1f, 1200f), (Action<ConfigEntryBase>)null, (ConfigurationManagerAttributes)null);
			jointDurationBadger.SettingChanged += WeedheimMod.OnEffectConfigChanged;
			jointCooldownBadger = ConfigFileExtensions.BindConfigInOrder<float>(config, "Honey_Badger_Effects", "BadgerEffectCooldown", 60f, "Wait time in seconds before the next joint may be smoked.\n(Default 60 (1min)).\n", true, true, true, (AcceptableValueBase)(object)new AcceptableValueRange<float>(1f, 1200f), (Action<ConfigEntryBase>)null, (ConfigurationManagerAttributes)null);
			jointCooldownBadger.SettingChanged += WeedheimMod.OnEffectConfigChanged;
			jointStaminaUsageValBadger = ConfigFileExtensions.BindConfigInOrder<float>(config, "Honey_Badger_Effects", "BadgerStaminaUsage", 0.1f, "Percentage amount for Stamina usage.\nThis will effect jump, attack, block, dodge, swim and run stamina.\n", true, true, true, (AcceptableValueBase)null, (Action<ConfigEntryBase>)null, (ConfigurationManagerAttributes)null);
			jointStaminaUsageValBadger.SettingChanged += WeedheimMod.OnEffectConfigChanged;
			jointStaminaRegenValBadger = ConfigFileExtensions.BindConfigInOrder<float>(config, "Honey_Badger_Effects", "BadgerStaminaRegen", 1f, "Percentage amount for Stamina regeneration.\n", true, true, true, (AcceptableValueBase)null, (Action<ConfigEntryBase>)null, (ConfigurationManagerAttributes)null);
			jointStaminaRegenValBadger.SettingChanged += WeedheimMod.OnEffectConfigChanged;
			jointHealthRegenValBadger = ConfigFileExtensions.BindConfigInOrder<float>(config, "Honey_Badger_Effects", "BadgerHealthRegen", 1.1f, "Percentage amount for Health regeneration.\n", true, true, true, (AcceptableValueBase)null, (Action<ConfigEntryBase>)null, (ConfigurationManagerAttributes)null);
			jointHealthRegenValBadger.SettingChanged += WeedheimMod.OnEffectConfigChanged;
			jointEitrRegenValBadger = ConfigFileExtensions.BindConfigInOrder<float>(config, "Honey_Badger_Effects", "BadgerEitrRegen", 1.1f, "Percentage amount for Eitr regeneration.\n", true, true, true, (AcceptableValueBase)null, (Action<ConfigEntryBase>)null, (ConfigurationManagerAttributes)null);
			jointEitrRegenValBadger.SettingChanged += WeedheimMod.OnEffectConfigChanged;
			jointDamageValBadger = ConfigFileExtensions.BindConfigInOrder<float>(config, "Honey_Badger_Effects", "BadgerDamageModifier", 1f, "Damage modifier from smoking spliffs.\n", true, true, true, (AcceptableValueBase)(object)new AcceptableValueRange<float>(1f, 2f), (Action<ConfigEntryBase>)null, (ConfigurationManagerAttributes)null);
			jointDamageValBadger.SettingChanged += WeedheimMod.OnEffectConfigChanged;
			jointSpeedValBadger = ConfigFileExtensions.BindConfigInOrder<float>(config, "Honey_Badger_Effects", "BadgerSpeedModifier", -0.1f, "Speed modifier from smoking spliffs.\n", true, true, true, (AcceptableValueBase)null, (Action<ConfigEntryBase>)null, (ConfigurationManagerAttributes)null);
			jointSpeedValBadger.SettingChanged += WeedheimMod.OnEffectConfigChanged;
			jointJumpValBadger = ConfigFileExtensions.BindConfigInOrder<float>(config, "Honey_Badger_Effects", "BadgerJumpModifier", -0.1f, "Jump height modifier from smoking spliffs.\n", true, true, true, (AcceptableValueBase)null, (Action<ConfigEntryBase>)null, (ConfigurationManagerAttributes)null);
			jointJumpValBadger.SettingChanged += WeedheimMod.OnEffectConfigChanged;
			jointFallSpeedBadger = ConfigFileExtensions.BindConfigInOrder<float>(config, "Honey_Badger_Effects", "FallSpeedModifier", 0f, "Fall Speed modifier from smoking spliffs.\n", true, true, true, (AcceptableValueBase)(object)new AcceptableValueRange<float>(0f, 5f), (Action<ConfigEntryBase>)null, (ConfigurationManagerAttributes)null);
			jointFallSpeedBadger.SettingChanged += WeedheimMod.OnEffectConfigChanged;
			jointFallDamageBadger = ConfigFileExtensions.BindConfigInOrder<float>(config, "Honey_Badger_Effects", "FallDamageModifier", 0f, "Fall Damage modifier from smoking spliffs.\n", true, true, true, (AcceptableValueBase)null, (Action<ConfigEntryBase>)null, (ConfigurationManagerAttributes)null);
			jointFallDamageBadger.SettingChanged += WeedheimMod.OnEffectConfigChanged;
			growTimeCherry = ConfigFileExtensions.BindConfigInOrder<int>(config, "Black_Cherry_Plant", "PlantGrowTime", 3600, "Time in seconds for a plant to grow.\n(86400 = 24hrs, 43200 = 12hrs, 21600 = 6hrs, 3600 = 1hr).\n", true, true, true, (AcceptableValueBase)(object)new AcceptableValueRange<int>(60, 604800), (Action<ConfigEntryBase>)null, (ConfigurationManagerAttributes)null);
			growTimeCherry.SettingChanged += WeedheimMod.OnPlantConfigChanged;
			minScaleCherry = ConfigFileExtensions.BindConfigInOrder<float>(config, "Black_Cherry_Plant", "MinimumPlantScale", 0.9f, "Minimum scale of a plant.\n", true, true, true, (AcceptableValueBase)(object)new AcceptableValueRange<float>(0.5f, 2.5f), (Action<ConfigEntryBase>)null, (ConfigurationManagerAttributes)null);
			minScaleCherry.SettingChanged += WeedheimMod.OnPlantConfigChanged;
			maxScaleCherry = ConfigFileExtensions.BindConfigInOrder<float>(config, "Black_Cherry_Plant", "MaximumPlantScale", 1.1f, "Maximum scale of a plant.\n", true, true, true, (AcceptableValueBase)(object)new AcceptableValueRange<float>(0.5f, 2.5f), (Action<ConfigEntryBase>)null, (ConfigurationManagerAttributes)null);
			maxScaleCherry.SettingChanged += WeedheimMod.OnPlantConfigChanged;
			growRadiusCherry = ConfigFileExtensions.BindConfigInOrder<float>(config, "Black_Cherry_Plant", "PlantGrowRadius", 0.5f, "Area needed for a plant to grow healthy.\n", true, true, true, (AcceptableValueBase)(object)new AcceptableValueRange<float>(0.5f, 2f), (Action<ConfigEntryBase>)null, (ConfigurationManagerAttributes)null);
			growRadiusCherry.SettingChanged += WeedheimMod.OnPlantConfigChanged;
			respawnTimeCherry = ConfigFileExtensions.BindConfigInOrder<int>(config, "Black_Cherry_Plant", "BudRespawnTime", 1440, "Time in minutes for buds to respawn.\n(1440 = 24hrs, 720 = 12hrs, 360 = 6hrs, 60 = 1hr).\n", true, true, true, (AcceptableValueBase)(object)new AcceptableValueRange<int>(1, 10080), (Action<ConfigEntryBase>)null, (ConfigurationManagerAttributes)null);
			respawnTimeCherry.SettingChanged += WeedheimMod.OnPlantConfigChanged;
			budYieldDropCherry = ConfigFileExtensions.BindConfigInOrder<int>(config, "Black_Cherry_Plant", "BudDropAmount", 9, "Amount of buds to drop from a plant.\n", true, true, true, (AcceptableValueBase)(object)new AcceptableValueRange<int>(1, 20), (Action<ConfigEntryBase>)null, (ConfigurationManagerAttributes)null);
			budYieldDropCherry.SettingChanged += WeedheimMod.OnPlantConfigChanged;
			jointDurationCherry = ConfigFileExtensions.BindConfigInOrder<float>(config, "Black_Cherry_Effects", "CherryEffectDuration", 60f, "Effective time in seconds for smoking a spliff to last.\n(Default 60 (1min)).\n", true, true, true, (AcceptableValueBase)(object)new AcceptableValueRange<float>(1f, 1200f), (Action<ConfigEntryBase>)null, (ConfigurationManagerAttributes)null);
			jointDurationCherry.SettingChanged += WeedheimMod.OnEffectConfigChanged;
			jointCooldownCherry = ConfigFileExtensions.BindConfigInOrder<float>(config, "Black_Cherry_Effects", "CherryEffectCooldown", 60f, "Wait time in seconds before the next joint may be smoked.\n(Default 60 (1min)).\n", true, true, true, (AcceptableValueBase)(object)new AcceptableValueRange<float>(1f, 1200f), (Action<ConfigEntryBase>)null, (ConfigurationManagerAttributes)null);
			jointCooldownCherry.SettingChanged += WeedheimMod.OnEffectConfigChanged;
			jointStaminaUsageValCherry = ConfigFileExtensions.BindConfigInOrder<float>(config, "Black_Cherry_Effects", "CherryStaminaUsage", 0.1f, "Percentage amount for Stamina usage. \nThis will effect jump, attack, block, dodge, swim and run stamina.\n", true, true, true, (AcceptableValueBase)null, (Action<ConfigEntryBase>)null, (ConfigurationManagerAttributes)null);
			jointStaminaUsageValCherry.SettingChanged += WeedheimMod.OnEffectConfigChanged;
			jointStaminaRegenValCherry = ConfigFileExtensions.BindConfigInOrder<float>(config, "Black_Cherry_Effects", "CherryStaminaRegen", 1f, "Percentage amount for Stamina regeneration.\n", true, true, true, (AcceptableValueBase)null, (Action<ConfigEntryBase>)null, (ConfigurationManagerAttributes)null);
			jointStaminaRegenValCherry.SettingChanged += WeedheimMod.OnEffectConfigChanged;
			jointHealthRegenValCherry = ConfigFileExtensions.BindConfigInOrder<float>(config, "Black_Cherry_Effects", "CherryHealthRegen", 1.1f, "Percentage amount for Health regeneration.\n", true, true, true, (AcceptableValueBase)null, (Action<ConfigEntryBase>)null, (ConfigurationManagerAttributes)null);
			jointHealthRegenValCherry.SettingChanged += WeedheimMod.OnEffectConfigChanged;
			jointEitrRegenValCherry = ConfigFileExtensions.BindConfigInOrder<float>(config, "Black_Cherry_Effects", "CherryEitrRegen", 1.1f, "Percentage amount for Eitr regeneration.\n", true, true, true, (AcceptableValueBase)null, (Action<ConfigEntryBase>)null, (ConfigurationManagerAttributes)null);
			jointEitrRegenValCherry.SettingChanged += WeedheimMod.OnEffectConfigChanged;
			jointDamageValCherry = ConfigFileExtensions.BindConfigInOrder<float>(config, "Black_Cherry_Effects", "CherryDamageModifier", 1f, "Damage modifier from smoking spliffs.\n", true, true, true, (AcceptableValueBase)(object)new AcceptableValueRange<float>(1f, 2f), (Action<ConfigEntryBase>)null, (ConfigurationManagerAttributes)null);
			jointDamageValCherry.SettingChanged += WeedheimMod.OnEffectConfigChanged;
			jointSpeedValCherry = ConfigFileExtensions.BindConfigInOrder<float>(config, "Black_Cherry_Effects", "CherrySpeedModifier", -0.1f, "Speed modifier from smoking spliffs.\n", true, true, true, (AcceptableValueBase)null, (Action<ConfigEntryBase>)null, (ConfigurationManagerAttributes)null);
			jointSpeedValCherry.SettingChanged += WeedheimMod.OnEffectConfigChanged;
			jointJumpValCherry = ConfigFileExtensions.BindConfigInOrder<float>(config, "Black_Cherry_Effects", "CherryJumpModifier", -0.1f, "Jump height modifier from smoking spliffs.\n", true, true, true, (AcceptableValueBase)null, (Action<ConfigEntryBase>)null, (ConfigurationManagerAttributes)null);
			jointJumpValCherry.SettingChanged += WeedheimMod.OnEffectConfigChanged;
			jointFallSpeedCherry = ConfigFileExtensions.BindConfigInOrder<float>(config, "Black_Cherry_Effects", "FallSpeedModifier", 0f, "Fall Speed modifier from smoking spliffs.\n", true, true, true, (AcceptableValueBase)(object)new AcceptableValueRange<float>(0f, 5f), (Action<ConfigEntryBase>)null, (ConfigurationManagerAttributes)null);
			jointFallSpeedCherry.SettingChanged += WeedheimMod.OnEffectConfigChanged;
			jointFallDamageCherry = ConfigFileExtensions.BindConfigInOrder<float>(config, "Black_Cherry_Effects", "FallDamageModifier", 0f, "Fall Damage modifier from smoking spliffs.\n", true, true, true, (AcceptableValueBase)null, (Action<ConfigEntryBase>)null, (ConfigurationManagerAttributes)null);
			jointFallDamageCherry.SettingChanged += WeedheimMod.OnEffectConfigChanged;
			growTimeKush = ConfigFileExtensions.BindConfigInOrder<int>(config, "Purple_Kush_Plant", "PlantGrowTime", 3600, "Time in seconds for a plant to grow.\n(86400 = 24hrs, 43200 = 12hrs, 21600 = 6hrs, 3600 = 1hr).\n", true, true, true, (AcceptableValueBase)(object)new AcceptableValueRange<int>(60, 604800), (Action<ConfigEntryBase>)null, (ConfigurationManagerAttributes)null);
			growTimeKush.SettingChanged += WeedheimMod.OnPlantConfigChanged;
			minScaleKush = ConfigFileExtensions.BindConfigInOrder<float>(config, "Purple_Kush_Plant", "MinimumPlantScale", 0.9f, "Minimum scale of a plant.\n", true, true, true, (AcceptableValueBase)(object)new AcceptableValueRange<float>(0.5f, 2.5f), (Action<ConfigEntryBase>)null, (ConfigurationManagerAttributes)null);
			minScaleKush.SettingChanged += WeedheimMod.OnPlantConfigChanged;
			maxScaleKush = ConfigFileExtensions.BindConfigInOrder<float>(config, "Purple_Kush_Plant", "MaximumPlantScale", 1.1f, "Maximum scale of a plant.\n", true, true, true, (AcceptableValueBase)(object)new AcceptableValueRange<float>(0.5f, 2.5f), (Action<ConfigEntryBase>)null, (ConfigurationManagerAttributes)null);
			maxScaleKush.SettingChanged += WeedheimMod.OnPlantConfigChanged;
			growRadiusKush = ConfigFileExtensions.BindConfigInOrder<float>(config, "Purple_Kush_Plant", "PlantGrowRadius", 0.5f, "Area needed for a plant to grow healthy.\n", true, true, true, (AcceptableValueBase)(object)new AcceptableValueRange<float>(0.5f, 2f), (Action<ConfigEntryBase>)null, (ConfigurationManagerAttributes)null);
			growRadiusKush.SettingChanged += WeedheimMod.OnPlantConfigChanged;
			respawnTimeKush = ConfigFileExtensions.BindConfigInOrder<int>(config, "Purple_Kush_Plant", "BudRespawnTime", 1440, "Time in minutes for buds to respawn.\n(1440 = 24hrs, 720 = 12hrs, 360 = 6hrs, 60 = 1hr).\n", true, true, true, (AcceptableValueBase)(object)new AcceptableValueRange<int>(1, 10080), (Action<ConfigEntryBase>)null, (ConfigurationManagerAttributes)null);
			respawnTimeKush.SettingChanged += WeedheimMod.OnPlantConfigChanged;
			budYieldDropKush = ConfigFileExtensions.BindConfigInOrder<int>(config, "Purple_Kush_Plant", "BudDropAmount", 9, "Amount of buds to drop from a plant.\n", true, true, true, (AcceptableValueBase)(object)new AcceptableValueRange<int>(1, 20), (Action<ConfigEntryBase>)null, (ConfigurationManagerAttributes)null);
			budYieldDropKush.SettingChanged += WeedheimMod.OnPlantConfigChanged;
			jointDurationKush = ConfigFileExtensions.BindConfigInOrder<float>(config, "Purple_Kush_Effects", "KushEffectDuration", 60f, "Effective time in seconds for smoking a spliff to last.\n(Default 60 (1min)).\n", true, true, true, (AcceptableValueBase)(object)new AcceptableValueRange<float>(1f, 1200f), (Action<ConfigEntryBase>)null, (ConfigurationManagerAttributes)null);
			jointDurationKush.SettingChanged += WeedheimMod.OnEffectConfigChanged;
			jointCooldownKush = ConfigFileExtensions.BindConfigInOrder<float>(config, "Purple_Kush_Effects", "KushEffectCooldown", 60f, "Wait time in seconds before the next joint may be smoked.\n(Default 60 (1min)).\n", true, true, true, (AcceptableValueBase)(object)new AcceptableValueRange<float>(1f, 1200f), (Action<ConfigEntryBase>)null, (ConfigurationManagerAttributes)null);
			jointCooldownKush.SettingChanged += WeedheimMod.OnEffectConfigChanged;
			jointStaminaUsageValKush = ConfigFileExtensions.BindConfigInOrder<float>(config, "Purple_Kush_Effects", "KushStaminaUsage", 0.1f, "Percentage amount for Stamina usage.\nThis will effect jump, attack, block, dodge, swim and run stamina.\n", true, true, true, (AcceptableValueBase)null, (Action<ConfigEntryBase>)null, (ConfigurationManagerAttributes)null);
			jointStaminaUsageValKush.SettingChanged += WeedheimMod.OnEffectConfigChanged;
			jointStaminaRegenValKush = ConfigFileExtensions.BindConfigInOrder<float>(config, "Purple_Kush_Effects", "KushStaminaRegen", 1f, "Percentage amount for Stamina regeneration.\n", true, true, true, (AcceptableValueBase)null, (Action<ConfigEntryBase>)null, (ConfigurationManagerAttributes)null);
			jointStaminaRegenValKush.SettingChanged += WeedheimMod.OnEffectConfigChanged;
			jointHealthRegenValKush = ConfigFileExtensions.BindConfigInOrder<float>(config, "Purple_Kush_Effects", "KushHealthRegen", 1.1f, "Percentage amount for Health regeneration.\n", true, true, true, (AcceptableValueBase)null, (Action<ConfigEntryBase>)null, (ConfigurationManagerAttributes)null);
			jointHealthRegenValKush.SettingChanged += WeedheimMod.OnEffectConfigChanged;
			jointEitrRegenValKush = ConfigFileExtensions.BindConfigInOrder<float>(config, "Purple_Kush_Effects", "KushEitrRegen", 1.1f, "Percentage amount for Eitr regeneration.\n", true, true, true, (AcceptableValueBase)null, (Action<ConfigEntryBase>)null, (ConfigurationManagerAttributes)null);
			jointEitrRegenValKush.SettingChanged += WeedheimMod.OnEffectConfigChanged;
			jointDamageValKush = ConfigFileExtensions.BindConfigInOrder<float>(config, "Purple_Kush_Effects", "KushDamageModifier", 1f, "Damage modifier from smoking spliffs.\n", true, true, true, (AcceptableValueBase)(object)new AcceptableValueRange<float>(1f, 2f), (Action<ConfigEntryBase>)null, (ConfigurationManagerAttributes)null);
			jointDamageValKush.SettingChanged += WeedheimMod.OnEffectConfigChanged;
			jointSpeedValKush = ConfigFileExtensions.BindConfigInOrder<float>(config, "Purple_Kush_Effects", "KushSpeedModifier", -0.1f, "Speed modifier from smoking spliffs.\n", true, true, true, (AcceptableValueBase)null, (Action<ConfigEntryBase>)null, (ConfigurationManagerAttributes)null);
			jointSpeedValKush.SettingChanged += WeedheimMod.OnEffectConfigChanged;
			jointJumpValKush = ConfigFileExtensions.BindConfigInOrder<float>(config, "Purple_Kush_Effects", "KushJumpModifier", -0.1f, "Jump height modifier from smoking spliffs.\n", true, true, true, (AcceptableValueBase)null, (Action<ConfigEntryBase>)null, (ConfigurationManagerAttributes)null);
			jointJumpValKush.SettingChanged += WeedheimMod.OnEffectConfigChanged;
			jointFallSpeedKush = ConfigFileExtensions.BindConfigInOrder<float>(config, "Purple_Kush_Effects", "FallSpeedModifier", 0f, "Fall Speed modifier from smoking spliffs.\n", true, true, true, (AcceptableValueBase)(object)new AcceptableValueRange<float>(0f, 5f), (Action<ConfigEntryBase>)null, (ConfigurationManagerAttributes)null);
			jointFallSpeedKush.SettingChanged += WeedheimMod.OnEffectConfigChanged;
			jointFallDamageKush = ConfigFileExtensions.BindConfigInOrder<float>(config, "Purple_Kush_Effects", "FallDamageModifier", 0f, "Fall Damage modifier from smoking spliffs.\n", true, true, true, (AcceptableValueBase)null, (Action<ConfigEntryBase>)null, (ConfigurationManagerAttributes)null);
			jointFallDamageKush.SettingChanged += WeedheimMod.OnEffectConfigChanged;
			growTimeMystic = ConfigFileExtensions.BindConfigInOrder<int>(config, "Blue_Mystic_Plant", "PlantGrowTime", 3600, "Time in seconds for a plant to grow.\n(86400 = 24hrs, 43200 = 12hrs, 21600 = 6hrs, 3600 = 1hr).\n", true, true, true, (AcceptableValueBase)(object)new AcceptableValueRange<int>(60, 604800), (Action<ConfigEntryBase>)null, (ConfigurationManagerAttributes)null);
			growTimeMystic.SettingChanged += WeedheimMod.OnPlantConfigChanged;
			minScaleMystic = ConfigFileExtensions.BindConfigInOrder<float>(config, "Blue_Mystic_Plant", "MinimumPlantScale", 0.9f, "Minimum scale of a plant.\n", true, true, true, (AcceptableValueBase)(object)new AcceptableValueRange<float>(0.5f, 2.5f), (Action<ConfigEntryBase>)null, (ConfigurationManagerAttributes)null);
			minScaleMystic.SettingChanged += WeedheimMod.OnPlantConfigChanged;
			maxScaleMystic = ConfigFileExtensions.BindConfigInOrder<float>(config, "Blue_Mystic_Plant", "MaximumPlantScale", 1.1f, "Maximum scale of a plant.\n", true, true, true, (AcceptableValueBase)(object)new AcceptableValueRange<float>(0.5f, 2.5f), (Action<ConfigEntryBase>)null, (ConfigurationManagerAttributes)null);
			maxScaleMystic.SettingChanged += WeedheimMod.OnPlantConfigChanged;
			growRadiusMystic = ConfigFileExtensions.BindConfigInOrder<float>(config, "Blue_Mystic_Plant", "PlantGrowRadius", 0.5f, "Area needed for a plant to grow healthy.\n", true, true, true, (AcceptableValueBase)(object)new AcceptableValueRange<float>(0.5f, 2f), (Action<ConfigEntryBase>)null, (ConfigurationManagerAttributes)null);
			growRadiusMystic.SettingChanged += WeedheimMod.OnPlantConfigChanged;
			respawnTimeMystic = ConfigFileExtensions.BindConfigInOrder<int>(config, "Blue_Mystic_Plant", "BudRespawnTime", 1440, "Time in minutes for buds to respawn.\n(1440 = 24hrs, 720 = 12hrs, 360 = 6hrs, 60 = 1hr).\n", true, true, true, (AcceptableValueBase)(object)new AcceptableValueRange<int>(1, 10080), (Action<ConfigEntryBase>)null, (ConfigurationManagerAttributes)null);
			respawnTimeMystic.SettingChanged += WeedheimMod.OnPlantConfigChanged;
			budYieldDropMystic = ConfigFileExtensions.BindConfigInOrder<int>(config, "Blue_Mystic_Plant", "BudDropAmount", 9, "Amount of buds to drop from a plant.\n", true, true, true, (AcceptableValueBase)(object)new AcceptableValueRange<int>(1, 20), (Action<ConfigEntryBase>)null, (ConfigurationManagerAttributes)null);
			budYieldDropMystic.SettingChanged += WeedheimMod.OnPlantConfigChanged;
			jointDurationMystic = ConfigFileExtensions.BindConfigInOrder<float>(config, "Blue_Mystic_Effects", "MysticEffectDuration", 60f, "Effective time in seconds for smoking a spliff to last.\n(Default 60 (1min)).\n", true, true, true, (AcceptableValueBase)(object)new AcceptableValueRange<float>(1f, 1200f), (Action<ConfigEntryBase>)null, (ConfigurationManagerAttributes)null);
			jointDurationMystic.SettingChanged += WeedheimMod.OnEffectConfigChanged;
			jointCooldownMystic = ConfigFileExtensions.BindConfigInOrder<float>(config, "Blue_Mystic_Effects", "MysticEffectCooldown", 60f, "Wait time in seconds before the next joint may be smoked.\n(Default 60 (1min)).\n", true, true, true, (AcceptableValueBase)(object)new AcceptableValueRange<float>(1f, 1200f), (Action<ConfigEntryBase>)null, (ConfigurationManagerAttributes)null);
			jointCooldownMystic.SettingChanged += WeedheimMod.OnEffectConfigChanged;
			jointStaminaUsageValMystic = ConfigFileExtensions.BindConfigInOrder<float>(config, "Blue_Mystic_Effects", "MysticStaminaUsage", 0.1f, "Percentage amount for Stamina usage.\nThis will effect jump, attack, block, dodge, swim and run stamina.\n", true, true, true, (AcceptableValueBase)null, (Action<ConfigEntryBase>)null, (ConfigurationManagerAttributes)null);
			jointStaminaUsageValMystic.SettingChanged += WeedheimMod.OnEffectConfigChanged;
			jointStaminaRegenValMystic = ConfigFileExtensions.BindConfigInOrder<float>(config, "Blue_Mystic_Effects", "MysticStaminaRegen", 1f, "Percentage amount for Stamina regeneration.\n", true, true, true, (AcceptableValueBase)null, (Action<ConfigEntryBase>)null, (ConfigurationManagerAttributes)null);
			jointStaminaRegenValMystic.SettingChanged += WeedheimMod.OnEffectConfigChanged;
			jointHealthRegenValMystic = ConfigFileExtensions.BindConfigInOrder<float>(config, "Blue_Mystic_Effects", "MysticHealthRegen", 1.1f, "Percentage amount for Health regeneration.\n", true, true, true, (AcceptableValueBase)null, (Action<ConfigEntryBase>)null, (ConfigurationManagerAttributes)null);
			jointHealthRegenValMystic.SettingChanged += WeedheimMod.OnEffectConfigChanged;
			jointEitrRegenValMystic = ConfigFileExtensions.BindConfigInOrder<float>(config, "Blue_Mystic_Effects", "MysticEitrRegen", 1.1f, "Percentage amount for Eitr regeneration.\n", true, true, true, (AcceptableValueBase)null, (Action<ConfigEntryBase>)null, (ConfigurationManagerAttributes)null);
			jointEitrRegenValMystic.SettingChanged += WeedheimMod.OnEffectConfigChanged;
			jointDamageValMystic = ConfigFileExtensions.BindConfigInOrder<float>(config, "Blue_Mystic_Effects", "MysticDamageModifier", 1f, "Damage modifier from smoking spliffs.\n", true, true, true, (AcceptableValueBase)(object)new AcceptableValueRange<float>(1f, 2f), (Action<ConfigEntryBase>)null, (ConfigurationManagerAttributes)null);
			jointDamageValMystic.SettingChanged += WeedheimMod.OnEffectConfigChanged;
			jointSpeedValMystic = ConfigFileExtensions.BindConfigInOrder<float>(config, "Blue_Mystic_Effects", "MysticSpeedModifier", -0.1f, "Speed modifier from smoking spliffs.\n", true, true, true, (AcceptableValueBase)null, (Action<ConfigEntryBase>)null, (ConfigurationManagerAttributes)null);
			jointSpeedValMystic.SettingChanged += WeedheimMod.OnEffectConfigChanged;
			jointJumpValMystic = ConfigFileExtensions.BindConfigInOrder<float>(config, "Blue_Mystic_Effects", "MysticJumpModifier", -0.1f, "Jump height modifier from smoking spliffs.\n", true, true, true, (AcceptableValueBase)null, (Action<ConfigEntryBase>)null, (ConfigurationManagerAttributes)null);
			jointJumpValMystic.SettingChanged += WeedheimMod.OnEffectConfigChanged;
			jointFallSpeedMystic = ConfigFileExtensions.BindConfigInOrder<float>(config, "Blue_Mystic_Effects", "FallSpeedModifier", 0f, "Fall Speed modifier from smoking spliffs.\n", true, true, true, (AcceptableValueBase)(object)new AcceptableValueRange<float>(0f, 5f), (Action<ConfigEntryBase>)null, (ConfigurationManagerAttributes)null);
			jointFallSpeedMystic.SettingChanged += WeedheimMod.OnEffectConfigChanged;
			jointFallDamageMystic = ConfigFileExtensions.BindConfigInOrder<float>(config, "Blue_Mystic_Effects", "FallDamageModifier", 0f, "Fall Damage modifier from smoking spliffs.\n", true, true, true, (AcceptableValueBase)null, (Action<ConfigEntryBase>)null, (ConfigurationManagerAttributes)null);
			jointFallDamageMystic.SettingChanged += WeedheimMod.OnEffectConfigChanged;
			growTimeWidow = ConfigFileExtensions.BindConfigInOrder<int>(config, "White_Widow_Plant", "PlantGrowTime", 3600, "Time in seconds for a plant to grow.\n(86400 = 24hrs, 43200 = 12hrs, 21600 = 6hrs, 3600 = 1hr).\n", true, true, true, (AcceptableValueBase)(object)new AcceptableValueRange<int>(60, 604800), (Action<ConfigEntryBase>)null, (ConfigurationManagerAttributes)null);
			growTimeWidow.SettingChanged += WeedheimMod.OnPlantConfigChanged;
			minScaleWidow = ConfigFileExtensions.BindConfigInOrder<float>(config, "White_Widow_Plant", "MinimumPlantScale", 0.9f, "Minimum scale of a plant.\n", true, true, true, (AcceptableValueBase)(object)new AcceptableValueRange<float>(0.5f, 2.5f), (Action<ConfigEntryBase>)null, (ConfigurationManagerAttributes)null);
			minScaleWidow.SettingChanged += WeedheimMod.OnPlantConfigChanged;
			maxScaleWidow = ConfigFileExtensions.BindConfigInOrder<float>(config, "White_Widow_Plant", "MaximumPlantScale", 1.1f, "Maximum scale of a plant.\n", true, true, true, (AcceptableValueBase)(object)new AcceptableValueRange<float>(0.5f, 2.5f), (Action<ConfigEntryBase>)null, (ConfigurationManagerAttributes)null);
			maxScaleWidow.SettingChanged += WeedheimMod.OnPlantConfigChanged;
			growRadiusWidow = ConfigFileExtensions.BindConfigInOrder<float>(config, "White_Widow_Plant", "PlantGrowRadius", 0.5f, "Area needed for a plant to grow healthy.\n", true, true, true, (AcceptableValueBase)(object)new AcceptableValueRange<float>(0.5f, 2f), (Action<ConfigEntryBase>)null, (ConfigurationManagerAttributes)null);
			growRadiusWidow.SettingChanged += WeedheimMod.OnPlantConfigChanged;
			respawnTimeWidow = ConfigFileExtensions.BindConfigInOrder<int>(config, "White_Widow_Plant", "BudRespawnTime", 1440, "Time in minutes for buds to respawn.\n(1440 = 24hrs, 720 = 12hrs, 360 = 6hrs, 60 = 1hr).\n", true, true, true, (AcceptableValueBase)(object)new AcceptableValueRange<int>(1, 10080), (Action<ConfigEntryBase>)null, (ConfigurationManagerAttributes)null);
			respawnTimeWidow.SettingChanged += WeedheimMod.OnPlantConfigChanged;
			budYieldDropWidow = ConfigFileExtensions.BindConfigInOrder<int>(config, "White_Widow_Plant", "BudDropAmount", 9, "Amount of buds to drop from a plant.\n", true, true, true, (AcceptableValueBase)(object)new AcceptableValueRange<int>(1, 20), (Action<ConfigEntryBase>)null, (ConfigurationManagerAttributes)null);
			budYieldDropWidow.SettingChanged += WeedheimMod.OnPlantConfigChanged;
			jointDurationWidow = ConfigFileExtensions.BindConfigInOrder<float>(config, "White_Widow_Effects", "WidowEffectDuration", 60f, "Effective time in seconds for smoking a spliff to last.\n(Default 60 (1min)).\n", true, true, true, (AcceptableValueBase)(object)new AcceptableValueRange<float>(1f, 1200f), (Action<ConfigEntryBase>)null, (ConfigurationManagerAttributes)null);
			jointDurationWidow.SettingChanged += WeedheimMod.OnEffectConfigChanged;
			jointCooldownWidow = ConfigFileExtensions.BindConfigInOrder<float>(config, "White_Widow_Effects", "WidowEffectCooldown", 60f, "Wait time in seconds before the next joint may be smoked.\n(Default 60 (1min)).\n", true, true, true, (AcceptableValueBase)(object)new AcceptableValueRange<float>(1f, 1200f), (Action<ConfigEntryBase>)null, (ConfigurationManagerAttributes)null);
			jointCooldownWidow.SettingChanged += WeedheimMod.OnEffectConfigChanged;
			jointStaminaUsageValWidow = ConfigFileExtensions.BindConfigInOrder<float>(config, "White_Widow_Effects", "WidowStaminaUsage", 0.1f, "Percentage amount for Stamina usage.\nThis will effect jump, attack, block, dodge, swim and run stamina.\n", true, true, true, (AcceptableValueBase)null, (Action<ConfigEntryBase>)null, (ConfigurationManagerAttributes)null);
			jointStaminaUsageValWidow.SettingChanged += WeedheimMod.OnEffectConfigChanged;
			jointStaminaRegenValWidow = ConfigFileExtensions.BindConfigInOrder<float>(config, "White_Widow_Effects", "WidowStaminaRegen", 1f, "Percentage amount for Stamina regeneration.\n", true, true, true, (AcceptableValueBase)null, (Action<ConfigEntryBase>)null, (ConfigurationManagerAttributes)null);
			jointStaminaRegenValWidow.SettingChanged += WeedheimMod.OnEffectConfigChanged;
			jointHealthRegenValWidow = ConfigFileExtensions.BindConfigInOrder<float>(config, "White_Widow_Effects", "WidowHealthRegen", 1.1f, "Percentage amount for Health regeneration.\n", true, true, true, (AcceptableValueBase)null, (Action<ConfigEntryBase>)null, (ConfigurationManagerAttributes)null);
			jointHealthRegenValWidow.SettingChanged += WeedheimMod.OnEffectConfigChanged;
			jointEitrRegenValWidow = ConfigFileExtensions.BindConfigInOrder<float>(config, "White_Widow_Effects", "WidowEitrRegen", 1.1f, "Percentage amount for Eitr regeneration.\n", true, true, true, (AcceptableValueBase)null, (Action<ConfigEntryBase>)null, (ConfigurationManagerAttributes)null);
			jointEitrRegenValWidow.SettingChanged += WeedheimMod.OnEffectConfigChanged;
			jointDamageValWidow = ConfigFileExtensions.BindConfigInOrder<float>(config, "White_Widow_Effects", "WidowDamageModifier", 1f, "Damage modifier from smoking spliffs.\n", true, true, true, (AcceptableValueBase)(object)new AcceptableValueRange<float>(1f, 2f), (Action<ConfigEntryBase>)null, (ConfigurationManagerAttributes)null);
			jointDamageValWidow.SettingChanged += WeedheimMod.OnEffectConfigChanged;
			jointSpeedValWidow = ConfigFileExtensions.BindConfigInOrder<float>(config, "White_Widow_Effects", "WidowSpeedModifier", -0.1f, "Speed modifier from smoking spliffs.\n", true, true, true, (AcceptableValueBase)null, (Action<ConfigEntryBase>)null, (ConfigurationManagerAttributes)null);
			jointSpeedValWidow.SettingChanged += WeedheimMod.OnEffectConfigChanged;
			jointJumpValWidow = ConfigFileExtensions.BindConfigInOrder<float>(config, "White_Widow_Effects", "WidowJumpModifier", -0.1f, "Jump height modifier from smoking spliffs.\n", true, true, true, (AcceptableValueBase)null, (Action<ConfigEntryBase>)null, (ConfigurationManagerAttributes)null);
			jointJumpValWidow.SettingChanged += WeedheimMod.OnEffectConfigChanged;
			jointFallSpeedWidow = ConfigFileExtensions.BindConfigInOrder<float>(config, "White_Widow_Effects", "FallSpeedModifier", 0f, "Fall Speed modifier from smoking spliffs.\n", true, true, true, (AcceptableValueBase)(object)new AcceptableValueRange<float>(0f, 5f), (Action<ConfigEntryBase>)null, (ConfigurationManagerAttributes)null);
			jointFallSpeedWidow.SettingChanged += WeedheimMod.OnEffectConfigChanged;
			jointFallDamageWidow = ConfigFileExtensions.BindConfigInOrder<float>(config, "White_Widow_Effects", "FallDamageModifier", 0f, "Fall Damage modifier from smoking spliffs.\n", true, true, true, (AcceptableValueBase)null, (Action<ConfigEntryBase>)null, (ConfigurationManagerAttributes)null);
			jointFallDamageWidow.SettingChanged += WeedheimMod.OnEffectConfigChanged;
			growTimeDesire = ConfigFileExtensions.BindConfigInOrder<int>(config, "Burning_Desire_Plant", "PlantGrowTime", 3600, "Time in seconds for a plant to grow.\n(86400 = 24hrs, 43200 = 12hrs, 21600 = 6hrs, 3600 = 1hr).\n", true, true, true, (AcceptableValueBase)(object)new AcceptableValueRange<int>(60, 604800), (Action<ConfigEntryBase>)null, (ConfigurationManagerAttributes)null);
			growTimeDesire.SettingChanged += WeedheimMod.OnPlantConfigChanged;
			minScaleDesire = ConfigFileExtensions.BindConfigInOrder<float>(config, "Burning_Desire_Plant", "MinimumPlantScale", 0.9f, "Minimum scale of a plant.\n", true, true, true, (AcceptableValueBase)(object)new AcceptableValueRange<float>(0.5f, 2.5f), (Action<ConfigEntryBase>)null, (ConfigurationManagerAttributes)null);
			minScaleDesire.SettingChanged += WeedheimMod.OnPlantConfigChanged;
			maxScaleDesire = ConfigFileExtensions.BindConfigInOrder<float>(config, "Burning_Desire_Plant", "MaximumPlantScale", 1.1f, "Maximum scale of a plant.\n", true, true, true, (AcceptableValueBase)(object)new AcceptableValueRange<float>(0.5f, 2.5f), (Action<ConfigEntryBase>)null, (ConfigurationManagerAttributes)null);
			maxScaleDesire.SettingChanged += WeedheimMod.OnPlantConfigChanged;
			growRadiusDesire = ConfigFileExtensions.BindConfigInOrder<float>(config, "Burning_Desire_Plant", "PlantGrowRadius", 0.5f, "Area needed for a plant to grow healthy.\n", true, true, true, (AcceptableValueBase)(object)new AcceptableValueRange<float>(0.5f, 2f), (Action<ConfigEntryBase>)null, (ConfigurationManagerAttributes)null);
			growRadiusDesire.SettingChanged += WeedheimMod.OnPlantConfigChanged;
			respawnTimeDesire = ConfigFileExtensions.BindConfigInOrder<int>(config, "Burning_Desire_Plant", "BudRespawnTime", 1440, "Time in minutes for buds to respawn.\n(1440 = 24hrs, 720 = 12hrs, 360 = 6hrs, 60 = 1hr).\n", true, true, true, (AcceptableValueBase)(object)new AcceptableValueRange<int>(1, 10080), (Action<ConfigEntryBase>)null, (ConfigurationManagerAttributes)null);
			respawnTimeDesire.SettingChanged += WeedheimMod.OnPlantConfigChanged;
			budYieldDropDesire = ConfigFileExtensions.BindConfigInOrder<int>(config, "Burning_Desire_Plant", "BudDropAmount", 9, "Amount of buds to drop from a plant.\n", true, true, true, (AcceptableValueBase)(object)new AcceptableValueRange<int>(1, 20), (Action<ConfigEntryBase>)null, (ConfigurationManagerAttributes)null);
			budYieldDropDesire.SettingChanged += WeedheimMod.OnPlantConfigChanged;
			jointDurationDesire = ConfigFileExtensions.BindConfigInOrder<float>(config, "Burning_Desire_Effects", "DesireEffectDuration", 60f, "Effective time in seconds for smoking a spliff to last.\n(Default 60 (1min)).\n", true, true, true, (AcceptableValueBase)(object)new AcceptableValueRange<float>(1f, 1200f), (Action<ConfigEntryBase>)null, (ConfigurationManagerAttributes)null);
			jointDurationDesire.SettingChanged += WeedheimMod.OnEffectConfigChanged;
			jointCooldownDesire = ConfigFileExtensions.BindConfigInOrder<float>(config, "Burning_Desire_Effects", "DesireEffectCooldown", 60f, "Wait time in seconds before the next joint may be smoked.\n(Default 60 (1min)).\n", true, true, true, (AcceptableValueBase)(object)new AcceptableValueRange<float>(1f, 1200f), (Action<ConfigEntryBase>)null, (ConfigurationManagerAttributes)null);
			jointCooldownDesire.SettingChanged += WeedheimMod.OnEffectConfigChanged;
			jointStaminaUsageValDesire = ConfigFileExtensions.BindConfigInOrder<float>(config, "Burning_Desire_Effects", "DesireStaminaUsage", 0.1f, "Percentage amount for Stamina usage.\nThis will effect jump, attack, block, dodge, swim and run stamina.\n", true, true, true, (AcceptableValueBase)null, (Action<ConfigEntryBase>)null, (ConfigurationManagerAttributes)null);
			jointStaminaUsageValDesire.SettingChanged += WeedheimMod.OnEffectConfigChanged;
			jointStaminaRegenValDesire = ConfigFileExtensions.BindConfigInOrder<float>(config, "Burning_Desire_Effects", "DesireStaminaRegen", 1f, "Percentage amount for Stamina regeneration.\n", true, true, true, (AcceptableValueBase)null, (Action<ConfigEntryBase>)null, (ConfigurationManagerAttributes)null);
			jointStaminaRegenValDesire.SettingChanged += WeedheimMod.OnEffectConfigChanged;
			jointHealthRegenValDesire = ConfigFileExtensions.BindConfigInOrder<float>(config, "Burning_Desire_Effects", "DesireHealthRegen", 1.1f, "Percentage amount for Health regeneration.\n", true, true, true, (AcceptableValueBase)null, (Action<ConfigEntryBase>)null, (ConfigurationManagerAttributes)null);
			jointHealthRegenValDesire.SettingChanged += WeedheimMod.OnEffectConfigChanged;
			jointEitrRegenValDesire = ConfigFileExtensions.BindConfigInOrder<float>(config, "Burning_Desire_Effects", "DesireEitrRegen", 1.1f, "Percentage amount for Eitr regeneration.\n", true, true, true, (AcceptableValueBase)null, (Action<ConfigEntryBase>)null, (ConfigurationManagerAttributes)null);
			jointEitrRegenValDesire.SettingChanged += WeedheimMod.OnEffectConfigChanged;
			jointDamageValDesire = ConfigFileExtensions.BindConfigInOrder<float>(config, "Burning_Desire_Effects", "DesireDamageModifier", 1f, "Damage modifier from smoking spliffs.\n", true, true, true, (AcceptableValueBase)(object)new AcceptableValueRange<float>(1f, 2f), (Action<ConfigEntryBase>)null, (ConfigurationManagerAttributes)null);
			jointDamageValDesire.SettingChanged += WeedheimMod.OnEffectConfigChanged;
			jointSpeedValDesire = ConfigFileExtensions.BindConfigInOrder<float>(config, "Burning_Desire_Effects", "DesireSpeedModifier", -0.1f, "Speed modifier from smoking spliffs.\n", true, true, true, (AcceptableValueBase)null, (Action<ConfigEntryBase>)null, (ConfigurationManagerAttributes)null);
			jointSpeedValDesire.SettingChanged += WeedheimMod.OnEffectConfigChanged;
			jointJumpValDesire = ConfigFileExtensions.BindConfigInOrder<float>(config, "Burning_Desire_Effects", "DesireJumpModifier", -0.1f, "Jump height modifier from smoking spliffs.\n", true, true, true, (AcceptableValueBase)null, (Action<ConfigEntryBase>)null, (ConfigurationManagerAttributes)null);
			jointJumpValDesire.SettingChanged += WeedheimMod.OnEffectConfigChanged;
			jointFallSpeedDesire = ConfigFileExtensions.BindConfigInOrder<float>(config, "Burning_Desire_Effects", "FallSpeedModifier", 0f, "Fall Speed modifier from smoking spliffs.\n", true, true, true, (AcceptableValueBase)(object)new AcceptableValueRange<float>(0f, 5f), (Action<ConfigEntryBase>)null, (ConfigurationManagerAttributes)null);
			jointFallSpeedDesire.SettingChanged += WeedheimMod.OnEffectConfigChanged;
			jointFallDamageDesire = ConfigFileExtensions.BindConfigInOrder<float>(config, "Burning_Desire_Effects", "FallDamageModifier", 0f, "Fall Damage modifier from smoking spliffs.\n", true, true, true, (AcceptableValueBase)null, (Action<ConfigEntryBase>)null, (ConfigurationManagerAttributes)null);
			jointFallDamageDesire.SettingChanged += WeedheimMod.OnEffectConfigChanged;
			growTimeLights = ConfigFileExtensions.BindConfigInOrder<int>(config, "Northern_Lights_Plant", "PlantGrowTime", 3600, "Time in seconds for a plant to grow.\n(86400 = 24hrs, 43200 = 12hrs, 21600 = 6hrs, 3600 = 1hr).\n", true, true, true, (AcceptableValueBase)(object)new AcceptableValueRange<int>(60, 604800), (Action<ConfigEntryBase>)null, (ConfigurationManagerAttributes)null);
			growTimeLights.SettingChanged += WeedheimMod.OnPlantConfigChanged;
			minScaleLights = ConfigFileExtensions.BindConfigInOrder<float>(config, "Northern_Lights_Plant", "MinimumPlantScale", 0.9f, "Minimum scale of a plant.\n", true, true, true, (AcceptableValueBase)(object)new AcceptableValueRange<float>(0.5f, 2.5f), (Action<ConfigEntryBase>)null, (ConfigurationManagerAttributes)null);
			minScaleLights.SettingChanged += WeedheimMod.OnPlantConfigChanged;
			maxScaleLights = ConfigFileExtensions.BindConfigInOrder<float>(config, "Northern_Lights_Plant", "MaximumPlantScale", 1.1f, "Maximum scale of a plant.\n", true, true, true, (AcceptableValueBase)(object)new AcceptableValueRange<float>(0.5f, 2.5f), (Action<ConfigEntryBase>)null, (ConfigurationManagerAttributes)null);
			maxScaleLights.SettingChanged += WeedheimMod.OnPlantConfigChanged;
			growRadiusLights = ConfigFileExtensions.BindConfigInOrder<float>(config, "Northern_Lights_Plant", "PlantGrowRadius", 0.5f, "Area needed for a plant to grow healthy.\n", true, true, true, (AcceptableValueBase)(object)new AcceptableValueRange<float>(0.5f, 2f), (Action<ConfigEntryBase>)null, (ConfigurationManagerAttributes)null);
			growRadiusLights.SettingChanged += WeedheimMod.OnPlantConfigChanged;
			respawnTimeLights = ConfigFileExtensions.BindConfigInOrder<int>(config, "Northern_Lights_Plant", "BudRespawnTime", 1440, "Time in minutes for buds to respawn.\n(1440 = 24hrs, 720 = 12hrs, 360 = 6hrs, 60 = 1hr).\n", true, true, true, (AcceptableValueBase)(object)new AcceptableValueRange<int>(1, 10080), (Action<ConfigEntryBase>)null, (ConfigurationManagerAttributes)null);
			respawnTimeLights.SettingChanged += WeedheimMod.OnPlantConfigChanged;
			budYieldDropLights = ConfigFileExtensions.BindConfigInOrder<int>(config, "Northern_Lights_Plant", "BudDropAmount", 9, "Amount of buds to drop from a plant.\n", true, true, true, (AcceptableValueBase)(object)new AcceptableValueRange<int>(1, 20), (Action<ConfigEntryBase>)null, (ConfigurationManagerAttributes)null);
			budYieldDropLights.SettingChanged += WeedheimMod.OnPlantConfigChanged;
			jointDurationLights = ConfigFileExtensions.BindConfigInOrder<float>(config, "Northern_Lights_Effects", "LightsEffectDuration", 60f, "Effective time in seconds for smoking a spliff to last.\n(Default 60 (1min)).\n", true, true, true, (AcceptableValueBase)(object)new AcceptableValueRange<float>(1f, 1200f), (Action<ConfigEntryBase>)null, (ConfigurationManagerAttributes)null);
			jointDurationLights.SettingChanged += WeedheimMod.OnEffectConfigChanged;
			jointCooldownLights = ConfigFileExtensions.BindConfigInOrder<float>(config, "Northern_Lights_Effects", "LightsEffectCooldown", 60f, "Wait time in seconds before the next joint may be smoked.\n(Default 60 (1min)).\n", true, true, true, (AcceptableValueBase)(object)new AcceptableValueRange<float>(1f, 1200f), (Action<ConfigEntryBase>)null, (ConfigurationManagerAttributes)null);
			jointCooldownLights.SettingChanged += WeedheimMod.OnEffectConfigChanged;
			jointStaminaUsageValLights = ConfigFileExtensions.BindConfigInOrder<float>(config, "Northern_Lights_Effects", "LightsStaminaUsage", 0.1f, "Percentage amount for Stamina usage.\nThis will effect jump, attack, block, dodge, swim and run stamina.\n", true, true, true, (AcceptableValueBase)null, (Action<ConfigEntryBase>)null, (ConfigurationManagerAttributes)null);
			jointStaminaUsageValLights.SettingChanged += WeedheimMod.OnEffectConfigChanged;
			jointStaminaRegenValLights = ConfigFileExtensions.BindConfigInOrder<float>(config, "Northern_Lights_Effects", "LightsStaminaRegen", 1f, "Percentage amount for Stamina regeneration.\n", true, true, true, (AcceptableValueBase)null, (Action<ConfigEntryBase>)null, (ConfigurationManagerAttributes)null);
			jointStaminaRegenValLights.SettingChanged += WeedheimMod.OnEffectConfigChanged;
			jointHealthRegenValLights = ConfigFileExtensions.BindConfigInOrder<float>(config, "Northern_Lights_Effects", "LightsHealthRegen", 1.1f, "Percentage amount for Health regeneration.\n", true, true, true, (AcceptableValueBase)null, (Action<ConfigEntryBase>)null, (ConfigurationManagerAttributes)null);
			jointHealthRegenValLights.SettingChanged += WeedheimMod.OnEffectConfigChanged;
			jointEitrRegenValLights = ConfigFileExtensions.BindConfigInOrder<float>(config, "Northern_Lights_Effects", "LightsEitrRegen", 1.1f, "Percentage amount for Eitr regeneration.\n", true, true, true, (AcceptableValueBase)null, (Action<ConfigEntryBase>)null, (ConfigurationManagerAttributes)null);
			jointEitrRegenValLights.SettingChanged += WeedheimMod.OnEffectConfigChanged;
			jointDamageValLights = ConfigFileExtensions.BindConfigInOrder<float>(config, "Northern_Lights_Effects", "LightsDamageModifier", 1f, "Damage modifier from smoking spliffs.\n", true, true, true, (AcceptableValueBase)(object)new AcceptableValueRange<float>(1f, 2f), (Action<ConfigEntryBase>)null, (ConfigurationManagerAttributes)null);
			jointDamageValLights.SettingChanged += WeedheimMod.OnEffectConfigChanged;
			jointSpeedValLights = ConfigFileExtensions.BindConfigInOrder<float>(config, "Northern_Lights_Effects", "LightsSpeedModifier", -0.1f, "Speed modifier from smoking spliffs.\n", true, true, true, (AcceptableValueBase)null, (Action<ConfigEntryBase>)null, (ConfigurationManagerAttributes)null);
			jointSpeedValLights.SettingChanged += WeedheimMod.OnEffectConfigChanged;
			jointJumpValLights = ConfigFileExtensions.BindConfigInOrder<float>(config, "Northern_Lights_Effects", "LightsJumpModifier", -0.1f, "Jump height modifier from smoking spliffs.\n", true, true, true, (AcceptableValueBase)null, (Action<ConfigEntryBase>)null, (ConfigurationManagerAttributes)null);
			jointJumpValLights.SettingChanged += WeedheimMod.OnEffectConfigChanged;
			jointFallSpeedLights = ConfigFileExtensions.BindConfigInOrder<float>(config, "Northern_Lights_Effects", "FallSpeedModifier", 0f, "Fall Speed modifier from smoking spliffs.\n", true, true, true, (AcceptableValueBase)(object)new AcceptableValueRange<float>(0f, 5f), (Action<ConfigEntryBase>)null, (ConfigurationManagerAttributes)null);
			jointFallSpeedLights.SettingChanged += WeedheimMod.OnEffectConfigChanged;
			jointFallDamageLights = ConfigFileExtensions.BindConfigInOrder<float>(config, "Northern_Lights_Effects", "FallDamageModifier", 0f, "Fall Damage modifier from smoking spliffs.\n", true, true, true, (AcceptableValueBase)null, (Action<ConfigEntryBase>)null, (ConfigurationManagerAttributes)null);
			jointFallDamageLights.SettingChanged += WeedheimMod.OnEffectConfigChanged;
			growTimePoison = ConfigFileExtensions.BindConfigInOrder<int>(config, "Durban_Poison_Plant", "PlantGrowTime", 3600, "Time in seconds for a plant to grow.\n(86400 = 24hrs, 43200 = 12hrs, 21600 = 6hrs, 3600 = 1hr).\n", true, true, true, (AcceptableValueBase)(object)new AcceptableValueRange<int>(60, 604800), (Action<ConfigEntryBase>)null, (ConfigurationManagerAttributes)null);
			growTimePoison.SettingChanged += WeedheimMod.OnPlantConfigChanged;
			minScalePoison = ConfigFileExtensions.BindConfigInOrder<float>(config, "Durban_Poison_Plant", "MinimumPlantScale", 0.9f, "Minimum scale of a plant.\n", true, true, true, (AcceptableValueBase)(object)new AcceptableValueRange<float>(0.5f, 2.5f), (Action<ConfigEntryBase>)null, (ConfigurationManagerAttributes)null);
			minScalePoison.SettingChanged += WeedheimMod.OnPlantConfigChanged;
			maxScalePoison = ConfigFileExtensions.BindConfigInOrder<float>(config, "Durban_Poison_Plant", "MaximumPlantScale", 1.1f, "Maximum scale of a plant.\n", true, true, true, (AcceptableValueBase)(object)new AcceptableValueRange<float>(0.5f, 2.5f), (Action<ConfigEntryBase>)null, (ConfigurationManagerAttributes)null);
			maxScalePoison.SettingChanged += WeedheimMod.OnPlantConfigChanged;
			growRadiusPoison = ConfigFileExtensions.BindConfigInOrder<float>(config, "Durban_Poison_Plant", "PlantGrowRadius", 0.5f, "Area needed for a plant to grow healthy.\n", true, true, true, (AcceptableValueBase)(object)new AcceptableValueRange<float>(0.5f, 2f), (Action<ConfigEntryBase>)null, (ConfigurationManagerAttributes)null);
			growRadiusPoison.SettingChanged += WeedheimMod.OnPlantConfigChanged;
			respawnTimePoison = ConfigFileExtensions.BindConfigInOrder<int>(config, "Durban_Poison_Plant", "BudRespawnTime", 1440, "Time in minutes for buds to respawn.\n(1440 = 24hrs, 720 = 12hrs, 360 = 6hrs, 60 = 1hr).\n", true, true, true, (AcceptableValueBase)(object)new AcceptableValueRange<int>(1, 10080), (Action<ConfigEntryBase>)null, (ConfigurationManagerAttributes)null);
			respawnTimePoison.SettingChanged += WeedheimMod.OnPlantConfigChanged;
			budYieldDropPoison = ConfigFileExtensions.BindConfigInOrder<int>(config, "Durban_Poison_Plant", "BudDropAmount", 9, "Amount of buds to drop from a plant.\n", true, true, true, (AcceptableValueBase)(object)new AcceptableValueRange<int>(1, 20), (Action<ConfigEntryBase>)null, (ConfigurationManagerAttributes)null);
			budYieldDropPoison.SettingChanged += WeedheimMod.OnPlantConfigChanged;
			jointDurationPoison = ConfigFileExtensions.BindConfigInOrder<float>(config, "Durban_Poison_Effects", "PoisonEffectDuration", 60f, "Effective time in seconds for smoking a spliff to last.\n(Default 60 (1min)).\n", true, true, true, (AcceptableValueBase)(object)new AcceptableValueRange<float>(1f, 1200f), (Action<ConfigEntryBase>)null, (ConfigurationManagerAttributes)null);
			jointDurationPoison.SettingChanged += WeedheimMod.OnEffectConfigChanged;
			jointCooldownPoison = ConfigFileExtensions.BindConfigInOrder<float>(config, "Durban_Poison_Effects", "PoisonEffectCooldown", 60f, "Wait time in seconds before the next joint may be smoked.\n(Default 60 (1min)).\n", true, true, true, (AcceptableValueBase)(object)new AcceptableValueRange<float>(1f, 1200f), (Action<ConfigEntryBase>)null, (ConfigurationManagerAttributes)null);
			jointCooldownPoison.SettingChanged += WeedheimMod.OnEffectConfigChanged;
			jointStaminaUsageValPoison = ConfigFileExtensions.BindConfigInOrder<float>(config, "Durban_Poison_Effects", "PoisonStaminaUsage", 0.1f, "Percentage amount for Stamina usage.\nThis will effect jump, attack, block, dodge, swim and run stamina.\n", true, true, true, (AcceptableValueBase)null, (Action<ConfigEntryBase>)null, (ConfigurationManagerAttributes)null);
			jointStaminaUsageValPoison.SettingChanged += WeedheimMod.OnEffectConfigChanged;
			jointStaminaRegenValPoison = ConfigFileExtensions.BindConfigInOrder<float>(config, "Durban_Poison_Effects", "PoisonStaminaRegen", 1f, "Percentage amount for Stamina regeneration.\n", true, true, true, (AcceptableValueBase)null, (Action<ConfigEntryBase>)null, (ConfigurationManagerAttributes)null);
			jointStaminaRegenValPoison.SettingChanged += WeedheimMod.OnEffectConfigChanged;
			jointHealthRegenValPoison = ConfigFileExtensions.BindConfigInOrder<float>(config, "Durban_Poison_Effects", "PoisonHealthRegen", 1.1f, "Percentage amount for Health regeneration.\n", true, true, true, (AcceptableValueBase)null, (Action<ConfigEntryBase>)null, (ConfigurationManagerAttributes)null);
			jointHealthRegenValPoison.SettingChanged += WeedheimMod.OnEffectConfigChanged;
			jointEitrRegenValPoison = ConfigFileExtensions.BindConfigInOrder<float>(config, "Durban_Poison_Effects", "PoisonEitrRegen", 1.1f, "Percentage amount for Eitr regeneration.\n", true, true, true, (AcceptableValueBase)null, (Action<ConfigEntryBase>)null, (ConfigurationManagerAttributes)null);
			jointEitrRegenValPoison.SettingChanged += WeedheimMod.OnEffectConfigChanged;
			jointDamageValPoison = ConfigFileExtensions.BindConfigInOrder<float>(config, "Durban_Poison_Effects", "PoisonDamageModifier", 1f, "Damage modifier from smoking spliffs.\n", true, true, true, (AcceptableValueBase)(object)new AcceptableValueRange<float>(1f, 2f), (Action<ConfigEntryBase>)null, (ConfigurationManagerAttributes)null);
			jointDamageValPoison.SettingChanged += WeedheimMod.OnEffectConfigChanged;
			jointSpeedValPoison = ConfigFileExtensions.BindConfigInOrder<float>(config, "Durban_Poison_Effects", "PoisonSpeedModifier", -0.1f, "Speed modifier from smoking spliffs.\n", true, true, true, (AcceptableValueBase)null, (Action<ConfigEntryBase>)null, (ConfigurationManagerAttributes)null);
			jointSpeedValPoison.SettingChanged += WeedheimMod.OnEffectConfigChanged;
			jointJumpValPoison = ConfigFileExtensions.BindConfigInOrder<float>(config, "Durban_Poison_Effects", "PoisonJumpModifier", -0.1f, "Jump height modifier from smoking spliffs.\n", true, true, true, (AcceptableValueBase)null, (Action<ConfigEntryBase>)null, (ConfigurationManagerAttributes)null);
			jointJumpValPoison.SettingChanged += WeedheimMod.OnEffectConfigChanged;
			jointFallSpeedPoison = ConfigFileExtensions.BindConfigInOrder<float>(config, "Durban_Poison_Effects", "FallSpeedModifier", 0f, "Fall Speed modifier from smoking spliffs.\n", true, true, true, (AcceptableValueBase)(object)new AcceptableValueRange<float>(0f, 5f), (Action<ConfigEntryBase>)null, (ConfigurationManagerAttributes)null);
			jointFallSpeedPoison.SettingChanged += WeedheimMod