Decompiled source of TrophyBuffs v1.2.9

TrophyBuffs.dll

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

[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)]
[assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")]
[assembly: AssemblyCompany("blacks7ar")]
[assembly: AssemblyConfiguration("Release")]
[assembly: AssemblyFileVersion("1.2.9")]
[assembly: AssemblyInformationalVersion("1.2.9")]
[assembly: AssemblyProduct("TrophyBuffs")]
[assembly: AssemblyTitle("TrophyBuffs")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("1.2.9.0")]
[module: UnverifiableCode]
[module: RefSafetyRules(11)]
namespace Microsoft.CodeAnalysis
{
	[CompilerGenerated]
	[Microsoft.CodeAnalysis.Embedded]
	internal sealed class EmbeddedAttribute : Attribute
	{
	}
}
namespace System.Runtime.CompilerServices
{
	[CompilerGenerated]
	[Microsoft.CodeAnalysis.Embedded]
	[AttributeUsage(AttributeTargets.Module, AllowMultiple = false, Inherited = false)]
	internal sealed class RefSafetyRulesAttribute : Attribute
	{
		public readonly int Version;

		public RefSafetyRulesAttribute(int P_0)
		{
			Version = P_0;
		}
	}
}
namespace TrophyBuffs
{
	[BepInPlugin("blacks7ar.TrophyBuffs", "TrophyBuffs", "1.2.9")]
	[BepInIncompatibility("gg.khairex.usefultrophies")]
	[BepInDependency(/*Could not decode attribute arguments.*/)]
	[BepInDependency(/*Could not decode attribute arguments.*/)]
	[BepInDependency(/*Could not decode attribute arguments.*/)]
	[BepInDependency(/*Could not decode attribute arguments.*/)]
	[BepInDependency(/*Could not decode attribute arguments.*/)]
	[BepInDependency(/*Could not decode attribute arguments.*/)]
	[BepInDependency(/*Could not decode attribute arguments.*/)]
	[BepInDependency(/*Could not decode attribute arguments.*/)]
	[BepInDependency(/*Could not decode attribute arguments.*/)]
	[BepInDependency(/*Could not decode attribute arguments.*/)]
	[BepInDependency(/*Could not decode attribute arguments.*/)]
	[BepInDependency(/*Could not decode attribute arguments.*/)]
	[BepInDependency(/*Could not decode attribute arguments.*/)]
	[BepInDependency(/*Could not decode attribute arguments.*/)]
	[BepInDependency(/*Could not decode attribute arguments.*/)]
	[BepInDependency(/*Could not decode attribute arguments.*/)]
	[BepInDependency(/*Could not decode attribute arguments.*/)]
	[BepInDependency(/*Could not decode attribute arguments.*/)]
	public class Plugin : BaseUnityPlugin
	{
		private const string modGUID = "blacks7ar.TrophyBuffs";

		public const string modName = "TrophyBuffs";

		public const string modAuthor = "blacks7ar";

		public const string modVersion = "1.2.9";

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

		public static readonly ManualLogSource TBLogger = Logger.CreateLogSource("TrophyBuffs");

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

		private static readonly ConfigSync _configSync = new ConfigSync("blacks7ar.TrophyBuffs")
		{
			DisplayName = "TrophyBuffs",
			CurrentVersion = "1.2.9",
			MinimumRequiredVersion = "1.2.9",
			ModRequired = true
		};

		private static ConfigEntry<Toggle> _serverConfigLocked;

		public static bool _hasBlacksmithingMod;

		public static bool _hasBuildingMod;

		public static bool _hasHerbalistMod;

		public static bool _hasCookingMod;

		public static bool _hasFarmingMod;

		public static bool _hasFermentingMod;

		public static bool _hasForagingMod;

		public static bool _hasHuntingMod;

		public static bool _hasJewelcraftingMod;

		public static bool _hasLumberjackingMod;

		public static bool _hasMiningMod;

		public static bool _hasPackHorseMod;

		public static bool _hasRanchingMod;

		public static bool _hasSailingMod;

		public static bool _hasTenacityMod;

		public static bool _hasThirdEyeMod;

		public static bool _hasVitalityMod;

		public static bool _hasSoulCatcher;

		public static Plugin _instance;

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

		public void Awake()
		{
			//IL_002e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0039: Expected O, but got Unknown
			Localizer.Load();
			_instance = this;
			((BaseUnityPlugin)this).Config.SaveOnConfigSet = false;
			_serverConfigLocked = config("1- ServerSync", "Lock Configuration", Toggle.On, new ConfigDescription("If On, the configuration is locked and can be changed by server admins only.", (AcceptableValueBase)null, Array.Empty<object>()));
			_configSync.AddLockingConfigEntry<Toggle>(_serverConfigLocked);
			_hasBlacksmithingMod = Helper.CheckBlacksmithingMod();
			_hasBuildingMod = Helper.CheckBuildingMod();
			_hasHerbalistMod = Helper.CheckHerbalistMod();
			_hasCookingMod = Helper.CheckCookingMod();
			_hasFarmingMod = Helper.CheckFarmingMod();
			_hasFermentingMod = Helper.CheckFermentingMod();
			_hasForagingMod = Helper.CheckForagingMod();
			_hasHuntingMod = Helper.CheckHuntingMod();
			_hasJewelcraftingMod = Helper.CheckJewelcraftingMod();
			_hasLumberjackingMod = Helper.CheckLumberjackingMod();
			_hasMiningMod = Helper.CheckMiningMod();
			_hasPackHorseMod = Helper.CheckPackHorseMod();
			_hasRanchingMod = Helper.CheckRanchingMod();
			_hasSailingMod = Helper.CheckSailingMod();
			_hasTenacityMod = Helper.CheckTenacityMod();
			_hasThirdEyeMod = Helper.CheckThirdEyeMod();
			_hasVitalityMod = Helper.CheckVitalityMod();
			_hasSoulCatcher = Helper.CheckSoulCatcher();
			PrefabSetup.Init();
			BasicSetup.Init();
			AdvanceSetup.Init();
			EnhancedSetup.Init();
			SupremeSetup.Init();
			((BaseUnityPlugin)this).Config.SaveOnConfigSet = true;
			((BaseUnityPlugin)this).Config.Save();
			Assembly executingAssembly = Assembly.GetExecutingAssembly();
			_harmony.PatchAll(executingAssembly);
		}

		private void OnDestroy()
		{
			((BaseUnityPlugin)this).Config.Save();
		}
	}
}
namespace TrophyBuffs.Utils
{
	internal static class Helper
	{
		public static bool CheckBlacksmithingMod()
		{
			if (!Chainloader.PluginInfos.ContainsKey("org.bepinex.plugins.blacksmithing"))
			{
				return false;
			}
			Logging.LogInfo("Blacksmithing Skill found! Applying patch..");
			return true;
		}

		public static bool CheckBuildingMod()
		{
			if (!Chainloader.PluginInfos.ContainsKey("org.bepinex.plugins.building"))
			{
				return false;
			}
			Logging.LogInfo("Building Skill found! Applying patch..");
			return true;
		}

		public static bool CheckHerbalistMod()
		{
			if (!Chainloader.PluginInfos.ContainsKey("blacks7ar.Herbalist"))
			{
				return false;
			}
			Logging.LogInfo("Herbalist Skill found! Applying patch..");
			return true;
		}

		public static bool CheckCookingMod()
		{
			if (!Chainloader.PluginInfos.ContainsKey("org.bepinex.plugins.cooking"))
			{
				return false;
			}
			Logging.LogInfo("Cooking Skill found! Applying patch..");
			return true;
		}

		public static bool CheckFarmingMod()
		{
			if (!Chainloader.PluginInfos.ContainsKey("org.bepinex.plugins.farming"))
			{
				return false;
			}
			Logging.LogInfo("Farming Skill found! Applying patch..");
			return true;
		}

		public static bool CheckFermentingMod()
		{
			if (!Chainloader.PluginInfos.ContainsKey("blacks7ar.Fermenting"))
			{
				return false;
			}
			Logging.LogInfo("Fermenting Skill found! Applying patch..");
			return true;
		}

		public static bool CheckForagingMod()
		{
			if (!Chainloader.PluginInfos.ContainsKey("org.bepinex.plugins.foraging"))
			{
				return false;
			}
			Logging.LogInfo("Foraging Skill found! Applying patch..");
			return true;
		}

		public static bool CheckJewelcraftingMod()
		{
			if (!Chainloader.PluginInfos.ContainsKey("org.bepinex.plugins.jewelcrafting"))
			{
				return false;
			}
			Logging.LogInfo("Jewelcrafting Skill found! Applying patch..");
			return true;
		}

		public static bool CheckLumberjackingMod()
		{
			if (!Chainloader.PluginInfos.ContainsKey("org.bepinex.plugins.lumberjacking"))
			{
				return false;
			}
			Logging.LogInfo("Lumberjacking Skill found! Applying patch..");
			return true;
		}

		public static bool CheckMiningMod()
		{
			if (!Chainloader.PluginInfos.ContainsKey("org.bepinex.plugins.mining"))
			{
				return false;
			}
			Logging.LogInfo("Mining Skill found! Applying patch..");
			return true;
		}

		public static bool CheckPackHorseMod()
		{
			if (!Chainloader.PluginInfos.ContainsKey("org.bepinex.plugins.packhorse"))
			{
				return false;
			}
			Logging.LogInfo("PackHorse Skill found! Applying patch..");
			return true;
		}

		public static bool CheckRanchingMod()
		{
			if (!Chainloader.PluginInfos.ContainsKey("org.bepinex.plugins.ranching"))
			{
				return false;
			}
			Logging.LogInfo("Ranching Skill found! Applying patch..");
			return true;
		}

		public static bool CheckSailingMod()
		{
			if (!Chainloader.PluginInfos.ContainsKey("org.bepinex.plugins.sailing"))
			{
				return false;
			}
			Logging.LogInfo("Sailing Skill found! Applying patch..");
			return true;
		}

		public static bool CheckTenacityMod()
		{
			if (!Chainloader.PluginInfos.ContainsKey("org.bepinex.plugins.tenacity"))
			{
				return false;
			}
			Logging.LogInfo("Tenacity Skill found! Applying patch..");
			return true;
		}

		public static bool CheckThirdEyeMod()
		{
			if (!Chainloader.PluginInfos.ContainsKey("Azumatt.ThirdEye"))
			{
				return false;
			}
			Logging.LogInfo("ThirdEye Skill found! Applying patch..");
			return true;
		}

		public static bool CheckVitalityMod()
		{
			if (!Chainloader.PluginInfos.ContainsKey("org.bepinex.plugins.vitality"))
			{
				return false;
			}
			Logging.LogInfo("Vitality Skill found! Applying patch..");
			return true;
		}

		public static bool CheckHuntingMod()
		{
			if (!Chainloader.PluginInfos.ContainsKey("blacks7ar.Hunting"))
			{
				return false;
			}
			Logging.LogInfo("Hunting Skill found! Applying patch..");
			return true;
		}

		public static bool CheckSoulCatcher()
		{
			if (!Chainloader.PluginInfos.ContainsKey("Soulcatcher"))
			{
				return false;
			}
			Logging.LogInfo("SoulCatcher Skill found! Applying patch..");
			return true;
		}

		public static SE_Stats CreateStatusEffects(string effectName, string m_name, Sprite icon)
		{
			SE_Stats obj = ScriptableObject.CreateInstance<SE_Stats>();
			((Object)obj).name = effectName;
			((StatusEffect)obj).m_name = m_name;
			((StatusEffect)obj).m_tooltip = m_name;
			((StatusEffect)obj).m_icon = icon;
			return obj;
		}

		public static void AddClonedObject(this ZNetScene zNetScene, GameObject gameObject, bool overWrite = true)
		{
			GameObject prefab;
			if ((Object)(object)(prefab = zNetScene.GetPrefab(((Object)gameObject).name)) != (Object)null)
			{
				if (!overWrite)
				{
					return;
				}
				zNetScene.m_prefabs.Remove(prefab);
				zNetScene.m_namedPrefabs.Remove(StringExtensionMethods.GetStableHashCode(((Object)gameObject).name));
			}
			zNetScene.m_prefabs.Add(gameObject);
			zNetScene.m_namedPrefabs.Add(StringExtensionMethods.GetStableHashCode(((Object)gameObject).name), gameObject);
		}

		public static void AddClonedObject(this ObjectDB objectDB, GameObject gameObject, bool overWrite = true)
		{
			GameObject itemPrefab;
			if ((Object)(object)(itemPrefab = objectDB.GetItemPrefab(((Object)gameObject).name)) != (Object)null)
			{
				if (!overWrite)
				{
					return;
				}
				objectDB.m_items.Remove(itemPrefab);
				objectDB.m_itemByHash.Remove(StringExtensionMethods.GetStableHashCode(((Object)gameObject).name));
			}
			objectDB.m_items.Add(gameObject);
			objectDB.m_itemByHash.Add(StringExtensionMethods.GetStableHashCode(((Object)gameObject).name), gameObject);
		}

		public static void AddRecipe(this ObjectDB objectDB, Recipe recipe, bool overWrite = true)
		{
			Recipe recipe2;
			if ((Object)(object)(recipe2 = objectDB.GetRecipe(recipe.m_item.m_itemData)) != (Object)null)
			{
				if (!overWrite)
				{
					return;
				}
				objectDB.m_recipes.Remove(recipe2);
			}
			objectDB.m_recipes.Add(recipe);
		}
	}
	public static class Logging
	{
		public static void LogDebug(string debug)
		{
			Plugin.TBLogger.LogDebug((object)debug);
		}

		public static void LogInfo(string info)
		{
			Plugin.TBLogger.LogInfo((object)info);
		}

		public static void LogWarning(string warning)
		{
			Plugin.TBLogger.LogWarning((object)warning);
		}

		public static void LogError(string error)
		{
			Plugin.TBLogger.LogError((object)error);
		}
	}
	public enum Toggle
	{
		On = 1,
		Off = 0
	}
}
namespace TrophyBuffs.Patches
{
	[HarmonyPatch]
	public class HumanoidPatch
	{
		[HarmonyPostfix]
		[HarmonyPatch(typeof(Humanoid), "UseItem")]
		private static void HumanoidUseItem_Prefix(Humanoid __instance, Inventory inventory, ItemData item, bool fromInventoryGui, ZSyncAnimation ___m_zanim)
		{
			if (inventory == null)
			{
				inventory = __instance.m_inventory;
			}
			if (!inventory.ContainsItem(item) || !fromInventoryGui)
			{
				return;
			}
			if (item.m_shared.m_name.ToLower().Contains("btb_enhancedtrophy") || item.m_shared.m_name.ToLower().Contains("btb_supremetrophy"))
			{
				UseEnhancedTrophy.Init(__instance, inventory, item, ___m_zanim);
				UseSupremeTrophy.Init(__instance, inventory, item, ___m_zanim);
			}
			else if (item.m_shared.m_name.ToLower().Contains("item_trophy"))
			{
				if (((Character)__instance).GetSEMan().GetStatusEffects().Count >= 6)
				{
					((Character)__instance).Message((MessageType)2, "<size=28>$btb_cantbeuse</size>", 0, (Sprite)null);
					return;
				}
				UseBasicTrophy.Init(__instance, inventory, item, ___m_zanim);
				UseAdvanceTrophy.Init(__instance, inventory, item, ___m_zanim);
			}
		}
	}
	[HarmonyPatch]
	internal class ItemDataPatch
	{
		[HarmonyPostfix]
		[HarmonyPatch(typeof(ItemData), "GetStatusEffectTooltip")]
		public static string GetToolTip_Postfix(string __result, ItemData __instance)
		{
			try
			{
				if (__instance?.m_shared == null)
				{
					return __result;
				}
				StringBuilder stringBuilder = new StringBuilder(__result);
				switch (((Object)__instance.m_dropPrefab).name)
				{
				case "TrophyDraugr":
					stringBuilder.Append($"$btb_skillbonus: <color=orange>+{BasicSetup.BasicAxesBonus.Value} $btb_axes</color>");
					stringBuilder.Append($"\n$btb_duration: <color=orange>{BasicSetup.BasicBuffCooldown.Value} min/s</color>");
					return stringBuilder.ToString();
				case "TrophyBlob":
					stringBuilder.Append($"$btb_skillbonus: <color=orange>+{BasicSetup.BasicBlockingBonus.Value} $btb_blocking</color>");
					stringBuilder.Append($"\n$btb_duration: <color=orange>{BasicSetup.BasicBuffCooldown.Value} min/s</color>");
					return stringBuilder.ToString();
				case "TrophySkeletonPoison":
					stringBuilder.Append($"$btb_skillbonus: <color=orange>+{BasicSetup.BasicBloodMagicBonus.Value} $btb_bloodmagic</color>");
					stringBuilder.Append($"\n$btb_duration: <color=orange>{BasicSetup.BasicBuffCooldown.Value} min/s</color>");
					return stringBuilder.ToString();
				case "TrophyDraugrElite":
					stringBuilder.Append($"$btb_skillbonus: <color=orange>+{BasicSetup.BasicBowsBonus.Value} $btb_bows</color>");
					stringBuilder.Append($"\n$btb_duration: <color=orange>{BasicSetup.BasicBuffCooldown.Value} min/s</color>");
					return stringBuilder.ToString();
				case "TrophyGreydwarfBrute":
					stringBuilder.Append($"$btb_skillbonus: <color=orange>+{BasicSetup.BasicClubsBonus.Value} $btb_clubs</color>");
					stringBuilder.Append($"\n$btb_duration: <color=orange>{BasicSetup.BasicBuffCooldown.Value} min/s</color>");
					return stringBuilder.ToString();
				case "TrophyWraith":
					stringBuilder.Append($"$btb_skillbonus: <color=orange>+{BasicSetup.BasicCrossbowsBonus.Value} $btb_crossbow</color>");
					stringBuilder.Append($"\n$btb_duration: <color=orange>{BasicSetup.BasicBuffCooldown.Value} min/s</color>");
					return stringBuilder.ToString();
				case "TrophySurtling":
					stringBuilder.Append($"$btb_skillbonus: <color=orange>+{BasicSetup.BasicElementalMagicBonus.Value} $btb_elementalmagic</color>");
					stringBuilder.Append($"\n$btb_duration: <color=orange>{BasicSetup.BasicBuffCooldown.Value} min/s</color>");
					return stringBuilder.ToString();
				case "TrophyGreydwarf":
					stringBuilder.Append($"$btb_skillbonus: <color=orange>+{BasicSetup.BasicFistBonus.Value} $btb_fist</color>");
					stringBuilder.Append($"\n$btb_duration: <color=orange>{BasicSetup.BasicBuffCooldown.Value} min/s</color>");
					return stringBuilder.ToString();
				case "TrophyLeech":
					stringBuilder.Append($"$btb_skillbonus: <color=orange>+{BasicSetup.BasicFishingBonus.Value} $btb_fishing</color>");
					stringBuilder.Append($"\n$btb_duration: <color=orange>{BasicSetup.BasicBuffCooldown.Value} min/s</color>");
					return stringBuilder.ToString();
				case "TrophyUlv":
					stringBuilder.Append($"$btb_skillbonus: <color=orange>+{BasicSetup.BasicJumpBonus.Value} $btb_jump</color>");
					stringBuilder.Append($"\n$btb_duration: <color=orange>{BasicSetup.BasicBuffCooldown.Value} min/s</color>");
					return stringBuilder.ToString();
				case "TrophyDeer":
					stringBuilder.Append($"$btb_skillbonus: <color=orange>+{BasicSetup.BasicKnivesBonus.Value} $btb_knives</color>");
					stringBuilder.Append($"\n$btb_duration: <color=orange>{BasicSetup.BasicBuffCooldown.Value} min/s</color>");
					return stringBuilder.ToString();
				case "TrophyFrostTroll":
					stringBuilder.Append($"$btb_skillbonus: <color=orange>+{BasicSetup.BasicPickaxesBonus.Value} $btb_pickaxe</color>");
					stringBuilder.Append($"\n$btb_duration: <color=orange>{BasicSetup.BasicBuffCooldown.Value} min/s</color>");
					stringBuilder.Append(Plugin._hasLumberjackingMod ? $"\n$btb_skillbonus: <color=orange>+{BasicSetup.BasicWoodcuttingBonus.Value} $btb_lumberjacking</color>" : $"\n$btb_skillbonus: <color=orange>+{BasicSetup.BasicWoodcuttingBonus.Value} $btb_woodcutting</color>");
					stringBuilder.Append($"\n$btb_duration: <color=orange>{BasicSetup.BasicBuffCooldown.Value} min/s</color>");
					return stringBuilder.ToString();
				case "TrophyHare":
					stringBuilder.Append($"$btb_skillbonus: <color=orange>+{BasicSetup.BasicRunBonus.Value} $btb_run</color>");
					stringBuilder.Append($"\n$btb_duration: <color=orange>{BasicSetup.BasicBuffCooldown.Value} min/s</color>");
					return stringBuilder.ToString();
				case "TrophyDraugrFem":
					stringBuilder.Append($"$btb_skillbonus: <color=orange>+{BasicSetup.BasicPolearmsBonus.Value} $btb_polearms</color>");
					stringBuilder.Append($"\n$btb_duration: <color=orange>{BasicSetup.BasicBuffCooldown.Value} min/s</color>");
					return stringBuilder.ToString();
				case "TrophyBoar":
					stringBuilder.Append($"$btb_skillbonus: <color=orange>+{BasicSetup.BasicSneakBonus.Value} $btb_sneak</color>");
					stringBuilder.Append($"\n$btb_duration: <color=orange>{BasicSetup.BasicBuffCooldown.Value} min/s</color>");
					return stringBuilder.ToString();
				case "TrophyGreydwarfShaman":
					stringBuilder.Append($"$btb_skillbonus: <color=orange>+{BasicSetup.BasicSpearsBonus.Value} $btb_spears</color>");
					stringBuilder.Append($"\n$btb_duration: <color=orange>{BasicSetup.BasicBuffCooldown.Value} min/s</color>");
					return stringBuilder.ToString();
				case "TrophyNeck":
					stringBuilder.Append($"$btb_skillbonus: <color=orange>+{BasicSetup.BasicSwimBonus.Value} $btb_swim</color>");
					stringBuilder.Append($"\n$btb_duration: <color=orange>{BasicSetup.BasicBuffCooldown.Value} min/s</color>");
					return stringBuilder.ToString();
				case "TrophySkeleton":
					stringBuilder.Append($"$btb_skillbonus: <color=orange>+{BasicSetup.BasicSwordsBonus.Value} $btb_swords</color>");
					stringBuilder.Append($"\n$btb_duration: <color=orange>{BasicSetup.BasicBuffCooldown.Value} min/s</color>");
					return stringBuilder.ToString();
				case "TrophyDvergr":
					stringBuilder.Append($"$btb_skillbonus: <color=orange>+{AdvanceSetup.AdvanceAxesBonus.Value} $btb_axes</color>");
					stringBuilder.Append($"\n$btb_duration: <color=orange>{AdvanceSetup.AdvanceBuffCooldown.Value} min/s</color>");
					return stringBuilder.ToString();
				case "TrophyGrowth":
					stringBuilder.Append($"$btb_skillbonus: <color=orange>+{AdvanceSetup.AdvanceBlockingBonus.Value} $btb_blocking</color>");
					stringBuilder.Append($"\n$btb_duration: <color=orange>{AdvanceSetup.AdvanceBuffCooldown.Value} min/s</color>");
					return stringBuilder.ToString();
				case "TrophyCultist":
					stringBuilder.Append($"$btb_skillbonus: <color=orange>+{AdvanceSetup.AdvanceBloodMagicBonus.Value} $btb_bloodmagic</color>");
					stringBuilder.Append($"\n$btb_duration: <color=orange>{AdvanceSetup.AdvanceBuffCooldown.Value} min/s</color>");
					return stringBuilder.ToString();
				case "TrophyHatchling":
					stringBuilder.Append($"$btb_skillbonus: <color=orange>+{AdvanceSetup.AdvanceBowsBonus.Value} $btb_bows</color>");
					stringBuilder.Append($"\n$btb_duration: <color=orange>{AdvanceSetup.AdvanceBuffCooldown.Value} min/s</color>");
					return stringBuilder.ToString();
				case "TrophyGoblinBrute":
					stringBuilder.Append($"$btb_skillbonus: <color=orange>+{AdvanceSetup.AdvanceClubsBonus.Value} $btb_clubs</color>");
					stringBuilder.Append($"\n$btb_duration: <color=orange>{AdvanceSetup.AdvanceBuffCooldown.Value} min/s</color>");
					return stringBuilder.ToString();
				case "TrophyDeathsquito":
					stringBuilder.Append($"$btb_skillbonus: <color=orange>+{AdvanceSetup.AdvanceCrossbowsBonus.Value} $btb_crossbow</color>");
					stringBuilder.Append($"\n$btb_duration: <color=orange>{AdvanceSetup.AdvanceBuffCooldown.Value} min/s</color>");
					return stringBuilder.ToString();
				case "TrophyGoblinShaman":
					stringBuilder.Append($"$btb_skillbonus: <color=orange>+{AdvanceSetup.AdvanceElementalMagicBonus.Value} $btb_elementalmagic</color>");
					stringBuilder.Append($"\n$btb_duration: <color=orange>{AdvanceSetup.AdvanceBuffCooldown.Value} min/s</color>");
					return stringBuilder.ToString();
				case "TrophyFenring":
					stringBuilder.Append($"$btb_skillbonus: <color=orange>+{AdvanceSetup.AdvanceFistBonus.Value} $btb_fist</color>");
					stringBuilder.Append($"\n$btb_duration: <color=orange>{AdvanceSetup.AdvanceBuffCooldown.Value} min/s</color>");
					return stringBuilder.ToString();
				case "TrophySerpent":
					stringBuilder.Append($"$btb_skillbonus: <color=orange>+{AdvanceSetup.AdvanceFishingBonus.Value} $btb_fishing</color>");
					stringBuilder.Append($"\n$btb_duration: <color=orange>{AdvanceSetup.AdvanceBuffCooldown.Value} min/s</color>");
					stringBuilder.Append($"\n$btb_skillbonus: <color=orange>+{AdvanceSetup.AdvanceSwimBonus.Value} $btb_swim</color>");
					stringBuilder.Append($"\n$btb_duration: <color=orange>{AdvanceSetup.AdvanceBuffCooldown.Value} min/s</color>");
					return stringBuilder.ToString();
				case "TrophyWolf":
					stringBuilder.Append($"$btb_skillbonus: <color=orange>+{AdvanceSetup.AdvanceKnivesBonus.Value} $btb_knives</color>");
					stringBuilder.Append($"\n$btb_duration: <color=orange>{AdvanceSetup.AdvanceBuffCooldown.Value} min/s</color>");
					return stringBuilder.ToString();
				case "TrophySGolem":
					stringBuilder.Append($"$btb_skillbonus: <color=orange>+{AdvanceSetup.AdvancePickaxesBonus.Value} $btb_pickaxe</color>");
					stringBuilder.Append($"\n$btb_duration: <color=orange>{AdvanceSetup.AdvanceBuffCooldown.Value} min/s</color>");
					return stringBuilder.ToString();
				case "TrophyLox":
					stringBuilder.Append($"$btb_skillbonus: <color=orange>+{AdvanceSetup.AdvanceRidingBonus.Value} $btb_riding</color>");
					stringBuilder.Append($"\n$btb_duration: <color=orange>{AdvanceSetup.AdvanceBuffCooldown.Value} min/s</color>");
					return stringBuilder.ToString();
				case "TrophyGjall":
					stringBuilder.Append($"$btb_skillbonus: <color=orange>+{AdvanceSetup.AdvanceRunBonus.Value} $btb_run</color>");
					stringBuilder.Append($"\n$btb_duration: <color=orange>{AdvanceSetup.AdvanceBuffCooldown.Value} min/s</color>");
					return stringBuilder.ToString();
				case "TrophySeekerBrute":
					stringBuilder.Append($"$btb_skillbonus: <color=orange>+{AdvanceSetup.AdvancePolearmsBonus.Value} $btb_polearms</color>");
					stringBuilder.Append($"\n$btb_duration: <color=orange>{AdvanceSetup.AdvanceBuffCooldown.Value} min/s</color>");
					return stringBuilder.ToString();
				case "TrophyTick":
					stringBuilder.Append($"$btb_skillbonus: <color=orange>+{AdvanceSetup.AdvanceSneakBonus.Value} $btb_sneak</color>");
					stringBuilder.Append($"\n$btb_duration: <color=orange>{AdvanceSetup.AdvanceBuffCooldown.Value} min/s</color>");
					return stringBuilder.ToString();
				case "TrophySeeker":
					stringBuilder.Append($"$btb_skillbonus: <color=orange>+{AdvanceSetup.AdvanceSpearsBonus.Value} $btb_spears</color>");
					stringBuilder.Append($"\n$btb_duration: <color=orange>{AdvanceSetup.AdvanceBuffCooldown.Value} min/s</color>");
					return stringBuilder.ToString();
				case "TrophyGoblin":
					stringBuilder.Append($"$btb_skillbonus: <color=orange>+{AdvanceSetup.AdvanceSwordsBonus.Value} $btb_swords</color>");
					stringBuilder.Append($"\n$btb_duration: <color=orange>{AdvanceSetup.AdvanceBuffCooldown.Value} min/s</color>");
					return stringBuilder.ToString();
				case "TrophyAbomination":
					stringBuilder.Append(Plugin._hasLumberjackingMod ? $"$btb_skillbonus: <color=orange>+{AdvanceSetup.AdvanceWoodcuttingBonus.Value} $btb_lumberjacking</color>" : $"$btb_skillbonus: <color=orange>+{AdvanceSetup.AdvanceWoodcuttingBonus.Value} $btb_woodcutting</color>");
					stringBuilder.Append($"\n$btb_duration: <color=orange>{AdvanceSetup.AdvanceBuffCooldown.Value} min/s</color>");
					return stringBuilder.ToString();
				default:
					return __result;
				}
			}
			catch
			{
				return __result;
			}
		}
	}
	[HarmonyPatch]
	internal class ObjectDBPatch
	{
		[HarmonyPriority(700)]
		[HarmonyPostfix]
		[HarmonyPatch(typeof(ObjectDB), "Awake")]
		private static void Awake_Postfix(ObjectDB __instance)
		{
			//IL_0000: Unknown result type (might be due to invalid IL or missing references)
			//IL_0005: Unknown result type (might be due to invalid IL or missing references)
			Scene activeScene = SceneManager.GetActiveScene();
			if (!(((Scene)(ref activeScene)).name != "main") && !((Object)(object)__instance == (Object)null) && __instance.m_items.Count > 0)
			{
				CreateBuffs.Init(__instance);
				EnhancedTrophies.Init(__instance);
				SupremeTrophies.Init(__instance);
				PieceTable buildPieces = __instance.GetItemPrefab("Hammer").GetComponent<ItemDrop>().m_itemData.m_shared.m_buildPieces;
				if (buildPieces.m_pieces.Contains(PrefabSetup._cursedTrunk))
				{
					buildPieces.m_pieces.Remove(PrefabSetup._cursedTrunk);
				}
				buildPieces.m_pieces.Add(PrefabSetup._cursedTrunk);
				__instance.UpdateRegisters();
			}
		}

		[HarmonyPriority(700)]
		[HarmonyPostfix]
		[HarmonyPatch(typeof(ObjectDB), "CopyOtherDB")]
		private static void CopyOtherDB_Postfix(ObjectDB __instance)
		{
			//IL_0000: Unknown result type (might be due to invalid IL or missing references)
			//IL_0005: Unknown result type (might be due to invalid IL or missing references)
			Scene activeScene = SceneManager.GetActiveScene();
			if (!(((Scene)(ref activeScene)).name != "main") && !((Object)(object)__instance == (Object)null) && __instance.m_items.Count > 0)
			{
				CreateBuffs.Init(__instance);
				EnhancedTrophies.Init(__instance);
				SupremeTrophies.Init(__instance);
				__instance.UpdateRegisters();
			}
		}
	}
	[HarmonyPatch]
	internal class SkillsPatch
	{
		[HarmonyPostfix]
		[HarmonyPatch(typeof(Skills), "GetSkillLevel")]
		public static void GetSkillLevel_Postfix(Skills __instance, SkillType skillType, ref float __result)
		{
			//IL_0000: Unknown result type (might be due to invalid IL or missing references)
			//IL_0002: Unknown result type (might be due to invalid IL or missing references)
			//IL_0040: Expected I4, but got Unknown
			//IL_0c0b: Unknown result type (might be due to invalid IL or missing references)
			//IL_06df: Unknown result type (might be due to invalid IL or missing references)
			//IL_030f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0953: Unknown result type (might be due to invalid IL or missing references)
			//IL_0aaf: Unknown result type (might be due to invalid IL or missing references)
			//IL_011d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0077: Unknown result type (might be due to invalid IL or missing references)
			//IL_0269: Unknown result type (might be due to invalid IL or missing references)
			//IL_046b: Unknown result type (might be due to invalid IL or missing references)
			//IL_01c3: Unknown result type (might be due to invalid IL or missing references)
			//IL_0519: Unknown result type (might be due to invalid IL or missing references)
			//IL_078d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0cb9: Unknown result type (might be due to invalid IL or missing references)
			//IL_03bd: Unknown result type (might be due to invalid IL or missing references)
			//IL_0040: Unknown result type (might be due to invalid IL or missing references)
			//IL_0043: Unknown result type (might be due to invalid IL or missing references)
			//IL_0075: Expected I4, but got Unknown
			//IL_0c4f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0723: Unknown result type (might be due to invalid IL or missing references)
			//IL_0353: Unknown result type (might be due to invalid IL or missing references)
			//IL_0997: Unknown result type (might be due to invalid IL or missing references)
			//IL_0af3: Unknown result type (might be due to invalid IL or missing references)
			//IL_015e: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b8: Unknown result type (might be due to invalid IL or missing references)
			//IL_02aa: Unknown result type (might be due to invalid IL or missing references)
			//IL_04af: Unknown result type (might be due to invalid IL or missing references)
			//IL_0204: Unknown result type (might be due to invalid IL or missing references)
			//IL_055d: Unknown result type (might be due to invalid IL or missing references)
			//IL_07d1: Unknown result type (might be due to invalid IL or missing references)
			//IL_0cfd: Unknown result type (might be due to invalid IL or missing references)
			//IL_0401: Unknown result type (might be due to invalid IL or missing references)
			//IL_0675: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a01: Unknown result type (might be due to invalid IL or missing references)
			//IL_08a5: Unknown result type (might be due to invalid IL or missing references)
			//IL_0b5d: Unknown result type (might be due to invalid IL or missing references)
			//IL_05c7: Unknown result type (might be due to invalid IL or missing references)
			//IL_083b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0cab: Unknown result type (might be due to invalid IL or missing references)
			//IL_0c93: Unknown result type (might be due to invalid IL or missing references)
			//IL_077f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0767: Unknown result type (might be due to invalid IL or missing references)
			//IL_03af: Unknown result type (might be due to invalid IL or missing references)
			//IL_0397: Unknown result type (might be due to invalid IL or missing references)
			//IL_09f3: Unknown result type (might be due to invalid IL or missing references)
			//IL_09db: Unknown result type (might be due to invalid IL or missing references)
			//IL_0b4f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0b37: Unknown result type (might be due to invalid IL or missing references)
			//IL_01b6: Unknown result type (might be due to invalid IL or missing references)
			//IL_019f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0110: Unknown result type (might be due to invalid IL or missing references)
			//IL_00f9: Unknown result type (might be due to invalid IL or missing references)
			//IL_0302: Unknown result type (might be due to invalid IL or missing references)
			//IL_02eb: Unknown result type (might be due to invalid IL or missing references)
			//IL_050b: Unknown result type (might be due to invalid IL or missing references)
			//IL_04f3: Unknown result type (might be due to invalid IL or missing references)
			//IL_025c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0245: Unknown result type (might be due to invalid IL or missing references)
			//IL_05b9: Unknown result type (might be due to invalid IL or missing references)
			//IL_05a1: Unknown result type (might be due to invalid IL or missing references)
			//IL_082d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0815: Unknown result type (might be due to invalid IL or missing references)
			//IL_0d59: Unknown result type (might be due to invalid IL or missing references)
			//IL_0d41: Unknown result type (might be due to invalid IL or missing references)
			//IL_045d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0445: Unknown result type (might be due to invalid IL or missing references)
			//IL_06d1: Unknown result type (might be due to invalid IL or missing references)
			//IL_06b9: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a45: Unknown result type (might be due to invalid IL or missing references)
			//IL_08e9: Unknown result type (might be due to invalid IL or missing references)
			//IL_0ba1: Unknown result type (might be due to invalid IL or missing references)
			//IL_060b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0897: Unknown result type (might be due to invalid IL or missing references)
			//IL_087f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0aa1: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a89: Unknown result type (might be due to invalid IL or missing references)
			//IL_0945: Unknown result type (might be due to invalid IL or missing references)
			//IL_092d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0bfd: Unknown result type (might be due to invalid IL or missing references)
			//IL_0be5: Unknown result type (might be due to invalid IL or missing references)
			//IL_0667: Unknown result type (might be due to invalid IL or missing references)
			//IL_064f: Unknown result type (might be due to invalid IL or missing references)
			switch (skillType - 1)
			{
			case 6:
			{
				float level3 = __instance.GetSkill(skillType).m_level;
				if (((Character)__instance.m_player).GetSEMan().HaveStatusEffect(StringExtensionMethods.GetStableHashCode("blacks7ar_basic_axes")))
				{
					level3 += (float)BasicSetup.BasicAxesBonus.Value;
					((Character)__instance.m_player).GetSEMan().ModifySkillLevel(skillType, ref level3);
					__result = level3;
				}
				else if (((Character)__instance.m_player).GetSEMan().HaveStatusEffect(StringExtensionMethods.GetStableHashCode("blacks7ar_advance_axes")))
				{
					level3 += (float)AdvanceSetup.AdvanceAxesBonus.Value;
					((Character)__instance.m_player).GetSEMan().ModifySkillLevel(skillType, ref level3);
					__result = level3;
				}
				else
				{
					((Character)__instance.m_player).GetSEMan().ModifySkillLevel(skillType, ref level3);
					__result = level3;
				}
				return;
			}
			case 5:
			{
				float level12 = __instance.GetSkill(skillType).m_level;
				if (((Character)__instance.m_player).GetSEMan().HaveStatusEffect(StringExtensionMethods.GetStableHashCode("blacks7ar_basic_blocking")))
				{
					level12 += (float)BasicSetup.BasicBlockingBonus.Value;
					((Character)__instance.m_player).GetSEMan().ModifySkillLevel(skillType, ref level12);
					__result = level12;
				}
				else if (((Character)__instance.m_player).GetSEMan().HaveStatusEffect(StringExtensionMethods.GetStableHashCode("blacks7ar_advance_blocking")))
				{
					level12 += (float)AdvanceSetup.AdvanceBlockingBonus.Value;
					((Character)__instance.m_player).GetSEMan().ModifySkillLevel(skillType, ref level12);
					__result = level12;
				}
				else
				{
					((Character)__instance.m_player).GetSEMan().ModifySkillLevel(skillType, ref level12);
					__result = level12;
				}
				return;
			}
			case 9:
			{
				float level9 = __instance.GetSkill(skillType).m_level;
				if (((Character)__instance.m_player).GetSEMan().HaveStatusEffect(StringExtensionMethods.GetStableHashCode("blacks7ar_basic_bloodmagic")))
				{
					level9 += (float)BasicSetup.BasicBloodMagicBonus.Value;
					((Character)__instance.m_player).GetSEMan().ModifySkillLevel(skillType, ref level9);
					__result = level9;
				}
				else if (((Character)__instance.m_player).GetSEMan().HaveStatusEffect(StringExtensionMethods.GetStableHashCode("blacks7ar_advance_bloodmagic")))
				{
					level9 += (float)AdvanceSetup.AdvanceBloodMagicBonus.Value;
					((Character)__instance.m_player).GetSEMan().ModifySkillLevel(skillType, ref level9);
					__result = level9;
				}
				else
				{
					((Character)__instance.m_player).GetSEMan().ModifySkillLevel(skillType, ref level9);
					__result = level9;
				}
				return;
			}
			case 7:
			{
				float level4 = __instance.GetSkill(skillType).m_level;
				if (((Character)__instance.m_player).GetSEMan().HaveStatusEffect(StringExtensionMethods.GetStableHashCode("blacks7ar_basic_bows")))
				{
					level4 += (float)BasicSetup.BasicBowsBonus.Value;
					((Character)__instance.m_player).GetSEMan().ModifySkillLevel(skillType, ref level4);
					__result = level4;
				}
				else if (((Character)__instance.m_player).GetSEMan().HaveStatusEffect(StringExtensionMethods.GetStableHashCode("blacks7ar_advance_bows")))
				{
					level4 += (float)AdvanceSetup.AdvanceBowsBonus.Value;
					((Character)__instance.m_player).GetSEMan().ModifySkillLevel(skillType, ref level4);
					__result = level4;
				}
				else
				{
					((Character)__instance.m_player).GetSEMan().ModifySkillLevel(skillType, ref level4);
					__result = level4;
				}
				return;
			}
			case 2:
			{
				float level5 = __instance.GetSkill(skillType).m_level;
				if (((Character)__instance.m_player).GetSEMan().HaveStatusEffect(StringExtensionMethods.GetStableHashCode("blacks7ar_basic_clubs")))
				{
					level5 += (float)BasicSetup.BasicClubsBonus.Value;
					((Character)__instance.m_player).GetSEMan().ModifySkillLevel(skillType, ref level5);
					__result = level5;
				}
				else if (((Character)__instance.m_player).GetSEMan().HaveStatusEffect(StringExtensionMethods.GetStableHashCode("blacks7ar_advance_clubs")))
				{
					level5 += (float)AdvanceSetup.AdvanceClubsBonus.Value;
					((Character)__instance.m_player).GetSEMan().ModifySkillLevel(skillType, ref level5);
					__result = level5;
				}
				else
				{
					((Character)__instance.m_player).GetSEMan().ModifySkillLevel(skillType, ref level5);
					__result = level5;
				}
				return;
			}
			case 13:
			{
				float level10 = __instance.GetSkill(skillType).m_level;
				if (((Character)__instance.m_player).GetSEMan().HaveStatusEffect(StringExtensionMethods.GetStableHashCode("blacks7ar_basic_crossbows")))
				{
					level10 += (float)BasicSetup.BasicCrossbowsBonus.Value;
					((Character)__instance.m_player).GetSEMan().ModifySkillLevel(skillType, ref level10);
					__result = level10;
				}
				else if (((Character)__instance.m_player).GetSEMan().HaveStatusEffect(StringExtensionMethods.GetStableHashCode("blacks7ar_advance_crossbows")))
				{
					level10 += (float)AdvanceSetup.AdvanceCrossbowsBonus.Value;
					((Character)__instance.m_player).GetSEMan().ModifySkillLevel(skillType, ref level10);
					__result = level10;
				}
				else
				{
					((Character)__instance.m_player).GetSEMan().ModifySkillLevel(skillType, ref level10);
					__result = level10;
				}
				return;
			}
			case 8:
			{
				float level14 = __instance.GetSkill(skillType).m_level;
				if (((Character)__instance.m_player).GetSEMan().HaveStatusEffect(StringExtensionMethods.GetStableHashCode("blacks7ar_basic_elementalmagic")))
				{
					level14 += (float)BasicSetup.BasicElementalMagicBonus.Value;
					((Character)__instance.m_player).GetSEMan().ModifySkillLevel(skillType, ref level14);
					__result = level14;
				}
				else if (((Character)__instance.m_player).GetSEMan().HaveStatusEffect(StringExtensionMethods.GetStableHashCode("blacks7ar_advance_elementalmagic")))
				{
					level14 += (float)AdvanceSetup.AdvanceElementalMagicBonus.Value;
					((Character)__instance.m_player).GetSEMan().ModifySkillLevel(skillType, ref level14);
					__result = level14;
				}
				else
				{
					((Character)__instance.m_player).GetSEMan().ModifySkillLevel(skillType, ref level14);
					__result = level14;
				}
				return;
			}
			case 10:
			{
				float level7 = __instance.GetSkill(skillType).m_level;
				if (((Character)__instance.m_player).GetSEMan().HaveStatusEffect(StringExtensionMethods.GetStableHashCode("blacks7ar_basic_fist")))
				{
					level7 += (float)BasicSetup.BasicFistBonus.Value;
					((Character)__instance.m_player).GetSEMan().ModifySkillLevel(skillType, ref level7);
					__result = level7;
				}
				else if (((Character)__instance.m_player).GetSEMan().HaveStatusEffect(StringExtensionMethods.GetStableHashCode("blacks7ar_advance_fist")))
				{
					level7 += (float)AdvanceSetup.AdvanceFistBonus.Value;
					((Character)__instance.m_player).GetSEMan().ModifySkillLevel(skillType, ref level7);
					__result = level7;
				}
				else
				{
					((Character)__instance.m_player).GetSEMan().ModifySkillLevel(skillType, ref level7);
					__result = level7;
				}
				return;
			}
			case 1:
			{
				float level13 = __instance.GetSkill(skillType).m_level;
				if (((Character)__instance.m_player).GetSEMan().HaveStatusEffect(StringExtensionMethods.GetStableHashCode("blacks7ar_basic_knives")))
				{
					level13 += (float)BasicSetup.BasicKnivesBonus.Value;
					((Character)__instance.m_player).GetSEMan().ModifySkillLevel(skillType, ref level13);
					__result = level13;
				}
				else if (((Character)__instance.m_player).GetSEMan().HaveStatusEffect(StringExtensionMethods.GetStableHashCode("blacks7ar_advance_knives")))
				{
					level13 += (float)AdvanceSetup.AdvanceKnivesBonus.Value;
					((Character)__instance.m_player).GetSEMan().ModifySkillLevel(skillType, ref level13);
					__result = level13;
				}
				else
				{
					((Character)__instance.m_player).GetSEMan().ModifySkillLevel(skillType, ref level13);
					__result = level13;
				}
				return;
			}
			case 11:
			{
				float level8 = __instance.GetSkill(skillType).m_level;
				if (((Character)__instance.m_player).GetSEMan().HaveStatusEffect(StringExtensionMethods.GetStableHashCode("blacks7ar_basic_pickaxes")))
				{
					level8 += (float)BasicSetup.BasicPickaxesBonus.Value;
					((Character)__instance.m_player).GetSEMan().ModifySkillLevel(skillType, ref level8);
					__result = level8;
				}
				else if (((Character)__instance.m_player).GetSEMan().HaveStatusEffect(StringExtensionMethods.GetStableHashCode("blacks7ar_advance_pickaxes")))
				{
					level8 += (float)AdvanceSetup.AdvancePickaxesBonus.Value;
					((Character)__instance.m_player).GetSEMan().ModifySkillLevel(skillType, ref level8);
					__result = level8;
				}
				else
				{
					((Character)__instance.m_player).GetSEMan().ModifySkillLevel(skillType, ref level8);
					__result = level8;
				}
				return;
			}
			case 3:
			{
				float level2 = __instance.GetSkill(skillType).m_level;
				if (((Character)__instance.m_player).GetSEMan().HaveStatusEffect(StringExtensionMethods.GetStableHashCode("blacks7ar_basic_polearms")))
				{
					level2 += (float)BasicSetup.BasicPolearmsBonus.Value;
					((Character)__instance.m_player).GetSEMan().ModifySkillLevel(skillType, ref level2);
					__result = level2;
				}
				else if (((Character)__instance.m_player).GetSEMan().HaveStatusEffect(StringExtensionMethods.GetStableHashCode("blacks7ar_advance_polearms")))
				{
					level2 += (float)AdvanceSetup.AdvancePolearmsBonus.Value;
					((Character)__instance.m_player).GetSEMan().ModifySkillLevel(skillType, ref level2);
					__result = level2;
				}
				else
				{
					((Character)__instance.m_player).GetSEMan().ModifySkillLevel(skillType, ref level2);
					__result = level2;
				}
				return;
			}
			case 4:
			{
				float level11 = __instance.GetSkill(skillType).m_level;
				if (((Character)__instance.m_player).GetSEMan().HaveStatusEffect(StringExtensionMethods.GetStableHashCode("blacks7ar_basic_spears")))
				{
					level11 += (float)BasicSetup.BasicSpearsBonus.Value;
					((Character)__instance.m_player).GetSEMan().ModifySkillLevel(skillType, ref level11);
					__result = level11;
				}
				else if (((Character)__instance.m_player).GetSEMan().HaveStatusEffect(StringExtensionMethods.GetStableHashCode("blacks7ar_advance_spears")))
				{
					level11 += (float)AdvanceSetup.AdvanceSpearsBonus.Value;
					((Character)__instance.m_player).GetSEMan().ModifySkillLevel(skillType, ref level11);
					__result = level11;
				}
				else
				{
					((Character)__instance.m_player).GetSEMan().ModifySkillLevel(skillType, ref level11);
					__result = level11;
				}
				return;
			}
			case 0:
			{
				float level6 = __instance.GetSkill(skillType).m_level;
				if (((Character)__instance.m_player).GetSEMan().HaveStatusEffect(StringExtensionMethods.GetStableHashCode("blacks7ar_basic_swords")))
				{
					level6 += (float)BasicSetup.BasicSwordsBonus.Value;
					((Character)__instance.m_player).GetSEMan().ModifySkillLevel(skillType, ref level6);
					__result = level6;
				}
				else if (((Character)__instance.m_player).GetSEMan().HaveStatusEffect(StringExtensionMethods.GetStableHashCode("blacks7ar_advance_swords")))
				{
					level6 += (float)AdvanceSetup.AdvanceSwordsBonus.Value;
					((Character)__instance.m_player).GetSEMan().ModifySkillLevel(skillType, ref level6);
					__result = level6;
				}
				else
				{
					((Character)__instance.m_player).GetSEMan().ModifySkillLevel(skillType, ref level6);
					__result = level6;
				}
				return;
			}
			case 12:
			{
				float level = __instance.GetSkill(skillType).m_level;
				if (((Character)__instance.m_player).GetSEMan().HaveStatusEffect(StringExtensionMethods.GetStableHashCode("blacks7ar_basic_woodcutting")))
				{
					level += (float)BasicSetup.BasicWoodcuttingBonus.Value;
					((Character)__instance.m_player).GetSEMan().ModifySkillLevel(skillType, ref level);
					__result = level;
				}
				else if (((Character)__instance.m_player).GetSEMan().HaveStatusEffect(StringExtensionMethods.GetStableHashCode("blacks7ar_advance_woodcutting")))
				{
					level += (float)AdvanceSetup.AdvanceWoodcuttingBonus.Value;
					((Character)__instance.m_player).GetSEMan().ModifySkillLevel(skillType, ref level);
					__result = level;
				}
				else
				{
					((Character)__instance.m_player).GetSEMan().ModifySkillLevel(skillType, ref level);
					__result = level;
				}
				return;
			}
			}
			switch (skillType - 100)
			{
			case 4:
			{
				float level17 = __instance.GetSkill(skillType).m_level;
				if (((Character)__instance.m_player).GetSEMan().HaveStatusEffect(StringExtensionMethods.GetStableHashCode("blacks7ar_basic_fishing")))
				{
					level17 += (float)BasicSetup.BasicFishingBonus.Value;
					((Character)__instance.m_player).GetSEMan().ModifySkillLevel(skillType, ref level17);
					__result = level17;
				}
				else if (((Character)__instance.m_player).GetSEMan().HaveStatusEffect(StringExtensionMethods.GetStableHashCode("blacks7ar_advance_fishing")))
				{
					level17 += (float)AdvanceSetup.AdvanceFishingBonus.Value;
					((Character)__instance.m_player).GetSEMan().ModifySkillLevel(skillType, ref level17);
					__result = level17;
				}
				else
				{
					((Character)__instance.m_player).GetSEMan().ModifySkillLevel(skillType, ref level17);
					__result = level17;
				}
				break;
			}
			case 0:
			{
				float level19 = __instance.GetSkill(skillType).m_level;
				if (((Character)__instance.m_player).GetSEMan().HaveStatusEffect(StringExtensionMethods.GetStableHashCode("blacks7ar_jump")))
				{
					level19 += (float)BasicSetup.BasicJumpBonus.Value;
					((Character)__instance.m_player).GetSEMan().ModifySkillLevel(skillType, ref level19);
					__result = level19;
				}
				else
				{
					((Character)__instance.m_player).GetSEMan().ModifySkillLevel(skillType, ref level19);
					__result = level19;
				}
				break;
			}
			case 10:
			{
				float level18 = __instance.GetSkill(skillType).m_level;
				if (((Character)__instance.m_player).GetSEMan().HaveStatusEffect(StringExtensionMethods.GetStableHashCode("blacks7ar_riding")))
				{
					level18 += (float)AdvanceSetup.AdvanceRidingBonus.Value;
					((Character)__instance.m_player).GetSEMan().ModifySkillLevel(skillType, ref level18);
					__result = level18;
				}
				else
				{
					((Character)__instance.m_player).GetSEMan().ModifySkillLevel(skillType, ref level18);
					__result = level18;
				}
				break;
			}
			case 2:
			{
				float level16 = __instance.GetSkill(skillType).m_level;
				if (((Character)__instance.m_player).GetSEMan().HaveStatusEffect(StringExtensionMethods.GetStableHashCode("blacks7ar_basic_run")))
				{
					level16 += (float)BasicSetup.BasicRunBonus.Value;
					((Character)__instance.m_player).GetSEMan().ModifySkillLevel(skillType, ref level16);
					__result = level16;
				}
				else if (((Character)__instance.m_player).GetSEMan().HaveStatusEffect(StringExtensionMethods.GetStableHashCode("blacks7ar_advance_run")))
				{
					level16 += (float)AdvanceSetup.AdvanceRunBonus.Value;
					((Character)__instance.m_player).GetSEMan().ModifySkillLevel(skillType, ref level16);
					__result = level16;
				}
				else
				{
					((Character)__instance.m_player).GetSEMan().ModifySkillLevel(skillType, ref level16);
					__result = level16;
				}
				break;
			}
			case 1:
			{
				float level20 = __instance.GetSkill(skillType).m_level;
				if (((Character)__instance.m_player).GetSEMan().HaveStatusEffect(StringExtensionMethods.GetStableHashCode("blacks7ar_basic_sneak")))
				{
					level20 += (float)BasicSetup.BasicSneakBonus.Value;
					((Character)__instance.m_player).GetSEMan().ModifySkillLevel(skillType, ref level20);
					__result = level20;
				}
				else if (((Character)__instance.m_player).GetSEMan().HaveStatusEffect(StringExtensionMethods.GetStableHashCode("blacks7ar_advance_sneak")))
				{
					level20 += (float)AdvanceSetup.AdvanceSneakBonus.Value;
					((Character)__instance.m_player).GetSEMan().ModifySkillLevel(skillType, ref level20);
					__result = level20;
				}
				else
				{
					((Character)__instance.m_player).GetSEMan().ModifySkillLevel(skillType, ref level20);
					__result = level20;
				}
				break;
			}
			case 3:
			{
				float level15 = __instance.GetSkill(skillType).m_level;
				if (((Character)__instance.m_player).GetSEMan().HaveStatusEffect(StringExtensionMethods.GetStableHashCode("blacks7ar_basic_swim")))
				{
					level15 += (float)BasicSetup.BasicSwimBonus.Value;
					((Character)__instance.m_player).GetSEMan().ModifySkillLevel(skillType, ref level15);
					__result = level15;
				}
				else if (((Character)__instance.m_player).GetSEMan().HaveStatusEffect(StringExtensionMethods.GetStableHashCode("blacks7ar_advance_swim")))
				{
					level15 += (float)AdvanceSetup.AdvanceSwimBonus.Value;
					((Character)__instance.m_player).GetSEMan().ModifySkillLevel(skillType, ref level15);
					__result = level15;
				}
				else
				{
					((Character)__instance.m_player).GetSEMan().ModifySkillLevel(skillType, ref level15);
					__result = level15;
				}
				break;
			}
			case 5:
			case 6:
			case 7:
			case 8:
			case 9:
				break;
			}
		}
	}
	[HarmonyPatch(typeof(ZNetScene), "Awake")]
	public class ZNetScenePatch
	{
		public static void Postfix(ZNetScene __instance)
		{
			if (!((Object)(object)__instance == (Object)null))
			{
				List<GameObject> prefabs = __instance.m_prefabs;
				if (prefabs != null && prefabs.Count > 0)
				{
					SetupCursedTrunk.Init(__instance);
				}
			}
		}
	}
}
namespace TrophyBuffs.Functions
{
	internal abstract class AdvanceBuff
	{
		public static void AdvanceAxes(Humanoid humanoid)
		{
			//IL_0035: Unknown result type (might be due to invalid IL or missing references)
			//IL_0061: Unknown result type (might be due to invalid IL or missing references)
			StatusEffect statusEffect = ObjectDB.instance.GetStatusEffect(StringExtensionMethods.GetStableHashCode("blacks7ar_advance_axes"));
			int num = (int)(AdvanceSetup.AdvanceBuffCooldown.Value * 60.0);
			statusEffect.m_ttl = num;
			statusEffect.m_startMessageType = (MessageType)2;
			statusEffect.m_startMessage = $"<size=28>{statusEffect.m_name} $btb_buffstarted, +{AdvanceSetup.AdvanceAxesBonus.Value} $btb_axeapplied</size>";
			statusEffect.m_stopMessageType = (MessageType)2;
			statusEffect.m_stopMessage = "<size=28>" + statusEffect.m_name + " $btb_bufffaded</size>";
			((Character)humanoid).GetSEMan().AddStatusEffect(statusEffect, false, 0, 0f);
		}

		public static void AdvanceBlocking(Humanoid humanoid)
		{
			//IL_0035: Unknown result type (might be due to invalid IL or missing references)
			//IL_0061: Unknown result type (might be due to invalid IL or missing references)
			StatusEffect statusEffect = ObjectDB.instance.GetStatusEffect(StringExtensionMethods.GetStableHashCode("blacks7ar_advance_blocking"));
			int num = (int)(AdvanceSetup.AdvanceBuffCooldown.Value * 60.0);
			statusEffect.m_ttl = num;
			statusEffect.m_startMessageType = (MessageType)2;
			statusEffect.m_startMessage = $"<size=28>{statusEffect.m_name} $btb_buffstarted, +{AdvanceSetup.AdvanceBlockingBonus.Value} $btb_blockingapplied</size>";
			statusEffect.m_stopMessageType = (MessageType)2;
			statusEffect.m_stopMessage = "<size=28>" + statusEffect.m_name + " $btb_bufffaded</size>";
			((Character)humanoid).GetSEMan().AddStatusEffect(statusEffect, false, 0, 0f);
		}

		public static void AdvanceBloodMagic(Humanoid humanoid)
		{
			//IL_0035: Unknown result type (might be due to invalid IL or missing references)
			//IL_0061: Unknown result type (might be due to invalid IL or missing references)
			StatusEffect statusEffect = ObjectDB.instance.GetStatusEffect(StringExtensionMethods.GetStableHashCode("blacks7ar_advance_bloodmagic"));
			int num = (int)(AdvanceSetup.AdvanceBuffCooldown.Value * 60.0);
			statusEffect.m_ttl = num;
			statusEffect.m_startMessageType = (MessageType)2;
			statusEffect.m_startMessage = $"<size=28>{statusEffect.m_name} $btb_buffstarted, +{AdvanceSetup.AdvanceBloodMagicBonus.Value} $btb_bloodmagicapplied</size>";
			statusEffect.m_stopMessageType = (MessageType)2;
			statusEffect.m_stopMessage = "<size=28>" + statusEffect.m_name + " $btb_bufffaded</size>";
			((Character)humanoid).GetSEMan().AddStatusEffect(statusEffect, false, 0, 0f);
		}

		public static void AdvanceBows(Humanoid humanoid)
		{
			//IL_0035: Unknown result type (might be due to invalid IL or missing references)
			//IL_0061: Unknown result type (might be due to invalid IL or missing references)
			StatusEffect statusEffect = ObjectDB.instance.GetStatusEffect(StringExtensionMethods.GetStableHashCode("blacks7ar_advance_bows"));
			int num = (int)(AdvanceSetup.AdvanceBuffCooldown.Value * 60.0);
			statusEffect.m_ttl = num;
			statusEffect.m_startMessageType = (MessageType)2;
			statusEffect.m_startMessage = $"<size=28>{statusEffect.m_name} $btb_buffstarted, +{AdvanceSetup.AdvanceBowsBonus.Value} $btb_bowsapplied</size>";
			statusEffect.m_stopMessageType = (MessageType)2;
			statusEffect.m_stopMessage = "<size=28>" + statusEffect.m_name + " $btb_bufffaded</size>";
			((Character)humanoid).GetSEMan().AddStatusEffect(statusEffect, false, 0, 0f);
		}

		public static void AdvanceClubs(Humanoid humanoid)
		{
			//IL_0035: Unknown result type (might be due to invalid IL or missing references)
			//IL_0061: Unknown result type (might be due to invalid IL or missing references)
			StatusEffect statusEffect = ObjectDB.instance.GetStatusEffect(StringExtensionMethods.GetStableHashCode("blacks7ar_advance_clubs"));
			int num = (int)(AdvanceSetup.AdvanceBuffCooldown.Value * 60.0);
			statusEffect.m_ttl = num;
			statusEffect.m_startMessageType = (MessageType)2;
			statusEffect.m_startMessage = $"<size=28>{statusEffect.m_name} $btb_buffstarted, +{AdvanceSetup.AdvanceClubsBonus.Value} $btb_clubsapplied</size>";
			statusEffect.m_stopMessageType = (MessageType)2;
			statusEffect.m_stopMessage = "<size=28>" + statusEffect.m_name + " $btb_bufffaded</size>";
			((Character)humanoid).GetSEMan().AddStatusEffect(statusEffect, false, 0, 0f);
		}

		public static void AdvanceCrossbows(Humanoid humanoid)
		{
			//IL_0035: Unknown result type (might be due to invalid IL or missing references)
			//IL_0061: Unknown result type (might be due to invalid IL or missing references)
			StatusEffect statusEffect = ObjectDB.instance.GetStatusEffect(StringExtensionMethods.GetStableHashCode("blacks7ar_advance_crossbows"));
			int num = (int)(AdvanceSetup.AdvanceBuffCooldown.Value * 60.0);
			statusEffect.m_ttl = num;
			statusEffect.m_startMessageType = (MessageType)2;
			statusEffect.m_startMessage = $"<size=28>{statusEffect.m_name} $btb_buffstarted, +{AdvanceSetup.AdvanceCrossbowsBonus.Value} $btb_crossbowapplied</size>";
			statusEffect.m_stopMessageType = (MessageType)2;
			statusEffect.m_stopMessage = "<size=28>" + statusEffect.m_name + " $btb_bufffaded</size>";
			((Character)humanoid).GetSEMan().AddStatusEffect(statusEffect, false, 0, 0f);
		}

		public static void AdvanceElementalMagic(Humanoid humanoid)
		{
			//IL_0035: Unknown result type (might be due to invalid IL or missing references)
			//IL_0061: Unknown result type (might be due to invalid IL or missing references)
			StatusEffect statusEffect = ObjectDB.instance.GetStatusEffect(StringExtensionMethods.GetStableHashCode("blacks7ar_advance_elementalmagic"));
			int num = (int)(AdvanceSetup.AdvanceBuffCooldown.Value * 60.0);
			statusEffect.m_ttl = num;
			statusEffect.m_startMessageType = (MessageType)2;
			statusEffect.m_startMessage = $"<size=28>{statusEffect.m_name} $btb_buffstarted, +{AdvanceSetup.AdvanceElementalMagicBonus.Value} $btb_elementalmagicapplied</size>";
			statusEffect.m_stopMessageType = (MessageType)2;
			statusEffect.m_stopMessage = "<size=28>" + statusEffect.m_name + " $btb_bufffaded</size>";
			((Character)humanoid).GetSEMan().AddStatusEffect(statusEffect, false, 0, 0f);
		}

		public static void AdvanceFist(Humanoid humanoid)
		{
			//IL_0035: Unknown result type (might be due to invalid IL or missing references)
			//IL_0061: Unknown result type (might be due to invalid IL or missing references)
			StatusEffect statusEffect = ObjectDB.instance.GetStatusEffect(StringExtensionMethods.GetStableHashCode("blacks7ar_advance_fist"));
			int num = (int)(AdvanceSetup.AdvanceBuffCooldown.Value * 60.0);
			statusEffect.m_ttl = num;
			statusEffect.m_startMessageType = (MessageType)2;
			statusEffect.m_startMessage = $"<size=28>{statusEffect.m_name} $btb_buffstarted, +{AdvanceSetup.AdvanceFistBonus.Value} $btb_fistapplied</size>";
			statusEffect.m_stopMessageType = (MessageType)2;
			statusEffect.m_stopMessage = "<size=28>" + statusEffect.m_name + " $btb_bufffaded</size>";
			((Character)humanoid).GetSEMan().AddStatusEffect(statusEffect, false, 0, 0f);
		}

		public static void AdvanceFishing(Humanoid humanoid)
		{
			//IL_0035: Unknown result type (might be due to invalid IL or missing references)
			//IL_0061: Unknown result type (might be due to invalid IL or missing references)
			StatusEffect statusEffect = ObjectDB.instance.GetStatusEffect(StringExtensionMethods.GetStableHashCode("blacks7ar_advance_fishing"));
			int num = (int)(AdvanceSetup.AdvanceBuffCooldown.Value * 60.0);
			statusEffect.m_ttl = num;
			statusEffect.m_startMessageType = (MessageType)2;
			statusEffect.m_startMessage = $"<size=28>{statusEffect.m_name} $btb_buffstarted, +{AdvanceSetup.AdvanceFishingBonus.Value} $btb_fishingapplied</size>";
			statusEffect.m_stopMessageType = (MessageType)2;
			statusEffect.m_stopMessage = "<size=28>" + statusEffect.m_name + " $btb_bufffaded</size>";
			((Character)humanoid).GetSEMan().AddStatusEffect(statusEffect, false, 0, 0f);
		}

		public static void Riding(Humanoid humanoid)
		{
			//IL_0035: Unknown result type (might be due to invalid IL or missing references)
			//IL_0061: Unknown result type (might be due to invalid IL or missing references)
			StatusEffect statusEffect = ObjectDB.instance.GetStatusEffect(StringExtensionMethods.GetStableHashCode("blacks7ar_riding"));
			int num = (int)(AdvanceSetup.AdvanceBuffCooldown.Value * 60.0);
			statusEffect.m_ttl = num;
			statusEffect.m_startMessageType = (MessageType)2;
			statusEffect.m_startMessage = $"<size=28>{statusEffect.m_name} $btb_buffstarted, +{AdvanceSetup.AdvanceRidingBonus.Value} $btb_ridingapplied</size>";
			statusEffect.m_stopMessageType = (MessageType)2;
			statusEffect.m_stopMessage = "<size=28>" + statusEffect.m_name + " $btb_bufffaded</size>";
			((Character)humanoid).GetSEMan().AddStatusEffect(statusEffect, false, 0, 0f);
		}

		public static void AdvanceKnives(Humanoid humanoid)
		{
			//IL_0035: Unknown result type (might be due to invalid IL or missing references)
			//IL_0061: Unknown result type (might be due to invalid IL or missing references)
			StatusEffect statusEffect = ObjectDB.instance.GetStatusEffect(StringExtensionMethods.GetStableHashCode("blacks7ar_advance_knives"));
			int num = (int)(AdvanceSetup.AdvanceBuffCooldown.Value * 60.0);
			statusEffect.m_ttl = num;
			statusEffect.m_startMessageType = (MessageType)2;
			statusEffect.m_startMessage = $"<size=28>{statusEffect.m_name} $btb_buffstarted, +{AdvanceSetup.AdvanceKnivesBonus.Value} $btb_knivesapplied</size>";
			statusEffect.m_stopMessageType = (MessageType)2;
			statusEffect.m_stopMessage = "<size=28>" + statusEffect.m_name + " $btb_bufffaded</size>";
			((Character)humanoid).GetSEMan().AddStatusEffect(statusEffect, false, 0, 0f);
		}

		public static void AdvancePickaxes(Humanoid humanoid)
		{
			//IL_0035: Unknown result type (might be due to invalid IL or missing references)
			//IL_0061: Unknown result type (might be due to invalid IL or missing references)
			StatusEffect statusEffect = ObjectDB.instance.GetStatusEffect(StringExtensionMethods.GetStableHashCode("blacks7ar_advance_pickaxes"));
			int num = (int)(AdvanceSetup.AdvanceBuffCooldown.Value * 60.0);
			statusEffect.m_ttl = num;
			statusEffect.m_startMessageType = (MessageType)2;
			statusEffect.m_startMessage = $"<size=28>{statusEffect.m_name} $btb_buffstarted, +{AdvanceSetup.AdvancePickaxesBonus.Value} $btb_pickaxeapplied</size>";
			statusEffect.m_stopMessageType = (MessageType)2;
			statusEffect.m_stopMessage = "<size=28>" + statusEffect.m_name + " $btb_bufffaded</size>";
			((Character)humanoid).GetSEMan().AddStatusEffect(statusEffect, false, 0, 0f);
		}

		public static void AdvanceRun(Humanoid humanoid)
		{
			//IL_0035: Unknown result type (might be due to invalid IL or missing references)
			//IL_0061: Unknown result type (might be due to invalid IL or missing references)
			StatusEffect statusEffect = ObjectDB.instance.GetStatusEffect(StringExtensionMethods.GetStableHashCode("blacks7ar_advance_run"));
			int num = (int)(AdvanceSetup.AdvanceBuffCooldown.Value * 60.0);
			statusEffect.m_ttl = num;
			statusEffect.m_startMessageType = (MessageType)2;
			statusEffect.m_startMessage = $"<size=28>{statusEffect.m_name} $btb_buffstarted, +{AdvanceSetup.AdvanceRunBonus.Value} $btb_runapplied</size>";
			statusEffect.m_stopMessageType = (MessageType)2;
			statusEffect.m_stopMessage = "<size=28>" + statusEffect.m_name + " $btb_bufffaded</size>";
			((Character)humanoid).GetSEMan().AddStatusEffect(statusEffect, false, 0, 0f);
		}

		public static void AdvancePolearms(Humanoid humanoid)
		{
			//IL_0035: Unknown result type (might be due to invalid IL or missing references)
			//IL_0061: Unknown result type (might be due to invalid IL or missing references)
			StatusEffect statusEffect = ObjectDB.instance.GetStatusEffect(StringExtensionMethods.GetStableHashCode("blacks7ar_advance_polearms"));
			int num = (int)(AdvanceSetup.AdvanceBuffCooldown.Value * 60.0);
			statusEffect.m_ttl = num;
			statusEffect.m_startMessageType = (MessageType)2;
			statusEffect.m_startMessage = $"<size=28>{statusEffect.m_name} $btb_buffstarted, +{AdvanceSetup.AdvancePolearmsBonus.Value} $btb_polearmapplied</size>";
			statusEffect.m_stopMessageType = (MessageType)2;
			statusEffect.m_stopMessage = "<size=28>" + statusEffect.m_name + " $btb_bufffaded</size>";
			((Character)humanoid).GetSEMan().AddStatusEffect(statusEffect, false, 0, 0f);
		}

		public static void AdvanceSneak(Humanoid humanoid)
		{
			//IL_0035: Unknown result type (might be due to invalid IL or missing references)
			//IL_0061: Unknown result type (might be due to invalid IL or missing references)
			StatusEffect statusEffect = ObjectDB.instance.GetStatusEffect(StringExtensionMethods.GetStableHashCode("blacks7ar_advance_sneak"));
			int num = (int)(AdvanceSetup.AdvanceBuffCooldown.Value * 60.0);
			statusEffect.m_ttl = num;
			statusEffect.m_startMessageType = (MessageType)2;
			statusEffect.m_startMessage = $"<size=28>{statusEffect.m_name} $btb_buffstarted, +{AdvanceSetup.AdvanceSneakBonus.Value} $btb_sneakapplied</size>";
			statusEffect.m_stopMessageType = (MessageType)2;
			statusEffect.m_stopMessage = "<size=28>" + statusEffect.m_name + " $btb_bufffaded</size>";
			((Character)humanoid).GetSEMan().AddStatusEffect(statusEffect, false, 0, 0f);
		}

		public static void AdvanceSpears(Humanoid humanoid)
		{
			//IL_0035: Unknown result type (might be due to invalid IL or missing references)
			//IL_0061: Unknown result type (might be due to invalid IL or missing references)
			StatusEffect statusEffect = ObjectDB.instance.GetStatusEffect(StringExtensionMethods.GetStableHashCode("blacks7ar_advance_spears"));
			int num = (int)(AdvanceSetup.AdvanceBuffCooldown.Value * 60.0);
			statusEffect.m_ttl = num;
			statusEffect.m_startMessageType = (MessageType)2;
			statusEffect.m_startMessage = $"<size=28>{statusEffect.m_name} $btb_buffstarted, +{AdvanceSetup.AdvanceSpearsBonus.Value} $btb_spearapplied</size>";
			statusEffect.m_stopMessageType = (MessageType)2;
			statusEffect.m_stopMessage = "<size=28>" + statusEffect.m_name + " $btb_bufffaded</size>";
			((Character)humanoid).GetSEMan().AddStatusEffect(statusEffect, false, 0, 0f);
		}

		public static void AdvanceSwim(Humanoid humanoid)
		{
			//IL_0035: Unknown result type (might be due to invalid IL or missing references)
			//IL_0061: Unknown result type (might be due to invalid IL or missing references)
			StatusEffect statusEffect = ObjectDB.instance.GetStatusEffect(StringExtensionMethods.GetStableHashCode("blacks7ar_advance_swim"));
			int num = (int)(AdvanceSetup.AdvanceBuffCooldown.Value * 60.0);
			statusEffect.m_ttl = num;
			statusEffect.m_startMessageType = (MessageType)2;
			statusEffect.m_startMessage = $"<size=28>{statusEffect.m_name} $btb_buffstarted, +{AdvanceSetup.AdvanceSwimBonus.Value} $btb_swimapplied</size>";
			statusEffect.m_stopMessageType = (MessageType)2;
			statusEffect.m_stopMessage = "<size=28>" + statusEffect.m_name + " $btb_bufffaded</size>";
			((Character)humanoid).GetSEMan().AddStatusEffect(statusEffect, false, 0, 0f);
		}

		public static void AdvanceSwords(Humanoid humanoid)
		{
			//IL_0035: Unknown result type (might be due to invalid IL or missing references)
			//IL_0061: Unknown result type (might be due to invalid IL or missing references)
			StatusEffect statusEffect = ObjectDB.instance.GetStatusEffect(StringExtensionMethods.GetStableHashCode("blacks7ar_advance_swords"));
			int num = (int)(AdvanceSetup.AdvanceBuffCooldown.Value * 60.0);
			statusEffect.m_ttl = num;
			statusEffect.m_startMessageType = (MessageType)2;
			statusEffect.m_startMessage = $"<size=28>{statusEffect.m_name} $btb_buffstarted, +{AdvanceSetup.AdvanceSwordsBonus.Value} $btb_swordapplied</size>";
			statusEffect.m_stopMessageType = (MessageType)2;
			statusEffect.m_stopMessage = "<size=28>" + statusEffect.m_name + " $btb_bufffaded</size>";
			((Character)humanoid).GetSEMan().AddStatusEffect(statusEffect, false, 0, 0f);
		}

		public static void AdvanceWoodcutting(Humanoid humanoid)
		{
			//IL_008c: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b8: Unknown result type (might be due to invalid IL or missing references)
			//IL_003c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0068: Unknown result type (might be due to invalid IL or missing references)
			StatusEffect statusEffect = ObjectDB.instance.GetStatusEffect(StringExtensionMethods.GetStableHashCode("blacks7ar_advance_woodcutting"));
			int num = (int)(AdvanceSetup.AdvanceBuffCooldown.Value * 60.0);
			statusEffect.m_ttl = num;
			if (Plugin._hasLumberjackingMod)
			{
				statusEffect.m_startMessageType = (MessageType)2;
				statusEffect.m_startMessage = $"<size=28>{statusEffect.m_name} $btb_buffstarted, +{AdvanceSetup.AdvanceWoodcuttingBonus.Value} $btb_lumberjackingapplied</size>";
				statusEffect.m_stopMessageType = (MessageType)2;
				statusEffect.m_stopMessage = "<size=28>" + statusEffect.m_name + " $btb_bufffaded</size>";
			}
			else
			{
				statusEffect.m_startMessageType = (MessageType)2;
				statusEffect.m_startMessage = $"<size=28>{statusEffect.m_name} $btb_buffstarted, +{AdvanceSetup.AdvanceWoodcuttingBonus.Value} $btb_woodcuttingapplied</size>";
				statusEffect.m_stopMessageType = (MessageType)2;
				statusEffect.m_stopMessage = "<size=28>" + statusEffect.m_name + " $btb_bufffaded</size>";
			}
			((Character)humanoid).GetSEMan().AddStatusEffect(statusEffect, false, 0, 0f);
		}
	}
	internal abstract class BasicBuff
	{
		public static void BasicAxes(Humanoid humanoid)
		{
			//IL_0035: Unknown result type (might be due to invalid IL or missing references)
			//IL_0061: Unknown result type (might be due to invalid IL or missing references)
			StatusEffect statusEffect = ObjectDB.instance.GetStatusEffect(StringExtensionMethods.GetStableHashCode("blacks7ar_basic_axes"));
			int num = (int)(BasicSetup.BasicBuffCooldown.Value * 60.0);
			statusEffect.m_ttl = num;
			statusEffect.m_startMessageType = (MessageType)2;
			statusEffect.m_startMessage = $"<size=28>{statusEffect.m_name} $btb_buffstarted, +{BasicSetup.BasicAxesBonus.Value} $btb_axeapplied</size>";
			statusEffect.m_stopMessageType = (MessageType)2;
			statusEffect.m_stopMessage = "<size=28>" + statusEffect.m_name + " $btb_bufffaded</size>";
			((Character)humanoid).GetSEMan().AddStatusEffect(statusEffect, false, 0, 0f);
		}

		public static void BasicBlocking(Humanoid humanoid)
		{
			//IL_0035: Unknown result type (might be due to invalid IL or missing references)
			//IL_0061: Unknown result type (might be due to invalid IL or missing references)
			StatusEffect statusEffect = ObjectDB.instance.GetStatusEffect(StringExtensionMethods.GetStableHashCode("blacks7ar_basic_blocking"));
			int num = (int)(BasicSetup.BasicBuffCooldown.Value * 60.0);
			statusEffect.m_ttl = num;
			statusEffect.m_startMessageType = (MessageType)2;
			statusEffect.m_startMessage = $"<size=28>{statusEffect.m_name} $btb_buffstarted, +{BasicSetup.BasicBlockingBonus.Value} $btb_blockingapplied</size>";
			statusEffect.m_stopMessageType = (MessageType)2;
			statusEffect.m_stopMessage = "<size=28>" + statusEffect.m_name + " $btb_bufffaded</size>";
			((Character)humanoid).GetSEMan().AddStatusEffect(statusEffect, false, 0, 0f);
		}

		public static void BasicBloodMagic(Humanoid humanoid)
		{
			//IL_0035: Unknown result type (might be due to invalid IL or missing references)
			//IL_0061: Unknown result type (might be due to invalid IL or missing references)
			StatusEffect statusEffect = ObjectDB.instance.GetStatusEffect(StringExtensionMethods.GetStableHashCode("blacks7ar_basic_bloodmagic"));
			int num = (int)(BasicSetup.BasicBuffCooldown.Value * 60.0);
			statusEffect.m_ttl = num;
			statusEffect.m_startMessageType = (MessageType)2;
			statusEffect.m_startMessage = $"<size=28>{statusEffect.m_name} $btb_buffstarted, +{BasicSetup.BasicBloodMagicBonus.Value} $btb_bloodmagicapplied</size>";
			statusEffect.m_stopMessageType = (MessageType)2;
			statusEffect.m_stopMessage = "<size=28>" + statusEffect.m_name + " $btb_bufffaded</size>";
			((Character)humanoid).GetSEMan().AddStatusEffect(statusEffect, false, 0, 0f);
		}

		public static void BasicBows(Humanoid humanoid)
		{
			//IL_0035: Unknown result type (might be due to invalid IL or missing references)
			//IL_0061: Unknown result type (might be due to invalid IL or missing references)
			StatusEffect statusEffect = ObjectDB.instance.GetStatusEffect(StringExtensionMethods.GetStableHashCode("blacks7ar_basic_bows"));
			int num = (int)(BasicSetup.BasicBuffCooldown.Value * 60.0);
			statusEffect.m_ttl = num;
			statusEffect.m_startMessageType = (MessageType)2;
			statusEffect.m_startMessage = $"<size=28>{statusEffect.m_name} $btb_buffstarted, +{BasicSetup.BasicBowsBonus.Value} $btb_bowsapplied</size>";
			statusEffect.m_stopMessageType = (MessageType)2;
			statusEffect.m_stopMessage = "<size=28>" + statusEffect.m_name + " $btb_bufffaded</size>";
			((Character)humanoid).GetSEMan().AddStatusEffect(statusEffect, false, 0, 0f);
		}

		public static void BasicClubs(Humanoid humanoid)
		{
			//IL_0035: Unknown result type (might be due to invalid IL or missing references)
			//IL_0061: Unknown result type (might be due to invalid IL or missing references)
			StatusEffect statusEffect = ObjectDB.instance.GetStatusEffect(StringExtensionMethods.GetStableHashCode("blacks7ar_basic_clubs"));
			int num = (int)(BasicSetup.BasicBuffCooldown.Value * 60.0);
			statusEffect.m_ttl = num;
			statusEffect.m_startMessageType = (MessageType)2;
			statusEffect.m_startMessage = $"<size=28>{statusEffect.m_name} $btb_buffstarted, +{BasicSetup.BasicClubsBonus.Value} $btb_clubsapplied</size>";
			statusEffect.m_stopMessageType = (MessageType)2;
			statusEffect.m_stopMessage = "<size=28>" + statusEffect.m_name + " $btb_bufffaded</size>";
			((Character)humanoid).GetSEMan().AddStatusEffect(statusEffect, false, 0, 0f);
		}

		public static void BasicCrossbows(Humanoid humanoid)
		{
			//IL_0035: Unknown result type (might be due to invalid IL or missing references)
			//IL_0061: Unknown result type (might be due to invalid IL or missing references)
			StatusEffect statusEffect = ObjectDB.instance.GetStatusEffect(StringExtensionMethods.GetStableHashCode("blacks7ar_basic_crossbows"));
			int num = (int)(BasicSetup.BasicBuffCooldown.Value * 60.0);
			statusEffect.m_ttl = num;
			statusEffect.m_startMessageType = (MessageType)2;
			statusEffect.m_startMessage = $"<size=28>{statusEffect.m_name} $btb_buffstarted, +{BasicSetup.BasicCrossbowsBonus.Value} $btb_crossbowapplied</size>";
			statusEffect.m_stopMessageType = (MessageType)2;
			statusEffect.m_stopMessage = "<size=28>" + statusEffect.m_name + " $btb_bufffaded</size>";
			((Character)humanoid).GetSEMan().AddStatusEffect(statusEffect, false, 0, 0f);
		}

		public static void BasicElementalMagic(Humanoid humanoid)
		{
			//IL_0035: Unknown result type (might be due to invalid IL or missing references)
			//IL_0061: Unknown result type (might be due to invalid IL or missing references)
			StatusEffect statusEffect = ObjectDB.instance.GetStatusEffect(StringExtensionMethods.GetStableHashCode("blacks7ar_basic_elementalmagic"));
			int num = (int)(BasicSetup.BasicBuffCooldown.Value * 60.0);
			statusEffect.m_ttl = num;
			statusEffect.m_startMessageType = (MessageType)2;
			statusEffect.m_startMessage = $"<size=28>{statusEffect.m_name} $btb_buffstarted, +{BasicSetup.BasicElementalMagicBonus.Value} $btb_elementalmagicapplied</size>";
			statusEffect.m_stopMessageType = (MessageType)2;
			statusEffect.m_stopMessage = "<size=28>" + statusEffect.m_name + " $btb_bufffaded</size>";
			((Character)humanoid).GetSEMan().AddStatusEffect(statusEffect, false, 0, 0f);
		}

		public static void BasicFist(Humanoid humanoid)
		{
			//IL_0035: Unknown result type (might be due to invalid IL or missing references)
			//IL_0061: Unknown result type (might be due to invalid IL or missing references)
			StatusEffect statusEffect = ObjectDB.instance.GetStatusEffect(StringExtensionMethods.GetStableHashCode("blacks7ar_basic_fist"));
			int num = (int)(BasicSetup.BasicBuffCooldown.Value * 60.0);
			statusEffect.m_ttl = num;
			statusEffect.m_startMessageType = (MessageType)2;
			statusEffect.m_startMessage = $"<size=28>{statusEffect.m_name} $btb_buffstarted, +{BasicSetup.BasicFistBonus.Value} $btb_fistapplied</size>";
			statusEffect.m_stopMessageType = (MessageType)2;
			statusEffect.m_stopMessage = "<size=28>" + statusEffect.m_name + " $btb_bufffaded</size>";
			((Character)humanoid).GetSEMan().AddStatusEffect(statusEffect, false, 0, 0f);
		}

		public static void BasicFishing(Humanoid humanoid)
		{
			//IL_0035: Unknown result type (might be due to invalid IL or missing references)
			//IL_0061: Unknown result type (might be due to invalid IL or missing references)
			StatusEffect statusEffect = ObjectDB.instance.GetStatusEffect(StringExtensionMethods.GetStableHashCode("blacks7ar_basic_fishing"));
			int num = (int)(BasicSetup.BasicBuffCooldown.Value * 60.0);
			statusEffect.m_ttl = num;
			statusEffect.m_startMessageType = (MessageType)2;
			statusEffect.m_startMessage = $"<size=28>{statusEffect.m_name} $btb_buffstarted, +{BasicSetup.BasicFishingBonus.Value} $btb_fishingapplied</size>";
			statusEffect.m_stopMessageType = (MessageType)2;
			statusEffect.m_stopMessage = "<size=28>" + statusEffect.m_name + " $btb_bufffaded</size>";
			((Character)humanoid).GetSEMan().AddStatusEffect(statusEffect, false, 0, 0f);
		}

		public static void Jump(Humanoid humanoid)
		{
			//IL_0035: Unknown result type (might be due to invalid IL or missing references)
			//IL_0061: Unknown result type (might be due to invalid IL or missing references)
			StatusEffect statusEffect = ObjectDB.instance.GetStatusEffect(StringExtensionMethods.GetStableHashCode("blacks7ar_jump"));
			int num = (int)(BasicSetup.BasicBuffCooldown.Value * 60.0);
			statusEffect.m_ttl = num;
			statusEffect.m_startMessageType = (MessageType)2;
			statusEffect.m_startMessage = $"<size=28>{statusEffect.m_name} $btb_buffstarted, +{BasicSetup.BasicJumpBonus.Value} $btb_jumpapplied</size>";
			statusEffect.m_stopMessageType = (MessageType)2;
			statusEffect.m_stopMessage = "<size=28>" + statusEffect.m_name + " $btb_bufffaded</size>";
			((Character)humanoid).GetSEMan().AddStatusEffect(statusEffect, false, 0, 0f);
		}

		public static void BasicKnives(Humanoid humanoid)
		{
			//IL_0035: Unknown result type (might be due to invalid IL or missing references)
			//IL_0061: Unknown result type (might be due to invalid IL or missing references)
			StatusEffect statusEffect = ObjectDB.instance.GetStatusEffect(StringExtensionMethods.GetStableHashCode("blacks7ar_basic_knives"));
			int num = (int)(BasicSetup.BasicBuffCooldown.Value * 60.0);
			statusEffect.m_ttl = num;
			statusEffect.m_startMessageType = (MessageType)2;
			statusEffect.m_startMessage = $"<size=28>{statusEffect.m_name} $btb_buffstarted, +{BasicSetup.BasicKnivesBonus.Value} $btb_knivesapplied</size>";
			statusEffect.m_stopMessageType = (MessageType)2;
			statusEffect.m_stopMessage = "<size=28>" + statusEffect.m_name + " $btb_bufffaded</size>";
			((Character)humanoid).GetSEMan().AddStatusEffect(statusEffect, false, 0, 0f);
		}

		public static void BasicPickaxes(Humanoid humanoid)
		{
			//IL_0035: Unknown result type (might be due to invalid IL or missing references)
			//IL_0061: Unknown result type (might be due to invalid IL or missing references)
			StatusEffect statusEffect = ObjectDB.instance.GetStatusEffect(StringExtensionMethods.GetStableHashCode("blacks7ar_basic_pickaxes"));
			int num = (int)(BasicSetup.BasicBuffCooldown.Value * 60.0);
			statusEffect.m_ttl = num;
			statusEffect.m_startMessageType = (MessageType)2;
			statusEffect.m_startMessage = $"<size=28>{statusEffect.m_name} $btb_buffstarted, +{BasicSetup.BasicPickaxesBonus.Value} $btb_pickaxeapplied</size>";
			statusEffect.m_stopMessageType = (MessageType)2;
			statusEffect.m_stopMessage = "<size=28>" + statusEffect.m_name + " $btb_bufffaded</size>";
			((Character)humanoid).GetSEMan().AddStatusEffect(statusEffect, false, 0, 0f);
		}

		public static void BasicRun(Humanoid humanoid)
		{
			//IL_0035: Unknown result type (might be due to invalid IL or missing references)
			//IL_0061: Unknown result type (might be due to invalid IL or missing references)
			StatusEffect statusEffect = ObjectDB.instance.GetStatusEffect(StringExtensionMethods.GetStableHashCode("blacks7ar_basic_run"));
			int num = (int)(BasicSetup.BasicBuffCooldown.Value * 60.0);
			statusEffect.m_ttl = num;
			statusEffect.m_startMessageType = (MessageType)2;
			statusEffect.m_startMessage = $"<size=28>{statusEffect.m_name} $btb_buffstarted, +{BasicSetup.BasicRunBonus.Value} $btb_runapplied</size>";
			statusEffect.m_stopMessageType = (MessageType)2;
			statusEffect.m_stopMessage = "<size=28>" + statusEffect.m_name + " $btb_bufffaded</size>";
			((Character)humanoid).GetSEMan().AddStatusEffect(statusEffect, false, 0, 0f);
		}

		public static void BasicPolearms(Humanoid humanoid)
		{
			//IL_0035: Unknown result type (might be due to invalid IL or missing references)
			//IL_0061: Unknown result type (might be due to invalid IL or missing references)
			StatusEffect statusEffect = ObjectDB.instance.GetStatusEffect(StringExtensionMethods.GetStableHashCode("blacks7ar_basic_polearms"));
			int num = (int)(BasicSetup.BasicBuffCooldown.Value * 60.0);
			statusEffect.m_ttl = num;
			statusEffect.m_startMessageType = (MessageType)2;
			statusEffect.m_startMessage = $"<size=28>{statusEffect.m_name} $btb_buffstarted, +{BasicSetup.BasicPolearmsBonus.Value} $btb_polearmapplied</size>";
			statusEffect.m_stopMessageType = (MessageType)2;
			statusEffect.m_stopMessage = "<size=28>" + statusEffect.m_name + " $btb_bufffaded</size>";
			((Character)humanoid).GetSEMan().AddStatusEffect(statusEffect, false, 0, 0f);
		}

		public static void BasicSneak(Humanoid humanoid)
		{
			//IL_0035: Unknown result type (might be due to invalid IL or missing references)
			//IL_0061: Unknown result type (might be due to invalid IL or missing references)
			StatusEffect statusEffect = ObjectDB.instance.GetStatusEffect(StringExtensionMethods.GetStableHashCode("blacks7ar_basic_sneak"));
			int num = (int)(BasicSetup.BasicBuffCooldown.Value * 60.0);
			statusEffect.m_ttl = num;
			statusEffect.m_startMessageType = (MessageType)2;
			statusEffect.m_startMessage = $"<size=28>{statusEffect.m_name} $btb_buffstarted, +{BasicSetup.BasicSneakBonus.Value} $btb_sneakapplied</size>";
			statusEffect.m_stopMessageType = (MessageType)2;
			statusEffect.m_stopMessage = "<size=28>" + statusEffect.m_name + " $btb_bufffaded</size>";
			((Character)humanoid).GetSEMan().AddStatusEffect(statusEffect, false, 0, 0f);
		}

		public static void BasicSpears(Humanoid humanoid)
		{
			//IL_0035: Unknown result type (might be due to invalid IL or missing references)
			//IL_0061: Unknown result type (might be due to invalid IL or missing references)
			StatusEffect statusEffect = ObjectDB.instance.GetStatusEffect(StringExtensionMethods.GetStableHashCode("blacks7ar_basic_spears"));
			int num = (int)(BasicSetup.BasicBuffCooldown.Value * 60.0);
			statusEffect.m_ttl = num;
			statusEffect.m_startMessageType = (MessageType)2;
			statusEffect.m_startMessage = $"<size=28>{statusEffect.m_name} $btb_buffstarted, +{BasicSetup.BasicSpearsBonus.Value} $btb_spearapplied</size>";
			statusEffect.m_stopMessageType = (MessageType)2;
			statusEffect.m_stopMessage = "<size=28>" + statusEffect.m_name + " $btb_bufffaded</size>";
			((Character)humanoid).GetSEMan().AddStatusEffect(statusEffect, false, 0, 0f);
		}

		public static void BasicSwim(Humanoid humanoid)
		{
			//IL_0035: Unknown result type (might be due to invalid IL or missing references)
			//IL_0061: Unknown result type (might be due to invalid IL or missing references)
			StatusEffect statusEffect = ObjectDB.instance.GetStatusEffect(StringExtensionMethods.GetStableHashCode("blacks7ar_basic_swim"));
			int num = (int)(BasicSetup.BasicBuffCooldown.Value * 60.0);
			statusEffect.m_ttl = num;
			statusEffect.m_startMessageType = (MessageType)2;
			statusEffect.m_startMessage = $"<size=28>{statusEffect.m_name} $btb_buffstarted, +{BasicSetup.BasicSwimBonus.Value} $btb_swimapplied</size>";
			statusEffect.m_stopMessageType = (MessageType)2;
			statusEffect.m_stopMessage = "<size=28>" + statusEffect.m_name + " $btb_bufffaded</size>";
			((Character)humanoid).GetSEMan().AddStatusEffect(statusEffect, false, 0, 0f);
		}

		public static void BasicSwords(Humanoid humanoid)
		{
			//IL_0035: Unknown result type (might be due to invalid IL or missing references)
			//IL_0061: Unknown result type (might be due to invalid IL or missing references)
			StatusEffect statusEffect = ObjectDB.instance.GetStatusEffect(StringExtensionMethods.GetStableHashCode("blacks7ar_basic_swords"));
			int num = (int)(BasicSetup.BasicBuffCooldown.Value * 60.0);
			statusEffect.m_ttl = num;
			statusEffect.m_startMessageType = (MessageType)2;
			statusEffect.m_startMessage = $"<size=28>{statusEffect.m_name} $btb_buffstarted, +{BasicSetup.BasicSwordsBonus.Value} $btb_swordapplied</size>";
			statusEffect.m_stopMessageType = (MessageType)2;
			statusEffect.m_stopMessage = "<size=28>" + statusEffect.m_name + " $btb_bufffaded</size>";
			((Character)humanoid).GetSEMan().AddStatusEffect(statusEffect, false, 0, 0f);
		}

		public static void BasicWoodcutting(Humanoid humanoid)
		{
			//IL_008c: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b8: Unknown result type (might be due to invalid IL or missing references)
			//IL_003c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0068: Unknown result type (might be due to invalid IL or missing references)
			StatusEffect statusEffect = ObjectDB.instance.GetStatusEffect(StringExtensionMethods.GetStableHashCode("blacks7ar_basic_woodcutting"));
			int num = (int)(BasicSetup.BasicBuffCooldown.Value * 60.0);
			statusEffect.m_ttl = num;
			if (Plugin._hasLumberjackingMod)
			{
				statusEffect.m_startMessageType = (MessageType)2;
				statusEffect.m_startMessage = $"<size=28>{statusEffect.m_name} $btb_buffstarted, +{BasicSetup.BasicWoodcuttingBonus.Value} $btb_lumberjackingapplied</size>";
				statusEffect.m_stopMessageType = (MessageType)2;
				statusEffect.m_stopMessage = "<size=28>" + statusEffect.m_name + " $btb_bufffaded</size>";
			}
			else
			{
				statusEffect.m_startMessageType = (MessageType)2;
				statusEffect.m_startMessage = $"<size=28>{statusEffect.m_name} $btb_buffstarted, +{BasicSetup.BasicWoodcuttingBonus.Value} $btb_woodcuttingapplied</size>";
				statusEffect.m_stopMessageType = (MessageType)2;
				statusEffect.m_stopMessage = "<size=28>" + statusEffect.m_name + " $btb_bufffaded</size>";
			}
			((Character)humanoid).GetSEMan().AddStatusEffect(statusEffect, false, 0, 0f);
		}
	}
	internal abstract class CreateBuffs
	{
		public static void Init(ObjectDB objectDB)
		{
			objectDB.m_StatusEffects.Add((StatusEffect)(object)Helper.CreateStatusEffects("blacks7ar_basic_axes", "$btb_basicaxe", Enumerable.LastOrDefault((IEnumerable<Sprite>)Resources.FindObjectsOfTypeAll<Sprite>(), (Func<Sprite, bool>)((Sprite x) => ((Object)x).name == "axe_stone"))));
			objectDB.m_StatusEffects.Add((StatusEffect)(object)Helper.CreateStatusEffects("blacks7ar_advance_axes", "$btb_advancedaxe", Enumerable.LastOrDefault((IEnumerable<Sprite>)Resources.FindObjectsOfTypeAll<Sprite>(), (Func<Sprite, bool>)((Sprite x) => ((Object)x).name == "axe_iron"))));
			objectDB.m_StatusEffects.Add((StatusEffect)(object)Helper.CreateStatusEffects("blacks7ar_basic_blocking", "$btb_basicblocking", Enumerable.LastOrDefault((IEnumerable<Sprite>)Resources.FindObjectsOfTypeAll<Sprite>(), (Func<Sprite, bool>)((Sprite x) => ((Object)x).name == "shield_wood0"))));
			objectDB.m_StatusEffects.Add((StatusEffect)(object)Helper.CreateStatusEffects("blacks7ar_advance_blocking", "$btb_advancedblocking", Enumerable.LastOrDefault((IEnumerable<Sprite>)Resources.FindObjectsOfTypeAll<Sprite>(), (Func<Sprite, bool>)((Sprite x) => ((Object)x).name == "shield_ironbuckler"))));
			objectDB.m_StatusEffects.Add((StatusEffect)(object)Helper.CreateStatusEffects("blacks7ar_basic_bloodmagic", "$btb_basicbloodmagic", Enumerable.LastOrDefault((IEnumerable<Sprite>)Resources.FindObjectsOfTypeAll<Sprite>(), (Func<Sprite, bool>)((Sprite x) => ((Object)x).name == "blood_magic"))));
			objectDB.m_StatusEffects.Add((StatusEffect)(object)Helper.CreateStatusEffects("blacks7ar_advance_bloodmagic", "$btb_advancedbloodmagic", Enumerable.LastOrDefault((IEnumerable<Sprite>)Resources.FindObjectsOfTypeAll<Sprite>(), (Func<Sprite, bool>)((Sprite x) => ((Object)x).name == "blood_magic"))));
			objectDB.m_StatusEffects.Add((StatusEffect)(object)Helper.CreateStatusEffects("blacks7ar_basic_bows", "$btb_basicbow", Enumerable.LastOrDefault((IEnumerable<Sprite>)Resources.FindObjectsOfTypeAll<Sprite>(), (Func<Sprite, bool>)((Sprite x) => ((Object)x).name == "bow"))));
			objectDB.m_StatusEffects.Add((StatusEffect)(object)Helper.CreateStatusEffects("blacks7ar_advance_bows", "$btb_advancedbow", Enumerable.LastOrDefault((IEnumerable<Sprite>)Resources.FindObjectsOfTypeAll<Sprite>(), (Func<Sprite, bool>)((Sprite x) => ((Object)x).name == "bow_huntsman"))));
			objectDB.m_StatusEffects.Add((StatusEffect)(object)Helper.CreateStatusEffects("blacks7ar_basic_clubs", "$btb_basicclub", Enumerable.LastOrDefault((IEnumerable<Sprite>)Resources.FindObjectsOfTypeAll<Sprite>(), (Func<Sprite, bool>)((Sprite x) => ((Object)x).name == "club"))));
			objectDB.m_StatusEffects.Add((StatusEffect)(object)Helper.CreateStatusEffects("blacks7ar_advance_clubs", "$btb_advancedclub", Enumerable.LastOrDefault((IEnumerable<Sprite>)Resources.FindObjectsOfTypeAll<Sprite>(), (Func<Sprite, bool>)((Sprite x) => ((Object)x).name == "MaceIron"))));
			objectDB.m_StatusEffects.Add((StatusEffect)(object)Helper.CreateStatusEffects("blacks7ar_basic_crossbows", "$btb_basiccrossbow", Enumerable.LastOrDefault((IEnumerable<Sprite>)Resources.FindObjectsOfTypeAll<Sprite>(), (Func<Sprite, bool>)((Sprite x) => ((Object)x).name == "crossbow_arbalest"))));
			objectDB.m_StatusEffects.Add((StatusEffect)(object)Helper.CreateStatusEffects("blacks7ar_advance_crossbows", "$btb_advancedcrossbow", Enumerable.LastOrDefault((IEnumerable<Sprite>)Resources.FindObjectsOfTypeAll<Sprite>(), (Func<Sprite, bool>)((Sprite x) => ((Object)x).name == "crossbow_arbalest"))));
			objectDB.m_StatusEffects.Add((StatusEffect)(object)Helper.CreateStatusEffects("blacks7ar_basic_elementalmagic", "$btb_basicelementalmagic", Enumerable.LastOrDefault((IEnumerable<Sprite>)Resources.FindObjectsOfTypeAll<Sprite>(), (Func<Sprite, bool>)((Sprite x) => ((Object)x).name == "elemental_magic"))));
			objectDB.m_StatusEffects.Add((StatusEffect)(object)Helper.CreateStatusEffects("blacks7ar_advance_elementalmagic", "$btb_advancedelementalmagic", Enumerable.LastOrDefault((IEnumerable<Sprite>)Resources.FindObjectsOfTypeAll<Sprite>(), (Func<Sprite, bool>)((Sprite x) => ((Object)x).name == "elemental_magic"))));
			objectDB.m_StatusEffects.Add((StatusEffect)(object)Helper.CreateStatusEffects("blacks7ar_basic_fist", "$btb_basicfist", Enumerable.LastOrDefault((IEnumerable<Sprite>)Resources.FindObjectsOfTypeAll<Sprite>(), (Func<Sprite, bool>)((Sprite x) => ((Object)x).name == "hands"))));
			objectDB.m_StatusEffects.Add((StatusEffect)(object)Helper.CreateStatusEffects("blacks7ar_advance_fist", "$btb_advancedfist", Enumerable.LastOrDefault((IEnumerable<Sprite>)Resources.FindObjectsOfTypeAll<Sprite>(), (Func<Sprite, bool>)((Sprite x) => ((Object)x).name == "FistFenringClaw"))));
			objectDB.m_StatusEffects.Add((StatusEffect)(object)Helper.CreateStatusEffects("blacks7ar_basic_fishing", "$btb_basicfishing", Enumerable.LastOrDefault((IEnumerable<Sprite>)Resources.FindObjectsOfTypeAll<Sprite>(), (Func<Sprite, bool>)((Sprite x) => ((Object)x).name == "fishingrod"))));
			objectDB.m_StatusEffects.Add((StatusEffect)(object)Helper.CreateStatusEffects("blacks7ar_advance_fishing", "$btb_advancedfishing", Enumerable.LastOrDefault((IEnumerable<Sprite>)Resources.FindObjectsOfTypeAll<Sprite>(), (Func<Sprite, bool>)((Sprite x) => ((Object)x).name == "fishingrod"))));
			objectDB.m_StatusEffects.Add((StatusEffect)(object)Helper.CreateStatusEffects("blacks7ar_jump", "$btb_basicjump", Enumerable.LastOrDefault((IEnumerable<Sprite>)Resources.FindObjectsOfTypeAll<Sprite>(), (Func<Sprite, bool>)((Sprite x) => ((Object)x).name == "skill_jump"))));
			objectDB.m_StatusEffects.Add((StatusEffect)(object)Helper.CreateStatusEffects("blacks7ar_basic_knives", "$btb_basicknives", Enumerable.LastOrDefault((IEnumerable<Sprite>)Resources.FindObjectsOfTypeAll<Sprite>(), (Func<Sprite, bool>)((Sprite x) => ((Object)x).name == "knife_flint"))));
			objectDB.m_StatusEffects.Add((StatusEffect)(object)Helper.CreateStatusEffects("blacks7ar_advance_knives", "$btb_advancedknives", Enumerable.LastOrDefault((IEnumerable<Sprite>)Resources.FindObjectsOfTypeAll<Sprite>(), (Func<Sprite, bool>)((Sprite x) => ((Object)x).name == "knife_chitin"))));
			objectDB.m_StatusEffects.Add((StatusEffect)(object)Helper.CreateStatusEffects("blacks7ar_basic_pickaxes", "$btb_basicpickaxe", Enumerable.LastOrDefault((IEnumerable<Sprite>)Resources.FindObjectsOfTypeAll<Sprite>(), (Func<Sprite, bool>)((Sprite x) => ((Object)x).name == "pickaxe_stone"))));
			objectDB.m_StatusEffects.Add((StatusEffect)(object)Helper.CreateStatusEffects("blacks7ar_advance_pickaxes", "$btb_advancedpickaxe", Enumerable.LastOrDefault((IEnumerable<Sprite>)Resources.FindObjectsOfTypeAll<Sprite>(), (Func<Sprite, bool>)((Sprite x) => ((Object)x).name == "pickaxe_iron"))));
			objectDB.m_StatusEffects.Add((StatusEffect)(object)Helper.CreateStatusEffects("blacks7ar_riding", "$btb_basicriding", Enumerable.LastOrDefault((IEnumerable<Sprite>)Resources.FindObjectsOfTypeAll<Sprite>(), (Func<Sprite, bool>)((Sprite x) => ((Object)x).name == "SadleLox"))));
			objectDB.m_StatusEffects.Add((StatusEffect)(object)Helper.CreateStatusEffects("blacks7ar_basic_run", "$btb_basicrun", Enumerable.LastOrDefault((IEnumerable<Sprite>)Resources.FindObjectsOfTypeAll<Sprite>(), (Func<Sprite, bool>)((Sprite x) => ((Object)x).name == "skill_run"))));
			objectDB.m_StatusEffects.Add((StatusEffect)(object)Helper.CreateStatusEffects("blacks7ar_advance_run", "$btb_advancedrun", Enumerable.LastOrDefault((IEnumerable<Sprite>)Resources.FindObjectsOfTypeAll<Sprite>(), (Func<Sprite, bool>)((Sprite x) => ((Object)x).name == "skill_run"))));
			objectDB.m_StatusEffects.Add((StatusEffect)(object)Helper.CreateStatusEffects("blacks7ar_basic_polearms", "$btb_basicpolearm", Enumerable.LastOrDefault((IEnumerable<Sprite>)Resources.FindObjectsOfTypeAll<Sprite>(), (Func<Sprite, bool>)((Sprite x) => ((Object)x).name == "AtgeirBronze"))));
			objectDB.m_StatusEffects.Add((StatusEffect)(object)Helper.CreateStatusEffects("blacks7ar_advance_polearms", "$btb_advancedpolearm", Enumerable.LastOrDefault((IEnumerable<Sprite>)Resources.FindObjectsOfTypeAll<Sprite>(), (Func<Sprite, bool>)((Sprite x) => ((Object)x).name == "AtgeirIron"))));
			objectDB.m_StatusEffects.Add((StatusEffect)(object)Helper.CreateStatusEffects("blacks7ar_basic_sneak", "$btb_basicsneak", Enumerable.LastOrDefault((IEnumerable<Sprite>)Resources.FindObjectsOfTypeAll<Sprite>(), (Func<Sprite, bool>)((Sprite x) => ((Object)x).name == "skill_sneak"))));
			objectDB.m_StatusEffects.Add((StatusEffect)(object)Helper.CreateStatusEffects("blacks7ar_advance_sneak", "$btb_advancedsneak", Enumerable.LastOrDefault((IEnumerable<Sprite>)Resources.FindObjectsOfTypeAll<Sprite>(), (Func<Sprite, bool>)((Sprite x) => ((Object)x).name == "skill_sneak"))));
			objectDB.m_StatusEffects.Add((StatusEffect)(object)Helper.CreateStatusEffects("blacks7ar_basic_spears", "$btb_basicspear", Enumerable.LastOrDefault((IEnumerable<Sprite>)Resources.FindObjectsOfTypeAll<Sprite>(), (Func<Sprite, bool>)((Sprite x) => ((Object)x).name == "SpearFlint"))));
			objectDB.m_StatusEffects.Add((StatusEffect)(object)Helper.CreateStatusEffects("blacks7ar_advance_spears", "$btb_advancedspear", Enumerable.LastOrDefault((IEnumerable<Sprite>)Resources.FindObjectsOfTypeAll<Sprite>(), (Func<Sprite, bool>)((Sprite x) => ((Object)x).name == "SpearCarapace"))));
			objectDB.m_StatusEffects.Add((StatusEffect)(object)Helper.CreateStatusEffects("blacks7ar_basic_swim", "$btb_basicswim", Enumerable.LastOrDefault((IEnumerable<Sprite>)Resources.FindObjectsOfTypeAll<Sprite>(), (Func<Sprite, bool>)((Sprite x) => ((Object)x).name == "skill_swim"))));
			objectDB.m_StatusEffects.Add((StatusEffect)(object)Helper.CreateStatusEffects("blacks7ar_advance_swim", "$btb_advancedswim", Enumerable.LastOrDefault((IEnumerable<Sprite>)Resources.FindObjectsOfTypeAll<Sprite>(), (Func<Sprite, bool>)((Sprite x) => ((Object)x).name == "skill_swim"))));
			objectDB.m_StatusEffects.Add((StatusEffect)(object)Helper.CreateStatusEffects("blacks7ar_basic_swords", "$btb_basicsword", Enumerable.LastOrDefault((IEnumerable<Sprite>)Resources.FindObjectsOfTypeAll<Sprite>(), (Func<Sprite, bool>)((Sprite x) => ((Object)x).name == "SwordBronze"))));
			objectDB.m_StatusEffects.Add((StatusEffect)(object)Helper.CreateStatusEffects("blacks7ar_advance_swords", "$btb_advancedsword", Enumerable.LastOrDefault((IEnumerable<Sprite>)Resources.FindObjectsOfTypeAll<Sprite>(), (Func<Sprite, bool>)((Sprite x) => ((Object)x).name == "SwordMistwalker"))));
			if (Plugin._hasLumberjackingMod)
			{
				objectDB.m_StatusEffects.Add((StatusEffect)(object)Helper.CreateStatusEffects("blacks7ar_basic_woodcutting", "$btb_basiclumberjacking", Enumerable.LastOrDefault((IEnumerable<Sprite>)Resources.FindObjectsOfTypeAll<Sprite>(), (Func<Sprite, bool>)((Sprite x) => ((Object)x).name == "skill_woodcutting"))));
				objectDB.m_StatusEffects.Add((StatusEffect)(object)Helper.CreateStatusEffects("blacks7ar_advance_woodcutting", "$btb_advancedlumberjacking", Enumerable.LastOrDefault((IEnumerable<Sprite>)Resources.FindObjectsOfTypeAll<Sprite>(), (Func<Sprite, bool>)((Sprite x) => ((Object)x).name == "skill_woodcutting"))));
			}
			else
			{
				objectDB.m_StatusEffects.Add((StatusEffect)(object)Helper.CreateStatusEffects("blacks7ar_basic_woodcutting", "$btb_basicwoodcutting", Enumerable.LastOrDefault((IEnumerable<Sprite>)Resources.FindObjectsOfTypeAll<Sprite>(), (Func<Sprite, bool>)((Sprite x) => ((Object)x).name == "skill_woodcutting"))));
				objectDB.m_StatusEffects.Add((StatusEffect)(object)Helper.CreateStatusEffects("blacks7ar_advance_woodcutting", "$btb_advancedwoodcutting", Enumerable.LastOrDefault((IEnumerable<Sprite>)Resources.FindObjectsOfTypeAll<Sprite>(), (Func<Sprite, bool>)((Sprite x) => ((Object)x).name == "skill_woodcutting"))));
			}
		}
	}
	internal abstract class EnhancedTrophies
	{
		private static ZNetScene zScene => ZNetScene.instance;

		public static void Init(ObjectDB objectDB)
		{
			Abomination(objectDB);
			Blob(objectDB);
			Boar(objectDB);
			Cultist(objectDB);
			Deathsquito(objectDB);
			Deer(objectDB);
			Draugr(objectDB);
			DraugrElite(objectDB);
			DraugrFem(objectDB);
			Dvergr(objectDB);
			Fenring(objectDB);
			FrostTroll(objectDB);
			Gjall(objectDB);
			Goblin(ob