Please disclose if any significant portion of your mod was created using AI tools by adding the 'AI Generated' category. Failing to do so may result in the mod being removed from Thunderstore.
Decompiled source of BossAdd v1.1.1
BepInEx/plugins/bossadd/AnimationSpeedManager.dll
Decompiled 15 hours agousing System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using HarmonyLib; using JetBrains.Annotations; using Microsoft.CodeAnalysis; using UnityEngine; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: AssemblyTitle("AnimationSpeedManager")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("")] [assembly: AssemblyProduct("AnimationSpeedManager")] [assembly: AssemblyCopyright("Copyright © 2023")] [assembly: AssemblyTrademark("")] [assembly: ComVisible(false)] [assembly: Guid("B3A6D52C-449A-4665-9FD0-BB48C8CF2CDF")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: TargetFramework(".NETFramework,Version=v4.6.2", FrameworkDisplayName = ".NET Framework 4.6.2")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.0.0.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.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] [Microsoft.CodeAnalysis.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; } } [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] [AttributeUsage(AttributeTargets.Module, AllowMultiple = false, Inherited = false)] internal sealed class RefSafetyRulesAttribute : Attribute { public readonly int Version; public RefSafetyRulesAttribute(int P_0) { Version = P_0; } } } public static class AnimationSpeedManager { public delegate double Handler(Character character, double speed); private static readonly Harmony harmony = new Harmony("AnimationSpeedManager"); private static bool hasMarkerPatch = false; private static readonly MethodInfo method = AccessTools.DeclaredMethod(typeof(CharacterAnimEvent), "CustomFixedUpdate", (Type[])null, (Type[])null); private static int index = 0; private static bool changed = false; private static Handler[][] handlers = Array.Empty<Handler[]>(); private static readonly Dictionary<int, List<Handler>> handlersPriorities = new Dictionary<int, List<Handler>>(); [PublicAPI] public static void Add(Handler handler, int priority = 400) { //IL_002a: Unknown result type (might be due to invalid IL or missing references) //IL_0035: Expected O, but got Unknown //IL_007e: Unknown result type (might be due to invalid IL or missing references) //IL_008b: Expected O, but got Unknown if (!hasMarkerPatch) { harmony.Patch((MethodBase)method, (HarmonyMethod)null, (HarmonyMethod)null, (HarmonyMethod)null, new HarmonyMethod(AccessTools.DeclaredMethod(typeof(AnimationSpeedManager), "markerPatch", (Type[])null, (Type[])null)), (HarmonyMethod)null); hasMarkerPatch = true; } if (!handlersPriorities.TryGetValue(priority, out List<Handler> value)) { handlersPriorities.Add(priority, value = new List<Handler>()); harmony.Patch((MethodBase)method, (HarmonyMethod)null, new HarmonyMethod(AccessTools.DeclaredMethod(typeof(AnimationSpeedManager), "wrapper", (Type[])null, (Type[])null)), (HarmonyMethod)null, (HarmonyMethod)null, (HarmonyMethod)null); } value.Add(handler); handlers = (from kv in handlersPriorities orderby kv.Key select kv.Value.ToArray()).ToArray(); } private static void wrapper(Character ___m_character, Animator ___m_animator) { Character ___m_character2 = ___m_character; double num = (double)___m_animator.speed * 10000000.0 % 100.0; if ((!(num > 10.0) || !(num < 30.0)) && !(___m_animator.speed <= 0.001f)) { double num2 = ___m_animator.speed; double num3 = handlers[index++].Aggregate(num2, (double current, Handler handler) => handler(___m_character2, current)); if (num3 != num2) { ___m_animator.speed = (float)(num3 - num3 % 1E-05); changed = true; } } } private static void markerPatch(Animator ___m_animator) { if (changed) { double num = (double)___m_animator.speed * 10000000.0 % 100.0; if ((num < 10.0 || num > 30.0) ? true : false) { ___m_animator.speed += 1.9E-06f; } changed = false; } index = 0; } }
BepInEx/plugins/bossadd/bossadd.dll
Decompiled 15 hours ago
The result has been truncated due to the large size, download it to view full contents!
using System; using System.Collections; using System.Collections.Generic; using System.Diagnostics; using System.IO; using System.Linq; using System.Reflection; using System.Runtime.CompilerServices; using System.Security.Cryptography; using System.Text; using System.Text.RegularExpressions; using BepInEx; using BepInEx.Configuration; using BepInEx.Logging; using HarmonyLib; using Microsoft.CodeAnalysis; using UnityEngine; using UnityEngine.Rendering; using bossadd.Patches; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: AssemblyVersion("0.0.0.0")] [module: RefSafetyRules(11)] namespace Microsoft.CodeAnalysis { [CompilerGenerated] [Embedded] internal sealed class EmbeddedAttribute : Attribute { } } namespace System.Runtime.CompilerServices { [CompilerGenerated] [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 bossadd { public static class BonemassConfig { public static ConfigEntry<bool> SplitEnabled { get; private set; } public static ConfigEntry<float> SplitHealthThreshold { get; private set; } public static ConfigEntry<bool> KillConditionEnabled { get; private set; } public static ConfigEntry<bool> KillOrderEnabled { get; private set; } public static ConfigEntry<float> WrongOrderHealPercent { get; private set; } public static ConfigEntry<float> MiniLeashDistance { get; private set; } public static ConfigEntry<float> MiniDamageMult { get; private set; } public static ConfigEntry<float> MiniHPMult { get; private set; } public static ConfigEntry<float> MiniSpeedMult { get; private set; } public static ConfigEntry<float> MiniAttackRangeMult { get; private set; } public static ConfigEntry<float> MiniAttackIntervalMult { get; private set; } public static ConfigEntry<float> MiniAnimationSpeedMult { get; private set; } public static ConfigEntry<string> MiniResistBlunt { get; private set; } public static ConfigEntry<string> MiniResistSlash { get; private set; } public static ConfigEntry<string> MiniResistPierce { get; private set; } public static ConfigEntry<string> MiniResistFire { get; private set; } public static ConfigEntry<string> MiniResistFrost { get; private set; } public static ConfigEntry<string> MiniResistLightning { get; private set; } public static ConfigEntry<string> MiniResistPoison { get; private set; } public static ConfigEntry<string> MiniResistSpirit { get; private set; } public static ConfigEntry<bool> BonusSpawnEnabled { get; private set; } public static ConfigEntry<string> BonusSpawnPrefab { get; private set; } public static ConfigEntry<float> BonusSpawnChance { get; private set; } public static ConfigEntry<int> BonusSpawnCount { get; private set; } public static ConfigEntry<float> BonusSpawnHealthThreshold { get; private set; } public static ConfigEntry<float> BonusSpawnMinDistanceFromBoss { get; private set; } public static ConfigEntry<float> ProjectileSpeedMult { get; private set; } public static ConfigEntry<float> ProjectileDamageBlunt { get; private set; } public static ConfigEntry<float> ProjectileHitRadius { get; private set; } public static ConfigEntry<float> ProjectileDamagePoison { get; private set; } public static ConfigEntry<bool> ProjectileStickyEnabled { get; private set; } public static ConfigEntry<string> ProjectileStickySourceEffect { get; private set; } public static ConfigEntry<string> ProjectileStickyDisplayName { get; private set; } public static ConfigEntry<float> ProjectileStickyDuration { get; private set; } public static ConfigEntry<float> ProjectilePushForceFallback { get; private set; } public static ConfigEntry<float> ProjectileSpawnOffsetDistance { get; private set; } public static ConfigEntry<float> ProjectileAimHeightOffset { get; private set; } public static ConfigEntry<bool> MiniInvulnerableEnabled { get; private set; } public static ConfigEntry<string> PhaseMessage { get; private set; } public static ConfigEntry<float> PhaseMessageHP { get; private set; } public static void Bind(ConfigFile cfg) { //IL_0036: Unknown result type (might be due to invalid IL or missing references) //IL_0040: Expected O, but got Unknown //IL_008d: Unknown result type (might be due to invalid IL or missing references) //IL_0097: Expected O, but got Unknown //IL_00d2: Unknown result type (might be due to invalid IL or missing references) //IL_00dc: Expected O, but got Unknown //IL_0117: Unknown result type (might be due to invalid IL or missing references) //IL_0121: Expected O, but got Unknown //IL_016e: Unknown result type (might be due to invalid IL or missing references) //IL_0178: Expected O, but got Unknown //IL_01b3: Unknown result type (might be due to invalid IL or missing references) //IL_01bd: Expected O, but got Unknown //IL_020a: Unknown result type (might be due to invalid IL or missing references) //IL_0214: Expected O, but got Unknown //IL_0261: Unknown result type (might be due to invalid IL or missing references) //IL_026b: Expected O, but got Unknown //IL_02b8: Unknown result type (might be due to invalid IL or missing references) //IL_02c2: Expected O, but got Unknown //IL_030f: Unknown result type (might be due to invalid IL or missing references) //IL_0319: Expected O, but got Unknown //IL_0366: Unknown result type (might be due to invalid IL or missing references) //IL_0370: Expected O, but got Unknown //IL_03bd: Unknown result type (might be due to invalid IL or missing references) //IL_03c7: Expected O, but got Unknown //IL_0414: Unknown result type (might be due to invalid IL or missing references) //IL_041e: Expected O, but got Unknown //IL_04a9: Unknown result type (might be due to invalid IL or missing references) //IL_04b3: Expected O, but got Unknown //IL_04f2: Unknown result type (might be due to invalid IL or missing references) //IL_04fc: Expected O, but got Unknown //IL_053b: Unknown result type (might be due to invalid IL or missing references) //IL_0545: Expected O, but got Unknown //IL_0584: Unknown result type (might be due to invalid IL or missing references) //IL_058e: Expected O, but got Unknown //IL_05cd: Unknown result type (might be due to invalid IL or missing references) //IL_05d7: Expected O, but got Unknown //IL_0616: Unknown result type (might be due to invalid IL or missing references) //IL_0620: Expected O, but got Unknown //IL_065f: Unknown result type (might be due to invalid IL or missing references) //IL_0669: Expected O, but got Unknown //IL_06a8: Unknown result type (might be due to invalid IL or missing references) //IL_06b2: Expected O, but got Unknown //IL_06ff: Unknown result type (might be due to invalid IL or missing references) //IL_0709: Expected O, but got Unknown //IL_0756: Unknown result type (might be due to invalid IL or missing references) //IL_0760: Expected O, but got Unknown //IL_07ad: Unknown result type (might be due to invalid IL or missing references) //IL_07b7: Expected O, but got Unknown //IL_0804: Unknown result type (might be due to invalid IL or missing references) //IL_080e: Expected O, but got Unknown //IL_0849: Unknown result type (might be due to invalid IL or missing references) //IL_0853: Expected O, but got Unknown //IL_0892: Unknown result type (might be due to invalid IL or missing references) //IL_089c: Expected O, but got Unknown //IL_08db: Unknown result type (might be due to invalid IL or missing references) //IL_08e5: Expected O, but got Unknown //IL_0932: Unknown result type (might be due to invalid IL or missing references) //IL_093c: Expected O, but got Unknown //IL_0989: Unknown result type (might be due to invalid IL or missing references) //IL_0993: Expected O, but got Unknown //IL_09e0: Unknown result type (might be due to invalid IL or missing references) //IL_09ea: Expected O, but got Unknown //IL_0a37: Unknown result type (might be due to invalid IL or missing references) //IL_0a41: Expected O, but got Unknown //IL_0a7c: Unknown result type (might be due to invalid IL or missing references) //IL_0a86: Expected O, but got Unknown //IL_0ac5: Unknown result type (might be due to invalid IL or missing references) //IL_0acf: Expected O, but got Unknown //IL_0b1c: Unknown result type (might be due to invalid IL or missing references) //IL_0b26: Expected O, but got Unknown //IL_0b68: Unknown result type (might be due to invalid IL or missing references) //IL_0b72: Expected O, but got Unknown //IL_0bbf: Unknown result type (might be due to invalid IL or missing references) //IL_0bc9: Expected O, but got Unknown //IL_0c16: Unknown result type (might be due to invalid IL or missing references) //IL_0c20: Expected O, but got Unknown //IL_0c5f: Unknown result type (might be due to invalid IL or missing references) //IL_0c69: Expected O, but got Unknown //IL_0cb6: Unknown result type (might be due to invalid IL or missing references) //IL_0cc0: Expected O, but got Unknown SplitEnabled = cfg.Bind<bool>("Bonemass", "(Split Summon) Enabled", true, new ConfigDescription(LocalizationManager.Desc("Bonemass.SplitSummon.Enabled"), (AcceptableValueBase)null, new object[1] { new ConfigurationManagerAttributes { Order = 9000 } })); SplitHealthThreshold = cfg.Bind<float>("Bonemass", "(Split Summon) HPThreshold", 50f, new ConfigDescription(LocalizationManager.Desc("Bonemass.SplitSummon.HPThreshold"), (AcceptableValueBase)(object)new AcceptableValueRange<float>(1f, 99f), new object[1] { new ConfigurationManagerAttributes { Order = 8990 } })); KillConditionEnabled = cfg.Bind<bool>("Bonemass", "(Kill Condition) Enabled", true, new ConfigDescription(LocalizationManager.Desc("Bonemass.KillCondition.Enabled"), (AcceptableValueBase)null, new object[1] { new ConfigurationManagerAttributes { Order = 8000 } })); KillOrderEnabled = cfg.Bind<bool>("Bonemass", "(Kill Condition) OrderEnabled", true, new ConfigDescription(LocalizationManager.Desc("Bonemass.KillCondition.OrderEnabled"), (AcceptableValueBase)null, new object[1] { new ConfigurationManagerAttributes { Order = 7990 } })); WrongOrderHealPercent = cfg.Bind<float>("Bonemass", "(Kill Condition) WrongOrderHeal", 5f, new ConfigDescription(LocalizationManager.Desc("Bonemass.KillCondition.WrongOrderHeal"), (AcceptableValueBase)(object)new AcceptableValueRange<float>(0f, 50f), new object[1] { new ConfigurationManagerAttributes { Order = 7980 } })); MiniInvulnerableEnabled = cfg.Bind<bool>("Bonemass", "(Kill Condition) MiniInvulnerable", true, new ConfigDescription(LocalizationManager.Desc("Bonemass.KillCondition.MiniInvulnerable"), (AcceptableValueBase)null, new object[1] { new ConfigurationManagerAttributes { Order = 7970 } })); MiniLeashDistance = cfg.Bind<float>("Bonemass", "(Kill Condition) MiniLeashDistance", 50f, new ConfigDescription(LocalizationManager.Desc("Bonemass.KillCondition.MiniLeashDistance"), (AcceptableValueBase)(object)new AcceptableValueRange<float>(10f, 200f), new object[1] { new ConfigurationManagerAttributes { Order = 7960 } })); MiniDamageMult = cfg.Bind<float>("Bonemass", "(Mini Stat) DamageMult", 1f, new ConfigDescription(LocalizationManager.Desc("Bonemass.MiniStat.DamageMult"), (AcceptableValueBase)(object)new AcceptableValueRange<float>(0.1f, 5f), new object[1] { new ConfigurationManagerAttributes { Order = 7000 } })); MiniHPMult = cfg.Bind<float>("Bonemass", "(Mini Stat) HPMult", 0.3f, new ConfigDescription(LocalizationManager.Desc("Bonemass.MiniStat.HPMult"), (AcceptableValueBase)(object)new AcceptableValueRange<float>(0.05f, 1f), new object[1] { new ConfigurationManagerAttributes { Order = 6990 } })); MiniSpeedMult = cfg.Bind<float>("Bonemass", "(Mini Stat) SpeedMult", 1.6f, new ConfigDescription(LocalizationManager.Desc("Bonemass.MiniStat.SpeedMult"), (AcceptableValueBase)(object)new AcceptableValueRange<float>(1f, 10f), new object[1] { new ConfigurationManagerAttributes { Order = 6980 } })); MiniAttackRangeMult = cfg.Bind<float>("Bonemass", "(Mini Stat) AttackRangeMult", 0.35f, new ConfigDescription(LocalizationManager.Desc("Bonemass.MiniStat.AttackRangeMult"), (AcceptableValueBase)(object)new AcceptableValueRange<float>(0.1f, 1f), new object[1] { new ConfigurationManagerAttributes { Order = 6970 } })); MiniAttackIntervalMult = cfg.Bind<float>("Bonemass", "(Mini Stat) AttackIntervalMult", 1f, new ConfigDescription(LocalizationManager.Desc("Bonemass.MiniStat.AttackIntervalMult"), (AcceptableValueBase)(object)new AcceptableValueRange<float>(0.3f, 3f), new object[1] { new ConfigurationManagerAttributes { Order = 6960 } })); MiniAnimationSpeedMult = cfg.Bind<float>("Bonemass", "(Mini Stat) AnimationSpeedMult", 1.6f, new ConfigDescription(LocalizationManager.Desc("Bonemass.MiniStat.AnimationSpeedMult"), (AcceptableValueBase)(object)new AcceptableValueRange<float>(0.5f, 3f), new object[1] { new ConfigurationManagerAttributes { Order = 6950 } })); AcceptableValueList<string> val = new AcceptableValueList<string>(new string[8] { "Inherit", "Normal", "Resistant", "VeryResistant", "Weak", "VeryWeak", "Immune", "Ignore" }); MiniResistBlunt = cfg.Bind<string>("Bonemass", "(Mini Resist) Blunt", "Inherit", new ConfigDescription(LocalizationManager.Desc("Bonemass.MiniResist.Blunt"), (AcceptableValueBase)(object)val, new object[1] { new ConfigurationManagerAttributes { Order = 6000 } })); MiniResistSlash = cfg.Bind<string>("Bonemass", "(Mini Resist) Slash", "Inherit", new ConfigDescription(LocalizationManager.Desc("Bonemass.MiniResist.Slash"), (AcceptableValueBase)(object)val, new object[1] { new ConfigurationManagerAttributes { Order = 5990 } })); MiniResistPierce = cfg.Bind<string>("Bonemass", "(Mini Resist) Pierce", "Inherit", new ConfigDescription(LocalizationManager.Desc("Bonemass.MiniResist.Pierce"), (AcceptableValueBase)(object)val, new object[1] { new ConfigurationManagerAttributes { Order = 5980 } })); MiniResistFire = cfg.Bind<string>("Bonemass", "(Mini Resist) Fire", "Inherit", new ConfigDescription(LocalizationManager.Desc("Bonemass.MiniResist.Fire"), (AcceptableValueBase)(object)val, new object[1] { new ConfigurationManagerAttributes { Order = 5970 } })); MiniResistFrost = cfg.Bind<string>("Bonemass", "(Mini Resist) Frost", "Inherit", new ConfigDescription(LocalizationManager.Desc("Bonemass.MiniResist.Frost"), (AcceptableValueBase)(object)val, new object[1] { new ConfigurationManagerAttributes { Order = 5960 } })); MiniResistLightning = cfg.Bind<string>("Bonemass", "(Mini Resist) Lightning", "Inherit", new ConfigDescription(LocalizationManager.Desc("Bonemass.MiniResist.Lightning"), (AcceptableValueBase)(object)val, new object[1] { new ConfigurationManagerAttributes { Order = 5950 } })); MiniResistPoison = cfg.Bind<string>("Bonemass", "(Mini Resist) Poison", "Inherit", new ConfigDescription(LocalizationManager.Desc("Bonemass.MiniResist.Poison"), (AcceptableValueBase)(object)val, new object[1] { new ConfigurationManagerAttributes { Order = 5940 } })); MiniResistSpirit = cfg.Bind<string>("Bonemass", "(Mini Resist) Spirit", "Inherit", new ConfigDescription(LocalizationManager.Desc("Bonemass.MiniResist.Spirit"), (AcceptableValueBase)(object)val, new object[1] { new ConfigurationManagerAttributes { Order = 5930 } })); ProjectileSpeedMult = cfg.Bind<float>("Bonemass", "(Throw Projectile) SpeedMult", 3f, new ConfigDescription(LocalizationManager.Desc("Bonemass.ThrowProjectile.SpeedMult"), (AcceptableValueBase)(object)new AcceptableValueRange<float>(0.5f, 5f), new object[1] { new ConfigurationManagerAttributes { Order = 5000 } })); ProjectileDamageBlunt = cfg.Bind<float>("Bonemass", "(Throw Projectile) DamageBlunt", 20f, new ConfigDescription(LocalizationManager.Desc("Bonemass.ThrowProjectile.DamageBlunt"), (AcceptableValueBase)(object)new AcceptableValueRange<float>(0f, 200f), new object[1] { new ConfigurationManagerAttributes { Order = 4990 } })); ProjectileHitRadius = cfg.Bind<float>("Bonemass", "(Throw Projectile) HitRadius", 1f, new ConfigDescription(LocalizationManager.Desc("Bonemass.ThrowProjectile.HitRadius"), (AcceptableValueBase)(object)new AcceptableValueRange<float>(0f, 3f), new object[1] { new ConfigurationManagerAttributes { Order = 4980 } })); ProjectileDamagePoison = cfg.Bind<float>("Bonemass", "(Throw Projectile) DamagePoison", 15f, new ConfigDescription(LocalizationManager.Desc("Bonemass.ThrowProjectile.DamagePoison"), (AcceptableValueBase)(object)new AcceptableValueRange<float>(0f, 200f), new object[1] { new ConfigurationManagerAttributes { Order = 4970 } })); ProjectileStickyEnabled = cfg.Bind<bool>("Bonemass", "(Throw Projectile) StickyEnabled", true, new ConfigDescription(LocalizationManager.Desc("Bonemass.ThrowProjectile.StickyEnabled"), (AcceptableValueBase)null, new object[1] { new ConfigurationManagerAttributes { Order = 4960 } })); ProjectileStickySourceEffect = cfg.Bind<string>("Bonemass", "(Throw Projectile) StickySourceEffect", "Tared", new ConfigDescription(LocalizationManager.Desc("Bonemass.ThrowProjectile.StickySourceEffect"), (AcceptableValueBase)null, new object[1] { new ConfigurationManagerAttributes { Order = 4950 } })); ProjectileStickyDisplayName = cfg.Bind<string>("Bonemass", "(Throw Projectile) StickyDisplayName", "오물투성이", new ConfigDescription(LocalizationManager.Desc("Bonemass.ThrowProjectile.StickyDisplayName"), (AcceptableValueBase)null, new object[1] { new ConfigurationManagerAttributes { Order = 4940 } })); ProjectileStickyDuration = cfg.Bind<float>("Bonemass", "(Throw Projectile) StickyDuration", 5f, new ConfigDescription(LocalizationManager.Desc("Bonemass.ThrowProjectile.StickyDuration"), (AcceptableValueBase)(object)new AcceptableValueRange<float>(0.5f, 30f), new object[1] { new ConfigurationManagerAttributes { Order = 4930 } })); ProjectilePushForceFallback = cfg.Bind<float>("Bonemass", "(Throw Projectile) PushForceFallback", 25f, new ConfigDescription(LocalizationManager.Desc("Bonemass.ThrowProjectile.PushForceFallback"), (AcceptableValueBase)(object)new AcceptableValueRange<float>(0f, 200f), new object[1] { new ConfigurationManagerAttributes { Order = 4920 } })); ProjectileSpawnOffsetDistance = cfg.Bind<float>("Bonemass", "(Throw Projectile) SpawnOffsetDistance", 7f, new ConfigDescription(LocalizationManager.Desc("Bonemass.ThrowProjectile.SpawnOffsetDistance"), (AcceptableValueBase)(object)new AcceptableValueRange<float>(0f, 15f), new object[1] { new ConfigurationManagerAttributes { Order = 4910 } })); ProjectileAimHeightOffset = cfg.Bind<float>("Bonemass", "(Throw Projectile) AimHeightOffset", 2.5f, new ConfigDescription(LocalizationManager.Desc("Bonemass.ThrowProjectile.AimHeightOffset"), (AcceptableValueBase)(object)new AcceptableValueRange<float>(0f, 6f), new object[1] { new ConfigurationManagerAttributes { Order = 4905 } })); BonusSpawnEnabled = cfg.Bind<bool>("Bonemass", "(Throw Summon) Enabled", false, new ConfigDescription(LocalizationManager.Desc("Bonemass.ThrowSummon.Enabled"), (AcceptableValueBase)null, new object[1] { new ConfigurationManagerAttributes { Order = 4000 } })); BonusSpawnPrefab = cfg.Bind<string>("Bonemass", "(Throw Summon) Prefab", "Blob", new ConfigDescription(LocalizationManager.Desc("Bonemass.ThrowSummon.Prefab"), (AcceptableValueBase)null, new object[1] { new ConfigurationManagerAttributes { Order = 3990 } })); BonusSpawnChance = cfg.Bind<float>("Bonemass", "(Throw Summon) Chance", 50f, new ConfigDescription(LocalizationManager.Desc("Bonemass.ThrowSummon.Chance"), (AcceptableValueBase)(object)new AcceptableValueRange<float>(0f, 100f), new object[1] { new ConfigurationManagerAttributes { Order = 3980 } })); BonusSpawnCount = cfg.Bind<int>("Bonemass", "(Throw Summon) Count", 1, new ConfigDescription(LocalizationManager.Desc("Bonemass.ThrowSummon.Count"), (AcceptableValueBase)(object)new AcceptableValueRange<int>(1, 10), new object[1] { new ConfigurationManagerAttributes { Order = 3970 } })); BonusSpawnHealthThreshold = cfg.Bind<float>("Bonemass", "(Throw Summon) HPThreshold", 100f, new ConfigDescription(LocalizationManager.Desc("Bonemass.ThrowSummon.HPThreshold"), (AcceptableValueBase)(object)new AcceptableValueRange<float>(1f, 100f), new object[1] { new ConfigurationManagerAttributes { Order = 3960 } })); BonusSpawnMinDistanceFromBoss = cfg.Bind<float>("Bonemass", "(Throw Summon) MinDistanceFromBoss", 8f, new ConfigDescription(LocalizationManager.Desc("Bonemass.ThrowSummon.MinDistanceFromBoss"), (AcceptableValueBase)(object)new AcceptableValueRange<float>(0f, 30f), new object[1] { new ConfigurationManagerAttributes { Order = 3950 } })); PhaseMessage = cfg.Bind<string>("Bonemass", "(Phase) Message", "", new ConfigDescription(LocalizationManager.Desc("Bonemass.Phase.Message"), (AcceptableValueBase)null, new object[1] { new ConfigurationManagerAttributes { Order = 2000 } })); PhaseMessageHP = cfg.Bind<float>("Bonemass", "(Phase) MessageHP", 50f, new ConfigDescription(LocalizationManager.Desc("Bonemass.Phase.MessageHP"), (AcceptableValueBase)(object)new AcceptableValueRange<float>(1f, 100f), new object[1] { new ConfigurationManagerAttributes { Order = 1990 } })); } } internal static class MiniBonemassVariants { public const int Count = 5; public static readonly string[] Names = new string[5] { "MiniBonemass_Red", "MiniBonemass_Orange", "MiniBonemass_Yellow", "MiniBonemass_Green", "MiniBonemass_Blue" }; public static readonly string[] KoreanNames = new string[5] { "빨강", "주황", "노랑", "초록", "파랑" }; public static readonly Color[] Colors = (Color[])(object)new Color[5] { new Color(1f, 0.05f, 0.05f), new Color(1f, 0.45f, 0f), new Color(1f, 1f, 0f), new Color(0f, 0.9f, 0.8f), new Color(0.05f, 0.3f, 1f) }; public static bool IsMini(string prefabName) { return prefabName?.StartsWith("MiniBonemass_") ?? false; } public static int IndexOf(string prefabName) { for (int i = 0; i < Names.Length; i++) { if (Names[i] == prefabName) { return i; } } return -1; } } internal static class MonsterDB { private static readonly FieldInfo s_namedPrefabsField = AccessTools.Field(typeof(ZNetScene), "m_namedPrefabs"); private static readonly GameObject[] s_variants = (GameObject[])(object)new GameObject[5]; private static readonly Dictionary<GameObject, GameObject> s_weaponCloneCache = new Dictionary<GameObject, GameObject>(); private static GameObject s_templateHolder; private static bool s_itemsLogged = false; private static readonly FieldInfo s_attackRangeField = AccessTools.Field(typeof(Attack), "m_attackRange"); private static readonly List<GameObject> s_pendingObjectDBItems = new List<GameObject>(); private static readonly MethodInfo s_updateRegistersMethod = AccessTools.Method(typeof(ObjectDB), "UpdateRegisters", (Type[])null, (Type[])null); private static void EnsureTemplateHolder() { //IL_0017: Unknown result type (might be due to invalid IL or missing references) //IL_0021: Expected O, but got Unknown if (!((Object)(object)s_templateHolder != (Object)null)) { s_templateHolder = new GameObject("MiniBonemassTemplateHolder"); s_templateHolder.SetActive(false); Object.DontDestroyOnLoad((Object)(object)s_templateHolder); } } [HarmonyPostfix] public static void Postfix(ZNetScene __instance) { if (!(s_namedPrefabsField.GetValue(__instance) is Dictionary<int, GameObject> namedPrefabs)) { Plugin.Log.LogError((object)"[MonsterDB] m_namedPrefabs 접근 실패"); return; } for (int i = 0; i < 5; i++) { RegisterVariant(__instance, namedPrefabs, i); } } private static void RegisterVariant(ZNetScene zns, Dictionary<int, GameObject> namedPrefabs, int idx) { //IL_000f: Unknown result type (might be due to invalid IL or missing references) //IL_0014: Unknown result type (might be due to invalid IL or missing references) //IL_01fd: Unknown result type (might be due to invalid IL or missing references) //IL_0202: Unknown result type (might be due to invalid IL or missing references) //IL_0210: Unknown result type (might be due to invalid IL or missing references) //IL_0212: Unknown result type (might be due to invalid IL or missing references) //IL_0217: Unknown result type (might be due to invalid IL or missing references) //IL_021c: Unknown result type (might be due to invalid IL or missing references) //IL_022d: Unknown result type (might be due to invalid IL or missing references) //IL_022f: Unknown result type (might be due to invalid IL or missing references) //IL_0234: Unknown result type (might be due to invalid IL or missing references) //IL_0239: Unknown result type (might be due to invalid IL or missing references) //IL_024a: Unknown result type (might be due to invalid IL or missing references) //IL_024c: Unknown result type (might be due to invalid IL or missing references) //IL_0251: Unknown result type (might be due to invalid IL or missing references) //IL_0256: Unknown result type (might be due to invalid IL or missing references) //IL_0267: 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_026e: Unknown result type (might be due to invalid IL or missing references) //IL_0273: Unknown result type (might be due to invalid IL or missing references) //IL_0284: Unknown result type (might be due to invalid IL or missing references) //IL_0286: Unknown result type (might be due to invalid IL or missing references) //IL_028b: Unknown result type (might be due to invalid IL or missing references) //IL_0290: Unknown result type (might be due to invalid IL or missing references) //IL_02a1: Unknown result type (might be due to invalid IL or missing references) //IL_02a3: Unknown result type (might be due to invalid IL or missing references) //IL_02a8: Unknown result type (might be due to invalid IL or missing references) //IL_02ad: Unknown result type (might be due to invalid IL or missing references) //IL_02be: Unknown result type (might be due to invalid IL or missing references) //IL_02c0: Unknown result type (might be due to invalid IL or missing references) //IL_02c5: Unknown result type (might be due to invalid IL or missing references) //IL_02ca: Unknown result type (might be due to invalid IL or missing references) //IL_02db: Unknown result type (might be due to invalid IL or missing references) //IL_02dd: Unknown result type (might be due to invalid IL or missing references) //IL_02e2: Unknown result type (might be due to invalid IL or missing references) //IL_02e7: Unknown result type (might be due to invalid IL or missing references) //IL_02ee: Unknown result type (might be due to invalid IL or missing references) //IL_02f0: Unknown result type (might be due to invalid IL or missing references) //IL_038b: Unknown result type (might be due to invalid IL or missing references) //IL_0399: Unknown result type (might be due to invalid IL or missing references) //IL_03a3: Unknown result type (might be due to invalid IL or missing references) string text = MiniBonemassVariants.Names[idx]; Color tint = MiniBonemassVariants.Colors[idx]; if ((Object)(object)zns.GetPrefab(text) != (Object)null) { return; } if ((Object)(object)s_variants[idx] != (Object)null) { zns.m_prefabs.Add(s_variants[idx]); namedPrefabs[StringExtensionMethods.GetStableHashCode(text)] = s_variants[idx]; Plugin.Log.LogInfo((object)("[MonsterDB] " + text + " 재등록")); return; } GameObject prefab = zns.GetPrefab("Bonemass"); if ((Object)(object)prefab == (Object)null) { Plugin.Log.LogError((object)("[MonsterDB] Bonemass 프리팹 없음 — " + text + " 등록 실패")); return; } LogBonemassAttackItems(prefab); bool activeSelf = prefab.activeSelf; prefab.SetActive(false); GameObject val = Object.Instantiate<GameObject>(prefab); prefab.SetActive(activeSelf); ((Object)val).name = text; Object.DontDestroyOnLoad((Object)(object)val); EnsureTemplateHolder(); val.transform.SetParent(s_templateHolder.transform, false); val.SetActive(true); Character component = prefab.GetComponent<Character>(); Character component2 = val.GetComponent<Character>(); if ((Object)(object)component2 != (Object)null) { component2.m_boss = false; component2.m_bossEvent = ""; component2.m_runSpeed *= BonemassConfig.MiniSpeedMult.Value; component2.m_walkSpeed *= BonemassConfig.MiniSpeedMult.Value; component2.m_swimSpeed *= BonemassConfig.MiniSpeedMult.Value; component2.m_acceleration *= BonemassConfig.MiniSpeedMult.Value; if ((Object)(object)component != (Object)null) { component2.m_health = Mathf.Max(component.m_health * BonemassConfig.MiniHPMult.Value, 1f); } } if ((Object)(object)component2 != (Object)null) { DamageModifiers damageModifiers = component2.m_damageModifiers; damageModifiers.m_blunt = ParseModifier(BonemassConfig.MiniResistBlunt.Value, damageModifiers.m_blunt); damageModifiers.m_slash = ParseModifier(BonemassConfig.MiniResistSlash.Value, damageModifiers.m_slash); damageModifiers.m_pierce = ParseModifier(BonemassConfig.MiniResistPierce.Value, damageModifiers.m_pierce); damageModifiers.m_fire = ParseModifier(BonemassConfig.MiniResistFire.Value, damageModifiers.m_fire); damageModifiers.m_frost = ParseModifier(BonemassConfig.MiniResistFrost.Value, damageModifiers.m_frost); damageModifiers.m_lightning = ParseModifier(BonemassConfig.MiniResistLightning.Value, damageModifiers.m_lightning); damageModifiers.m_poison = ParseModifier(BonemassConfig.MiniResistPoison.Value, damageModifiers.m_poison); damageModifiers.m_spirit = ParseModifier(BonemassConfig.MiniResistSpirit.Value, damageModifiers.m_spirit); component2.m_damageModifiers = damageModifiers; } RemoveNonMeleeAttackItems(val); ZNetView component3 = val.GetComponent<ZNetView>(); if ((Object)(object)component3 != (Object)null) { component3.m_persistent = false; } MonsterAI component4 = val.GetComponent<MonsterAI>(); if ((Object)(object)component4 != (Object)null && BonemassConfig.MiniAttackIntervalMult.Value != 1f) { component4.m_minAttackInterval *= BonemassConfig.MiniAttackIntervalMult.Value; } CharacterDrop component5 = val.GetComponent<CharacterDrop>(); if ((Object)(object)component5 != (Object)null) { component5.m_drops.Clear(); } ApplyTint(val, tint); val.transform.localScale = Vector3.one * 0.3f; zns.m_prefabs.Add(val); namedPrefabs[StringExtensionMethods.GetStableHashCode(text)] = val; s_variants[idx] = val; } private static void LogBonemassAttackItems(GameObject original) { if (!s_itemsLogged) { s_itemsLogged = true; if ((Object)(object)original.GetComponent<Humanoid>() == (Object)null) { Plugin.Log.LogWarning((object)"[MonsterDB:진단] Bonemass에 Humanoid 컴포넌트 없음 — m_defaultItems 기반 접근 불가, 다른 방식 필요"); } } } private static void RemoveNonMeleeAttackItems(GameObject mini) { Humanoid component = mini.GetComponent<Humanoid>(); if (!((Object)(object)component == (Object)null)) { float rangeMult = BonemassConfig.MiniAttackRangeMult.Value; float intervalMult = BonemassConfig.MiniAttackIntervalMult.Value; component.m_defaultItems = (from go in FilterMeleeOnly(component.m_defaultItems) select CreateMiniExclusiveWeapon(go, rangeMult, intervalMult)).ToArray(); component.m_randomWeapon = (from go in FilterMeleeOnly(component.m_randomWeapon) select CreateMiniExclusiveWeapon(go, rangeMult, intervalMult)).ToArray(); } } private static GameObject CreateMiniExclusiveWeapon(GameObject weaponPrefab, float rangeMult, float intervalMult) { if ((Object)(object)weaponPrefab == (Object)null) { return weaponPrefab; } if (s_weaponCloneCache.TryGetValue(weaponPrefab, out var value)) { return value; } ItemDrop component = weaponPrefab.GetComponent<ItemDrop>(); if (component?.m_itemData?.m_shared == null) { return weaponPrefab; } bool activeSelf = weaponPrefab.activeSelf; weaponPrefab.SetActive(false); GameObject val = Object.Instantiate<GameObject>(weaponPrefab); weaponPrefab.SetActive(activeSelf); ((Object)val).name = ((Object)weaponPrefab).name + "_MiniBonemass"; Object.DontDestroyOnLoad((Object)(object)val); val.SetActive(false); ItemDrop component2 = val.GetComponent<ItemDrop>(); SharedData shared = component2.m_itemData.m_shared; if (shared == component.m_itemData.m_shared) { Plugin.Log.LogWarning((object)("[MonsterDB:진단] " + ((Object)val).name + " SharedData가 원본과 공유 중 — 독립 복제 실패, 별도 조치 필요")); } shared.m_aiAttackRange *= rangeMult; if (shared.m_aiAttackRangeMin > 0f) { shared.m_aiAttackRangeMin *= rangeMult; } ScaleAttackRange(shared.m_attack, rangeMult); ScaleAttackRange(shared.m_secondaryAttack, rangeMult); shared.m_aiAttackInterval *= intervalMult; RegisterInObjectDB(val); Plugin.Log.LogInfo((object)("[MonsterDB] MiniBonemass 전용 무기 생성: " + ((Object)val).name + " — " + $"aiAttackRange={shared.m_aiAttackRange:F2} attackRange={GetAttackRange(shared.m_attack):F2} " + "secondaryAttackRange=" + ((shared.m_secondaryAttack != null) ? GetAttackRange(shared.m_secondaryAttack).ToString("F2") : "N/A") + " " + $"aiAttackInterval={shared.m_aiAttackInterval:F2} (rangeMult {rangeMult:F2} / intervalMult {intervalMult:F2})")); s_weaponCloneCache[weaponPrefab] = val; return val; } private static void ScaleAttackRange(Attack attack, float mult) { if (attack != null && !(s_attackRangeField == null)) { float num = (float)(s_attackRangeField.GetValue(attack) ?? ((object)0f)); s_attackRangeField.SetValue(attack, num * mult); } } private static float GetAttackRange(Attack attack) { if (attack == null || s_attackRangeField == null) { return 0f; } return (float)(s_attackRangeField.GetValue(attack) ?? ((object)0f)); } private static void RegisterInObjectDB(GameObject itemPrefab) { if (!s_pendingObjectDBItems.Contains(itemPrefab)) { s_pendingObjectDBItems.Add(itemPrefab); } TryFlushPendingObjectDBItems(); } internal static void TryFlushPendingObjectDBItems() { if ((Object)(object)ObjectDB.instance == (Object)null) { return; } bool flag = false; List<GameObject> list = new List<GameObject>(); foreach (GameObject item in s_pendingObjectDBItems) { if (!((Object)(object)item == (Object)null) && !ObjectDB.instance.m_items.Contains(item)) { if (ObjectDB.instance.m_items.Exists((GameObject existing) => (Object)(object)existing != (Object)null && ((Object)existing).name == ((Object)item).name)) { Plugin.Log.LogWarning((object)("[MonsterDB] ObjectDB 등록 스킵(이름 중복): " + ((Object)item).name)); continue; } ObjectDB.instance.m_items.Add(item); flag = true; list.Add(item); } } if (!flag) { return; } try { s_updateRegistersMethod?.Invoke(ObjectDB.instance, null); } catch (Exception ex) { Plugin.Log.LogError((object)("[MonsterDB:진단] UpdateRegisters() 호출 중 예외 — " + ex.GetType().Name + ": " + ex.Message + " (내부: " + ex.InnerException?.GetType().Name + ": " + ex.InnerException?.Message + ")")); return; } foreach (GameObject item2 in list) { GameObject itemPrefab = ObjectDB.instance.GetItemPrefab(((Object)item2).name); if ((Object)(object)itemPrefab != (Object)(object)item2) { Plugin.Log.LogWarning((object)("[MonsterDB] ObjectDB 등록 후 조회 검증 실패: " + ((Object)item2).name + " — " + (((Object)(object)itemPrefab == (Object)null) ? "못찾음" : "다른 객체가 조회됨"))); } } } private static GameObject[] FilterMeleeOnly(GameObject[] arr) { if (arr == null || arr.Length == 0) { return arr; } return arr.Where(delegate(GameObject go) { //IL_004d: Unknown result type (might be due to invalid IL or missing references) //IL_0055: Unknown result type (might be due to invalid IL or missing references) //IL_005b: Invalid comparison between Unknown and I4 //IL_0086: Unknown result type (might be due to invalid IL or missing references) if ((Object)(object)go == (Object)null) { return true; } Attack val = go.GetComponent<ItemDrop>()?.m_itemData?.m_shared?.m_attack; if (val == null) { return true; } bool flag = (int)val.m_attackType == 0 || (int)val.m_attackType == 1; if (!flag) { Plugin.Log.LogInfo((object)("[MonsterDB] MiniBonemass 근접외 공격 제거: " + ((Object)go).name + " " + $"(attackType={val.m_attackType})")); } return flag; }).ToArray(); } private static DamageModifier ParseModifier(string value, DamageModifier original) { //IL_001b: Unknown result type (might be due to invalid IL or missing references) //IL_001c: Unknown result type (might be due to invalid IL or missing references) //IL_004a: Unknown result type (might be due to invalid IL or missing references) //IL_004b: Unknown result type (might be due to invalid IL or missing references) //IL_002b: Unknown result type (might be due to invalid IL or missing references) //IL_002c: Unknown result type (might be due to invalid IL or missing references) //IL_004e: Unknown result type (might be due to invalid IL or missing references) if (string.IsNullOrEmpty(value) || value == "Inherit") { return original; } if (Enum.TryParse<DamageModifier>(value, out DamageModifier result)) { return result; } Plugin.Log.LogWarning((object)("[MonsterDB] 알 수 없는 저항값 '" + value + "' → Inherit 처리")); return original; } internal static void ApplyTint(GameObject go, Color tint) { //IL_016e: 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_0177: Unknown result type (might be due to invalid IL or missing references) //IL_017c: Unknown result type (might be due to invalid IL or missing references) //IL_01bc: Unknown result type (might be due to invalid IL or missing references) //IL_01c1: Unknown result type (might be due to invalid IL or missing references) //IL_01c5: Unknown result type (might be due to invalid IL or missing references) //IL_01ca: Unknown result type (might be due to invalid IL or missing references) //IL_01ce: Unknown result type (might be due to invalid IL or missing references) //IL_01d4: Unknown result type (might be due to invalid IL or missing references) //IL_01da: Unknown result type (might be due to invalid IL or missing references) //IL_01e0: Unknown result type (might be due to invalid IL or missing references) //IL_01ed: Unknown result type (might be due to invalid IL or missing references) //IL_01f2: Unknown result type (might be due to invalid IL or missing references) //IL_0056: Unknown result type (might be due to invalid IL or missing references) //IL_005d: Expected O, but got Unknown //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_007b: Unknown result type (might be due to invalid IL or missing references) //IL_0081: Unknown result type (might be due to invalid IL or missing references) //IL_0087: Unknown result type (might be due to invalid IL or missing references) //IL_008d: Unknown result type (might be due to invalid IL or missing references) //IL_0094: Unknown result type (might be due to invalid IL or missing references) //IL_00c7: Unknown result type (might be due to invalid IL or missing references) //IL_00cd: Unknown result type (might be due to invalid IL or missing references) //IL_00f2: Unknown result type (might be due to invalid IL or missing references) //IL_00f8: Unknown result type (might be due to invalid IL or missing references) //IL_00fe: Unknown result type (might be due to invalid IL or missing references) //IL_0109: Unknown result type (might be due to invalid IL or missing references) Renderer[] componentsInChildren = go.GetComponentsInChildren<Renderer>(true); foreach (Renderer val in componentsInChildren) { if (val is ParticleSystemRenderer) { continue; } Material[] sharedMaterials = val.sharedMaterials; bool flag = false; for (int j = 0; j < sharedMaterials.Length; j++) { if (!((Object)(object)sharedMaterials[j] == (Object)null)) { Material val2 = new Material(sharedMaterials[j]); if (val2.HasProperty("_Color")) { Color color = val2.color; val2.color = new Color(tint.r, tint.g, tint.b, color.a); } if (val2.HasProperty("_EmissionColor")) { val2.EnableKeyword("_EMISSION"); val2.SetColor("_EmissionColor", tint * 15f); } if (val2.HasProperty("_TintColor")) { val2.SetColor("_TintColor", new Color(tint.r, tint.g, tint.b, 0.5f)); } sharedMaterials[j] = val2; flag = true; } } if (flag) { val.sharedMaterials = sharedMaterials; } } ParticleSystem[] componentsInChildren2 = go.GetComponentsInChildren<ParticleSystem>(true); foreach (ParticleSystem val3 in componentsInChildren2) { MainModule main = val3.main; EmissionModule emission = val3.emission; ((EmissionModule)(ref emission)).rateOverTimeMultiplier = ((EmissionModule)(ref emission)).rateOverTimeMultiplier * 0.1f; ((EmissionModule)(ref emission)).rateOverDistanceMultiplier = ((EmissionModule)(ref emission)).rateOverDistanceMultiplier * 0.1f; ((MainModule)(ref main)).startSizeMultiplier = ((MainModule)(ref main)).startSizeMultiplier * 0.35f; MinMaxGradient startColor = ((MainModule)(ref main)).startColor; Color color2 = ((MinMaxGradient)(ref startColor)).color; ((MainModule)(ref main)).startColor = new MinMaxGradient(new Color(tint.r, tint.g, tint.b, color2.a * 0.06f)); } } } [HarmonyPatch] internal static class MonsterDBObjectDBRegisterPatch { [HarmonyTargetMethods] private static IEnumerable<MethodBase> TargetMethods() { yield return AccessTools.Method(typeof(ObjectDB), "Awake", (Type[])null, (Type[])null); yield return AccessTools.Method(typeof(ObjectDB), "CopyOtherDB", (Type[])null, (Type[])null); } [HarmonyPostfix] public static void Postfix() { MonsterDB.TryFlushPendingObjectDBItems(); } } public static class EikthyrSummonConfig { public static ConfigEntry<bool> Enabled { get; private set; } public static ConfigEntry<SummonTriggerMode> TriggerMode { get; private set; } public static ConfigEntry<int> HealthStepCount { get; private set; } public static ConfigEntry<float> TimerInterval { get; private set; } public static ConfigEntry<string> SummonPrefab { get; private set; } public static ConfigEntry<int> SummonCount { get; private set; } public static ConfigEntry<int> SummonLevel { get; private set; } public static ConfigEntry<int> MaxTotalSummons { get; private set; } public static ConfigEntry<bool> UseCLLC { get; private set; } public static ConfigEntry<bool> SpecialSummonEnabled { get; private set; } public static ConfigEntry<float> SpecialSummonHealthThreshold { get; private set; } public static ConfigEntry<string> SpecialSummonPrefab { get; private set; } public static ConfigEntry<int> SpecialSummonCount { get; private set; } public static ConfigEntry<int> SpecialSummonLevel { get; private set; } public static ConfigEntry<string> SpecialSummonVfxPrefab { get; private set; } public static ConfigEntry<bool> Phase2Enabled { get; private set; } public static ConfigEntry<float> Phase2HealthThreshold { get; private set; } public static ConfigEntry<string> StompAnimName { get; private set; } public static ConfigEntry<float> LightningProcChance { get; private set; } public static ConfigEntry<int> LightningCount { get; private set; } public static ConfigEntry<float> LightningDamageBlunt { get; private set; } public static ConfigEntry<float> LightningDamageSlash { get; private set; } public static ConfigEntry<float> LightningDamagePierce { get; private set; } public static ConfigEntry<float> LightningDamageLightning { get; private set; } public static ConfigEntry<float> LightningPushForce { get; private set; } public static ConfigEntry<float> LightningStartDelay { get; private set; } public static ConfigEntry<float> LightningSafeZoneRadius { get; private set; } public static ConfigEntry<float> LightningDotDuration { get; private set; } public static ConfigEntry<float> LightningDotMinDamage { get; private set; } public static ConfigEntry<float> LightningDotMaxDamage { get; private set; } public static ConfigEntry<bool> HornLaunchEnabled { get; private set; } public static ConfigEntry<float> HornLaunchHealthThreshold { get; private set; } public static ConfigEntry<string> HornLaunchAnimName { get; private set; } public static ConfigEntry<float> HornLaunchHorizontalForce { get; private set; } public static ConfigEntry<float> HornLaunchVerticalForce { get; private set; } public static ConfigEntry<float> HornLaunchProcChance { get; private set; } public static ConfigEntry<bool> HornLaunchAffectsBlocking { get; private set; } public static ConfigEntry<string> PhaseMessage { get; private set; } public static ConfigEntry<float> PhaseMessageHP { get; private set; } public static void Bind(ConfigFile cfg) { //IL_0036: Unknown result type (might be due to invalid IL or missing references) //IL_0040: Expected O, but got Unknown //IL_008d: Unknown result type (might be due to invalid IL or missing references) //IL_0097: Expected O, but got Unknown //IL_00d6: Unknown result type (might be due to invalid IL or missing references) //IL_00e0: Expected O, but got Unknown //IL_012d: Unknown result type (might be due to invalid IL or missing references) //IL_0137: Expected O, but got Unknown //IL_0184: Unknown result type (might be due to invalid IL or missing references) //IL_018e: Expected O, but got Unknown //IL_01db: Unknown result type (might be due to invalid IL or missing references) //IL_01e5: Expected O, but got Unknown //IL_0220: Unknown result type (might be due to invalid IL or missing references) //IL_022a: Expected O, but got Unknown //IL_0265: Unknown result type (might be due to invalid IL or missing references) //IL_026f: Expected O, but got Unknown //IL_02bc: Unknown result type (might be due to invalid IL or missing references) //IL_02c6: Expected O, but got Unknown //IL_0305: Unknown result type (might be due to invalid IL or missing references) //IL_030f: Expected O, but got Unknown //IL_035c: Unknown result type (might be due to invalid IL or missing references) //IL_0366: Expected O, but got Unknown //IL_03a8: Unknown result type (might be due to invalid IL or missing references) //IL_03b2: Expected O, but got Unknown //IL_03ff: Unknown result type (might be due to invalid IL or missing references) //IL_0409: Expected O, but got Unknown //IL_0456: Unknown result type (might be due to invalid IL or missing references) //IL_0460: Expected O, but got Unknown //IL_04ad: Unknown result type (might be due to invalid IL or missing references) //IL_04b7: Expected O, but got Unknown //IL_0504: Unknown result type (might be due to invalid IL or missing references) //IL_050e: Expected O, but got Unknown //IL_055b: Unknown result type (might be due to invalid IL or missing references) //IL_0565: Expected O, but got Unknown //IL_05b2: Unknown result type (might be due to invalid IL or missing references) //IL_05bc: Expected O, but got Unknown //IL_0609: Unknown result type (might be due to invalid IL or missing references) //IL_0613: Expected O, but got Unknown //IL_0660: Unknown result type (might be due to invalid IL or missing references) //IL_066a: Expected O, but got Unknown //IL_06b7: Unknown result type (might be due to invalid IL or missing references) //IL_06c1: Expected O, but got Unknown //IL_070e: Unknown result type (might be due to invalid IL or missing references) //IL_0718: Expected O, but got Unknown //IL_0753: Unknown result type (might be due to invalid IL or missing references) //IL_075d: Expected O, but got Unknown //IL_0798: Unknown result type (might be due to invalid IL or missing references) //IL_07a2: Expected O, but got Unknown //IL_07e5: Unknown result type (might be due to invalid IL or missing references) //IL_07ef: Expected O, but got Unknown //IL_083c: Unknown result type (might be due to invalid IL or missing references) //IL_0846: Expected O, but got Unknown //IL_0885: Unknown result type (might be due to invalid IL or missing references) //IL_088f: Expected O, but got Unknown //IL_08d1: Unknown result type (might be due to invalid IL or missing references) //IL_08db: Expected O, but got Unknown //IL_091c: Unknown result type (might be due to invalid IL or missing references) //IL_0926: Expected O, but got Unknown //IL_096c: Unknown result type (might be due to invalid IL or missing references) //IL_0976: Expected O, but got Unknown //IL_09b1: Unknown result type (might be due to invalid IL or missing references) //IL_09bb: Expected O, but got Unknown //IL_09f6: Unknown result type (might be due to invalid IL or missing references) //IL_0a00: Expected O, but got Unknown //IL_0a4d: Unknown result type (might be due to invalid IL or missing references) //IL_0a57: Expected O, but got Unknown //IL_0a96: Unknown result type (might be due to invalid IL or missing references) //IL_0aa0: Expected O, but got Unknown //IL_0ae2: Unknown result type (might be due to invalid IL or missing references) //IL_0aec: Expected O, but got Unknown //IL_0b2d: Unknown result type (might be due to invalid IL or missing references) //IL_0b37: Expected O, but got Unknown //IL_0b76: Unknown result type (might be due to invalid IL or missing references) //IL_0b80: Expected O, but got Unknown //IL_0bbf: Unknown result type (might be due to invalid IL or missing references) //IL_0bc9: Expected O, but got Unknown //IL_0c16: Unknown result type (might be due to invalid IL or missing references) //IL_0c20: Expected O, but got Unknown HornLaunchEnabled = cfg.Bind<bool>("Eikthyr", "(Horn Attack) Enabled", true, new ConfigDescription(LocalizationManager.Desc("Eikthyr.HornAttack.Enabled"), (AcceptableValueBase)null, new object[1] { new ConfigurationManagerAttributes { Order = 9000 } })); HornLaunchHealthThreshold = cfg.Bind<float>("Eikthyr", "(Horn Attack) HPThreshold", 100f, new ConfigDescription(LocalizationManager.Desc("Eikthyr.HornAttack.HPThreshold"), (AcceptableValueBase)(object)new AcceptableValueRange<float>(1f, 100f), new object[1] { new ConfigurationManagerAttributes { Order = 8990 } })); HornLaunchAnimName = cfg.Bind<string>("Eikthyr", "(Horn Attack) Anim", "attack1", new ConfigDescription(LocalizationManager.Desc("Eikthyr.HornAttack.Anim"), (AcceptableValueBase)null, new object[1] { new ConfigurationManagerAttributes { Order = 8980 } })); HornLaunchHorizontalForce = cfg.Bind<float>("Eikthyr", "(Horn Attack) HorizontalForce", 15f, new ConfigDescription(LocalizationManager.Desc("Eikthyr.HornAttack.HorizontalForce"), (AcceptableValueBase)(object)new AcceptableValueRange<float>(0f, 100f), new object[1] { new ConfigurationManagerAttributes { Order = 8970 } })); HornLaunchVerticalForce = cfg.Bind<float>("Eikthyr", "(Horn Attack) VerticalForce", 12f, new ConfigDescription(LocalizationManager.Desc("Eikthyr.HornAttack.VerticalForce"), (AcceptableValueBase)(object)new AcceptableValueRange<float>(0f, 100f), new object[1] { new ConfigurationManagerAttributes { Order = 8960 } })); HornLaunchProcChance = cfg.Bind<float>("Eikthyr", "(Horn Attack) ProcChance", 100f, new ConfigDescription(LocalizationManager.Desc("Eikthyr.HornAttack.ProcChance"), (AcceptableValueBase)(object)new AcceptableValueRange<float>(0f, 100f), new object[1] { new ConfigurationManagerAttributes { Order = 8950 } })); HornLaunchAffectsBlocking = cfg.Bind<bool>("Eikthyr", "(Horn Attack) AffectsBlocking", false, new ConfigDescription(LocalizationManager.Desc("Eikthyr.HornAttack.AffectsBlocking"), (AcceptableValueBase)null, new object[1] { new ConfigurationManagerAttributes { Order = 8940 } })); Phase2Enabled = cfg.Bind<bool>("Eikthyr", "(Lightning) Enabled", true, new ConfigDescription(LocalizationManager.Desc("Eikthyr.Lightning.Enabled"), (AcceptableValueBase)null, new object[1] { new ConfigurationManagerAttributes { Order = 8000 } })); Phase2HealthThreshold = cfg.Bind<float>("Eikthyr", "(Lightning) HPThreshold", 50f, new ConfigDescription(LocalizationManager.Desc("Eikthyr.Lightning.HPThreshold"), (AcceptableValueBase)(object)new AcceptableValueRange<float>(1f, 99f), new object[1] { new ConfigurationManagerAttributes { Order = 7990 } })); StompAnimName = cfg.Bind<string>("Eikthyr", "(Lightning) StompAnim", "stomp", new ConfigDescription(LocalizationManager.Desc("Eikthyr.Lightning.StompAnim"), (AcceptableValueBase)null, new object[1] { new ConfigurationManagerAttributes { Order = 7980 } })); LightningProcChance = cfg.Bind<float>("Eikthyr", "(Lightning) ProcChance", 50f, new ConfigDescription(LocalizationManager.Desc("Eikthyr.Lightning.ProcChance"), (AcceptableValueBase)(object)new AcceptableValueRange<float>(0f, 100f), new object[1] { new ConfigurationManagerAttributes { Order = 7970 } })); LightningCount = cfg.Bind<int>("Eikthyr", "(Lightning) Count", 3, new ConfigDescription(LocalizationManager.Desc("Eikthyr.Lightning.Count"), (AcceptableValueBase)(object)new AcceptableValueRange<int>(1, 20), new object[1] { new ConfigurationManagerAttributes { Order = 7960 } })); LightningDamageBlunt = cfg.Bind<float>("Eikthyr", "(Lightning) DamageBlunt", 0f, new ConfigDescription(LocalizationManager.Desc("Eikthyr.Lightning.DamageBlunt"), (AcceptableValueBase)(object)new AcceptableValueRange<float>(0f, 1000f), new object[1] { new ConfigurationManagerAttributes { Order = 7950 } })); LightningDamageSlash = cfg.Bind<float>("Eikthyr", "(Lightning) DamageSlash", 0f, new ConfigDescription(LocalizationManager.Desc("Eikthyr.Lightning.DamageSlash"), (AcceptableValueBase)(object)new AcceptableValueRange<float>(0f, 1000f), new object[1] { new ConfigurationManagerAttributes { Order = 7940 } })); LightningDamagePierce = cfg.Bind<float>("Eikthyr", "(Lightning) DamagePierce", 0f, new ConfigDescription(LocalizationManager.Desc("Eikthyr.Lightning.DamagePierce"), (AcceptableValueBase)(object)new AcceptableValueRange<float>(0f, 1000f), new object[1] { new ConfigurationManagerAttributes { Order = 7930 } })); LightningDamageLightning = cfg.Bind<float>("Eikthyr", "(Lightning) DamageLightning", 50f, new ConfigDescription(LocalizationManager.Desc("Eikthyr.Lightning.DamageLightning"), (AcceptableValueBase)(object)new AcceptableValueRange<float>(0f, 1000f), new object[1] { new ConfigurationManagerAttributes { Order = 7920 } })); LightningPushForce = cfg.Bind<float>("Eikthyr", "(Lightning) PushForce", 30f, new ConfigDescription(LocalizationManager.Desc("Eikthyr.Lightning.PushForce"), (AcceptableValueBase)(object)new AcceptableValueRange<float>(0f, 200f), new object[1] { new ConfigurationManagerAttributes { Order = 7915 } })); LightningStartDelay = cfg.Bind<float>("Eikthyr", "(Lightning) StartDelay", 0.8f, new ConfigDescription(LocalizationManager.Desc("Eikthyr.Lightning.StartDelay"), (AcceptableValueBase)(object)new AcceptableValueRange<float>(0f, 5f), new object[1] { new ConfigurationManagerAttributes { Order = 7910 } })); LightningSafeZoneRadius = cfg.Bind<float>("Eikthyr", "(Lightning) SafeZoneRadius", 10f, new ConfigDescription(LocalizationManager.Desc("Eikthyr.Lightning.SafeZoneRadius"), (AcceptableValueBase)(object)new AcceptableValueRange<float>(0f, 49f), new object[1] { new ConfigurationManagerAttributes { Order = 7900 } })); LightningDotDuration = cfg.Bind<float>("Eikthyr", "(Lightning) DotDuration", 4f, new ConfigDescription(LocalizationManager.Desc("Eikthyr.Lightning.DotDuration"), (AcceptableValueBase)(object)new AcceptableValueRange<float>(0f, 30f), new object[1] { new ConfigurationManagerAttributes { Order = 7890 } })); LightningDotMinDamage = cfg.Bind<float>("Eikthyr", "(Lightning) DotMinDamage", 1f, new ConfigDescription(LocalizationManager.Desc("Eikthyr.Lightning.DotMinDamage"), (AcceptableValueBase)(object)new AcceptableValueRange<float>(0f, 100f), new object[1] { new ConfigurationManagerAttributes { Order = 7880 } })); LightningDotMaxDamage = cfg.Bind<float>("Eikthyr", "(Lightning) DotMaxDamage", 5f, new ConfigDescription(LocalizationManager.Desc("Eikthyr.Lightning.DotMaxDamage"), (AcceptableValueBase)(object)new AcceptableValueRange<float>(0f, 100f), new object[1] { new ConfigurationManagerAttributes { Order = 7870 } })); Enabled = cfg.Bind<bool>("Eikthyr", "(Summon) Enabled", true, new ConfigDescription(LocalizationManager.Desc("Eikthyr.Summon.Enabled"), (AcceptableValueBase)null, new object[1] { new ConfigurationManagerAttributes { Order = 7000 } })); TriggerMode = cfg.Bind<SummonTriggerMode>("Eikthyr", "(Summon) TriggerMode", SummonTriggerMode.Both, new ConfigDescription(LocalizationManager.Desc("Eikthyr.Summon.TriggerMode"), (AcceptableValueBase)null, new object[1] { new ConfigurationManagerAttributes { Order = 6990 } })); HealthStepCount = cfg.Bind<int>("Eikthyr", "(Summon) HealthStepCount", 10, new ConfigDescription(LocalizationManager.Desc("Eikthyr.Summon.HealthStepCount"), (AcceptableValueBase)(object)new AcceptableValueRange<int>(1, 100), new object[1] { new ConfigurationManagerAttributes { Order = 6980 } })); TimerInterval = cfg.Bind<float>("Eikthyr", "(Summon) TimerInterval", 30f, new ConfigDescription(LocalizationManager.Desc("Eikthyr.Summon.TimerInterval"), (AcceptableValueBase)(object)new AcceptableValueRange<float>(1f, 3600f), new object[1] { new ConfigurationManagerAttributes { Order = 6970 } })); SummonPrefab = cfg.Bind<string>("Eikthyr", "(Summon) Prefab", "Troll", new ConfigDescription(LocalizationManager.Desc("Eikthyr.Summon.Prefab"), (AcceptableValueBase)null, new object[1] { new ConfigurationManagerAttributes { Order = 6960 } })); SummonCount = cfg.Bind<int>("Eikthyr", "(Summon) Count", 2, new ConfigDescription(LocalizationManager.Desc("Eikthyr.Summon.Count"), (AcceptableValueBase)(object)new AcceptableValueRange<int>(1, 50), new object[1] { new ConfigurationManagerAttributes { Order = 6950 } })); SummonLevel = cfg.Bind<int>("Eikthyr", "(Summon) Level", 1, new ConfigDescription(LocalizationManager.Desc("Eikthyr.Summon.Level"), (AcceptableValueBase)(object)new AcceptableValueRange<int>(1, 5), new object[1] { new ConfigurationManagerAttributes { Order = 6940 } })); MaxTotalSummons = cfg.Bind<int>("Eikthyr", "(Summon) MaxTotal", 20, new ConfigDescription(LocalizationManager.Desc("Eikthyr.Summon.MaxTotal"), (AcceptableValueBase)(object)new AcceptableValueRange<int>(1, 200), new object[1] { new ConfigurationManagerAttributes { Order = 6930 } })); UseCLLC = cfg.Bind<bool>("Eikthyr", "(Summon) UseCLLC", false, new ConfigDescription(LocalizationManager.Desc("Eikthyr.Summon.UseCLLC"), (AcceptableValueBase)null, new object[1] { new ConfigurationManagerAttributes { Order = 6920 } })); SpecialSummonEnabled = cfg.Bind<bool>("Eikthyr", "(Special Summon) Enabled", true, new ConfigDescription(LocalizationManager.Desc("Eikthyr.Summon.SpecialEnabled"), (AcceptableValueBase)null, new object[1] { new ConfigurationManagerAttributes { Order = 6800 } })); SpecialSummonHealthThreshold = cfg.Bind<float>("Eikthyr", "(Special Summon) HPThreshold", 50f, new ConfigDescription(LocalizationManager.Desc("Eikthyr.Summon.SpecialHPThreshold"), (AcceptableValueBase)(object)new AcceptableValueRange<float>(1f, 99f), new object[1] { new ConfigurationManagerAttributes { Order = 6790 } })); SpecialSummonPrefab = cfg.Bind<string>("Eikthyr", "(Special Summon) Prefab", "Troll", new ConfigDescription(LocalizationManager.Desc("Eikthyr.Summon.SpecialPrefab"), (AcceptableValueBase)null, new object[1] { new ConfigurationManagerAttributes { Order = 6780 } })); SpecialSummonCount = cfg.Bind<int>("Eikthyr", "(Special Summon) Count", 1, new ConfigDescription(LocalizationManager.Desc("Eikthyr.Summon.SpecialCount"), (AcceptableValueBase)(object)new AcceptableValueRange<int>(1, 10), new object[1] { new ConfigurationManagerAttributes { Order = 6770 } })); SpecialSummonLevel = cfg.Bind<int>("Eikthyr", "(Special Summon) Level", 3, new ConfigDescription(LocalizationManager.Desc("Eikthyr.Summon.SpecialLevel"), (AcceptableValueBase)(object)new AcceptableValueRange<int>(1, 5), new object[1] { new ConfigurationManagerAttributes { Order = 6760 } })); SpecialSummonVfxPrefab = cfg.Bind<string>("Eikthyr", "(Special Summon) VFX", "vfx_GodExplosion", new ConfigDescription(LocalizationManager.Desc("Eikthyr.Summon.SpecialVFX"), (AcceptableValueBase)null, new object[1] { new ConfigurationManagerAttributes { Order = 6750 } })); PhaseMessage = cfg.Bind<string>("Eikthyr", "(Phase) Message", "", new ConfigDescription(LocalizationManager.Desc("Eikthyr.Phase.Message"), (AcceptableValueBase)null, new object[1] { new ConfigurationManagerAttributes { Order = 6000 } })); PhaseMessageHP = cfg.Bind<float>("Eikthyr", "(Phase) MessageHP", 50f, new ConfigDescription(LocalizationManager.Desc("Eikthyr.Phase.MessageHP"), (AcceptableValueBase)(object)new AcceptableValueRange<float>(1f, 100f), new object[1] { new ConfigurationManagerAttributes { Order = 5990 } })); } } public static class ModerConfig { public static ConfigEntry<bool> AirBreathEnabled { get; private set; } public static ConfigEntry<float> AirBreathCooldown { get; private set; } public static ConfigEntry<float> AirBreathTickInterval { get; private set; } public static ConfigEntry<float> AirBreathDuration { get; private set; } public static ConfigEntry<float> AirBreathRange { get; private set; } public static ConfigEntry<float> AirBreathAngle { get; private set; } public static ConfigEntry<float> AirBreathDamageFrost { get; private set; } public static ConfigEntry<float> AirBreathDamageBlunt { get; private set; } public static ConfigEntry<float> AirBreathStaggerMult { get; private set; } public static ConfigEntry<string> AirBreathVFX { get; private set; } public static ConfigEntry<float> AirBreathMinAltitude { get; private set; } public static ConfigEntry<float> AirBreathHPThreshold { get; private set; } public static ConfigEntry<string> AirBreathPhaseMessage { get; private set; } public static ConfigEntry<float> AirBreathPhaseMessageHP { get; private set; } public static ConfigEntry<bool> GroundBreathEnabled { get; private set; } public static ConfigEntry<float> GroundBreathTickInterval { get; private set; } public static ConfigEntry<float> GroundBreathDuration { get; private set; } public static ConfigEntry<float> GroundBreathRange { get; private set; } public static ConfigEntry<float> GroundBreathAngle { get; private set; } public static ConfigEntry<float> GroundBreathHeight { get; private set; } public static ConfigEntry<float> GroundBreathDamageFrost { get; private set; } public static ConfigEntry<float> GroundBreathDamageBlunt { get; private set; } public static ConfigEntry<float> GroundBreathPushForce { get; private set; } public static ConfigEntry<float> GroundBreathStaggerMult { get; private set; } public static ConfigEntry<bool> StrikeEnabled { get; private set; } public static ConfigEntry<float> StrikeRadius { get; private set; } public static ConfigEntry<float> StrikeExpandDuration { get; private set; } public static ConfigEntry<float> StrikeDamageBlunt { get; private set; } public static ConfigEntry<float> StrikePushForce { get; private set; } public static ConfigEntry<float> StrikePushForceY { get; private set; } public static ConfigEntry<float> StrikeStaggerMult { get; private set; } public static ConfigEntry<string> StrikeImpactVFX { get; private set; } public static ConfigEntry<float> StrikeImpactVFXScale { get; private set; } public static ConfigEntry<bool> FearEnabled { get; private set; } public static ConfigEntry<float> FearHPThreshold { get; private set; } public static ConfigEntry<float> FearCooldown { get; private set; } public static ConfigEntry<float> FearRadius { get; private set; } public static ConfigEntry<float> FearDamageFrost { get; private set; } public static ConfigEntry<float> FearDamageBlunt { get; private set; } public static ConfigEntry<float> FearPushForce { get; private set; } public static ConfigEntry<float> FearStaggerMult { get; private set; } public static ConfigEntry<bool> FearBlockable { get; private set; } public static ConfigEntry<string> FearVFX { get; private set; } public static ConfigEntry<string> FearSFX { get; private set; } public static ConfigEntry<float> FearDuration { get; private set; } public static ConfigEntry<string> FearSourceEffect { get; private set; } public static ConfigEntry<string> FearDisplayName { get; private set; } public static ConfigEntry<bool> FearDamageReductionEnabled { get; private set; } public static ConfigEntry<float> FearDamageReductionPercent { get; private set; } public static void Bind(ConfigFile cfg) { //IL_0036: Unknown result type (might be due to invalid IL or missing references) //IL_0040: Expected O, but got Unknown //IL_008d: Unknown result type (might be due to invalid IL or missing references) //IL_0097: Expected O, but got Unknown //IL_00e4: Unknown result type (might be due to invalid IL or missing references) //IL_00ee: Expected O, but got Unknown //IL_013b: Unknown result type (might be due to invalid IL or missing references) //IL_0145: Expected O, but got Unknown //IL_0192: Unknown result type (might be due to invalid IL or missing references) //IL_019c: Expected O, but got Unknown //IL_01e9: Unknown result type (might be due to invalid IL or missing references) //IL_01f3: Expected O, but got Unknown //IL_0240: Unknown result type (might be due to invalid IL or missing references) //IL_024a: Expected O, but got Unknown //IL_0297: Unknown result type (might be due to invalid IL or missing references) //IL_02a1: Expected O, but got Unknown //IL_02ee: Unknown result type (might be due to invalid IL or missing references) //IL_02f8: Expected O, but got Unknown //IL_0337: Unknown result type (might be due to invalid IL or missing references) //IL_0341: Expected O, but got Unknown //IL_038e: Unknown result type (might be due to invalid IL or missing references) //IL_0398: Expected O, but got Unknown //IL_03e5: Unknown result type (might be due to invalid IL or missing references) //IL_03ef: Expected O, but got Unknown //IL_042e: Unknown result type (might be due to invalid IL or missing references) //IL_0438: Expected O, but got Unknown //IL_0485: Unknown result type (might be due to invalid IL or missing references) //IL_048f: Expected O, but got Unknown //IL_04ca: Unknown result type (might be due to invalid IL or missing references) //IL_04d4: Expected O, but got Unknown //IL_0521: Unknown result type (might be due to invalid IL or missing references) //IL_052b: Expected O, but got Unknown //IL_0578: Unknown result type (might be due to invalid IL or missing references) //IL_0582: Expected O, but got Unknown //IL_05cf: Unknown result type (might be due to invalid IL or missing references) //IL_05d9: Expected O, but got Unknown //IL_0626: Unknown result type (might be due to invalid IL or missing references) //IL_0630: Expected O, but got Unknown //IL_067d: Unknown result type (might be due to invalid IL or missing references) //IL_0687: Expected O, but got Unknown //IL_06d4: Unknown result type (might be due to invalid IL or missing references) //IL_06de: Expected O, but got Unknown //IL_072b: Unknown result type (might be due to invalid IL or missing references) //IL_0735: Expected O, but got Unknown //IL_0782: Unknown result type (might be due to invalid IL or missing references) //IL_078c: Expected O, but got Unknown //IL_07d9: Unknown result type (might be due to invalid IL or missing references) //IL_07e3: Expected O, but got Unknown //IL_081e: Unknown result type (might be due to invalid IL or missing references) //IL_0828: Expected O, but got Unknown //IL_0875: Unknown result type (might be due to invalid IL or missing references) //IL_087f: Expected O, but got Unknown //IL_08cc: Unknown result type (might be due to invalid IL or missing references) //IL_08d6: Expected O, but got Unknown //IL_0923: Unknown result type (might be due to invalid IL or missing references) //IL_092d: Expected O, but got Unknown //IL_097a: Unknown result type (might be due to invalid IL or missing references) //IL_0984: Expected O, but got Unknown //IL_09d1: Unknown result type (might be due to invalid IL or missing references) //IL_09db: Expected O, but got Unknown //IL_0a28: Unknown result type (might be due to invalid IL or missing references) //IL_0a32: Expected O, but got Unknown //IL_0a7f: Unknown result type (might be due to invalid IL or missing references) //IL_0a89: Expected O, but got Unknown //IL_0ac4: Unknown result type (might be due to invalid IL or missing references) //IL_0ace: Expected O, but got Unknown //IL_0b0d: Unknown result type (might be due to invalid IL or missing references) //IL_0b17: Expected O, but got Unknown //IL_0b56: Unknown result type (might be due to invalid IL or missing references) //IL_0b60: Expected O, but got Unknown //IL_0bad: Unknown result type (might be due to invalid IL or missing references) //IL_0bb7: Expected O, but got Unknown //IL_0bf6: Unknown result type (might be due to invalid IL or missing references) //IL_0c00: Expected O, but got Unknown //IL_0c3f: Unknown result type (might be due to invalid IL or missing references) //IL_0c49: Expected O, but got Unknown //IL_0c84: Unknown result type (might be due to invalid IL or missing references) //IL_0c8e: Expected O, but got Unknown //IL_0cdb: Unknown result type (might be due to invalid IL or missing references) //IL_0ce5: Expected O, but got Unknown //IL_0d20: Unknown result type (might be due to invalid IL or missing references) //IL_0d2a: Expected O, but got Unknown //IL_0d77: Unknown result type (might be due to invalid IL or missing references) //IL_0d81: Expected O, but got Unknown //IL_0dce: Unknown result type (might be due to invalid IL or missing references) //IL_0dd8: Expected O, but got Unknown //IL_0e25: Unknown result type (might be due to invalid IL or missing references) //IL_0e2f: Expected O, but got Unknown //IL_0e7c: Unknown result type (might be due to invalid IL or missing references) //IL_0e86: Expected O, but got Unknown //IL_0ed3: Unknown result type (might be due to invalid IL or missing references) //IL_0edd: Expected O, but got Unknown //IL_0f2a: Unknown result type (might be due to invalid IL or missing references) //IL_0f34: Expected O, but got Unknown //IL_0f73: Unknown result type (might be due to invalid IL or missing references) //IL_0f7d: Expected O, but got Unknown //IL_0fca: Unknown result type (might be due to invalid IL or missing references) //IL_0fd4: Expected O, but got Unknown AirBreathEnabled = cfg.Bind<bool>("Moder", "(Air Breath) Enabled", true, new ConfigDescription(LocalizationManager.Desc("Moder.AirBreath.Enabled"), (AcceptableValueBase)null, new object[1] { new ConfigurationManagerAttributes { Order = 9000 } })); AirBreathCooldown = cfg.Bind<float>("Moder", "(Air Breath) Cooldown", 8f, new ConfigDescription(LocalizationManager.Desc("Moder.AirBreath.Cooldown"), (AcceptableValueBase)(object)new AcceptableValueRange<float>(1f, 60f), new object[1] { new ConfigurationManagerAttributes { Order = 8990 } })); AirBreathTickInterval = cfg.Bind<float>("Moder", "(Air Breath) TickInterval", 0.35f, new ConfigDescription(LocalizationManager.Desc("Moder.AirBreath.TickInterval"), (AcceptableValueBase)(object)new AcceptableValueRange<float>(0.1f, 2f), new object[1] { new ConfigurationManagerAttributes { Order = 8985 } })); AirBreathDuration = cfg.Bind<float>("Moder", "(Air Breath) Duration", 2.5f, new ConfigDescription(LocalizationManager.Desc("Moder.AirBreath.Duration"), (AcceptableValueBase)(object)new AcceptableValueRange<float>(0.5f, 10f), new object[1] { new ConfigurationManagerAttributes { Order = 8982 } })); AirBreathRange = cfg.Bind<float>("Moder", "(Air Breath) Range", 28f, new ConfigDescription(LocalizationManager.Desc("Moder.AirBreath.Range"), (AcceptableValueBase)(object)new AcceptableValueRange<float>(5f, 80f), new object[1] { new ConfigurationManagerAttributes { Order = 8980 } })); AirBreathAngle = cfg.Bind<float>("Moder", "(Air Breath) Angle", 60f, new ConfigDescription(LocalizationManager.Desc("Moder.AirBreath.Angle"), (AcceptableValueBase)(object)new AcceptableValueRange<float>(10f, 180f), new object[1] { new ConfigurationManagerAttributes { Order = 8970 } })); AirBreathDamageFrost = cfg.Bind<float>("Moder", "(Air Breath) DamageFrost", 7f, new ConfigDescription(LocalizationManager.Desc("Moder.AirBreath.DamageFrost"), (AcceptableValueBase)(object)new AcceptableValueRange<float>(0f, 500f), new object[1] { new ConfigurationManagerAttributes { Order = 8960 } })); AirBreathDamageBlunt = cfg.Bind<float>("Moder", "(Air Breath) DamageBlunt", 0f, new ConfigDescription(LocalizationManager.Desc("Moder.AirBreath.DamageBlunt"), (AcceptableValueBase)(object)new AcceptableValueRange<float>(0f, 500f), new object[1] { new ConfigurationManagerAttributes { Order = 8950 } })); AirBreathStaggerMult = cfg.Bind<float>("Moder", "(Air Breath) StaggerMult", 0.3f, new ConfigDescription(LocalizationManager.Desc("Moder.AirBreath.StaggerMult"), (AcceptableValueBase)(object)new AcceptableValueRange<float>(0f, 5f), new object[1] { new ConfigurationManagerAttributes { Order = 8945 } })); AirBreathVFX = cfg.Bind<string>("Moder", "(Air Breath) VFX", "vfx_dragon_coldbreath", new ConfigDescription(LocalizationManager.Desc("Moder.AirBreath.VFX"), (AcceptableValueBase)null, new object[1] { new ConfigurationManagerAttributes { Order = 8940 } })); AirBreathMinAltitude = cfg.Bind<float>("Moder", "(Air Breath) MinAltitude", 8f, new ConfigDescription(LocalizationManager.Desc("Moder.AirBreath.MinAltitude"), (AcceptableValueBase)(object)new AcceptableValueRange<float>(0f, 30f), new object[1] { new ConfigurationManagerAttributes { Order = 8930 } })); AirBreathHPThreshold = cfg.Bind<float>("Moder", "(Air Breath) HPThreshold", 100f, new ConfigDescription(LocalizationManager.Desc("Moder.AirBreath.HPThreshold"), (AcceptableValueBase)(object)new AcceptableValueRange<float>(1f, 100f), new object[1] { new ConfigurationManagerAttributes { Order = 8920 } })); AirBreathPhaseMessage = cfg.Bind<string>("Moder", "(Air Breath) PhaseMessage", "", new ConfigDescription(LocalizationManager.Desc("Moder.AirBreath.PhaseMessage"), (AcceptableValueBase)null, new object[1] { new ConfigurationManagerAttributes { Order = 8910 } })); AirBreathPhaseMessageHP = cfg.Bind<float>("Moder", "(Air Breath) PhaseMessageHP", 50f, new ConfigDescription(LocalizationManager.Desc("Moder.AirBreath.PhaseMessageHP"), (AcceptableValueBase)(object)new AcceptableValueRange<float>(1f, 100f), new object[1] { new ConfigurationManagerAttributes { Order = 8900 } })); GroundBreathEnabled = cfg.Bind<bool>("Moder", "(Ground Breath) Enabled", true, new ConfigDescription(LocalizationManager.Desc("Moder.GroundBreath.Enabled"), (AcceptableValueBase)null, new object[1] { new ConfigurationManagerAttributes { Order = 8890 } })); GroundBreathTickInterval = cfg.Bind<float>("Moder", "(Ground Breath) TickInterval", 0.35f, new ConfigDescription(LocalizationManager.Desc("Moder.GroundBreath.TickInterval"), (AcceptableValueBase)(object)new AcceptableValueRange<float>(0.1f, 2f), new object[1] { new ConfigurationManagerAttributes { Order = 8880 } })); GroundBreathDuration = cfg.Bind<float>("Moder", "(Ground Breath) Duration", 2f, new ConfigDescription(LocalizationManager.Desc("Moder.GroundBreath.Duration"), (AcceptableValueBase)(object)new AcceptableValueRange<float>(0.5f, 10f), new object[1] { new ConfigurationManagerAttributes { Order = 8875 } })); GroundBreathRange = cfg.Bind<float>("Moder", "(Ground Breath) Range", 10f, new ConfigDescription(LocalizationManager.Desc("Moder.GroundBreath.Range"), (AcceptableValueBase)(object)new AcceptableValueRange<float>(2f, 40f), new object[1] { new ConfigurationManagerAttributes { Order = 8870 } })); GroundBreathAngle = cfg.Bind<float>("Moder", "(Ground Breath) Angle", 50f, new ConfigDescription(LocalizationManager.Desc("Moder.GroundBreath.Angle"), (AcceptableValueBase)(object)new AcceptableValueRange<float>(10f, 180f), new object[1] { new ConfigurationManagerAttributes { Order = 8860 } })); GroundBreathHeight = cfg.Bind<float>("Moder", "(Ground Breath) Height", 1f, new ConfigDescription(LocalizationManager.Desc("Moder.GroundBreath.Height"), (AcceptableValueBase)(object)new AcceptableValueRange<float>(0f, 5f), new object[1] { new ConfigurationManagerAttributes { Order = 8850 } })); GroundBreathDamageFrost = cfg.Bind<float>("Moder", "(Ground Breath) DamageFrost", 8f, new ConfigDescription(LocalizationManager.Desc("Moder.GroundBreath.DamageFrost"), (AcceptableValueBase)(object)new AcceptableValueRange<float>(0f, 500f), new object[1] { new ConfigurationManagerAttributes { Order = 8840 } })); GroundBreathDamageBlunt = cfg.Bind<float>("Moder", "(Ground Breath) DamageBlunt", 0f, new ConfigDescription(LocalizationManager.Desc("Moder.GroundBreath.DamageBlunt"), (AcceptableValueBase)(object)new AcceptableValueRange<float>(0f, 500f), new object[1] { new ConfigurationManagerAttributes { Order = 8830 } })); GroundBreathPushForce = cfg.Bind<float>("Moder", "(Ground Breath) PushForce", 20f, new ConfigDescription(LocalizationManager.Desc("Moder.GroundBreath.PushForce"), (AcceptableValueBase)(object)new AcceptableValueRange<float>(0f, 200f), new object[1] { new ConfigurationManagerAttributes { Order = 8820 } })); GroundBreathStaggerMult = cfg.Bind<float>("Moder", "(Ground Breath) StaggerMult", 0.3f, new ConfigDescription(LocalizationManager.Desc("Moder.GroundBreath.StaggerMult"), (AcceptableValueBase)(object)new AcceptableValueRange<float>(0f, 5f), new object[1] { new ConfigurationManagerAttributes { Order = 8815 } })); FearEnabled = cfg.Bind<bool>("Moder", "(Dragon Fear) Enabled", true, new ConfigDescription(LocalizationManager.Desc("Moder.DragonFear.Enabled"), (AcceptableValueBase)null, new object[1] { new ConfigurationManagerAttributes { Order = 8000 } })); FearHPThreshold = cfg.Bind<float>("Moder", "(Dragon Fear) HPThreshold", 100f, new ConfigDescription(LocalizationManager.Desc("Moder.DragonFear.HPThreshold"), (AcceptableValueBase)(object)new AcceptableValueRange<float>(1f, 100f), new object[1] { new ConfigurationManagerAttributes { Order = 7990 } })); FearCooldown = cfg.Bind<float>("Moder", "(Dragon Fear) Cooldown", 25f, new ConfigDescription(LocalizationManager.Desc("Moder.DragonFear.Cooldown"), (AcceptableValueBase)(object)new AcceptableValueRange<float>(5f, 300f), new object[1] { new ConfigurationManagerAttributes { Order = 7980 } })); FearRadius = cfg.Bind<float>("Moder", "(Dragon Fear) Radius", 15f, new ConfigDescription(LocalizationManager.Desc("Moder.DragonFear.Radius"), (AcceptableValueBase)(object)new AcceptableValueRange<float>(1f, 60f), new object[1] { new ConfigurationManagerAttributes { Order = 7970 } })); FearDamageFrost = cfg.Bind<float>("Moder", "(Dragon Fear) DamageFrost", 30f, new ConfigDescription(LocalizationManager.Desc("Moder.DragonFear.DamageFrost"), (AcceptableValueBase)(object)new AcceptableValueRange<float>(0f, 500f), new object[1] { new ConfigurationManagerAttributes { Order = 7960 } })); FearDamageBlunt = cfg.Bind<float>("Moder", "(Dragon Fear) DamageBlunt", 0f, new ConfigDescription(LocalizationManager.Desc("Moder.DragonFear.DamageBlunt"), (AcceptableValueBase)(object)new AcceptableValueRange<float>(0f, 500f), new object[1] { new ConfigurationManagerAttributes { Order = 7950 } })); FearPushForce = cfg.Bind<float>("Moder", "(Dragon Fear) PushForce", 20f, new ConfigDescription(LocalizationManager.Desc("Moder.DragonFear.PushForce"), (AcceptableValueBase)(object)new AcceptableValueRange<float>(0f, 200f), new object[1] { new ConfigurationManagerAttributes { Order = 7940 } })); FearStaggerMult = cfg.Bind<float>("Moder", "(Dragon Fear) StaggerMult", 1f, new ConfigDescription(LocalizationManager.Desc("Moder.DragonFear.StaggerMult"), (AcceptableValueBase)(object)new AcceptableValueRange<float>(0f, 5f), new object[1] { new ConfigurationManagerAttributes { Order = 7930 } })); FearBlockable = cfg.Bind<bool>("Moder", "(Dragon Fear) Blockable", true, new ConfigDescription(LocalizationManager.Desc("Moder.DragonFear.Blockable"), (AcceptableValueBase)null, new object[1] { new ConfigurationManagerAttributes { Order = 7920 } })); FearVFX = cfg.Bind<string>("Moder", "(Dragon Fear) VFX", "", new ConfigDescription(LocalizationManager.Desc("Moder.DragonFear.VFX"), (AcceptableValueBase)null, new object[1] { new ConfigurationManagerAttributes { Order = 7910 } })); FearSFX = cfg.Bind<string>("Moder", "(Dragon Fear) SFX", "", new ConfigDescription(LocalizationManager.Desc("Moder.DragonFear.SFX"), (AcceptableValueBase)null, new object[1] { new ConfigurationManagerAttributes { Order = 7900 } })); FearDuration = cfg.Bind<float>("Moder", "(Dragon Fear) Duration", 1.5f, new ConfigDescription(LocalizationManager.Desc("Moder.DragonFear.Duration"), (AcceptableValueBase)(object)new AcceptableValueRange<float>(0.5f, 5f), new object[1] { new ConfigurationManagerAttributes { Order = 7895 } })); FearSourceEffect = cfg.Bind<string>("Moder", "(Dragon Fear) SourceEffect", "Tared", new ConfigDescription(LocalizationManager.Desc("Moder.DragonFear.SourceEffect"), (AcceptableValueBase)null, new object[1] { new ConfigurationManagerAttributes { Order = 7890 } })); FearDisplayName = cfg.Bind<string>("Moder", "(Dragon Fear) DisplayName", "경직", new ConfigDescription(LocalizationManager.Desc("Moder.DragonFear.DisplayName"), (AcceptableValueBase)null, new object[1] { new ConfigurationManagerAttributes { Order = 7885 } })); FearDamageReductionEnabled = cfg.Bind<bool>("Moder", "(Dragon Fear) DamageReductionEnabled", false, new ConfigDescription(LocalizationManager.Desc("Moder.DragonFear.DamageReductionEnabled"), (AcceptableValueBase)null, new object[1] { new ConfigurationManagerAttributes { Order = 7880 } })); FearDamageReductionPercent = cfg.Bind<float>("Moder", "(Dragon Fear) DamageReductionPercent", 30f, new ConfigDescription(LocalizationManager.Desc("Moder.DragonFear.DamageReductionPercent"), (AcceptableValueBase)(object)new AcceptableValueRange<float>(0f, 90f), new object[1] { new ConfigurationManagerAttributes { Order = 7875 } })); StrikeEnabled = cfg.Bind<bool>("Moder", "(Dragon Strike) Enabled", true, new ConfigDescription(LocalizationManager.Desc("Moder.DragonStrike.Enabled"), (AcceptableValueBase)null, new object[1] { new ConfigurationManagerAttributes { Order = 7000 } })); StrikeRadius = cfg.Bind<float>("Moder", "(Dragon Strike) Radius", 50f, new ConfigDescription(LocalizationManager.Desc("Moder.DragonStrike.Radius"), (AcceptableValueBase)(object)new AcceptableValueRange<float>(5f, 100f), new object[1] { new ConfigurationManagerAttributes { Order = 6990 } })); StrikeExpandDuration = cfg.Bind<float>("Moder", "(Dragon Strike) ExpandDuration", 2f, new ConfigDescription(LocalizationManager.Desc("Moder.DragonStrike.ExpandDuration"), (AcceptableValueBase)(object)new AcceptableValueRange<float>(0.3f, 8f), new object[1] { new ConfigurationManagerAttributes { Order = 6988 } })); StrikeDamageBlunt = cfg.Bind<float>("Moder", "(Dragon Strike) DamageBlunt", 40f, new ConfigDescription(LocalizationManager.Desc("Moder.DragonStrike.DamageBlunt"), (AcceptableValueBase)(object)new AcceptableValueRange<float>(0f, 500f), new object[1] { new ConfigurationManagerAttributes { Order = 6985 } })); StrikePushForce = cfg.Bind<float>("Moder", "(Dragon Strike) PushForce", 25f, new ConfigDescription(LocalizationManager.Desc("Moder.DragonStrike.PushForce"), (AcceptableValueBase)(object)new AcceptableValueRange<float>(0f, 1000f), new object[1] { new ConfigurationManagerAttributes { Order = 6980 } })); StrikePushForceY = cfg.Bind<float>("Moder", "(Dragon Strike) PushForceY", 8f, new ConfigDescription(LocalizationManager.Desc("Moder.DragonStrike.PushForceY"), (AcceptableValueBase)(object)new AcceptableValueRange<float>(0f, 100f), new object[1] { new ConfigurationManagerAttributes { Order = 6970 } })); StrikeStaggerMult = cfg.Bind<float>("Moder", "(Dragon Strike) StaggerMult", 1f, new ConfigDescription(LocalizationManager.Desc("Moder.DragonStrike.StaggerMult"), (AcceptableValueBase)(object)new AcceptableValueRange<float>(0f, 5f), new object[1] { new ConfigurationManagerAttributes { Order = 6975 } })); StrikeImpactVFX = cfg.Bind<string>("Moder", "(Dragon Strike) ImpactVFX", "vfx_gdking_stomp", new ConfigDescription(LocalizationManager.Desc("Moder.DragonStrike.ImpactVFX"), (AcceptableValueBase)null, new object[1] { new ConfigurationManagerAttributes { Order = 6973 } })); StrikeImpactVFXScale = cfg.Bind<float>("Moder", "(Dragon Strike) ImpactVFXScale", 1f, new ConfigDescription(LocalizationManager.Desc("Moder.DragonStrike.ImpactVFXScale"), (AcceptableValueBase)(object)new AcceptableValueRange<float>(0.1f, 5f), new object[1] { new ConfigurationManagerAttributes { Order = 6972 } })); } } [BepInPlugin("bossadd", "BossAdd", "1.1.0")] public class Plugin : BaseUnityPlugin { public static ManualLogSource Log; public static bool SummonBlocked = false; private bool _playerWasDead = false; private float _unblockTime = 0f; private static readonly HashSet<string> _tickErrorLogged = new HashSet<string>(); public static Plugin Instance { get; private set; } private void Awake() { //IL_007e: Unknown result type (might be due to invalid IL or missing references) Instance = this; Log = ((BaseUnityPlugin)this).Logger; LocalizationManager.Init(); BossStatConfig.Bind(((BaseUnityPlugin)this).Config); EikthyrSummonConfig.Bind(((BaseUnityPlugin)this).Config); BossSummonConfig.Bind(((BaseUnityPlugin)this).Config); TheElderConfig.Bind(((BaseUnityPlugin)this).Config); BonemassConfig.Bind(((BaseUnityPlugin)this).Config); ModerConfig.Bind(((BaseUnityPlugin)this).Config); YagluthConfig.Bind(((BaseUnityPlugin)this).Config); QueenConfig.Bind(((BaseUnityPlugin)this).Config); new Harmony("bossadd").PatchAll(); LogBuildInfo(); Log.LogInfo((object)"BossAdd loaded."); } private void LogBuildInfo() { try { string location = Assembly.GetExecutingAssembly().Location; DateTime lastWriteTime = File.GetLastWriteTime(location); string text; using (MD5 mD = MD5.Create()) { using FileStream inputStream = File.OpenRead(location); byte[] array = mD.ComputeHash(inputStream); text = BitConverter.ToString(array, 0, 4).Replace("-", ""); } Log.LogInfo((object)($"[BossAdd:빌드정보] dll 수정시각={lastWriteTime:yyyy-MM-dd HH:mm:ss}, " + "md5앞8자리=" + text)); } catch (Exception ex) { Log.LogWarning((object)("[BossAdd:빌드정보] 확인 실패 — " + ex.Message)); } } private void Update() { SafeTick("EikthyrTimerSummonHandler", EikthyrTimerSummonHandler.Tick); SafeTick("BossTimerSummonHandler", BossTimerSummonHandler.Tick); SafeTick("TheElderRockThrowHandler", TheElderRockThrowHandler.Tick); SafeTick("ModerAirBreathHandler", ModerAirBreathHandler.Tick); SafeTick("DragonGroundBreathHandler", DragonGroundBreathHandler.Tick); SafeTick("YagluthRageHandler", YagluthRageHandler.Tick); SafeTick("YagluthDeathZoneHandler", YagluthDeathZoneHandler.Tick); SafeTick("YagluthMeteorFireHandler", YagluthMeteorFireHandler.Tick); SafeTick("QueenBroodTimerHandler", QueenBroodTimerHandler.Tick); SafeTick("QueenPoisonZoneHandler", QueenPoisonZoneHandler.Tick); SafeTick("BonemassSplitState.TickOrphanCheck", BonemassSplitState.TickOrphanCheck); SafeTick("BonemassMiniLeashHandler", BonemassMiniLeashHandler.Tick); SafeTick("CheckRespawn", CheckRespawn); } private static void SafeTick(string name, Action tick) { try { tick(); } catch (Exception arg) { if (_tickErrorLogged.Add(name)) { Log.LogError((object)("[BossAdd:Tick오류] '" + name + "' 핸들러에서 예외 발생 — 이 핸들러는 " + $"계속 실패할 수 있으나 추가 로그는 세션당 1회로 생략됨. {arg}")); } } } private void CheckRespawn() { if ((Object)(object)Player.m_localPlayer == (Object)null) { return; } if (((Character)Player.m_localPlayer).IsDead()) { if (!_playerWasDead) { _playerWasDead = true; SummonBlocked = true; Log.LogInfo((object)"[EikthyrSummon] 플레이어 사망 → 소환 차단 시작"); } } else if (_playerWasDead) { _playerWasDead = false; EikthyrSummonHelper.DespawnSummons("플레이어 리스폰"); _unblockTime = Time.time + 3f; Log.LogInfo((object)"[EikthyrSummon] 플레이어 리스폰 → 3초 후 소환 재개 예정"); } if (SummonBlocked && _unblockTime > 0f && Time.time >= _unblockTime) { SummonBlocked = false; _unblockTime = 0f; Log.LogInfo((object)"[EikthyrSummon] 소환 차단 해제 — 전투 재개"); } } } public static class QueenConfig { public static ConfigEntry<bool> BroodHPEnabled { get; private set; } public static ConfigEntry<float> BroodHPStep { get; private set; } public static ConfigEntry<int> BroodHPCount { get; private set; } public static ConfigEntry<int> BroodHPLevel { get; private set; } public static ConfigEntry<float> BroodHPScale { get; private set; } public static ConfigEntry<string> BroodHPPrefab { get; private set; } public static ConfigEntry<string> BroodHPVFX { get; private set; } public static ConfigEntry<string> BroodHPMessage { get; private set; } public static ConfigEntry<bool> BroodTimerEnabled { get; private set; } public static ConfigEntry<float> BroodTimerInterval { get; private set; } public static ConfigEntry<int> BroodTimerCount { get; private set; } public static ConfigEntry<int> BroodTimerLevel { get; private set; } public static ConfigEntry<float> BroodTimerScale { get; private set; } public static ConfigEntry<string> BroodTimerPrefab { get; private set; } public static ConfigEntry<string> BroodTimerVFX { get; private set; } public static ConfigEntry<bool> BreathSummonEnabled { get; private set; } public static ConfigEntry<string> BreathSummonVFXTrigger { get; private set; } public static ConfigEntry<float> BreathSummonChance { get; private set; } public static ConfigEntry<string> BreathSummonPrefab { get; private set; } public static ConfigEntry<int> BreathSummonCount { get; private set; } public static ConfigEntry<int> BreathSummonLevel { get; private set; } public static ConfigEntry<float> BreathSummonScale { get; private set; } public static ConfigEntry<string> BreathSummonVFX { get; private set; } public static ConfigEntry<bool> BreathSummonDebugScan { get; private set; } public static ConfigEntry<bool> PoisonEnabled { get; private set; } public static ConfigEntry<float> PoisonMoveInterval { get; private set; } public static ConfigEntry<float> PoisonDuration { get; private set; } public static ConfigEntry<float> PoisonRadius { get; private set; } public static ConfigEntry<float> PoisonDamagePerTick { get; private set; } public static ConfigEntry<float> PoisonTickInterval { get; private set; } public static ConfigEntry<int> PoisonMaxZones { get; private set; } public static ConfigEntry<string> PoisonVFX { get; private set; } public static ConfigEntry<float> PoisonVFXScale { get; private set; } public static void Bind(ConfigFile cfg) { //IL_0036: Unknown result type (might be due to invalid IL or missing references) //IL_0040: Expected O, but got Unknown //IL_008d: Unknown result type (might be due to invalid IL or missing references) //IL_0097: Expected O, but got Unknown //IL_00e4: Unknown result type (might be due to invalid IL or missing references) //IL_00ee: Expected O, but got Unknown //IL_013b: Unknown result type (might be due to invalid IL or missing references) //IL_0145: Expected O, but got Unknown //IL_0192: Unknown result type (might be due to invalid IL or missing references) //IL_019c: Expected O, but got Unknown //IL_01e9: Unknown result type (might be due to invalid IL or missing references) //IL_01f3: Expected O, but got Unknown //IL_0235: Unknown result type (might be due to invalid IL or missing references) //IL_023f: Expected O, but got Unknown //IL_027e: Unknown result type (might be due to invalid IL or missing references) //IL_0288: Expected O, but got Unknown //IL_02d5: Unknown result type (might be due to invalid IL or missing references) //IL_02df: Expected O, but got Unknown //IL_031a: Unknown result type (might be due to invalid IL or missing references) //IL_0324: Expected O, but got Unknown //IL_0363: Unknown result type (might be due to invalid IL or missing references) //IL_036d: Expected O, but got Unknown //IL_03ba: Unknown result type (might be due to invalid IL or missing references) //IL_03c4: Expected O, but got Unknown //IL_0403: Unknown result type (might be due to invalid IL or missing references) //IL_040d: Expected O, but got Unknown //IL_044f: Unknown result type (might be due to invalid IL or missing references) //IL_0459: Expected O, but got Unknown //IL_049a: Unknown result type (might be due to invalid IL or missing references) //IL_04a4: Expected O, but got Unknown //IL_04f1: Unknown result type (might be due to invalid IL or missing references) //IL_04fb: Expected O, but got Unknown //IL_053a: Unknown result type (might be due to invalid IL or missing references) //IL_0544: Expected O, but got Unknown //IL_057f: Unknown result type (might be due to invalid IL or missing references) //IL_0589: Expected O, but got Unknown //IL_05c4: Unknown result type (might be due to invalid IL or missing references) //IL_05ce: Expected O, but got Unknown //IL_061b: Unknown result type (might be due to invalid IL or missing references) //IL_0625: Expected O, but got Unknown //IL_0667: Unknown result type (might be due to invalid IL or missing references) //IL_0671: Expected O, but got Unknown //IL_06b2: Unknown result type (might be due to invalid IL or missing references) //IL_06bc: Expected O, but got Unknown //IL_0709: Unknown result type (might be due to invalid IL or missing references) //IL_0713: Expected O, but got Unknown //IL_0752: Unknown result type (might be due to invalid IL or missing references) //IL_075c: Expected O, but got Unknown //IL_079b: Unknown result type (might be due to invalid IL or missing references) //IL_07a5: Expected O, but got Unknown //IL_07e4: Unknown result type (might be due to invalid IL or missing references) //IL_07ee: Expected O, but got Unknown //IL_0829: Unknown result type (might be due to invalid IL or missing references) //IL_0833: Expected O, but got Unknown //IL_0880: Unknown result type (might be due to invalid IL or missing references) //IL_088a: Expected O, but got Unknown //IL_08cc: Unknown result type (might be due to invalid IL or missing references) //IL_08d6: Expected O, but got Unknown //IL_0917: Unknown result type (might be due to invalid IL or missing references) //IL_0921: Expected O, but got Unknown //IL_096e: Unknown result type (might be due to invalid IL or missing references) //IL_0978: Expected O, but got Unknown //IL_09b7: Unknown result type (might be due to invalid IL or missing references) //IL_09c1: Expected O, but got Unknown //IL_0a00: Unknown result type (might be due to invalid IL or missing references) //IL_0a0a: Expected O, but got Unknown PoisonEnabled = cfg.Bind<bool>("The Queen", "(Poison Field) Enabled", true, new ConfigDescription(LocalizationManager.Desc("Queen.PoisonField.Enabled"), (AcceptableValueBase)null, new object[1] { new ConfigurationManagerAttributes { Order = 9000 } })); PoisonMoveInterval = cfg.Bind<float>("The Queen", "(Poison Field) MoveInterval", 10f, new ConfigDescription(LocalizationManager.Desc("Queen.PoisonField.MoveInterval"), (AcceptableValueBase)(object)new AcceptableValueRange<float>(1f, 120f), new object[1] { new ConfigurationManagerAttributes { Order = 8990 } })); PoisonDuration = cfg.Bind<float>("The Queen", "(Poison Field) Duration", 20f, new ConfigDescription(LocalizationManager.Desc("Queen.PoisonField.Duration"), (AcceptableValueBase)(object)new AcceptableValueRange<float>(1f, 300f), new object[1] { new ConfigurationManagerAttributes { Order = 8980 } })); PoisonRadius = cfg.Bind<float>("The Queen", "(Poison Field) Radius", 6f, new ConfigDescription(LocalizationManager.Desc("Queen.PoisonField.Radius"), (AcceptableValueBase)(object)new AcceptableValueRange<float>(1f, 50f), new object[1] { new ConfigurationManagerAttributes { Order = 8970