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