plugins/LCC.dll

Decompiled a day ago
using System;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
using System.Globalization;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.Versioning;
using System.Security;
using System.Security.Permissions;
using System.Text;
using BepInEx;
using BepInEx.Configuration;
using BepInEx.Logging;
using HarmonyLib;
using LCC.Core;
using LCC.Effects;
using LCC.UI;
using Microsoft.CodeAnalysis;
using TMPro;
using UnityEngine;
using UnityEngine.UI;

[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)]
[assembly: TargetFramework(".NETFramework,Version=v4.8.1", FrameworkDisplayName = ".NET Framework 4.8.1")]
[assembly: AssemblyCompany("LCC")]
[assembly: AssemblyConfiguration("Release")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: AssemblyInformationalVersion("1.0.0+09196009381654267cc9be2836d4ac677cefda7b")]
[assembly: AssemblyProduct("LCC")]
[assembly: AssemblyTitle("LCC")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("1.0.0.0")]
[module: UnverifiableCode]
namespace Microsoft.CodeAnalysis
{
	[CompilerGenerated]
	[Embedded]
	internal sealed class EmbeddedAttribute : Attribute
	{
	}
}
namespace System.Runtime.CompilerServices
{
	[CompilerGenerated]
	[Embedded]
	[AttributeUsage(AttributeTargets.Class | AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Event | AttributeTargets.Parameter | AttributeTargets.ReturnValue | AttributeTargets.GenericParameter, AllowMultiple = false, Inherited = false)]
	internal sealed class NullableAttribute : Attribute
	{
		public readonly byte[] NullableFlags;

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

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

		public NullableContextAttribute(byte P_0)
		{
			Flag = P_0;
		}
	}
}
namespace LCC
{
	public static class ValConfig
	{
		public static ConfigEntry<bool> LeechEnabled = null;

		public static ConfigEntry<string> LeechAllowedTypes = null;

		public static ConfigEntry<float> LeechHealRatio = null;

		public static ConfigEntry<bool> LeechChatEnabled = null;

		public static ConfigEntry<bool> VenomEnabled = null;

		public static ConfigEntry<string> VenomAllowedTypes = null;

		public static ConfigEntry<bool> VenomChatEnabled = null;

		public static ConfigEntry<float> VenomDamage = null;

		public static ConfigEntry<bool> OpportunistEnabled = null;

		public static ConfigEntry<string> OpportunistAllowedTypes = null;

		public static ConfigEntry<bool> OpportunistChatEnabled = null;

		public static ConfigEntry<bool> WolfMasterEnabled = null;

		public static ConfigEntry<string> WolfMasterAllowedTypes = null;

		public static ConfigEntry<bool> WolfMasterChatEnabled = null;

		public static ConfigEntry<int> WolfMasterCount = null;

		public static ConfigEntry<float> WolfMasterCastTime = null;

		public static ConfigEntry<float> WolfMasterCommandInterval = null;

		public static ConfigEntry<float> WolfMasterRespawnInterval = null;

		public static ConfigEntry<float> WolfMasterHealthPercent = null;

		public static ConfigEntry<float> WolfMasterDamagePercent = null;

		public static ConfigEntry<float> WolfMasterFollowDistance = null;

		public static ConfigEntry<float> WolfMasterAttackSpeed = null;

		public static ConfigEntry<float> WolfMasterAttackCooldown = null;

		public static ConfigEntry<float> WolfMasterMoveSpeed = null;

		public static ConfigEntry<float> WolfMasterRetreatHeal = null;

		public static ConfigEntry<bool> BloodHunterEnabled = null;

		public static ConfigEntry<string> BloodHunterAllowedTypes = null;

		public static ConfigEntry<bool> BloodHunterChatEnabled = null;

		public static ConfigEntry<float> BloodHunterHuntPct = null;

		public static ConfigEntry<float> BloodHunterExecutePct = null;

		public static ConfigEntry<float> BloodHunterMoveMul = null;

		public static ConfigEntry<float> BloodHunterDamageMul = null;

		public static ConfigEntry<float> BloodHunterStaminaPct = null;

		public static ConfigEntry<float> BloodHunterSearchRange = null;

		public static ConfigEntry<bool> LastStandEnabled = null;

		public static ConfigEntry<string> LastStandAllowedTypes = null;

		public static ConfigEntry<float> LastStandHealthRatio = null;

		public static ConfigEntry<float> LastStandCastTime = null;

		public static ConfigEntry<float> LastStandExplodeRadius = null;

		public static ConfigEntry<float> LastStandExplodeDamageMul = null;

		public static ConfigEntry<bool> LastStandChatEnabled = null;

		public static ConfigEntry<bool> PackEnabled = null;

		public static ConfigEntry<string> PackAllowedTypes = null;

		public static ConfigEntry<float> PackDamagePerMember = null;

		public static ConfigEntry<float> PackSpeedPerMember = null;

		public static ConfigEntry<int> PackMaxBonus = null;

		public static ConfigEntry<bool> PackChatEnabled = null;

		public static ConfigEntry<bool> CurseEnabled = null;

		public static ConfigEntry<string> CurseAllowedTypes = null;

		public static ConfigEntry<float> CurseInterval = null;

		public static ConfigEntry<float> CurseDuration = null;

		public static ConfigEntry<int> CurseMaxStacks = null;

		public static ConfigEntry<float> CurseMarkDuration = null;

		public static ConfigEntry<float> CurseStackInterval = null;

		public static ConfigEntry<float> CurseTauntStackInterval = null;

		public static ConfigEntry<float> CurseTauntRange = null;

		public static ConfigEntry<bool> CurseChatEnabled = null;

		public static ConfigEntry<bool> DarkJudgeEnabled = null;

		public static ConfigEntry<string> DarkJudgeAllowedTypes = null;

		public static ConfigEntry<float> DarkJudgeInterval = null;

		public static ConfigEntry<float> DarkJudgeDuration = null;

		public static ConfigEntry<float> DarkJudgeRange = null;

		public static ConfigEntry<float> DarkJudgeVisionDistance = null;

		public static ConfigEntry<float> DarkJudgePenaltyPercent = null;

		public static ConfigEntry<bool> DarkJudgeChatEnabled = null;

		public static ConfigEntry<bool> AmaterasuEnabled = null;

		public static ConfigEntry<string> AmaterasuAllowedTypes = null;

		public static ConfigEntry<float> AmaterasuInterval = null;

		public static ConfigEntry<int> AmaterasuMinionCount = null;

		public static ConfigEntry<float> AmaterasuHealInterval = null;

		public static ConfigEntry<float> AmaterasuHealPercent = null;

		public static ConfigEntry<int> AmaterasuBoomToBreak = null;

		public static ConfigEntry<float> AmaterasuBoomRadius = null;

		public static ConfigEntry<float> AmaterasuBreakHealthPercent = null;

		public static ConfigEntry<bool> AmaterasuChatEnabled = null;

		public static ConfigEntry<bool> DuelEnabled = null;

		public static ConfigEntry<string> DuelAllowedTypes = null;

		public static ConfigEntry<float> DuelTriggerHealth = null;

		public static ConfigEntry<float> DuelAttackSpeedMult = null;

		public static ConfigEntry<float> DuelCooldownMult = null;

		public static ConfigEntry<float> DuelMoveSpeedMult = null;

		public static ConfigEntry<bool> DuelChatEnabled = null;

		public static ConfigEntry<bool> ArenaEnabled = null;

		public static ConfigEntry<string> ArenaAllowedTypes = null;

		public static ConfigEntry<string> ArenaTriggerHealths = null;

		public static ConfigEntry<float> ArenaRadius = null;

		public static ConfigEntry<float> ArenaBoundaryInset = null;

		public static ConfigEntry<float> ArenaPullDistance = null;

		public static ConfigEntry<float> ArenaPullTime = null;

		public static ConfigEntry<float> ArenaCountdown = null;

		public static ConfigEntry<float> ArenaDuration = null;

		public static ConfigEntry<float> ArenaBossScale = null;

		public static ConfigEntry<float> ArenaFenceHeight = null;

		public static ConfigEntry<int> ArenaFenceCount = null;

		public static ConfigEntry<float> ArenaCooldownMult = null;

		public static ConfigEntry<float> ArenaAttackSpeedMult = null;

		public static ConfigEntry<float> ArenaShieldHeightScale = null;

		public static ConfigEntry<bool> ArenaChatEnabled = null;

		public static ConfigEntry<bool> ThiefEnabled = null;

		public static ConfigEntry<string> ThiefAllowedTypes = null;

		public static ConfigEntry<float> ThiefMoveSpeedMult = null;

		public static ConfigEntry<float> ThiefDamageMult = null;

		public static ConfigEntry<float> ThiefAttackSpeedMult = null;

		public static ConfigEntry<float> ThiefCooldownMult = null;

		public static ConfigEntry<float> ThiefFleeDuration = null;

		public static ConfigEntry<bool> ThiefChatEnabled = null;

		public static ConfigEntry<float> ThiefStealChance = null;

		public static ConfigEntry<bool> FireApostleEnabled = null;

		public static ConfigEntry<string> FireApostleAllowedTypes = null;

		public static ConfigEntry<float> FireApostleDamageMult = null;

		public static ConfigEntry<bool> IceApostleEnabled = null;

		public static ConfigEntry<string> IceApostleAllowedTypes = null;

		public static ConfigEntry<float> IceApostleSpeedPerLayer = null;

		public static ConfigEntry<int> IceApostleMaxLayers = null;

		public static ConfigEntry<float> IceApostleScanRadius = null;

		public static ConfigEntry<float> IceApostleScanInterval = null;

		public static ConfigEntry<bool> TwinBladeEnabled = null;

		public static ConfigEntry<string> TwinBladeAllowedTypes = null;

		public static ConfigEntry<float> TwinBladeAttackSpeedMult = null;

		public static ConfigEntry<float> TwinBladeDamageMult = null;

		public static ConfigEntry<bool> PoisonApostleEnabled = null;

		public static ConfigEntry<string> PoisonApostleAllowedTypes = null;

		public static ConfigEntry<bool> MartyrEnabled = null;

		public static ConfigEntry<string> MartyrAllowedTypes = null;

		public static ConfigEntry<float> MartyrFuseTime = null;

		public static ConfigEntry<float> MartyrTriggerRange = null;

		public static ConfigEntry<float> MartyrBlastRadius = null;

		public static ConfigEntry<float> MartyrDamageMult = null;

		public static ConfigEntry<bool> VoidEnabled = null;

		public static ConfigEntry<string> VoidAllowedTypes = null;

		public static ConfigEntry<bool> TimeHunterEnabled = null;

		public static ConfigEntry<string> TimeHunterAllowedTypes = null;

		public static ConfigEntry<float> TimeHunterTeleportRadius = null;

		public static ConfigEntry<float> TimeHunterInterval = null;

		public static ConfigEntry<float> TimeHunterExecuteInterval = null;

		public static ConfigEntry<float> TimeHunterExecuteSpeedMult = null;

		public static ConfigEntry<float> TimeHunterExecuteStepInterval = null;

		public static ConfigEntry<bool> SunApostleEnabled = null;

		public static ConfigEntry<string> SunApostleAllowedTypes = null;

		public static ConfigEntry<float> SunApostleAttackMult = null;

		public static ConfigEntry<float> SunApostleHealthMult = null;

		public static ConfigEntry<float> SunApostleRegenPerSec = null;

		public static ConfigEntry<float> SunApostleMoveSpeedMult = null;

		public static ConfigEntry<float> SunApostleAttackSpeedMult = null;

		public static ConfigEntry<float> SunApostleCooldownMult = null;

		public static ConfigEntry<float> SunApostleScaleMult = null;

		public static ConfigEntry<float> SunApostleNightAttackMult = null;

		public static ConfigEntry<float> SunApostleNightHealthMult = null;

		public static ConfigEntry<bool> NightApostleEnabled = null;

		public static ConfigEntry<string> NightApostleAllowedTypes = null;

		public static ConfigEntry<float> NightApostleAttackMult = null;

		public static ConfigEntry<float> NightApostleHealthMult = null;

		public static ConfigEntry<float> NightApostleRegenPerSec = null;

		public static ConfigEntry<float> NightApostleMoveSpeedMult = null;

		public static ConfigEntry<float> NightApostleAttackSpeedMult = null;

		public static ConfigEntry<float> NightApostleCooldownMult = null;

		public static ConfigEntry<float> NightApostleScaleMult = null;

		public static ConfigEntry<float> NightApostleDayAttackMult = null;

		public static ConfigEntry<float> NightApostleDayHealthMult = null;

		public static ConfigEntry<bool> SoulEnabled = null;

		public static ConfigEntry<string> SoulAllowedTypes = null;

		public static ConfigEntry<float> SoulDownDelay = null;

		public static ConfigEntry<float> SoulReviveRange = null;

		public static ConfigEntry<int> SoulMinCount = null;

		public static ConfigEntry<bool> SoulChatEnabled = null;

		public static ConfigEntry<bool> StarControlEnabled = null;

		public static ConfigEntry<float> StarChanceRegular = null;

		public static ConfigEntry<float> StarChanceMiniboss = null;

		public static ConfigEntry<float> StarChanceBoss = null;

		public static ConfigEntry<int> StarMinLevelRegular = null;

		public static ConfigEntry<int> StarMinLevelMiniboss = null;

		public static ConfigEntry<int> StarMinLevelBoss = null;

		public static ConfigEntry<int> StarMaxLevelRegular = null;

		public static ConfigEntry<int> StarMaxLevelMiniboss = null;

		public static ConfigEntry<int> StarMaxLevelBoss = null;

		public static ConfigEntry<float> StarHealthPerStar = null;

		public static ConfigEntry<float> StarDamagePerStar = null;

		public static ConfigEntry<float> StarMovePerStar = null;

		public static ConfigEntry<float> StarAttackSpeedPerStar = null;

		public static ConfigEntry<float> StarCooldownPerStar = null;

		public static ConfigEntry<float> StarBodySizePerStar = null;

		public static ConfigEntry<float> GlobalHealthMulRegular = null;

		public static ConfigEntry<float> GlobalHealthMulMiniboss = null;

		public static ConfigEntry<float> GlobalHealthMulBoss = null;

		public static ConfigEntry<float> GlobalDamageMulRegular = null;

		public static ConfigEntry<float> GlobalDamageMulMiniboss = null;

		public static ConfigEntry<float> GlobalDamageMulBoss = null;

		public static ConfigEntry<float> GlobalMoveMulRegular = null;

		public static ConfigEntry<float> GlobalMoveMulMiniboss = null;

		public static ConfigEntry<float> GlobalMoveMulBoss = null;

		public static ConfigEntry<float> GlobalAttackSpeedMulRegular = null;

		public static ConfigEntry<float> GlobalAttackSpeedMulMiniboss = null;

		public static ConfigEntry<float> GlobalAttackSpeedMulBoss = null;

		public static ConfigEntry<float> GlobalCooldownMulRegular = null;

		public static ConfigEntry<float> GlobalCooldownMulMiniboss = null;

		public static ConfigEntry<float> GlobalCooldownMulBoss = null;

		public static ConfigEntry<float> SenseMulRegular = null;

		public static ConfigEntry<float> SenseMulMiniboss = null;

		public static ConfigEntry<float> SenseMulBoss = null;

		public static ConfigEntry<float> ChaseMulRegular = null;

		public static ConfigEntry<float> ChaseMulMiniboss = null;

		public static ConfigEntry<float> ChaseMulBoss = null;

		public static ConfigEntry<float> EnhanceChanceRegular = null;

		public static ConfigEntry<float> EnhanceChanceMiniboss = null;

		public static ConfigEntry<float> EnhanceChanceBoss = null;

		public static ConfigEntry<float> EnhanceDetachChance = null;

		public static ConfigEntry<int> LeechWeight = null;

		public static ConfigEntry<int> VenomWeight = null;

		public static ConfigEntry<int> OpportunistWeight = null;

		public static ConfigEntry<int> WolfMasterWeight = null;

		public static ConfigEntry<int> BloodHunterWeight = null;

		public static ConfigEntry<int> LastStandWeight = null;

		public static ConfigEntry<int> PackWeight = null;

		public static ConfigEntry<int> CurseWeight = null;

		public static ConfigEntry<int> DarkJudgeWeight = null;

		public static ConfigEntry<int> AmaterasuWeight = null;

		public static ConfigEntry<int> DuelWeight = null;

		public static ConfigEntry<int> ArenaWeight = null;

		public static ConfigEntry<int> ThiefWeight = null;

		public static ConfigEntry<int> SoulWeight = null;

		public static ConfigEntry<int> EnrageWeight = null;

		public static ConfigEntry<int> SwiftWeight = null;

		public static ConfigEntry<int> RegenWeight = null;

		public static ConfigEntry<int> ElementalShieldWeight = null;

		public static ConfigEntry<int> ElementalHealWeight = null;

		public static ConfigEntry<int> ElementalReflectWeight = null;

		public static ConfigEntry<int> BalancedWeight = null;

		public static ConfigEntry<int> ReflectWeight = null;

		public static ConfigEntry<int> ShareWeight = null;

		public static ConfigEntry<int> AuthorityWeight = null;

		public static ConfigEntry<int> AssassinWeight = null;

		public static ConfigEntry<int> PriestWeight = null;

		public static ConfigEntry<int> DevourWeight = null;

		public static ConfigEntry<int> DesperateWeight = null;

		public static ConfigEntry<int> CharmWeight = null;

		public static ConfigEntry<int> ParasiteWeight = null;

		public static ConfigEntry<int> ManavoidWeight = null;

		public static ConfigEntry<int> ShadowWeight = null;

		public static ConfigEntry<int> TwinWeight = null;

		public static ConfigEntry<int> RoninWeight = null;

		public static ConfigEntry<int> ChaosWeight = null;

		public static ConfigEntry<int> LuckyWeight = null;

		public static ConfigEntry<int> FireApostleWeight = null;

		public static ConfigEntry<int> IceApostleWeight = null;

		public static ConfigEntry<int> TwinBladeWeight = null;

		public static ConfigEntry<int> PoisonApostleWeight = null;

		public static ConfigEntry<int> MartyrWeight = null;

		public static ConfigEntry<int> VoidWeight = null;

		public static ConfigEntry<int> TimeHunterWeight = null;

		public static ConfigEntry<int> SunApostleWeight = null;

		public static ConfigEntry<int> NightApostleWeight = null;

		public static ConfigEntry<int> FlurryWeight = null;

		public static ConfigEntry<bool> ManavoidEnabled = null;

		public static ConfigEntry<string> ManavoidAllowedTypes = null;

		public static ConfigEntry<float> ManavoidInterval = null;

		public static ConfigEntry<float> ManavoidRange = null;

		public static ConfigEntry<float> ManavoidDuration = null;

		public static ConfigEntry<bool> ManavoidChatEnabled = null;

		public static ConfigEntry<bool> ShadowEnabled = null;

		public static ConfigEntry<string> ShadowAllowedTypes = null;

		public static ConfigEntry<float> ShadowLowHpThreshold = null;

		public static ConfigEntry<float> ShadowSearchRange = null;

		public static ConfigEntry<float> ShadowBreakDamage = null;

		public static ConfigEntry<float> ShadowRehideDelay = null;

		public static ConfigEntry<bool> ShadowChatEnabled = null;

		public static ConfigEntry<float> PriestSiphonRange = null;

		public static ConfigEntry<float> PriestSiphonLockDuration = null;

		public static ConfigEntry<bool> TwinEnabled = null;

		public static ConfigEntry<string> TwinAllowedTypes = null;

		public static ConfigEntry<float> TwinDeadDiff = null;

		public static ConfigEntry<float> TwinReviveDelay = null;

		public static ConfigEntry<bool> TwinChatEnabled = null;

		public static ConfigEntry<bool> RoninEnabled = null;

		public static ConfigEntry<string> RoninAllowedTypes = null;

		public static ConfigEntry<float> RoninAttackInterval = null;

		public static ConfigEntry<float> RoninAnimSpeed = null;

		public static ConfigEntry<float> RoninDamageMul = null;

		public static ConfigEntry<bool> ChaosEnabled = null;

		public static ConfigEntry<string> ChaosAllowedTypes = null;

		public static ConfigEntry<bool> LuckyEnabled = null;

		public static ConfigEntry<string> LuckyAllowedTypes = null;

		public static ConfigEntry<float> LuckyMin = null;

		public static ConfigEntry<float> LuckyMax = null;

		public static ConfigEntry<bool> FlurryEnabled = null;

		public static ConfigEntry<string> FlurryAllowedTypes = null;

		public static ConfigEntry<float> FlurryMinSpeed = null;

		public static ConfigEntry<float> FlurryMaxSpeed = null;

		public static ConfigEntry<bool> EnableModLogging = null;

		public static ConfigEntry<bool> EnableDebugLogging = null;

		public static ConfigEntry<bool> CenterTextMaster = null;

		public static ConfigEntry<bool> BubbleMaster = null;

		public static ConfigEntry<bool> LootBoostEnabled = null;

		public static ConfigEntry<float> LootChancePerStar = null;

		public static ConfigEntry<float> LootChancePerEnhance = null;

		public static ConfigEntry<float> LootChanceCap = null;

		public static ConfigEntry<int> LootAmountPerStar = null;

		public static ConfigEntry<int> LootRareBonus = null;

		public static ConfigEntry<bool> LootStackEnabled = null;

		public static ConfigEntry<int> LootMaxPerItem = null;

		public static ConfigEntry<int> LootStarMultCap = null;

		public static ConfigEntry<bool> EnrageEnabled = null;

		public static ConfigEntry<string> EnrageAllowedTypes = null;

		public static ConfigEntry<float> EnrageHealthThreshold = null;

		public static ConfigEntry<float> EnrageDuration = null;

		public static ConfigEntry<float> EnrageAttackCooldownMul = null;

		public static ConfigEntry<float> EnrageAttackSpeedMul = null;

		public static ConfigEntry<float> EnrageMoveSpeedMul = null;

		public static ConfigEntry<bool> EnrageChatEnabled = null;

		public static ConfigEntry<bool> SwiftEnabled = null;

		public static ConfigEntry<string> SwiftAllowedTypes = null;

		public static ConfigEntry<float> SwiftMoveSpeedMul = null;

		public static ConfigEntry<float> SwiftAttackCooldownMul = null;

		public static ConfigEntry<bool> RegenEnabled = null;

		public static ConfigEntry<string> RegenAllowedTypes = null;

		public static ConfigEntry<float> RegenOutOfCombatDelay = null;

		public static ConfigEntry<float> RegenHealPercent = null;

		public static ConfigEntry<bool> ElementalEnabled = null;

		public static ConfigEntry<string> ElementalAllowedTypes = null;

		public static ConfigEntry<float> ElementalInterval = null;

		public static ConfigEntry<float> ElementalWarnAhead = null;

		public static ConfigEntry<bool> ElementalHealEnabled = null;

		public static ConfigEntry<string> ElementalHealAllowedTypes = null;

		public static ConfigEntry<bool> ElementalReflectEnabled = null;

		public static ConfigEntry<string> ElementalReflectAllowedTypes = null;

		public static ConfigEntry<bool> BalancedEnabled = null;

		public static ConfigEntry<string> BalancedAllowedTypes = null;

		public static ConfigEntry<float> BalancedInterval = null;

		public static ConfigEntry<float> BalancedWindow = null;

		public static ConfigEntry<float> BalancedReduceStart = null;

		public static ConfigEntry<float> BalancedReduceStep = null;

		public static ConfigEntry<float> BalancedIncreaseStep = null;

		public static ConfigEntry<float> BalancedIncreaseCap = null;

		public static ConfigEntry<float> BalancedWarnAhead = null;

		public static ConfigEntry<bool> ReflectEnabled = null;

		public static ConfigEntry<string> ReflectAllowedTypes = null;

		public static ConfigEntry<float> ReflectInterval = null;

		public static ConfigEntry<float> ReflectDuration = null;

		public static ConfigEntry<float> ReflectWarnAhead = null;

		public static ConfigEntry<bool> ReflectChatEnabled = null;

		public static ConfigEntry<bool> ShareEnabled = null;

		public static ConfigEntry<string> ShareAllowedTypes = null;

		public static ConfigEntry<int> ShareMinSame = null;

		public static ConfigEntry<bool> ShareChatEnabled = null;

		public static ConfigEntry<float> ShareChatCooldown = null;

		public static ConfigEntry<bool> AuthorityEnabled = null;

		public static ConfigEntry<string> AuthorityAllowedTypes = null;

		public static ConfigEntry<float> AuthorityReviveDelay = null;

		public static ConfigEntry<float> AuthorityLeaderHealthMul = null;

		public static ConfigEntry<float> AuthorityLeaderScaleMul = null;

		public static ConfigEntry<int> AuthorityMinMembers = null;

		public static ConfigEntry<bool> AuthorityChatEnabled = null;

		public static ConfigEntry<bool> AssassinEnabled = null;

		public static ConfigEntry<string> AssassinAllowedTypes = null;

		public static ConfigEntry<bool> AssassinChatEnabled = null;

		public static ConfigEntry<bool> PriestEnabled = null;

		public static ConfigEntry<string> PriestAllowedTypes = null;

		public static ConfigEntry<bool> PriestChatEnabled = null;

		public static ConfigEntry<float> PriestCastTime = null;

		public static ConfigEntry<float> PriestCommandInterval = null;

		public static ConfigEntry<float> PriestRange = null;

		public static ConfigEntry<float> PriestAttackMul = null;

		public static ConfigEntry<float> PriestSpeedMul = null;

		public static ConfigEntry<float> PriestDefenseReduce = null;

		public static ConfigEntry<bool> DevourEnabled = null;

		public static ConfigEntry<string> DevourAllowedTypes = null;

		public static ConfigEntry<bool> DevourChatEnabled = null;

		public static ConfigEntry<float> DevourTriggerPct = null;

		public static ConfigEntry<float> DevourRange = null;

		public static ConfigEntry<float> DevourHealPct = null;

		public static ConfigEntry<float> DevourStatPct = null;

		public static ConfigEntry<float> DevourSizeMul = null;

		public static ConfigEntry<float> DevourPullTime = null;

		public static ConfigEntry<bool> DesperateEnabled = null;

		public static ConfigEntry<string> DesperateAllowedTypes = null;

		public static ConfigEntry<bool> DesperateChatEnabled = null;

		public static ConfigEntry<float> DesperateTriggerPct = null;

		public static ConfigEntry<float> DesperateAttackSpeedMul = null;

		public static ConfigEntry<float> DesperateMoveSpeedMul = null;

		public static ConfigEntry<float> DesperateKillHealPct = null;

		public static ConfigEntry<bool> CharmEnabled = null;

		public static ConfigEntry<string> CharmAllowedTypes = null;

		public static ConfigEntry<bool> CharmChatEnabled = null;

		public static ConfigEntry<float> CharmInterval = null;

		public static ConfigEntry<float> CharmDuration = null;

		public static ConfigEntry<float> CharmRange = null;

		public static ConfigEntry<float> CharmCastTime = null;

		public static ConfigEntry<bool> ParasiteEnabled = null;

		public static ConfigEntry<string> ParasiteAllowedTypes = null;

		public static ConfigEntry<bool> ParasiteChatEnabled = null;

		public static ConfigEntry<float> ParasiteCastTime = null;

		public static ConfigEntry<float> ParasiteInterval = null;

		public static ConfigEntry<float> ParasiteDuration = null;

		private static readonly AcceptableValueList<string> AllowedTypesOptions = new AcceptableValueList<string>(new string[7] { "小怪", "小boss", "boss", "小怪,小boss", "小怪,boss", "小boss,boss", "小怪,小boss,boss" });

		private static ConfigEntry<T> Bind<T>(ConfigFile config, string section, string key, T def, string desc)
		{
			//IL_0019: Unknown result type (might be due to invalid IL or missing references)
			//IL_0023: Expected O, but got Unknown
			return config.Bind<T>(section, key, def, new ConfigDescription(desc, (AcceptableValueBase)null, new object[1]
			{
				new ConfigurationManagerAttributes(section, key, desc)
			}));
		}

		private static ConfigEntry<string> BindAllowed(ConfigFile config, string section, string def, string desc)
		{
			//IL_0023: Unknown result type (might be due to invalid IL or missing references)
			//IL_002d: Expected O, but got Unknown
			return config.Bind<string>(section, "适用类型", def, new ConfigDescription(desc, (AcceptableValueBase)(object)AllowedTypesOptions, new object[1]
			{
				new ConfigurationManagerAttributes(section, "适用类型", desc)
			}));
		}

		public static void Init(ConfigFile config)
		{
			EnableModLogging = Bind(config, "1-通用", "模组日志开关", def: true, "是否启用模组日志输出\ntrue: 输出\nfalse: 关闭(警告和错误日志始终显示)");
			EnableDebugLogging = Bind(config, "1-通用", "调试日志开关", def: false, "是否启用详细调试日志\ntrue: 输出\nfalse: 只输出普通日志");
			CenterTextMaster = Bind(config, "1-通用", "屏幕中间文字总开关", def: true, "是否允许屏幕中央弹出怪物相关提示\ntrue: 允许(仅 Boss 级怪物会弹,小怪/小Boss 不弹)\nfalse: 关闭全部中央文字(各词条小开关仍独立生效)");
			BubbleMaster = Bind(config, "1-通用", "怪物头顶气泡总开关", def: true, "是否允许怪物头顶显示台词气泡\ntrue: 允许\nfalse: 关闭全部头顶气泡(各词条小开关仍独立生效)");
			StarControlEnabled = Bind(config, "2-星级控制", "星级控制开关", def: true, "是否启用星级控制(按概率随机调整怪物星级,配合每星成长与全局属性生效)");
			StarChanceRegular = Bind(config, "2-星级控制", "普通怪升星概率", 0.15f, "普通怪触发星级 roll 的概率(未触发保持原版生成星级)");
			StarChanceMiniboss = Bind(config, "2-星级控制", "小Boss升星概率", 0.3f, "小Boss触发星级 roll 的概率(未触发保持原版生成星级)");
			StarChanceBoss = Bind(config, "2-星级控制", "Boss升星概率", 0.1f, "Boss触发星级 roll 的概率(未触发保持原版生成星级)");
			StarMinLevelRegular = Bind(config, "2-星级控制", "普通怪最低等级", 1, "普通怪触发后随机的最低等级(level = 星级+1,1 = 无星)");
			StarMinLevelMiniboss = Bind(config, "2-星级控制", "小Boss最低等级", 1, "小Boss触发后随机的最低等级(level = 星级+1,1 = 无星)");
			StarMinLevelBoss = Bind(config, "2-星级控制", "Boss最低等级", 1, "Boss触发后随机的最低等级(level = 星级+1,1 = 无星)");
			StarMaxLevelRegular = Bind(config, "2-星级控制", "普通怪最高等级", 3, "普通怪触发后随机的最高等级(3 = 2星)");
			StarMaxLevelMiniboss = Bind(config, "2-星级控制", "小Boss最高等级", 3, "小Boss触发后随机的最高等级(3 = 2星)");
			StarMaxLevelBoss = Bind(config, "2-星级控制", "Boss最高等级", 2, "Boss触发后随机的最高等级(2 = 1星)");
			StarHealthPerStar = Bind(config, "3-每星成长", "每星血量系数", 1f, "每升 1 星的血量成长(当前血量 = 基础血量 × (1 + (星级-1) × 系数);1 = 与原版一致每星翻倍)");
			StarDamagePerStar = Bind(config, "3-每星成长", "每星伤害系数", 0.5f, "每升 1 星的伤害成长(伤害倍率 = 1 + (星级-1) × 系数;0.5 = 与原版一致每星 +50%)");
			StarMovePerStar = Bind(config, "3-每星成长", "每星移速系数", 0f, "每升 1 星的移速成长(0 = 星级不影响移速;0.05 = 每星 +5%)");
			StarAttackSpeedPerStar = Bind(config, "3-每星成长", "每星攻速系数", 0f, "每升 1 星的攻速成长(0 = 星级不影响攻速;0.05 = 每星 +5% 攻击动画速度)");
			StarCooldownPerStar = Bind(config, "3-每星成长", "每星冷却系数", 0f, "每升 1 星的攻击冷却成长(0 = 星级不影响冷却;0.05 = 每星冷却缩短 5%,攻得更快)");
			StarBodySizePerStar = Bind(config, "3-每星成长", "每星体型增幅", 0.1f, "每升 1 星的体型增幅(体型倍率 = 1 + (星级-1) × 系数;0.1 = 每星 +10%;0 = 星级不影响体型,与词条体型仍会叠加)");
			GlobalHealthMulRegular = Bind(config, "4-全局属性", "普通怪血量倍率", 1f, "普通怪最终血量倍率(1 = 不变,与原版星级缩放叠加)");
			GlobalHealthMulMiniboss = Bind(config, "4-全局属性", "小Boss血量倍率", 1f, "小Boss最终血量倍率(1 = 不变,与原版星级缩放叠加)");
			GlobalHealthMulBoss = Bind(config, "4-全局属性", "Boss血量倍率", 1f, "Boss最终血量倍率(1 = 不变,与原版星级缩放叠加)");
			GlobalDamageMulRegular = Bind(config, "4-全局属性", "普通怪伤害倍率", 1f, "普通怪最终伤害倍率(1 = 不变,与原版星级伤害成长叠加)");
			GlobalDamageMulMiniboss = Bind(config, "4-全局属性", "小Boss伤害倍率", 1f, "小Boss最终伤害倍率(1 = 不变,与原版星级伤害成长叠加)");
			GlobalDamageMulBoss = Bind(config, "4-全局属性", "Boss伤害倍率", 1f, "Boss最终伤害倍率(1 = 不变,与原版星级伤害成长叠加)");
			GlobalMoveMulRegular = Bind(config, "4-全局属性", "普通怪移速倍率", 1f, "普通怪最终移速倍率(1 = 不变)");
			GlobalMoveMulMiniboss = Bind(config, "4-全局属性", "小Boss移速倍率", 1f, "小Boss最终移速倍率(1 = 不变)");
			GlobalMoveMulBoss = Bind(config, "4-全局属性", "Boss移速倍率", 1f, "Boss最终移速倍率(1 = 不变)");
			GlobalAttackSpeedMulRegular = Bind(config, "4-全局属性", "普通怪攻速倍率", 1f, "普通怪最终攻速倍率(1 = 不变)");
			GlobalAttackSpeedMulMiniboss = Bind(config, "4-全局属性", "小Boss攻速倍率", 1f, "小Boss最终攻速倍率(1 = 不变)");
			GlobalAttackSpeedMulBoss = Bind(config, "4-全局属性", "Boss攻速倍率", 1f, "Boss最终攻速倍率(1 = 不变)");
			GlobalCooldownMulRegular = Bind(config, "4-全局属性", "普通怪冷却倍率", 1f, "普通怪攻击冷却倍率(1 = 不变;0.8 = 冷却缩短 20%,攻得更快)");
			GlobalCooldownMulMiniboss = Bind(config, "4-全局属性", "小Boss冷却倍率", 1f, "小Boss攻击冷却倍率(1 = 不变;0.8 = 冷却缩短 20%,攻得更快)");
			GlobalCooldownMulBoss = Bind(config, "4-全局属性", "Boss冷却倍率", 1f, "Boss攻击冷却倍率(1 = 不变;0.8 = 冷却缩短 20%,攻得更快)");
			SenseMulRegular = Bind(config, "5-攻击欲望", "普通怪感知倍率", 1f, "普通怪感知距离倍率(视野/听觉,>1 更早发现玩家)");
			SenseMulMiniboss = Bind(config, "5-攻击欲望", "小Boss感知倍率", 1f, "小Boss感知距离倍率(视野/听觉,>1 更早发现玩家)");
			SenseMulBoss = Bind(config, "5-攻击欲望", "Boss感知倍率", 1f, "Boss感知距离倍率(视野/听觉,>1 更早发现玩家)");
			ChaseMulRegular = Bind(config, "5-攻击欲望", "普通怪追击倍率", 1f, "普通怪追击距离倍率(仅对设置了追击距离上限的怪物生效,>1 追更远)");
			ChaseMulMiniboss = Bind(config, "5-攻击欲望", "小Boss追击倍率", 1f, "小Boss追击距离倍率(仅对设置了追击距离上限的怪物生效,>1 追更远)");
			ChaseMulBoss = Bind(config, "5-攻击欲望", "Boss追击倍率", 1f, "Boss追击距离倍率(仅对设置了追击距离上限的怪物生效,>1 追更远)");
			EnhanceChanceRegular = Bind(config, "6-强化系统", "普通怪强化概率", 0.25f, "普通怪获得强化的概率(0-1,0.25 表示 25% 的普通怪随机获得一种强化,其余无强化)");
			EnhanceChanceMiniboss = Bind(config, "6-强化系统", "小Boss强化概率", 0.4f, "小Boss获得强化的概率(0-1,0.4 表示 40% 的小Boss随机获得一种强化)");
			EnhanceChanceBoss = Bind(config, "6-强化系统", "Boss强化概率", 0.6f, "Boss获得强化的概率(0-1,0.6 表示 60% 的 Boss 随机获得一种强化)");
			EnhanceDetachChance = Bind(config, "6-强化系统", "脱队单体判定概率", 0.5f, "小队强化(生命共享/生命权柄)中多于最低保留人数的非头目成员,按此概率判定是否脱离小队强化、改为单体强化");
			LeechWeight = Bind(config, "6-强化系统", "吸血权重", 1, "吸血在抽取池中的出现权重(越大越常出现,0 = 不出现)");
			VenomWeight = Bind(config, "6-强化系统", "毒爪权重", 1, "毒爪在抽取池中的出现权重(越大越常出现,0 = 不出现)");
			OpportunistWeight = Bind(config, "6-强化系统", "机会主义者权重", 1, "机会主义者在抽取池中的出现权重(越大越常出现,0 = 不出现)");
			WolfMasterWeight = Bind(config, "6-强化系统", "训狼大师权重", 1, "训狼大师在抽取池中的出现权重(越大越常出现,0 = 不出现)");
			BloodHunterWeight = Bind(config, "6-强化系统", "血猎人权重", 1, "血猎人在抽取池中的出现权重(越大越常出现,0 = 不出现)");
			LastStandWeight = Bind(config, "6-强化系统", "临终反扑权重", 1, "临终反扑在抽取池中的出现权重(越大越常出现,0 = 不出现)");
			PackWeight = Bind(config, "6-强化系统", "集群之力权重", 1, "集群之力在抽取池中的出现权重(越大越常出现,0 = 不出现)");
			CurseWeight = Bind(config, "6-强化系统", "诅咒之躯权重", 1, "诅咒之躯在抽取池中的出现权重(越大越常出现,0 = 不出现)");
			DarkJudgeWeight = Bind(config, "6-强化系统", "黑暗审判权重", 1, "黑暗审判在抽取池中的出现权重(越大越常出现,0 = 不出现)");
			AmaterasuWeight = Bind(config, "6-强化系统", "天照权重", 1, "天照在抽取池中的出现权重(越大越常出现,0 = 不出现)");
			DuelWeight = Bind(config, "6-强化系统", "死斗权重", 1, "死斗在抽取池中的出现权重(越大越常出现,0 = 不出现)");
			ArenaWeight = Bind(config, "6-强化系统", "疯狂角斗场权重", 1, "疯狂角斗场在抽取池中的出现权重(越大越常出现,0 = 不出现)");
			ThiefWeight = Bind(config, "6-强化系统", "盗贼权重", 1, "盗贼在抽取池中的出现权重(越大越常出现,0 = 不出现)");
			SoulWeight = Bind(config, "6-强化系统", "魂返权重", 1, "魂返在抽取池中的出现权重(越大越常出现,0 = 不出现)");
			EnrageWeight = Bind(config, "6-强化系统", "狂暴权重", 1, "狂暴在抽取池中的出现权重(越大越常出现,0 = 不出现)");
			SwiftWeight = Bind(config, "6-强化系统", "迅捷权重", 1, "迅捷在抽取池中的出现权重(越大越常出现,0 = 不出现)");
			RegenWeight = Bind(config, "6-强化系统", "再生之躯权重", 1, "再生之躯在抽取池中的出现权重(越大越常出现,0 = 不出现)");
			ElementalShieldWeight = Bind(config, "6-强化系统", "元素之躯-庇权重", 1, "元素之躯-庇在抽取池中的出现权重(越大越常出现,0 = 不出现)");
			ElementalHealWeight = Bind(config, "6-强化系统", "元素之躯-愈权重", 1, "元素之躯-愈在抽取池中的出现权重(越大越常出现,0 = 不出现)");
			ElementalReflectWeight = Bind(config, "6-强化系统", "元素之躯-逆权重", 1, "元素之躯-逆在抽取池中的出现权重(越大越常出现,0 = 不出现)");
			BalancedWeight = Bind(config, "6-强化系统", "均衡之体权重", 1, "均衡之体在抽取池中的出现权重(越大越常出现,0 = 不出现)");
			ReflectWeight = Bind(config, "6-强化系统", "反弹权重", 1, "反弹在抽取池中的出现权重(越大越常出现,0 = 不出现)");
			ShareWeight = Bind(config, "6-强化系统", "生命共享权重", 1, "生命共享在抽取池中的出现权重(越大越常出现,0 = 不出现)");
			AuthorityWeight = Bind(config, "6-强化系统", "生命权柄权重", 1, "生命权柄在抽取池中的出现权重(越大越常出现,0 = 不出现)");
			AssassinWeight = Bind(config, "6-强化系统", "刺客权重", 1, "刺客在抽取池中的出现权重(越大越常出现,0 = 不出现)");
			PriestWeight = Bind(config, "6-强化系统", "大祭司权重", 1, "大祭司在抽取池中的出现权重(越大越常出现,0 = 不出现)");
			DevourWeight = Bind(config, "6-强化系统", "吞噬权重", 1, "吞噬在抽取池中的出现权重(越大越常出现,0 = 不出现)");
			DesperateWeight = Bind(config, "6-强化系统", "背水一战权重", 1, "背水一战在抽取池中的出现权重(越大越常出现,0 = 不出现)");
			CharmWeight = Bind(config, "6-强化系统", "魅惑权重", 1, "魅惑在抽取池中的出现权重(越大越常出现,0 = 不出现)");
			ParasiteWeight = Bind(config, "6-强化系统", "寄生权重", 1, "寄生在抽取池中的出现权重(越大越常出现,0 = 不出现)");
			ManavoidWeight = Bind(config, "6-强化系统", "禁魔领域权重", 1, "禁魔领域在抽取池中的出现权重(越大越常出现,0 = 不出现)");
			ShadowWeight = Bind(config, "6-强化系统", "阴影杀手权重", 1, "阴影杀手在抽取池中的出现权重(越大越常出现,0 = 不出现)");
			TwinWeight = Bind(config, "6-强化系统", "双子星权重", 1, "双子星在抽取池中的出现权重(越大越常出现,0 = 不出现)");
			RoninWeight = Bind(config, "6-强化系统", "流浪武士权重", 1, "流浪武士在抽取池中的出现权重(越大越常出现,0 = 不出现)");
			ChaosWeight = Bind(config, "6-强化系统", "混沌行者权重", 1, "混沌行者在抽取池中的出现权重(越大越常出现,0 = 不出现)");
			LuckyWeight = Bind(config, "6-强化系统", "幸运教徒权重", 1, "幸运教徒在抽取池中的出现权重(越大越常出现,0 = 不出现)");
			FireApostleWeight = Bind(config, "6-强化系统", "火之使徒权重", 1, "火之使徒在抽取池中的出现权重(越大越常出现,0 = 不出现)");
			IceApostleWeight = Bind(config, "6-强化系统", "冰之使徒权重", 1, "冰之使徒在抽取池中的出现权重(越大越常出现,0 = 不出现)");
			TwinBladeWeight = Bind(config, "6-强化系统", "双刀流权重", 1, "双刀流在抽取池中的出现权重(越大越常出现,0 = 不出现)");
			PoisonApostleWeight = Bind(config, "6-强化系统", "毒之使徒权重", 1, "毒之使徒在抽取池中的出现权重(越大越常出现,0 = 不出现)");
			MartyrWeight = Bind(config, "6-强化系统", "死士权重", 1, "死士在抽取池中的出现权重(越大越常出现,0 = 不出现)");
			VoidWeight = Bind(config, "6-强化系统", "虚化权重", 1, "虚化在抽取池中的出现权重(越大越常出现,0 = 不出现)");
			TimeHunterWeight = Bind(config, "6-强化系统", "时空猎人权重", 1, "时空猎人在抽取池中的出现权重(越大越常出现,0 = 不出现)");
			SunApostleWeight = Bind(config, "6-强化系统", "太阳使徒权重", 1, "太阳使徒在抽取池中的出现权重(越大越常出现,0 = 不出现)");
			NightApostleWeight = Bind(config, "6-强化系统", "黑夜使徒权重", 1, "黑夜使徒在抽取池中的出现权重(越大越常出现,0 = 不出现)");
			FlurryWeight = Bind(config, "6-强化系统", "乱舞一通权重", 1, "乱舞一通在抽取池中的出现权重(越大越常出现,0 = 不出现)");
			LootBoostEnabled = Bind(config, "7-掉落调整", "掉落加成总开关", def: true, "是否启用强化怪掉落加成(按星级与词条提升掉落概率,并增加掉落数量)\ntrue: 启用\nfalse: 关闭,完全走原版掉落");
			LootChancePerStar = Bind(config, "7-掉落调整", "每星掉落概率加成", 0.2f, "每多一星,所有掉落项概率额外提升的倍率(0.2 = +20%/星)\n注意:原版已按 2^(星级) 放大掉落概率与数量,此处为额外叠加");
			LootChancePerEnhance = Bind(config, "7-掉落调整", "词条掉落概率加成", 0.5f, "怪物带强化词条时,所有掉落项概率额外提升的倍率(0.5 = +50%)");
			LootChanceCap = Bind(config, "7-掉落调整", "掉落概率封顶", 1f, "掉落项基础概率提升后的封顶值(1 = 100%),避免概率>1 破坏原版伪掉落判定");
			LootAmountPerStar = Bind(config, "7-掉落调整", "每星额外掉落数量", 0, "每个掉落项实际掉出时,数量额外增加 星级 × 此值(对所有掉落项生效)\n0 = 不额外增加(默认,与原版一致)\n例:填 2,2 星怪每种掉落物多掉 4 个");
			LootRareBonus = Bind(config, "7-掉落调整", "稀有物数量加成", 0, "稀有物实际掉出时额外增加的个数(在「每星额外掉落数量」之上再叠加)\n稀有物 = 掉落表中概率最低者(并列全算),并列多个时再取数量最少者\n0 = 不增加(默认,避免高星怪稀有物泛滥)");
			LootStackEnabled = Bind(config, "7-掉落调整", "堆叠掉落开关", def: true, "怪物死亡时把同类掉落合并成堆\n原因:原版对每个单位都生成一个掉落物 GameObject,数量大时会明显卡顿\ntrue: 堆叠掉落(拾取时一次拿一整堆)\nfalse: 走原版逐个掉落");
			LootMaxPerItem = Bind(config, "7-掉落调整", "单个物品掉落上限", 20, "同一怪物掉落表中,每种物品各自的掉落数量上限(超出直接截断,互不影响)\n用于压制高星怪单个物品掉出一大堆,又不会像总量上限那样把正常物品一起削减\n0 = 不限制(仍受原版硬编码单项 100 封顶)");
			LootStarMultCap = Bind(config, "7-掉落调整", "星级掉落倍率上限", 4, "原版按 2^(星级) 同时放大掉落概率与数量(2 星=×4,3 星=×8),此值给该倍率封顶以压平高星曲线\n4 = 3 星及以上按 2 星(×4)计算(默认)\n8 = 保留 3 星原版倍率\n1 = 完全取消星级放大\n0 = 不限制");
			ManavoidEnabled = Bind(config, "8-禁魔领域", "是否启用", def: true, "是否启用禁魔领域效果(周期性光波使玩家禁魔)");
			ManavoidAllowedTypes = BindAllowed(config, "8-禁魔领域", "小boss,boss", "适用怪物类型,逗号分隔(Regular/Miniboss/Boss)");
			ManavoidInterval = Bind(config, "8-禁魔领域", "光波间隔", 8f, "两次光波的间隔秒数");
			ManavoidRange = Bind(config, "8-禁魔领域", "作用半径", 6f, "光波的作用半径(米)");
			ManavoidDuration = Bind(config, "8-禁魔领域", "禁魔持续", 5f, "禁魔状态的持续秒数(期间魔力锁定为 0)");
			ManavoidChatEnabled = Bind(config, "8-禁魔领域", "文本提示", def: true, "施放时是否显示头顶台词");
			ShadowEnabled = Bind(config, "8-阴影杀手", "是否启用", def: true, "是否启用阴影杀手效果(蛰伏隐身/破隐 200%/重新蛰伏)");
			ShadowAllowedTypes = BindAllowed(config, "8-阴影杀手", "小怪,小boss", "适用怪物类型,逗号分隔(Regular/Miniboss/Boss)");
			ShadowLowHpThreshold = Bind(config, "8-阴影杀手", "低血阈值", 0.4f, "低血目标的血量比例阈值(低于此值才会被狩猎)");
			ShadowSearchRange = Bind(config, "8-阴影杀手", "探测半径", 20f, "蛰伏时探测低血目标的半径(米)");
			ShadowBreakDamage = Bind(config, "8-阴影杀手", "破隐伤害倍率", 2f, "破隐后首次攻击的伤害倍率(200% = 2)");
			ShadowRehideDelay = Bind(config, "8-阴影杀手", "重新蛰伏间隔", 60f, "破隐后重新进入蛰伏的秒数");
			ShadowChatEnabled = Bind(config, "8-阴影杀手", "文本提示", def: true, "破隐时是否显示头顶台词");
			PriestSiphonRange = Bind(config, "8-大祭司", "耐力虹吸半径", 8f, "耐力虹吸的作用半径(米)");
			PriestSiphonLockDuration = Bind(config, "8-大祭司", "体力锁定持续", 3f, "耐力虹吸后玩家体力锁定的秒数");
			TwinEnabled = Bind(config, "8-双子星", "是否启用", def: true, "是否启用双子星效果(分裂成一对/生命链接/双死才死)");
			TwinAllowedTypes = BindAllowed(config, "8-双子星", "小怪,小boss", "适用怪物类型,逗号分隔(Regular/Miniboss/Boss)");
			TwinDeadDiff = Bind(config, "8-双子星", "双死血量差", 0.1f, "双死判定的血量百分比差阈值(两只差≤此值同时濒死才真死)");
			TwinReviveDelay = Bind(config, "8-双子星", "复活延迟", 2f, "单只先死时的复活延迟秒数");
			TwinChatEnabled = Bind(config, "8-双子星", "文本提示", def: true, "分裂时是否显示头顶台词");
			RoninEnabled = Bind(config, "8-流浪武士", "是否启用", def: true, "是否启用流浪武士效果(快攻/加速/增伤)");
			RoninAllowedTypes = BindAllowed(config, "8-流浪武士", "小怪,小boss", "适用怪物类型,逗号分隔(Regular/Miniboss/Boss)");
			RoninAttackInterval = Bind(config, "8-流浪武士", "最短攻击间隔", 0.1f, "冷却最短的攻击间隔秒数");
			RoninAnimSpeed = Bind(config, "8-流浪武士", "攻击动画倍率", 1.3f, "攻击动画速度倍率(1.3 = 加快 30%)");
			RoninDamageMul = Bind(config, "8-流浪武士", "伤害倍率", 1.5f, "攻击伤害倍率(1.5 = +50%)");
			ChaosEnabled = Bind(config, "8-混沌行者", "是否启用", def: true, "是否启用混沌行者效果(每次攻击随机切换伤害类型)");
			ChaosAllowedTypes = BindAllowed(config, "8-混沌行者", "小怪,小boss", "适用怪物类型,逗号分隔(Regular/Miniboss/Boss)");
			LuckyEnabled = Bind(config, "8-幸运教徒", "是否启用", def: true, "是否启用幸运教徒效果(伤害 -1000%~+1000% 浮动)");
			LuckyAllowedTypes = BindAllowed(config, "8-幸运教徒", "小怪,小boss", "适用怪物类型,逗号分隔(Regular/Miniboss/Boss)");
			LuckyMin = Bind(config, "8-幸运教徒", "浮动下限", -10f, "伤害浮动下限(-10 = -1000%,负值给敌人回血)");
			LuckyMax = Bind(config, "8-幸运教徒", "浮动上限", 10f, "伤害浮动上限(10 = +1000%)");
			FlurryEnabled = Bind(config, "8-乱舞一通", "是否启用", def: true, "是否启用乱舞一通效果(每次攻击的攻击动画速度在区间内随机选择,忽快忽慢难以预判)");
			FlurryAllowedTypes = BindAllowed(config, "8-乱舞一通", "小怪,小boss", "乱舞一通适用怪物类型,逗号分隔(Regular/Miniboss/Boss)");
			FlurryMinSpeed = Bind(config, "8-乱舞一通", "攻速下限", 0.4f, "每次攻击攻速倍率下限(0.4 = 40%,攻击动画变慢)");
			FlurryMaxSpeed = Bind(config, "8-乱舞一通", "攻速上限", 2f, "每次攻击攻速倍率上限(2 = 200%,攻击动画翻倍)");
			LeechEnabled = Bind(config, "8-吸血", "是否启用", def: true, "是否启用吸血效果(攻击时回复自身生命)");
			LeechAllowedTypes = BindAllowed(config, "8-吸血", "小怪", "吸血适用怪物类型,逗号分隔(Regular/Miniboss/Boss)");
			LeechHealRatio = Bind(config, "8-吸血", "吸血比例", 0.5f, "造成伤害时回复自身该比例的伤害值(0.5 表示回复 50%)");
			LeechChatEnabled = Bind(config, "8-吸血", "文本开关", def: true, "吸血触发时是否显示头顶气泡(提示玩家一波爆发秒杀,别打持久战)");
			VenomEnabled = Bind(config, "8-毒爪", "是否启用", def: true, "是否启用毒爪效果(攻击附带中毒)");
			VenomAllowedTypes = BindAllowed(config, "8-毒爪", "小怪", "毒爪适用怪物类型,逗号分隔(Regular/Miniboss/Boss)");
			VenomChatEnabled = Bind(config, "8-毒爪", "文本开关", def: true, "毒爪命中时是否显示头顶气泡(提示玩家备好解毒剂)");
			VenomDamage = Bind(config, "8-毒爪", "中毒总伤害", 20f, "单次命中注入的原版毒素持续伤害总量(>0 才生效,SE 按秒逐段扣除)");
			OpportunistEnabled = Bind(config, "8-机会主义者", "是否启用", def: true, "是否启用机会主义者效果(攻击破防目标时重置所有攻击冷却、取消迂回,直接衔接下一次攻击)");
			OpportunistAllowedTypes = BindAllowed(config, "8-机会主义者", "小怪", "机会主义者适用怪物类型,逗号分隔(Regular/Miniboss/Boss)");
			OpportunistChatEnabled = Bind(config, "8-机会主义者", "文本开关", def: true, "破防时是否显示头顶嘲讽(提示玩家别硬格挡)");
			WolfMasterEnabled = Bind(config, "8-训狼大师", "是否启用", def: true, "是否启用训狼大师效果(生成时召唤狼群,周期下达指令,狼死亡后补员)");
			WolfMasterAllowedTypes = BindAllowed(config, "8-训狼大师", "小怪,小boss", "训狼大师适用怪物类型,逗号分隔(Regular/Miniboss/Boss)");
			WolfMasterChatEnabled = Bind(config, "8-训狼大师", "文本开关", def: true, "召唤/补员/下达指令时是否显示头顶气泡");
			WolfMasterCount = Bind(config, "8-训狼大师", "狼数量", 3, "训狼大师召唤的狼群满员数量");
			WolfMasterCastTime = Bind(config, "8-训狼大师", "施法时长", 1f, "召唤或下指令时怪物停止移动攻击的秒数(施法动画)");
			WolfMasterCommandInterval = Bind(config, "8-训狼大师", "指令间隔", 15f, "怪物周期下达指令(进攻/防守/撤退)的间隔秒数");
			WolfMasterRespawnInterval = Bind(config, "8-训狼大师", "补员间隔", 10f, "狼被击杀后重新召唤一只的间隔秒数");
			WolfMasterHealthPercent = Bind(config, "8-训狼大师", "生命比例", 0.4f, "狼的生命值为怪物的比例(星级倍率后再乘)");
			WolfMasterDamagePercent = Bind(config, "8-训狼大师", "攻击比例", 0.4f, "狼的攻击伤害为怪物的比例");
			WolfMasterFollowDistance = Bind(config, "8-训狼大师", "跟随距离", 4f, "防守/撤退指令下狼跟随怪物时允许的最大距离(超出则拉近)");
			WolfMasterAttackSpeed = Bind(config, "8-训狼大师", "战斗攻速倍率", 1.3f, "战斗指令下狼攻击动画速度倍率(1.3 = 加快 30%)");
			WolfMasterAttackCooldown = Bind(config, "8-训狼大师", "战斗冷却倍率", 0.7f, "战斗指令下狼攻击冷却倍率(0.7 = 缩减 30%)");
			WolfMasterMoveSpeed = Bind(config, "8-训狼大师", "战斗移速倍率", 1.3f, "战斗指令下狼移动速度倍率(1.3 = 加快 30%)");
			WolfMasterRetreatHeal = Bind(config, "8-训狼大师", "撤退回血比例", 0.01f, "撤退指令下狼与怪物每秒回复的生命值比例(0.01 = 每秒 1%)");
			BloodHunterEnabled = Bind(config, "8-血猎人", "是否启用", def: true, "血猎人强化总开关");
			BloodHunterAllowedTypes = BindAllowed(config, "8-血猎人", "小怪,小boss", "允许生成血猎人的怪物类型(Regular,Miniboss,Boss 逗号分隔)");
			BloodHunterChatEnabled = Bind(config, "8-血猎人", "文本开关", def: true, "狩猎进入/击杀气泡与玩家被狩猎的屏幕提示");
			BloodHunterHuntPct = Bind(config, "8-血猎人", "狩猎生命阈值", 0.2f, "周围敌对目标生命低于此比例时进入狩猎状态(0.2 = 20%),目标恢复到此比例以上则退出");
			BloodHunterExecutePct = Bind(config, "8-血猎人", "处决生命阈值", 0.05f, "狩猎状态下攻击目标生命低于此比例时一击必杀(0.05 = 5%)");
			BloodHunterMoveMul = Bind(config, "8-血猎人", "移速倍率", 1.5f, "狩猎状态下移动速度倍率(1.5 = +50%)");
			BloodHunterDamageMul = Bind(config, "8-血猎人", "伤害倍率", 1.5f, "狩猎状态下造成伤害的倍率(1.5 = +50%)");
			BloodHunterStaminaPct = Bind(config, "8-血猎人", "玩家耐力阈值", 0.5f, "狩猎目标为玩家时:耐力低于此比例取消迂回一直进攻,否则正常逻辑(0.5 = 50%)");
			BloodHunterSearchRange = Bind(config, "8-血猎人", "搜索半径", 15f, "进入狩猎状态时搜索周围敌对目标的范围(米)");
			LastStandEnabled = Bind(config, "8-临终反扑", "是否启用", def: true, "是否启用临终反扑效果(濒死吟唱自爆)");
			LastStandAllowedTypes = BindAllowed(config, "8-临终反扑", "小怪", "临终反扑适用怪物类型,逗号分隔(Regular/Miniboss/Boss)");
			LastStandHealthRatio = Bind(config, "8-临终反扑", "濒死血量比例", 0.2f, "血量低于该比例进入吟唱自爆(0-1)");
			LastStandCastTime = Bind(config, "8-临终反扑", "吟唱时长", 3f, "血量低于阈值后原地吟唱时长(秒),期间停止移动攻击,吟唱结束爆炸自杀");
			LastStandExplodeRadius = Bind(config, "8-临终反扑", "爆炸半径", 5f, "爆炸伤害范围半径(米)");
			LastStandExplodeDamageMul = Bind(config, "8-临终反扑", "爆炸伤害倍率", 3f, "爆炸伤害 = 怪物正常攻击伤害 × 该倍率(3 = 300%)");
			LastStandChatEnabled = Bind(config, "8-临终反扑", "文本开关", def: true, "进入吟唱时是否显示头顶气泡(提示玩家躲开)");
			PackEnabled = Bind(config, "8-集群之力", "是否启用", def: true, "是否启用集群之力效果(同种越多越强)");
			PackAllowedTypes = BindAllowed(config, "8-集群之力", "小怪", "集群之力适用怪物类型,逗号分隔(Regular/Miniboss/Boss)");
			PackDamagePerMember = Bind(config, "8-集群之力", "每只伤害加成", 0.15f, "同 zone 同种存活每多一只,伤害倍率 +0.15(第 2 只起算)");
			PackSpeedPerMember = Bind(config, "8-集群之力", "每只移速加成", 0.05f, "同 zone 同种存活每多一只,移速倍率 +0.05(第 2 只起算)");
			PackMaxBonus = Bind(config, "8-集群之力", "加成上限只数", 4, "加成的同类只数上限(封顶,防止数量无限叠加)");
			PackChatEnabled = Bind(config, "8-集群之力", "文本开关", def: true, "成员较多时是否显示头顶气泡(提示玩家先削减数量)");
			CurseEnabled = Bind(config, "8-诅咒之躯", "是否启用", def: true, "是否启用诅咒之躯效果(受击给攻击者叠诅咒层数)");
			CurseAllowedTypes = BindAllowed(config, "8-诅咒之躯", "小怪,小boss", "诅咒之躯适用怪物类型,逗号分隔(Regular/Miniboss/Boss)");
			CurseInterval = Bind(config, "8-诅咒之躯", "诅咒状态间隔", 30f, "进入诅咒状态的间隔秒数(战斗中才计时,脱战冻结)");
			CurseDuration = Bind(config, "8-诅咒之躯", "诅咒状态持续", 8f, "诅咒状态持续秒数(期间不攻击只追击,嘲讽附近玩家近战攻击转向自身)");
			CurseMaxStacks = Bind(config, "8-诅咒之躯", "层数上限", 5, "诅咒层数上限,叠满后目标直接死亡");
			CurseMarkDuration = Bind(config, "8-诅咒之躯", "诅咒标记持续", 15f, "诅咒标记持续秒数,超时层数清零(玩家 SE 栏显示倒计时)");
			CurseStackInterval = Bind(config, "8-诅咒之躯", "叠层间隔", 2f, "同一攻击者两次叠层的最小间隔秒数(防止连击快速叠满)");
			CurseTauntStackInterval = Bind(config, "8-诅咒之躯", "嘲讽叠层间隔", 1f, "嘲讽期间攻击叠诅咒的最小间隔秒数(比普通叠层间隔更短,被锁定的玩家叠层更快)");
			CurseTauntRange = Bind(config, "8-诅咒之躯", "嘲讽范围", 4f, "诅咒状态期间,该范围内玩家发起攻击会被嘲讽强制转向诅咒怪(米)");
			CurseChatEnabled = Bind(config, "8-诅咒之躯", "文本开关", def: true, "诅咒状态期间是否持续发出挑衅文本气泡(提示玩家别靠近)");
			DarkJudgeEnabled = Bind(config, "8-黑暗审判", "是否启用", def: true, "是否启用黑暗审判效果(周期对周围玩家施加审判)");
			DarkJudgeAllowedTypes = BindAllowed(config, "8-黑暗审判", "boss,小boss", "黑暗审判适用怪物类型,逗号分隔(Regular/Miniboss/Boss),可配置多个类型");
			DarkJudgeInterval = Bind(config, "8-黑暗审判", "施加间隔", 30f, "战斗状态下每隔多少秒对周围玩家施加一次黑暗审判");
			DarkJudgeDuration = Bind(config, "8-黑暗审判", "审判持续", 8f, "黑暗审判持续秒数(期间玩家视野受限、静止持续扣血)");
			DarkJudgeRange = Bind(config, "8-黑暗审判", "施加范围", 8f, "黑暗审判的施加范围(米)");
			DarkJudgeVisionDistance = Bind(config, "8-黑暗审判", "视野可见距离", 12f, "审判期间玩家能看到的最近距离(米),远处被暗雾吞没");
			DarkJudgePenaltyPercent = Bind(config, "8-黑暗审判", "静止扣血百分比", 0.03f, "审判期间玩家静止后每秒损失最大生命的百分比(0.03 表示每秒 3%,移动即停,无视护甲)");
			DarkJudgeChatEnabled = Bind(config, "8-黑暗审判", "文本开关", def: true, "施加审判时是否在怪物头顶显示宣告气泡(提示玩家保持移动)");
			AmaterasuEnabled = Bind(config, "8-天照", "是否启用", def: true, "是否启用天照效果(周期进入天照状态召唤小怪,杀小怪破盾)");
			AmaterasuAllowedTypes = BindAllowed(config, "8-天照", "boss", "天照适用怪物类型,逗号分隔(Regular/Miniboss/Boss),可配置多个类型");
			AmaterasuInterval = Bind(config, "8-天照", "进入间隔", 60f, "战斗状态下每隔多少秒尝试进入天照状态");
			AmaterasuMinionCount = Bind(config, "8-天照", "小怪数量", 5, "进入天照时在周围生成的主怪缩小版小怪数量");
			AmaterasuHealInterval = Bind(config, "8-天照", "回血间隔", 5f, "天照期间每多少秒回复一次生命");
			AmaterasuHealPercent = Bind(config, "8-天照", "回血比例", 0.05f, "天照期间每次回复最大生命的比例(0.05 表示每次回 5%)");
			AmaterasuBoomToBreak = Bind(config, "8-天照", "护盾承受爆炸次数", 4, "天照护盾可承受的小怪爆炸次数(每次爆炸 -1,归零破盾;默认 4 次破盾)");
			AmaterasuBoomRadius = Bind(config, "8-天照", "爆炸范围", 12f, "小怪死亡爆炸的半径(米),天照 boss 在爆炸范围内才降低护盾耐久(把小怪引远击杀可避免破盾)");
			AmaterasuBreakHealthPercent = Bind(config, "8-天照", "破盾扣血比例", 0.1f, "护盾被打破时扣除最大生命的比例(0.10 表示扣 10%)");
			AmaterasuChatEnabled = Bind(config, "8-天照", "文本开关", def: true, "进入天照/破盾/满血退出的气泡文本(提示玩家杀小怪破盾)");
			DuelEnabled = Bind(config, "8-死斗", "是否启用", def: true, "是否启用死斗效果(boss 生命低于触发线后进入死斗,标记目标死斗)");
			DuelAllowedTypes = BindAllowed(config, "8-死斗", "boss,小boss", "死斗适用怪物类型,逗号分隔(Regular/Miniboss/Boss),可配置多个类型");
			DuelTriggerHealth = Bind(config, "8-死斗", "触发血量比例", 0.15f, "生命低于该比例(0.15 表示 15%)时进入死斗状态");
			DuelAttackSpeedMult = Bind(config, "8-死斗", "攻速倍率", 2f, "死斗期间攻击速度倍率(2 表示攻速 +100%,攻击动画加速)");
			DuelCooldownMult = Bind(config, "8-死斗", "攻击冷却倍率", 0.5f, "死斗期间攻击冷却倍率(0.5 表示攻击间隔减半,冷却 -50%)");
			DuelMoveSpeedMult = Bind(config, "8-死斗", "移动速度倍率", 1.3f, "死斗期间移动速度倍率(1.3 表示移速 +30%)");
			DuelChatEnabled = Bind(config, "8-死斗", "文本开关", def: true, "进入死斗/死斗标记的气泡文本(提示玩家被锁定、无法传送)");
			ArenaEnabled = Bind(config, "8-疯狂角斗场", "是否启用", def: true, "是否启用疯狂角斗场效果(boss 生命降至触发档位时生成角斗场护罩,强制目标一对一决斗)");
			ArenaAllowedTypes = BindAllowed(config, "8-疯狂角斗场", "boss", "疯狂角斗场适用怪物类型,逗号分隔(Regular/Miniboss/Boss),可配置多个类型");
			ArenaTriggerHealths = Bind(config, "8-疯狂角斗场", "触发血量档位", "0.75,0.5,0.25", "触发角斗场的血量比例档位(逗号分隔,从高到低,每档一场决斗;决斗中掉到下一档不会触发)");
			ArenaRadius = Bind(config, "8-疯狂角斗场", "角斗场半径", 15f, "角斗场铺平地面半径(米),地面整平范围;护罩/围栏边界在此基础上内缩(见边界内缩量),保证圈内全是平地");
			ArenaBoundaryInset = Bind(config, "8-疯狂角斗场", "边界内缩量", 2f, "护罩/围栏半径相对铺平地面的内缩距离(米),边界小于平地范围,玩家在边界内活动不会卡在未铺平的地形上");
			ArenaPullDistance = Bind(config, "8-疯狂角斗场", "拉人距离", 3f, "开启决斗时把目标玩家拉到 boss 前方该身位(米),拉取过程有可见拖拽轨迹");
			ArenaPullTime = Bind(config, "8-疯狂角斗场", "拉取施法时长", 1.5f, "拉取施法时长(秒),期间 boss 原地吟唱停止攻击移动,目标玩家被可见轨迹拉向 boss");
			ArenaCountdown = Bind(config, "8-疯狂角斗场", "倒计时秒数", 3f, "拉取到位后 3 秒倒计时(怪物原地待机,给玩家拉开距离的时间)");
			ArenaDuration = Bind(config, "8-疯狂角斗场", "决斗时长", 60f, "决斗持续秒数,到时或目标死亡则取消护罩、地形复原");
			ArenaBossScale = Bind(config, "8-疯狂角斗场", "boss体型缩放", 0.6f, "决斗期间 boss 体型缩放(0.6 = 缩小为 60%,决斗结束恢复)");
			ArenaFenceHeight = Bind(config, "8-疯狂角斗场", "围栏高度", 0.8f, "角斗场边缘矮围栏高度(米),标示角斗场边界并防止滑出");
			ArenaFenceCount = Bind(config, "8-疯狂角斗场", "围栏立柱数量", 40, "围栏立柱数量(沿平台边缘均匀分布,越多越密集)");
			ArenaCooldownMult = Bind(config, "8-疯狂角斗场", "攻击冷却倍率", 0.2f, "决斗期间 boss 攻击冷却倍率(0.2 表示冷却降低 80%、攻击频率大幅提高,决斗结束恢复)");
			ArenaAttackSpeedMult = Bind(config, "8-疯狂角斗场", "攻击动画速度倍率", 1.5f, "决斗期间 boss 攻击动画速度倍率(1.5 表示攻击动画提速 50%,只影响攻击动作,决斗结束恢复)");
			ArenaShieldHeightScale = Bind(config, "8-疯狂角斗场", "护罩高度拉伸", 2f, "护罩高度拉伸倍数(2 表示比默认高度拉高一倍,护罩直径与铺平平地直径一致)");
			ArenaChatEnabled = Bind(config, "8-疯狂角斗场", "文本开关", def: true, "进入决斗宣告/倒计时/结束的气泡文本");
			ThiefEnabled = Bind(config, "8-盗贼", "是否启用", def: true, "是否启用盗贼效果(攻击命中玩家偷取背包未装备物品,击杀掉落归还)");
			ThiefAllowedTypes = BindAllowed(config, "8-盗贼", "小怪,小boss", "盗贼适用怪物类型,逗号分隔(Regular/Miniboss/Boss),可配置多个类型");
			ThiefMoveSpeedMult = Bind(config, "8-盗贼", "移速倍率", 1.4f, "盗贼移速倍率(1.4 表示移速提高 40%)");
			ThiefDamageMult = Bind(config, "8-盗贼", "攻击伤害倍率", 0.6f, "盗贼攻击伤害倍率(0.6 表示攻击伤害降低 40%)");
			ThiefAttackSpeedMult = Bind(config, "8-盗贼", "偷取前攻速倍率", 1.5f, "偷到前攻击欲望阶段攻击动画速度倍率(1.5 = 动画提速 50%,只影响攻击动作)");
			ThiefCooldownMult = Bind(config, "8-盗贼", "偷取前冷却倍率", 0.3f, "偷到前攻击欲望阶段攻击冷却倍率(0.3 = 冷却降低 70%,疯狂连击)");
			ThiefFleeDuration = Bind(config, "8-盗贼", "逃跑持续秒数", 8f, "偷到后逃跑持续秒数,之后贪念再生、恢复攻击继续偷");
			ThiefChatEnabled = Bind(config, "8-盗贼", "文本开关", def: true, "偷到/逃跑/贪念恢复的气泡文本");
			ThiefStealChance = Bind(config, "8-盗贼", "偷取概率", 1f, "攻击命中造成实际伤害时偷取背包的概率(1 = 100% 必偷,0.5 = 50%,0 = 从不偷取)");
			FireApostleEnabled = Bind(config, "8-火之使徒", "是否启用", def: true, "是否启用火之使徒效果(高火伤抗性、攻击全转火元素灼烧、灼烧伤害提高)");
			FireApostleAllowedTypes = BindAllowed(config, "8-火之使徒", "小怪,小boss", "火之使徒适用怪物类型,逗号分隔(Regular/Miniboss/Boss),可配置多个类型");
			FireApostleDamageMult = Bind(config, "8-火之使徒", "灼烧伤害倍率", 2f, "攻击全转火后灼烧 DOT 伤害倍率(2 = 灼烧总量翻倍;倍率只影响灼烧持续伤害总量,不受目标火抗影响)");
			IceApostleEnabled = Bind(config, "8-冰之使徒", "是否启用", def: true, "是否启用冰之使徒效果(高冰伤抗性、攻击全转冰元素减速、按冰冻目标数量叠加双速)");
			IceApostleAllowedTypes = BindAllowed(config, "8-冰之使徒", "小怪,小boss", "冰之使徒适用怪物类型,逗号分隔(Regular/Miniboss/Boss),可配置多个类型");
			IceApostleSpeedPerLayer = Bind(config, "8-冰之使徒", "每层双速加成", 0.1f, "每有一个被冰冻的目标,移速与攻速各提升的比例(0.1 = 每层 +10%)");
			IceApostleMaxLayers = Bind(config, "8-冰之使徒", "最大叠加层数", 5, "双速加成的最大层数(5 层 = 上限 +50%),超过按该值封顶");
			IceApostleScanRadius = Bind(config, "8-冰之使徒", "检测半径", 20f, "冰冻目标检测半径(米),范围内被冰冻的目标计入双速加成层数");
			IceApostleScanInterval = Bind(config, "8-冰之使徒", "检测间隔", 1f, "冰冻目标扫描间隔秒数(1 = 每秒检测一次,层数变化才更新双速,防抖动)");
			TwinBladeEnabled = Bind(config, "8-双刀流", "是否启用", def: true, "是否启用双刀流效果(攻击动画加快 + 每次攻击伤害翻倍模拟连续两刀)");
			TwinBladeAllowedTypes = BindAllowed(config, "8-双刀流", "小怪,小boss", "双刀流适用怪物类型,逗号分隔(Regular/Miniboss/Boss),可配置多个类型");
			TwinBladeAttackSpeedMult = Bind(config, "8-双刀流", "攻速动画倍率", 1.5f, "攻击动画速度倍率(1.5 = 攻击动作加快 50%,只影响动作速度不影响攻击频率)");
			TwinBladeDamageMult = Bind(config, "8-双刀流", "伤害倍率", 2f, "总伤害倍率:每次攻击打出两段伤害(两个伤害数字),单段 = 原伤害 × 该倍率 ÷ 2(2 = 每段都是原伤害,两段合计翻倍)");
			PoisonApostleEnabled = Bind(config, "8-毒之使徒", "是否启用", def: true, "是否启用毒之使徒效果(高毒伤抗性、攻击全转毒元素、命中引爆目标剩余毒素伤害并重新施加)");
			PoisonApostleAllowedTypes = BindAllowed(config, "8-毒之使徒", "小怪,小boss", "毒之使徒适用怪物类型,逗号分隔(Regular/Miniboss/Boss),可配置多个类型");
			MartyrEnabled = Bind(config, "8-死士", "是否启用", def: true, "是否启用死士效果(不攻击直冲目标,接近后两秒前摇自爆,造成自身最大生命值的范围伤害后自杀)");
			MartyrAllowedTypes = BindAllowed(config, "8-死士", "小怪,小boss", "死士适用怪物类型,逗号分隔(Regular/Miniboss/Boss),可配置多个类型");
			MartyrFuseTime = Bind(config, "8-死士", "前摇秒数", 2f, "接近目标后自爆前摇时长(秒),前摇期间无敌且站定,结束后爆炸");
			MartyrTriggerRange = Bind(config, "8-死士", "触发距离", 3f, "与目标距离小于该值(米)时进入自爆前摇");
			MartyrBlastRadius = Bind(config, "8-死士", "爆炸半径", 5f, "自爆 AOE 爆炸半径(米),范围内所有玩家受到伤害");
			MartyrDamageMult = Bind(config, "8-死士", "自爆伤害倍率", 1f, "自爆伤害 = 怪物最大生命值 × 该倍率(1 = 造成自身最大生命值伤害)");
			VoidEnabled = Bind(config, "8-虚化", "是否启用", def: true, "是否启用虚化效果(非攻击时虚化:关闭碰撞无碰撞可穿墙、免疫伤害,攻击动画期间实体化可被攻击)");
			VoidAllowedTypes = BindAllowed(config, "8-虚化", "小怪", "虚化适用怪物类型,逗号分隔(Regular/Miniboss/Boss),可配置多个类型");
			TimeHunterEnabled = Bind(config, "8-时空猎人", "是否启用", def: true, "是否启用时空猎人效果(每次攻击前瞬移到目标背后发动攻击,远程怪保持远距)");
			TimeHunterAllowedTypes = BindAllowed(config, "8-时空猎人", "小怪", "时空猎人适用怪物类型,逗号分隔(Regular/Miniboss/Boss),可配置多个类型");
			TimeHunterTeleportRadius = Bind(config, "8-时空猎人", "瞬移半径", 20f, "目标进入该半径(米)内时触发瞬移,超出则正常追击");
			TimeHunterInterval = Bind(config, "8-时空猎人", "瞬移冷却", 3f, "两次瞬移的最小间隔(秒),防止连续背袭");
			TimeHunterExecuteInterval = Bind(config, "8-时空猎人", "时空斩杀冷却", 30f, "时空斩杀触发间隔(秒):以目标为中心 6 方位依次瞬移攻击,优先于普通瞬移");
			TimeHunterExecuteSpeedMult = Bind(config, "8-时空猎人", "时空斩杀攻速", 3f, "时空斩杀期间攻击速度倍率(1 = 原速;3 = 加快 200% 即三倍速)");
			TimeHunterExecuteStepInterval = Bind(config, "8-时空猎人", "时空斩杀步进间隔", 0.6f, "每次瞬移攻击的间隔(秒),上一次攻击未完成会自动等待");
			SunApostleEnabled = Bind(config, "8-太阳使徒", "是否启用", def: true, "是否启用太阳使徒效果(白天随昼夜曲线渐变增益,正午达到巅峰:攻击/生命上限×5、每秒回10%最大生命、移速攻速+100%、冷却缩减90%、体型增大100%、只进攻不迂回;黑夜弱化:攻击与生命上限-25%、只迂回不进攻)");
			SunApostleAllowedTypes = BindAllowed(config, "8-太阳使徒", "小怪,小boss", "太阳使徒适用怪物类型,逗号分隔(Regular/Miniboss/Boss),可配置多个类型");
			SunApostleAttackMult = Bind(config, "8-太阳使徒", "正午攻击倍率", 5f, "正午时攻击伤害倍率(5 = 攻击力500%,随昼夜强度渐变,黑夜最低为黑夜攻击倍率)");
			SunApostleHealthMult = Bind(config, "8-太阳使徒", "正午生命上限倍率", 5f, "正午时最大生命倍率(5 = 生命上限500%,随昼夜强度渐变;降上限时超出部分按原版规则扣除)");
			SunApostleRegenPerSec = Bind(config, "8-太阳使徒", "正午回复每秒比例", 0.1f, "正午时每秒回复最大生命的比例(0.1 = 每秒回复10%,即2%基准×500%;回复量随昼夜强度渐变)");
			SunApostleMoveSpeedMult = Bind(config, "8-太阳使徒", "正午移速倍率", 2f, "正午时移动速度倍率(2 = 移速+100%,随昼夜强度渐变,黑夜不降移速)");
			SunApostleAttackSpeedMult = Bind(config, "8-太阳使徒", "正午攻速倍率", 2f, "正午时攻击动画速度倍率(2 = 攻速+100%,随昼夜强度渐变,黑夜不降攻速)");
			SunApostleCooldownMult = Bind(config, "8-太阳使徒", "正午冷却倍率", 0.1f, "正午时攻击冷却倍率(0.1 = 冷却缩减90%,随昼夜强度渐变,黑夜不降冷却)");
			SunApostleScaleMult = Bind(config, "8-太阳使徒", "正午体型倍率", 2f, "正午时体形缩放倍率(2 = 体型增大100%,随昼夜强度渐变,黑夜恢复原体型)");
			SunApostleNightAttackMult = Bind(config, "8-太阳使徒", "黑夜攻击倍率", 0.75f, "黑夜时攻击伤害倍率(0.75 = 攻击力-25%)");
			SunApostleNightHealthMult = Bind(config, "8-太阳使徒", "黑夜生命上限倍率", 0.75f, "黑夜时最大生命倍率(0.75 = 生命上限-25%)");
			NightApostleEnabled = Bind(config, "8-黑夜使徒", "是否启用", def: true, "是否启用黑夜使徒效果(与太阳使徒相反:黑夜随昼夜曲线渐变增益,午夜达到巅峰:攻击/生命上限×5、每秒回10%最大生命、移速攻速+100%、冷却缩减90%、体型增大100%、只进攻不迂回;白天弱化:攻击与生命上限-25%、只迂回不进攻)");
			NightApostleAllowedTypes = BindAllowed(config, "8-黑夜使徒", "小怪,小boss", "黑夜使徒适用怪物类型,逗号分隔(Regular/Miniboss/Boss),可配置多个类型");
			NightApostleAttackMult = Bind(config, "8-黑夜使徒", "午夜攻击倍率", 5f, "午夜时攻击伤害倍率(5 = 攻击力500%,随昼夜强度渐变,白天最低为白天攻击倍率)");
			NightApostleHealthMult = Bind(config, "8-黑夜使徒", "午夜生命上限倍率", 5f, "午夜时最大生命倍率(5 = 生命上限500%,随昼夜强度渐变;降上限时超出部分按原版规则扣除)");
			NightApostleRegenPerSec = Bind(config, "8-黑夜使徒", "午夜回复每秒比例", 0.1f, "午夜时每秒回复最大生命的比例(0.1 = 每秒回复10%,即2%基准×500%;回复量随昼夜强度渐变)");
			NightApostleMoveSpeedMult = Bind(config, "8-黑夜使徒", "午夜移速倍率", 2f, "午夜时移动速度倍率(2 = 移速+100%,随昼夜强度渐变,白天不降移速)");
			NightApostleAttackSpeedMult = Bind(config, "8-黑夜使徒", "午夜攻速倍率", 2f, "午夜时攻击动画速度倍率(2 = 攻速+100%,随昼夜强度渐变,白天不降攻速)");
			NightApostleCooldownMult = Bind(config, "8-黑夜使徒", "午夜冷却倍率", 0.1f, "午夜时攻击冷却倍率(0.1 = 冷却缩减90%,随昼夜强度渐变,白天不降冷却)");
			NightApostleScaleMult = Bind(config, "8-黑夜使徒", "午夜体型倍率", 2f, "午夜时体形缩放倍率(2 = 体型增大100%,随昼夜强度渐变,白天恢复原体型)");
			NightApostleDayAttackMult = Bind(config, "8-黑夜使徒", "白天攻击倍率", 0.75f, "白天时攻击伤害倍率(0.75 = 攻击力-25%)");
			NightApostleDayHealthMult = Bind(config, "8-黑夜使徒", "白天生命上限倍率", 0.75f, "白天时最大生命倍率(0.75 = 生命上限-25%)");
			SoulEnabled = Bind(config, "8-魂返", "是否启用", def: true, "是否启用魂返效果(死亡倒地后可能灵魂回归复活)");
			SoulAllowedTypes = BindAllowed(config, "8-魂返", "小怪", "魂返适用怪物类型,逗号分隔(Regular/Miniboss/Boss),可配置多个类型");
			SoulDownDelay = Bind(config, "8-魂返", "倒地时长", 5f, "死亡后倒地秒数,到时判定复活(周围有同种怪)或真正死亡");
			SoulReviveRange = Bind(config, "8-魂返", "复活检测范围", 5f, "倒地后周围多少米内有同种正常存活怪则灵魂回归复活");
			SoulMinCount = Bind(config, "8-魂返", "保底魂返数量", 2, "强化赋予时周围含自己在内至少存在的带魂返同种怪数量,不足时自动生成补足");
			SoulChatEnabled = Bind(config, "8-魂返", "文本开关", def: true, "倒地呼救/复活宣言气泡(提示玩家附近还有同类就能复活)");
			EnrageEnabled = Bind(config, "8-狂暴", "是否启用", def: true, "是否启用 Boss 狂暴机制");
			EnrageAllowedTypes = BindAllowed(config, "8-狂暴", "boss", "狂暴适用怪物类型,逗号分隔(Regular/Miniboss/Boss),可配置多个类型");
			EnrageHealthThreshold = Bind(config, "8-狂暴", "触发血量比例", 0.3f, "Boss 血量低于该比例时触发狂暴(0-1)");
			EnrageDuration = Bind(config, "8-狂暴", "持续时间", 300f, "狂暴持续时间(秒)");
			EnrageAttackCooldownMul = Bind(config, "8-狂暴", "攻击冷却倍率", 0.5f, "狂暴期间攻击冷却倍率(0.5 表示冷却减半)");
			EnrageAttackSpeedMul = Bind(config, "8-狂暴", "攻击速度倍率", 1.5f, "狂暴期间攻击动画速度倍率(1.5 表示攻速提升 50%)");
			EnrageMoveSpeedMul = Bind(config, "8-狂暴", "移动速度倍率", 1.5f, "狂暴期间移动速度倍率(1.5 表示移速提升 50%)");
			EnrageChatEnabled = Bind(config, "8-狂暴", "狂暴文本开关", def: true, "狂暴触发时是否在 Boss 头顶显示嘲讽气泡文本(提示玩家应对办法)");
			SwiftEnabled = Bind(config, "8-迅捷", "是否启用", def: true, "是否启用迅捷效果");
			SwiftAllowedTypes = BindAllowed(config, "8-迅捷", "小怪", "迅捷适用怪物类型,逗号分隔(Regular/Miniboss/Boss)");
			SwiftMoveSpeedMul = Bind(config, "8-迅捷", "移动速度倍率", 1.3f, "迅捷移动速度倍率");
			SwiftAttackCooldownMul = Bind(config, "8-迅捷", "攻击冷却倍率", 0.8f, "迅捷攻击冷却倍率");
			RegenEnabled = Bind(config, "8-再生之躯", "是否启用", def: true, "是否启用再生之躯效果");
			RegenAllowedTypes = BindAllowed(config, "8-再生之躯", "小boss", "再生之躯适用怪物类型,逗号分隔(Regular/Miniboss/Boss)");
			RegenOutOfCombatDelay = Bind(config, "8-再生之躯", "脱战延迟", 5f, "脱战多少秒后开始回血");
			RegenHealPercent = Bind(config, "8-再生之躯", "回复百分比", 0.02f, "每秒回复最大生命值的百分比(0.02 表示每秒 2%)");
			ElementalEnabled = Bind(config, "8-元素之躯-庇", "是否启用", def: true, "是否启用元素之躯-庇(免疫当前元素伤害)");
			ElementalAllowedTypes = BindAllowed(config, "8-元素之躯-庇", "boss,小boss", "元素之躯-庇适用怪物类型,逗号分隔(Regular/Miniboss/Boss),可配置多个类型");
			ElementalInterval = Bind(config, "8-元素之躯", "切换间隔", 180f, "元素之躯(三种变体共用)每隔多少秒随机切换到另一个元素");
			ElementalWarnAhead = Bind(config, "8-元素之躯", "预告提前秒数", 10f, "元素之躯(三种变体共用)切换前多少秒在头顶显示预告气泡");
			ElementalHealEnabled = Bind(config, "8-元素之躯-愈", "是否启用", def: true, "是否启用元素之躯-愈(当前元素伤害转为治疗)");
			ElementalHealAllowedTypes = BindAllowed(config, "8-元素之躯-愈", "boss,小boss", "元素之躯-愈适用怪物类型,逗号分隔(Regular/Miniboss/Boss),可配置多个类型");
			ElementalReflectEnabled = Bind(config, "8-元素之躯-逆", "是否启用", def: true, "是否启用元素之躯-逆(当前元素伤害反弹给攻击者)");
			ElementalReflectAllowedTypes = BindAllowed(config, "8-元素之躯-逆", "boss,小boss", "元素之躯-逆适用怪物类型,逗号分隔(Regular/Miniboss/Boss),可配置多个类型");
			BalancedEnabled = Bind(config, "8-均衡之体", "是否启用", def: true, "是否启用均衡之体效果");
			BalancedAllowedTypes = BindAllowed(config, "8-均衡之体", "boss,小boss", "均衡之体适用怪物类型,逗号分隔(Regular/Miniboss/Boss),可配置多个类型");
			BalancedInterval = Bind(config, "8-均衡之体", "状态切换间隔", 60f, "每隔多少秒切换减伤态/增伤态");
			BalancedWindow = Bind(config, "8-均衡之体", "连续窗口", 5f, "多少秒内的攻击视为连续伤害(超过则重置连击计数)");
			BalancedReduceStart = Bind(config, "8-均衡之体", "减伤态首击倍率", 1.2f, "减伤态第一击的伤害倍率(默认 1.2 即 120%)");
			BalancedReduceStep = Bind(config, "8-均衡之体", "减伤态每击递减", 0.2f, "减伤态每连续一击倍率递减量,最低降到 0(免疫)");
			BalancedIncreaseStep = Bind(config, "8-均衡之体", "增伤态每击递增", 0.1f, "增伤态每连续一击倍率递增量(鼓励高频攻击)");
			BalancedIncreaseCap = Bind(config, "8-均衡之体", "增伤态倍率上限", 2f, "增伤态倍率上限(默认 2.0 即 200%)");
			BalancedWarnAhead = Bind(config, "8-均衡之体", "预告提前秒数", 5f, "形态切换前多少秒在头顶显示预告气泡");
			ReflectEnabled = Bind(config, "8-反弹", "是否启用", def: true, "是否启用反弹效果");
			ReflectAllowedTypes = BindAllowed(config, "8-反弹", "boss,小boss", "反弹适用怪物类型,逗号分隔(Regular/Miniboss/Boss),可配置多个类型");
			ReflectInterval = Bind(config, "8-反弹", "进入间隔秒数", 30f, "战斗状态下每隔多少秒进入一次反弹状态");
			ReflectDuration = Bind(config, "8-反弹", "反弹持续秒数", 8f, "反弹状态持续多少秒");
			ReflectWarnAhead = Bind(config, "8-反弹", "预告提前秒数", 3f, "进入反弹状态前多少秒在头顶显示预告气泡");
			ReflectChatEnabled = Bind(config, "8-反弹", "文本开关", def: true, "反弹预告气泡与玩家被反弹的屏幕提示");
			ShareEnabled = Bind(config, "8-生命共享", "是否启用", def: true, "是否启用生命共享效果");
			ShareAllowedTypes = BindAllowed(config, "8-生命共享", "小怪,小boss", "生命共享适用怪物类型,逗号分隔(Regular/Miniboss/Boss),可配置多个类型");
			ShareMinSame = Bind(config, "8-生命共享", "同类最少数量", 2, "小队内同种类存活数量 ≥ 该值才激活生命共享(至少两只同类才能互相回复)");
			ShareChatEnabled = Bind(config, "8-生命共享", "交流文本开关", def: true, "是否启用怪物受伤嘲讽气泡文本(提示玩家逐个击杀)");
			ShareChatCooldown = Bind(config, "8-生命共享", "嘲讽冷却秒数", 15f, "受伤嘲讽的最短间隔(秒),防止连续攻击刷屏");
			AuthorityEnabled = Bind(config, "8-生命权柄", "是否启用", def: true, "是否启用生命权柄效果");
			AuthorityAllowedTypes = BindAllowed(config, "8-生命权柄", "小怪,小boss", "生命权柄适用怪物类型,逗号分隔(Regular/Miniboss/Boss),可配置多个类型");
			AuthorityReviveDelay = Bind(config, "8-生命权柄", "倒地复活延迟", 5f, "头目存活时,小怪被击杀倒地多少秒后满血复活");
			AuthorityLeaderHealthMul = Bind(config, "8-生命权柄", "头目生命倍率", 1.5f, "头目最大生命倍率(1.5 表示生命值+50%)");
			AuthorityLeaderScaleMul = Bind(config, "8-生命权柄", "头目体型倍率", 1.2f, "头目体型放大倍率(1.2 表示体型+20%)");
			AuthorityMinMembers = Bind(config, "8-生命权柄", "最少小怪数量", 3, "头目外至少多少只小怪才成立小队(不足不触发倒地复活/头目强化)");
			AuthorityChatEnabled = Bind(config, "8-生命权柄", "交流文本开关", def: true, "是否启用小怪/头目的交流气泡文本");
			AssassinEnabled = Bind(config, "8-刺客", "是否启用", def: true, "是否启用刺客效果(进攻时隐身,发动攻击时现身)");
			AssassinAllowedTypes = BindAllowed(config, "8-刺客", "小怪,小boss", "刺客适用怪物类型,逗号分隔(Regular/Miniboss/Boss)");
			AssassinChatEnabled = Bind(config, "8-刺客", "文本开关", def: true, "刺客是否显示头顶文本(目前无专属文本,保留开关备用)");
			PriestEnabled = Bind(config, "8-大祭司", "是否启用", def: true, "是否启用大祭司效果(周期下达指令,光环强化周围同阵营怪物)");
			PriestAllowedTypes = BindAllowed(config, "8-大祭司", "boss,小boss", "大祭司适用怪物类型,逗号分隔(Regular/Miniboss/Boss)");
			PriestChatEnabled = Bind(config, "8-大祭司", "文本开关", def: true, "大祭司下达指令时是否显示头顶气泡");
			PriestCastTime = Bind(config, "8-大祭司", "施法时长", 1f, "下达指令时大祭司停止移动攻击的秒数(施法动画)");
			PriestCommandInterval = Bind(config, "8-大祭司", "指令间隔", 20f, "大祭司周期下达指令(攻击/移速/防御)的间隔秒数");
			PriestRange = Bind(config, "8-大祭司", "光环范围", 15f, "大祭司光环影响周围同阵营怪物的范围(米)");
			PriestAttackMul = Bind(config, "8-大祭司", "攻击指令伤害倍率", 1.3f, "攻击指令下友军怪物造成的伤害倍率(1.3 = +30%)");
			PriestSpeedMul = Bind(config, "8-大祭司", "移速指令移速倍率", 1.3f, "移速指令下友军怪物的移动速度倍率(1.3 = +30%)");
			PriestDefenseReduce = Bind(config, "8-大祭司", "防御指令减伤比例", 0.3f, "防御指令下友军怪物受到的伤害减免比例(0.3 = 减伤 30%)");
			DevourEnabled = Bind(config, "8-吞噬", "是否启用", def: true, "是否启用吞噬效果(生命低于阈值时吞噬周围友军生物,属性叠加)");
			DevourAllowedTypes = BindAllowed(config, "8-吞噬", "小怪,小boss", "吞噬适用怪物类型,逗号分隔(Regular/Miniboss/Boss)");
			DevourChatEnabled = Bind(config, "8-吞噬", "文本开关", def: true, "吞噬发动时是否显示头顶气泡");
			DevourTriggerPct = Bind(config, "8-吞噬", "触发生命阈值", 0.1f, "生命低于该比例时触发吞噬(0.10 = 10%)");
			DevourRange = Bind(config, "8-吞噬", "吞噬范围", 10f, "吞噬周围友军生物的范围(米)");
			DevourHealPct = Bind(config, "8-吞噬", "吞噬回血比例", 0.2f, "每吞噬一个友军回复最大生命的比例(0.2 = 20%)");
			DevourStatPct = Bind(config, "8-吞噬", "属性加成比例", 0.4f, "每吞噬一个友军,最大生命/攻击伤害/攻速 +40%,攻击冷却 -40%(0.4 = 40%)");
			DevourSizeMul = Bind(config, "8-吞噬", "体型增大倍率", 1.1f, "每吞噬一个友军体型增大的倍率(1.1 = +10%,可叠加)");
			DevourPullTime = Bind(config, "8-吞噬", "拉取动画时长", 1f, "拉取被吞噬者到身边的动画时长(秒),期间被吞噬者被拖向吞噬者后消失(无尸体掉落)");
			DesperateEnabled = Bind(config, "8-背水一战", "是否启用", def: true, "是否启用背水一战效果(生命低于阈值进入狂暴,只有攻击行为,击杀目标回血退出)");
			DesperateAllowedTypes = BindAllowed(config, "8-背水一战", "小怪,小boss", "背水一战适用怪物类型,逗号分隔(Regular/Miniboss/Boss)");
			DesperateChatEnabled = Bind(config, "8-背水一战", "文本开关", def: true, "进入/退出背水一战时是否显示头顶气泡");
			DesperateTriggerPct = Bind(config, "8-背水一战", "触发生命阈值", 0.2f, "生命低于该比例时触发背水一战(0.2 = 20%)");
			DesperateAttackSpeedMul = Bind(config, "8-背水一战", "攻速倍率", 1.5f, "背水一战期间攻击动画速度倍率(1.5 = +50%)");
			DesperateMoveSpeedMul = Bind(config, "8-背水一战", "移速倍率", 1.5f, "背水一战期间移动速度倍率(1.5 = +50%)");
			DesperateKillHealPct = Bind(config, "8-背水一战", "击杀回血比例", 0.5f, "背水一战期间成功击杀目标后回复最大生命的比例(0.5 = 50%)");
			CharmEnabled = Bind(config, "8-魅惑", "是否启用", def: true, "是否启用魅惑效果(周期施放,强制范围内敌对生物互相攻击)");
			CharmAllowedTypes = BindAllowed(config, "8-魅惑", "boss,小boss", "魅惑适用怪物类型,逗号分隔(Regular/Miniboss/Boss)");
			CharmChatEnabled = Bind(config, "8-魅惑", "文本开关", def: true, "施放魅惑时怪物头顶气泡与玩家被魅惑的屏幕提示");
			CharmInterval = Bind(config, "8-魅惑", "施放间隔", 30f, "战斗中每隔多少秒尝试施放一次魅惑");
			CharmDuration = Bind(config, "8-魅惑", "持续时长", 8f, "魅惑持续秒数,到时解除(期间被魅惑者无法操作、自动攻击)");
			CharmRange = Bind(config, "8-魅惑", "魅惑范围", 15f, "魅惑影响范围内敌对生物的范围(米)");
			CharmCastTime = Bind(config, "8-魅惑", "施法时长", 1f, "施放魅惑时怪物停止移动攻击的秒数(施法动画)");
			ParasiteEnabled = Bind(config, "8-寄生", "是否启用", def: true, "是否启用寄生效果(周期施法,给攻击目标施加寄生状态替怪物承受伤害)");
			ParasiteAllowedTypes = BindAllowed(config, "8-寄生", "小怪,小boss", "寄生适用怪物类型,逗号分隔(Regular/Miniboss/Boss)");
			ParasiteChatEnabled = Bind(config, "8-寄生", "文本开关", def: true, "施放寄生时怪物头顶气泡与玩家被寄生的提示");
			ParasiteCastTime = Bind(config, "8-寄生", "施法时长", 1f, "施放寄生时怪物停止移动攻击的秒数(施法动画)");
			ParasiteInterval = Bind(config, "8-寄生", "触发间隔", 90f, "每间隔多少秒尝试施放一次寄生");
			ParasiteDuration = Bind(config, "8-寄生", "寄生持续时长", 15f, "寄生状态持续秒数,期间目标替怪物承受全部伤害");
		}
	}
	public static class BubbleSpeech
	{
		public const float CullDistance = 40f;

		private const float PlayerCheckRadius = 50f;

		public static bool PlayerNearby(Character c)
		{
			//IL_000c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0011: Unknown result type (might be due to invalid IL or missing references)
			//IL_003e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0043: Unknown result type (might be due to invalid IL or missing references)
			//IL_0044: Unknown result type (might be due to invalid IL or missing references)
			//IL_0049: Unknown result type (might be due to invalid IL or missing references)
			float num = 2500f;
			Vector3 position = ((Component)c).transform.position;
			foreach (Player allPlayer in Player.GetAllPlayers())
			{
				if (!((Object)(object)allPlayer == (Object)null) && !((Character)allPlayer).IsDead())
				{
					Vector3 val = ((Component)allPlayer).transform.position - position;
					if (((Vector3)(ref val)).sqrMagnitude <= num)
					{
						return true;
					}
				}
			}
			return false;
		}

		public static void Say(Character c, string text, float ttl = 4f)
		{
			//IL_002e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0038: Unknown result type (might be due to invalid IL or missing references)
			if (ValConfig.BubbleMaster.Value && !((Object)(object)Chat.instance == (Object)null) && PlayerNearby(c))
			{
				Chat.instance.SetNpcText(((Component)c).gameObject, Vector3.up * 2.5f, 40f, ttl, "", text, false);
			}
		}

		public static void Center(Character? c, string text)
		{
			if (ValConfig.CenterTextMaster.Value && !((Object)(object)c == (Object)null) && CreatureClassifier.Classify(c) == EnemyType.Boss && !((Object)(object)MessageHud.instance == (Object)null) && !((Object)(object)Player.m_localPlayer == (Object)null) && PlayerNearby(c))
			{
				MessageHud.instance.ShowMessage((MessageType)2, text, 0, (Sprite)null, false, true);
			}
		}

		public static string Pick(string[] keys)
		{
			return L10n.T(keys[Random.Range(0, keys.Length)]);
		}
	}
	[BepInPlugin("lanlng_LCC", "懒濑:LCC", "1.1.2")]
	public class MonsterEnhance : BaseUnityPlugin
	{
		public static MonsterEnhance Instance { get; private set; }

		private void Awake()
		{
			//IL_0075: Unknown result type (might be due to invalid IL or missing references)
			Instance = this;
			ValConfig.Init(((BaseUnityPlugin)this).Config);
			L10n.Init();
			if (ValConfig.EnableModLogging.Value)
			{
				((BaseUnityPlugin)this).Logger.LogInfo((object)("LCC 本地化词条已加载:语言 " + L10n.Lang + "(目录 " + L10n.LangDir + ")"));
			}
			ConfigSync.Init(((BaseUnityPlugin)this).Logger);
			EnhanceManager.Init();
			new Harmony("lanlng_LCC").PatchAll();
			TestCommands.Register();
			((BaseUnityPlugin)this).Logger.LogInfo((object)"欢迎使用懒濑的LCC mod");
		}
	}
	public static class TestCommands
	{
		[Serializable]
		[CompilerGenerated]
		private sealed class <>c
		{
			public static readonly <>c <>9 = new <>c();

			public static ConsoleEvent <>9__0_0;

			public static ConsoleEvent <>9__0_1;

			internal void <Register>b__0_0(ConsoleEventArgs args)
			{
				//IL_0072: 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_008a: Unknown result type (might be due to invalid IL or missing references)
				//IL_008f: Unknown result type (might be due to invalid IL or missing references)
				//IL_00c0: Unknown result type (might be due to invalid IL or missing references)
				//IL_00c5: Unknown result type (might be due to invalid IL or missing references)
				//IL_0173: Unknown result type (might be due to invalid IL or missing references)
				//IL_0174: Unknown result type (might be due to invalid IL or missing references)
				//IL_0179: Unknown result type (might be due to invalid IL or missing references)
				//IL_01ab: Unknown result type (might be due to invalid IL or missing references)
				//IL_01b0: Unknown result type (might be due to invalid IL or missing references)
				//IL_01b5: Unknown result type (might be due to invalid IL or missing references)
				//IL_01b8: Unknown result type (might be due to invalid IL or missing references)
				//IL_01ba: Unknown result type (might be due to invalid IL or missing references)
				if (args.Length < 3)
				{
					args.Context.AddString(L10n.T("lcc.cmd.test.usage"));
					return;
				}
				Player localPlayer = Player.m_localPlayer;
				ZNetScene instance = ZNetScene.instance;
				if ((Object)(object)instance == (Object)null)
				{
					return;
				}
				GameObject prefab = instance.GetPrefab(args[1]);
				if ((Object)(object)prefab == (Object)null)
				{
					args.Context.AddString(L10n.T("lcc.cmd.prefab_missing", args[1]));
					return;
				}
				Vector3 val = Vector3.zero;
				bool flag = false;
				if ((Object)(object)localPlayer != (Object)null)
				{
					val = ((Component)localPlayer).transform.position;
					flag = true;
				}
				else
				{
					foreach (ZNetPeer peer in ZNet.instance.GetPeers())
					{
						if (peer != null && peer.IsReady())
						{
							val = peer.GetRefPos();
							flag = true;
							break;
						}
					}
				}
				if (!flag)
				{
					args.Context.AddString(L10n.T("lcc.cmd.no_player"));
					return;
				}
				string text = args[2].ToLower();
				int num = 1;
				if (text == "share")
				{
					num = ValConfig.ShareMinSame.Value;
				}
				else if (text == "authority")
				{
					num = ValConfig.AuthorityMinMembers.Value + 1;
				}
				string text2 = "lcc_test_" + Random.Range(10000, 99999);
				for (int i = 0; i < num; i++)
				{
					Vector3 val2 = val + Vector3.up + new Vector3(Random.Range(-1.5f, 1.5f) + (float)i * 0.6f, 0f, Random.Range(-1.5f, 1.5f));
					ZNetView component = Object.Instantiate<GameObject>(prefab, val2, Quaternion.identity).GetComponent<ZNetView>();
					if (!((Object)(object)component != (Object)null) || !component.IsValid())
					{
						continue;
					}
					component.GetZDO().Set("LCC_enhance", text);
					if (text == "authority")
					{
						component.GetZDO().Set("LCC_squad_id", text2);
						if (i == 0)
						{
							component.GetZDO().Set("LCC_authority_leader", true);
						}
					}
					component.LoadFields();
				}
				args.Context.AddString(L10n.T("lcc.cmd.test.spawned", num, ((Object)prefab).name, text));
			}

			internal void <Register>b__0_1(ConsoleEventArgs args)
			{
				//IL_0072: Unknown result type (might be due to invalid IL or missing references)
				//IL_007c: Expected O, but got Unknown
				if ((Object)(object)ZNet.instance == (Object)null || !ZNet.instance.IsServer())
				{
					args.Context.AddString(L10n.T("lcc.cmd.refresh.server_only"));
					return;
				}
				int num = 0;
				foreach (Character allCharacter in Character.GetAllCharacters())
				{
					if (!((Object)(object)allCharacter == (Object)null) && !allCharacter.IsPlayer() && !allCharacter.IsBoss() && allCharacter.IsMonsterFaction(Time.time))
					{
						allCharacter.Damage(new HitData(1E+10f));
						num++;
					}
				}
				int num2 = 0;
				foreach (SpawnSystem instance in SpawnSystem.m_instances)
				{
					ZNetView nview = instance.m_nview;
					ZDO val = ((nview != null) ? nview.GetZDO() : null);
					if (val == null)
					{
						continue;
					}
					foreach (SpawnSystemList spawnList in instance.m_spawnLists)
					{
						for (int i = 0; i < spawnList.m_spawners.Count; i++)
						{
							if (!((Object)(object)spawnList.m_spawners[i]?.m_prefab == (Object)null))
							{
								int stableHashCode = StringExtensionMethods.GetStableHashCode("b_" + ((Object)spawnList.m_spawners[i].m_prefab).name + (i + 1));
								val.Set(stableHashCode, 0L);
								num2++;
							}
						}
					}
				}
				args.Context.AddString(L10n.T("lcc.cmd.refresh.done", num, num2));
			}
		}

		public static void Register()
		{
			//IL_0038: Unknown result type (might be due to invalid IL or missing references)
			//IL_0023: Unknown result type (might be due to invalid IL or missing references)
			//IL_0028: Unknown result type (might be due to invalid IL or missing references)
			//IL_002e: Expected O, but got Unknown
			//IL_0076: Unknown result type (might be due to invalid IL or missing references)
			//IL_0061: Unknown result type (might be due to invalid IL or missing references)
			//IL_0066: Unknown result type (might be due to invalid IL or missing references)
			//IL_006c: Expected O, but got Unknown
			string text = L10n.T("lcc.cmd.test.desc");
			object obj = <>c.<>9__0_0;
			if (obj == null)
			{
				ConsoleEvent val = delegate(ConsoleEventArgs args)
				{
					//IL_0072: 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_008a: Unknown result type (might be due to invalid IL or missing references)
					//IL_008f: Unknown result type (might be due to invalid IL or missing references)
					//IL_00c0: Unknown result type (might be due to invalid IL or missing references)
					//IL_00c5: Unknown result type (might be due to invalid IL or missing references)
					//IL_0173: Unknown result type (might be due to invalid IL or missing references)
					//IL_0174: Unknown result type (might be due to invalid IL or missing references)
					//IL_0179: Unknown result type (might be due to invalid IL or missing references)
					//IL_01ab: Unknown result type (might be due to invalid IL or missing references)
					//IL_01b0: Unknown result type (might be due to invalid IL or missing references)
					//IL_01b5: Unknown result type (might be due to invalid IL or missing references)
					//IL_01b8: Unknown result type (might be due to invalid IL or missing references)
					//IL_01ba: Unknown result type (might be due to invalid IL or missing references)
					if (args.Length < 3)
					{
						args.Context.AddString(L10n.T("lcc.cmd.test.usage"));
					}
					else
					{
						Player localPlayer = Player.m_localPlayer;
						ZNetScene instance = ZNetScene.instance;
						if (!((Object)(object)instance == (Object)null))
						{
							GameObject prefab = instance.GetPrefab(args[1]);
							if ((Object)(object)prefab == (Object)null)
							{
								args.Context.AddString(L10n.T("lcc.cmd.prefab_missing", args[1]));
							}
							else
							{
								Vector3 val3 = Vector3.zero;
								bool flag = false;
								if ((Object)(object)localPlayer != (Object)null)
								{
									val3 = ((Component)localPlayer).transform.position;
									flag