The current BepInExPack is broken due to the Oakveil update, and mods installed through a mod manager may not work. Join the modding Discord for more information.
Decompiled source of JewelCreator v0.1.2
JewelCreator.dll
Decompiled 11 months agousing System; using System.Collections.Concurrent; using System.Collections.Generic; using System.Collections.Immutable; using System.Diagnostics; using System.IO; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using BepInEx; using BepInEx.Configuration; using BepInEx.Core.Logging.Interpolation; using BepInEx.Logging; using BepInEx.Unity.IL2CPP; using HarmonyLib; using Il2CppSystem; using Il2CppSystem.Collections.Generic; using Il2CppSystem.Text; using JewelCreator.Configs; using JewelCreator.Database; using JewelCreator.Utils; using Microsoft.CodeAnalysis; using ProjectM; using ProjectM.Network; using Stunlock.Core; using Unity.Entities; using UnityEngine; using VampireCommandFramework; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: TargetFramework(".NETCoreApp,Version=v6.0", FrameworkDisplayName = ".NET 6.0")] [assembly: AssemblyCompany("JewelCreator")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyDescription("Jewel Creator.")] [assembly: AssemblyFileVersion("0.1.2.0")] [assembly: AssemblyInformationalVersion("0.1.2+ca816602d19f727ec10e3a8a03e3c68c5f946865")] [assembly: AssemblyProduct("JewelCreator")] [assembly: AssemblyTitle("JewelCreator")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("0.1.2.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.Module, AllowMultiple = false, Inherited = false)] internal sealed class RefSafetyRulesAttribute : Attribute { public readonly int Version; public RefSafetyRulesAttribute(int P_0) { Version = P_0; } } } namespace JewelCreator { [BepInPlugin("JewelCreator", "JewelCreator", "0.1.2")] [BepInDependency(/*Could not decode attribute arguments.*/)] public class Plugin : BasePlugin { private Harmony _harmony; public static ManualLogSource Logger; public override void Load() { //IL_00b6: Unknown result type (might be due to invalid IL or missing references) //IL_00bd: Expected O, but got Unknown //IL_001a: Unknown result type (might be due to invalid IL or missing references) //IL_0020: Expected O, but got Unknown //IL_0078: Unknown result type (might be due to invalid IL or missing references) //IL_0082: Expected O, but got Unknown bool flag = default(bool); if (Helper.IsServer) { ManualLogSource log = ((BasePlugin)this).Log; BepInExInfoLogInterpolatedStringHandler val = new BepInExInfoLogInterpolatedStringHandler(27, 2, ref flag); if (flag) { ((BepInExLogInterpolatedStringHandler)val).AppendLiteral("Plugin "); ((BepInExLogInterpolatedStringHandler)val).AppendFormatted<string>("JewelCreator"); ((BepInExLogInterpolatedStringHandler)val).AppendLiteral(" version "); ((BepInExLogInterpolatedStringHandler)val).AppendFormatted<string>("0.1.2"); ((BepInExLogInterpolatedStringHandler)val).AppendLiteral(" is loaded!"); } log.LogInfo(val); Logger = ((BasePlugin)this).Log; _harmony = new Harmony("JewelCreator"); _harmony.PatchAll(Assembly.GetExecutingAssembly()); MainConfig.SettingsInit(); DB.inits(); CommandRegistry.RegisterAll(); } else { ManualLogSource log2 = ((BasePlugin)this).Log; BepInExFatalLogInterpolatedStringHandler val2 = new BepInExFatalLogInterpolatedStringHandler(75, 0, ref flag); if (flag) { ((BepInExLogInterpolatedStringHandler)val2).AppendLiteral("There is no Server world (yet). Did you install a server mod on the client?"); } log2.LogFatal(val2); } } public override bool Unload() { CommandRegistry.UnregisterAssembly(); Harmony harmony = _harmony; if (harmony != null) { harmony.UnpatchSelf(); } return true; } } public static class MyPluginInfo { public const string PLUGIN_GUID = "JewelCreator"; public const string PLUGIN_NAME = "JewelCreator"; public const string PLUGIN_VERSION = "0.1.2"; } } namespace JewelCreator.Utils { internal class Helper { private static World? _serverWorld; private static PrefabCollectionSystem PrefabCollectionSystem => Server.GetExistingSystemManaged<PrefabCollectionSystem>(); private static Dictionary<string, PrefabGUID> NameToPrefab => PrefabCollectionSystem.NameToPrefabGuidDictionary; public static World Server { get { if (_serverWorld != null) { return _serverWorld; } _serverWorld = GetWorld("Server") ?? throw new Exception("There is no Server world (yet). Did you install a server mod on the client?"); return _serverWorld; } } public static bool IsServer => Application.productName == "VRisingServer"; public static void CreateJewel(User user, string args1, string[] mods, ConcurrentDictionary<string, CreateJevelLegendStruct> Mods) { //IL_00bb: Unknown result type (might be due to invalid IL or missing references) //IL_00cf: Unknown result type (might be due to invalid IL or missing references) //IL_00d4: Unknown result type (might be due to invalid IL or missing references) //IL_00e5: Unknown result type (might be due to invalid IL or missing references) //IL_00ea: Unknown result type (might be due to invalid IL or missing references) //IL_00fd: Unknown result type (might be due to invalid IL or missing references) //IL_0102: Unknown result type (might be due to invalid IL or missing references) //IL_0115: Unknown result type (might be due to invalid IL or missing references) //IL_011a: Unknown result type (might be due to invalid IL or missing references) //IL_012d: Unknown result type (might be due to invalid IL or missing references) //IL_0132: Unknown result type (might be due to invalid IL or missing references) //IL_014d: Unknown result type (might be due to invalid IL or missing references) //IL_014f: Unknown result type (might be due to invalid IL or missing references) //IL_015a: Unknown result type (might be due to invalid IL or missing references) //IL_008e: Unknown result type (might be due to invalid IL or missing references) //IL_0093: Unknown result type (might be due to invalid IL or missing references) //IL_0065: Unknown result type (might be due to invalid IL or missing references) //IL_006a: Unknown result type (might be due to invalid IL or missing references) Dictionary<string, PrefabGUID> nameToPrefab = NameToPrefab; float[] array = new float[Mods.Count]; PrefabGUID[] array2 = (PrefabGUID[])(object)new PrefabGUID[Mods.Count]; for (int i = 0; i < mods.Length; i++) { if (mods[i] != "0" && Mods.TryGetValue(mods[i], out var value)) { array2[i] = nameToPrefab[Mods[mods[i]].Mod]; int num = i; value = Mods[mods[i]]; array[num] = value.Power; } else { array2[i] = new PrefabGUID(0); array[i] = 0f; } } CreateJewelDebugEventV2 val = default(CreateJewelDebugEventV2); val.AbilityPrefabGuid = nameToPrefab[DB.abilityNames[args1]]; val.Equip = false; val.SpellMod1 = array2[0]; val.SpellMod1Power = array[0]; val.SpellMod2 = array2[1]; val.SpellMod2Power = array[1]; val.SpellMod3 = array2[2]; val.SpellMod3Power = array[2]; val.SpellMod4 = array2[3]; val.SpellMod4Power = array[3]; val.Tier = DB.JewelTier; CreateJewelDebugEventV2 val2 = val; Server.GetExistingSystemManaged<DebugEventsSystem>().CreateJewelEvent(user.Index, ref val2); } private static World GetWorld(string name) { Enumerator<World> enumerator = World.s_AllWorlds.GetEnumerator(); while (enumerator.MoveNext()) { World current = enumerator.Current; if (current.Name == name) { return current; } } return null; } } } namespace JewelCreator.Database { internal class DB { public static float SkillPower = 0f; public static int JewelTier = 0; public static bool EnabledCommand = false; public static bool AdminOnlyCommand = false; public static ConcurrentDictionary<string, ConcurrentDictionary<string, CreateJevelLegendStruct>> SkillModList = new ConcurrentDictionary<string, ConcurrentDictionary<string, CreateJevelLegendStruct>>(); public static ImmutableDictionary<string, List<string>> SkillClass = ImmutableDictionary.Create<string, List<string>>().Add("blood", new List<string> { "bloodfountain", "bloodrage", "bloodrite", "sanguinecoil", "shadowbolt", "veilofblood" }).Add("chaos", new List<string> { "aftershock", "chaosbarrier", "powersurge", "void", "volley", "veilofchaos" }) .Add("frost", new List<string> { "coldsnap", "crystallance", "frostbarrier", "frostbat", "icenova", "veiloffrost" }) .Add("illusion", new List<string> { "misttrance", "mosquito", "phantomaegis", "spectralwolf", "wraithspear", "veilofillusion" }) .Add("storm", new List<string> { "balllightning", "cyclone", "discharge", "lightningwall", "polarityshift", "veilofstorm" }) .Add("unholy", new List<string> { "corpseexplosion", "corruptedskull", "deathknight", "soulburn", "wardofthedamned", "veilofbones" }); public static ImmutableDictionary<string, string> abilityNames = ImmutableDictionary.Create<string, string>().Add("bloodfountain", "AB_Blood_BloodFountain_AbilityGroup").Add("bloodrage", "AB_Blood_BloodRage_AbilityGroup") .Add("bloodrite", "AB_Blood_BloodRite_AbilityGroup") .Add("sanguinecoil", "AB_Blood_SanguineCoil_AbilityGroup") .Add("shadowbolt", "AB_Blood_Shadowbolt_AbilityGroup") .Add("veilofblood", "AB_Vampire_VeilOfBlood_Group") .Add("aftershock", "AB_Chaos_Aftershock_Group") .Add("chaosbarrier", "AB_Chaos_Barrier_AbilityGroup") .Add("powersurge", "AB_Chaos_PowerSurge_AbilityGroup") .Add("void", "AB_Chaos_Void_AbilityGroup") .Add("volley", "AB_Chaos_Volley_AbilityGroup") .Add("veilofchaos", "AB_Vampire_VeilOfChaos_Group") .Add("coldsnap", "AB_Frost_ColdSnap_AbilityGroup") .Add("crystallance", "AB_Frost_CrystalLance_AbilityGroup") .Add("frostbarrier", "AB_FrostBarrier_AbilityGroup") .Add("frostbat", "AB_Frost_FrostBat_AbilityGroup") .Add("icenova", "AB_Frost_IceNova_AbilityGroup") .Add("veiloffrost", "AB_Vampire_VeilOfFrost_Group") .Add("misttrance", "AB_Illusion_MistTrance_AbilityGroup") .Add("mosquito", "AB_Illusion_Mosquito_AbilityGroup") .Add("phantomaegis", "AB_Illusion_PhantomAegis_AbilityGroup") .Add("spectralwolf", "AB_Illusion_SpectralWolf_AbilityGroup") .Add("wraithspear", "AB_Illusion_WraithSpear_AbilityGroup") .Add("veilofillusion", "AB_Vampire_VeilOfIllusion_AbilityGroup") .Add("balllightning", "AB_Storm_BallLightning_AbilityGroup") .Add("cyclone", "AB_Storm_Cyclone_AbilityGroup") .Add("discharge", "AB_Storm_Discharge_AbilityGroup") .Add("lightningwall", "AB_Storm_LightningWall_AbilityGroup") .Add("polarityshift", "AB_Storm_PolarityShift_AbilityGroup") .Add("veilofstorm", "AB_Vampire_VeilOfStorm_Group") .Add("corpseexplosion", "AB_Unholy_CorpseExplosion_AbilityGroup") .Add("corruptedskull", "AB_Unholy_CorruptedSkull_AbilityGroup") .Add("deathknight", "AB_Unholy_DeathKnight_AbilityGroup") .Add("soulburn", "AB_Unholy_Soulburn_AbilityGroup") .Add("wardofthedamned", "AB_Unholy_WardOfTheDamned_AbilityGroup") .Add("veilofbones", "AB_Vampire_VeilOfBones_AbilityGroup"); public static void inits() { ConcurrentDictionary<string, CreateJevelLegendStruct> orAdd = SkillModList.GetOrAdd("bloodfountain", new ConcurrentDictionary<string, CreateJevelLegendStruct>()); orAdd.TryAdd("1", new CreateJevelLegendStruct("SpellMod_BloodFountain_FirstImpactApplyLeech", SkillPower, "The initial hit inflicts Leech.")); orAdd.TryAdd("2", new CreateJevelLegendStruct("SpellMod_BloodFountain_FirstImpactDispell", SkillPower, "Removes all negative effects from self and nearby allies on the initial hit.")); orAdd.TryAdd("3", new CreateJevelLegendStruct("SpellMod_BloodFountain_FirstImpactFadingSnare", SkillPower, "The initial impact inflicts a fading snare lasting (0,7-1,2)sec.")); orAdd.TryAdd("4", new CreateJevelLegendStruct("SpellMod_BloodFountain_FirstImpactHealIncrease", SkillPower, "Increases healing of the initial hit by (19-30)%.")); orAdd.TryAdd("5", new CreateJevelLegendStruct("SpellMod_BloodFountain_RecastLesser", SkillPower, "Recast to conjure a lesser blood fountain. The initial hit heals allies for (23-30)%, the eruption hit heals for (29-40)% and deals damage.")); orAdd.TryAdd("6", new CreateJevelLegendStruct("SpellMod_BloodFountain_SecondImpactDamageIncrease", SkillPower, "Eruption impact deals (14-25)% bonus damage.")); orAdd.TryAdd("7", new CreateJevelLegendStruct("SpellMod_BloodFountain_SecondImpactHealIncrease", SkillPower, "Increases healing of the eruption impact by (31-50)%")); orAdd.TryAdd("8", new CreateJevelLegendStruct("SpellMod_BloodFountain_SecondImpactKnockback", SkillPower, "The eruption hit knocks enemies back (2-3) meters.")); orAdd.TryAdd("9", new CreateJevelLegendStruct("SpellMod_BloodFountain_SecondImpactSpeedBuff", SkillPower, "The eruption hit increases target ally movement speed by 18% for 3s.")); ConcurrentDictionary<string, CreateJevelLegendStruct> orAdd2 = SkillModList.GetOrAdd("bloodrage", new ConcurrentDictionary<string, CreateJevelLegendStruct>()); orAdd2.TryAdd("1", new CreateJevelLegendStruct("SpellMod_BloodRage_DamageBoost", SkillPower, "Increases physical damage output by (11-15)% during the effect.")); orAdd2.TryAdd("2", new CreateJevelLegendStruct("SpellMod_BloodRage_HealOnKill", SkillPower, "Killing an enemy unit during the effect heals you or (1,4-2,5)% of your maximum health.")); orAdd2.TryAdd("3", new CreateJevelLegendStruct("SpellMod_BloodRage_IncreaseLifetime", SkillPower, "Increases the duration of the effect by (19-30)%.")); orAdd2.TryAdd("4", new CreateJevelLegendStruct("SpellMod_BloodRage_IncreaseMoveSpeed", SkillPower, "Increases movement speed by (4,3-8)%.")); orAdd2.TryAdd("5", new CreateJevelLegendStruct("SpellMod_BloodRage_Shield", SkillPower, "Shield self and nearby allies for (45-60)% of your spell power.")); orAdd2.TryAdd("6", new CreateJevelLegendStruct("SpellMod_Shared_ApplyFadingSnare_Medium", SkillPower, "Inflicts a fading snare on enemies hit lasting (0,9-1,5)sec.")); orAdd2.TryAdd("7", new CreateJevelLegendStruct("SpellMod_Shared_DispellDebuffs", SkillPower, "Removes all negative effects.")); ConcurrentDictionary<string, CreateJevelLegendStruct> orAdd3 = SkillModList.GetOrAdd("bloodrite", new ConcurrentDictionary<string, CreateJevelLegendStruct>()); orAdd3.TryAdd("1", new CreateJevelLegendStruct("SpellMod_BloodRite_ApplyFadingSnare", SkillPower, "Inflict a fading snare on enemies hit lasting (1,8-2,5)sec.")); orAdd3.TryAdd("2", new CreateJevelLegendStruct("SpellMod_BloodRite_BonusDamage", SkillPower, "Increases damage by (19-30)%.")); orAdd3.TryAdd("3", new CreateJevelLegendStruct("SpellMod_BloodRite_DamageOnAttack", SkillPower, "When triggered your next primary attack used within 5sec deals (31-50)% bonus damage.")); orAdd3.TryAdd("4", new CreateJevelLegendStruct("SpellMod_BloodRite_HealOnTrigger", SkillPower, "When triggered heals self for (35-50)% of your spell power.")); orAdd3.TryAdd("5", new CreateJevelLegendStruct("SpellMod_BloodRite_IncreaseLifetime", SkillPower, "Increases immaterial duration by (18-25)%.")); orAdd3.TryAdd("6", new CreateJevelLegendStruct("SpellMod_BloodRite_Stealth", SkillPower, "Turn invisible during the immaterial duration.")); orAdd3.TryAdd("7", new CreateJevelLegendStruct("SpellMod_BloodRite_TossDaggers", SkillPower, "Throw up to (4—5) daggers towards nearby enemies when triggered, each dagger dealing (35-50)% damage and inflicting Leech.")); orAdd3.TryAdd("8", new CreateJevelLegendStruct("SpellMod_Shared_IncreaseMoveSpeedDuringChannel_High", SkillPower, "Increases movement speed when channeling by (24-35)%.")); ConcurrentDictionary<string, CreateJevelLegendStruct> orAdd4 = SkillModList.GetOrAdd("sanguinecoil", new ConcurrentDictionary<string, CreateJevelLegendStruct>()); orAdd4.TryAdd("1", new CreateJevelLegendStruct("SpellMod_SanguineCoil_AddBounces", SkillPower, "Bounces towards an additional target after first hit dealing (29—40)% of the initial damage or healing. Can bounce back towards owner.")); orAdd4.TryAdd("2", new CreateJevelLegendStruct("SpellMod_SanguineCoil_BonusDamage", SkillPower, "Increases damage by (10-15)%.")); orAdd4.TryAdd("3", new CreateJevelLegendStruct("SpellMod_SanguineCoil_BonusHealing", SkillPower, "Increases ally healing by (19--30)%")); orAdd4.TryAdd("4", new CreateJevelLegendStruct("SpellMod_SanguineCoil_BonusLifeLeech", SkillPower, "Increases life drain by (31-50)%")); orAdd4.TryAdd("5", new CreateJevelLegendStruct("SpellMod_SanguineCoil_KillRecharge", SkillPower, "Lethal attacks restore 1 charge.")); orAdd4.TryAdd("6", new CreateJevelLegendStruct("SpellMod_SanguineCoil_LeechBonusDamage", SkillPower, "Hitting a target affected by Leech deals (18-25)% bonus damage.")); orAdd4.TryAdd("7", new CreateJevelLegendStruct("SpellMod_Shared_AddCharges", SkillPower, "Increases maximum charges by 1.")); orAdd4.TryAdd("8", new CreateJevelLegendStruct("SpellMod_Shared_Projectile_RangeAndVelocity", SkillPower, "Increases projectile range and speed by (12-24)%.")); ConcurrentDictionary<string, CreateJevelLegendStruct> orAdd5 = SkillModList.GetOrAdd("shadowbolt", new ConcurrentDictionary<string, CreateJevelLegendStruct>()); orAdd5.TryAdd("1", new CreateJevelLegendStruct("SpellMod_Shadowbolt_ExplodeOnHit", SkillPower, "Explodes on hit dealing (19-30)% damage and inflicting Leech on nearby enemies.")); orAdd5.TryAdd("2", new CreateJevelLegendStruct("SpellMod_Shadowbolt_LeechBonusDamage", SkillPower, "Hitting a target affected by Leech deals (31-50)% bonus damage.")); orAdd5.TryAdd("3", new CreateJevelLegendStruct("SpellMod_Shadowbolt_VampiricCurse", SkillPower, "Inflicts Vampiric Curse dealing (158-180)% damage and leeching (19-30)% health after 3sec but reduces damage done by the initial impact by 140%.")); orAdd5.TryAdd("4", new CreateJevelLegendStruct("SpellMod_Shared_Blood_ConsumeLeechSelfHeal_Small", SkillPower, "Hitting a target affected by Leech heals self for (0,6-1)% of your maximum health.")); orAdd5.TryAdd("5", new CreateJevelLegendStruct("SpellMod_Shared_CastRate", SkillPower, "Increases cast rate by (14-25)%.")); orAdd5.TryAdd("6", new CreateJevelLegendStruct("SpellMod_Shared_Cooldown_Medium", SkillPower, "Reduces cooldown by (8-12)%.")); orAdd5.TryAdd("7", new CreateJevelLegendStruct("SpellMod_Shared_KnockbackOnHit_Medium", SkillPower, "Knock targets back (1,9-3) meters on hit.")); orAdd5.TryAdd("8", new CreateJevelLegendStruct("SpellMod_Shared_Projectile_RangeAndVelocity", SkillPower, "Increases projectile range and speed by (12-24)%.")); ConcurrentDictionary<string, CreateJevelLegendStruct> orAdd6 = SkillModList.GetOrAdd("veilofblood", new ConcurrentDictionary<string, CreateJevelLegendStruct>()); orAdd6.TryAdd("1", new CreateJevelLegendStruct("SpellMod_VeilOfBlood_AttackInflictFadingSnare", SkillPower, "Next primary attack inflicts a fading snare lasting (1,4-2)sec.")); orAdd6.TryAdd("2", new CreateJevelLegendStruct("SpellMod_VeilOfBlood_DashInflictLeech", SkillPower, "Dashing through an enemy inflicts Leech.")); orAdd6.TryAdd("3", new CreateJevelLegendStruct("SpellMod_VeilOfBlood_Empower", SkillPower, "Hitting an enemy affected by Leech increases your physical damage output by (11-15)% for 4s.")); orAdd6.TryAdd("4", new CreateJevelLegendStruct("SpellMod_VeilOfBlood_SelfHealing", SkillPower, "Increases maximum healing percentage by (1,3-2)%.")); orAdd6.TryAdd("5", new CreateJevelLegendStruct("SpellMod_Shared_Veil_BonusDamageOnPrimary", SkillPower, "Increases damage of next primary attack by (14-25)%.")); orAdd6.TryAdd("6", new CreateJevelLegendStruct("SpellMod_Shared_Veil_BuffAndIllusionDuration", SkillPower, "Increases elude duration by (13-20)%.")); ConcurrentDictionary<string, CreateJevelLegendStruct> orAdd7 = SkillModList.GetOrAdd("aftershock", new ConcurrentDictionary<string, CreateJevelLegendStruct>()); orAdd7.TryAdd("1", new CreateJevelLegendStruct("SpellMod_Chaos_Aftershock_BonusDamage", SkillPower, "Increases damage by (14-25)%.")); orAdd7.TryAdd("2", new CreateJevelLegendStruct("SpellMod_Chaos_Aftershock_InflictSlowOnProjectile", SkillPower, "The initial wave inflicts a fading snare on enemies hit lasting (1.2-1.8)sec.")); orAdd7.TryAdd("3", new CreateJevelLegendStruct("SpellMod_Chaos_Aftershock_KnockbackArea", SkillPower, "Knocks nearby enemies back (1.9-3) meters on cast.")); orAdd7.TryAdd("4", new CreateJevelLegendStruct("SpellMod_Shared_Chaos_ConsumeIgniteAgonizingFlames", SkillPower, "Hitting a target affected by Ignite engulfs the target in agonizing flames dealing (4-6)% damage and healing self for(8-12)% of your speel power 5 times.")); orAdd7.TryAdd("5", new CreateJevelLegendStruct("SpellMod_Shared_Cooldown_Medium", SkillPower, "Reduces cooldown by (8-12)%.")); orAdd7.TryAdd("6", new CreateJevelLegendStruct("SpellMod_Shared_Projectile_IncreaseRange_Medium", SkillPower, "Increases projectile range by (15-25)%.")); ConcurrentDictionary<string, CreateJevelLegendStruct> orAdd8 = SkillModList.GetOrAdd("chaosbarrier", new ConcurrentDictionary<string, CreateJevelLegendStruct>()); orAdd8.TryAdd("1", new CreateJevelLegendStruct("SpellMod_Chaos_Barrier_BonusDamage", SkillPower, "Increaces damage per charge by (9-15)%.")); orAdd8.TryAdd("2", new CreateJevelLegendStruct("SpellMod_Chaos_Barrier_ConsumeAttackReduceCooldownXTimes", SkillPower, "Absorbing an attack reduces cooldown by (0.5-0.8)sec. from up to 3 attacks.")); orAdd8.TryAdd("3", new CreateJevelLegendStruct("SpellMod_Chaos_Barrier_ExplodeOnHit", SkillPower, "Expodes on hit dealing (31-50)% damage and inflicting Ignite on nearby enemies.")); orAdd8.TryAdd("4", new CreateJevelLegendStruct("SpellMod_Chaos_Barrier_LesserPowerSurge", SkillPower, "When fully charged, gain a lesser Power Surge lasting for (3.3-4)sec.")); orAdd8.TryAdd("5", new CreateJevelLegendStruct("SpellMod_Chaos_Barrier_StunOnHit", SkillPower, "A charged chaos bolt stuns target on hit for (0,8-1,2)sec.")); orAdd8.TryAdd("6", new CreateJevelLegendStruct("SpellMod_Shared_IncreaseMoveSpeedDuringChannel_Low", SkillPower, "Increases movement speed when channeling by (8-12)%.")); ConcurrentDictionary<string, CreateJevelLegendStruct> orAdd9 = SkillModList.GetOrAdd("powersurge", new ConcurrentDictionary<string, CreateJevelLegendStruct>()); orAdd9.TryAdd("1", new CreateJevelLegendStruct("SpellMod_PowerSurge_AttackSpeed", SkillPower, "Increases attack speed by (6-10)%.")); orAdd9.TryAdd("2", new CreateJevelLegendStruct("SpellMod_PowerSurge_EmpowerPhysical", SkillPower, "Increases physical damage output by (11-15)% during the effect.")); orAdd9.TryAdd("3", new CreateJevelLegendStruct("SpellMod_PowerSurge_Haste", SkillPower, "Increases movement speed by (4-8)%.")); orAdd9.TryAdd("4", new CreateJevelLegendStruct("SpellMod_PowerSurge_IncreaseDurationOnKill", SkillPower, "Lethal attacks during the effect increases diration by 1sec. Can trigger up to (2-4) times.")); orAdd9.TryAdd("5", new CreateJevelLegendStruct("SpellMod_PowerSurge_Lifetime", SkillPower, "Increases the duration of the effect by (19-30)%")); orAdd9.TryAdd("6", new CreateJevelLegendStruct("SpellMod_PowerSurge_RecastDestonate", SkillPower, "Recast to consume the effect triggering an explosion dealing (48-70)% damage and inflicting Ignite.")); orAdd9.TryAdd("7", new CreateJevelLegendStruct("SpellMod_PowerSurge_Shield", SkillPower, "Shield target for (45-60)% of your spell power.")); orAdd9.TryAdd("8", new CreateJevelLegendStruct("SpellMod_Shared_DispellDebuffs", SkillPower, "Removes all negative effects.")); ConcurrentDictionary<string, CreateJevelLegendStruct> orAdd10 = SkillModList.GetOrAdd("void", new ConcurrentDictionary<string, CreateJevelLegendStruct>()); orAdd10.TryAdd("1", new CreateJevelLegendStruct("SpellMod_Chaos_Void_BonusDamage", SkillPower, "Increases damage by (11-20)%.")); orAdd10.TryAdd("2", new CreateJevelLegendStruct("SpellMod_Chaos_Void_BurnArea", SkillPower, "Flames engulf the area dealing (10-15) damage up to 3 times to enemies in the area.")); orAdd10.TryAdd("3", new CreateJevelLegendStruct("SpellMod_Chaos_Void_FragBomb", SkillPower, "Spawns 3 exploding fragments dealing (18-25)% damage and Inflicting Ignite.")); orAdd10.TryAdd("4", new CreateJevelLegendStruct("SpellMod_Chaos_Void_ReduceChargeCD", SkillPower, "Increases the rate charges recharge by (11-20)%.")); orAdd10.TryAdd("5", new CreateJevelLegendStruct("SpellMod_Shared_Chaos_ConsumeIgniteAgonizingFlames", SkillPower, "Hitting a target affected by Ignite engulfs the target in agonizing flames dealing (4-6)% damage and healing self for(8-12)% of your speel power 5 times.")); orAdd10.TryAdd("6", new CreateJevelLegendStruct("SpellMod_Shared_TargetAoE_IncreaseRange_Medium", SkillPower, "Increases range by (11-20)%.")); ConcurrentDictionary<string, CreateJevelLegendStruct> orAdd11 = SkillModList.GetOrAdd("volley", new ConcurrentDictionary<string, CreateJevelLegendStruct>()); orAdd11.TryAdd("1", new CreateJevelLegendStruct("SpellMod_Chaos_Volley_BonusDamage", SkillPower, "Increaces damage by (13-20)%.")); orAdd11.TryAdd("2", new CreateJevelLegendStruct("SpellMod_Chaos_Volley_SecondProjectileBonusDamage", SkillPower, "Hitting a different target with the second projectile deals (31-50)% additional damage.")); orAdd11.TryAdd("3", new CreateJevelLegendStruct("SpellMod_Shared_Chaos_ConsumeIgniteAgonizingFlames", SkillPower, "Hitting a target affected by Ignite engulfs the target in agonizing flames dealing (4-6)% damage and healing self for(8-12)% of your speel power 5 times.")); orAdd11.TryAdd("4", new CreateJevelLegendStruct("SpellMod_Shared_Cooldown_Medium", SkillPower, "Reduces cooldown by (8-12)%.")); orAdd11.TryAdd("5", new CreateJevelLegendStruct("SpellMod_Shared_KnockbackOnHit_Light", SkillPower, "Knock targets back (0,9-1,5) meters on hit.")); orAdd11.TryAdd("6", new CreateJevelLegendStruct("SpellMod_Shared_Projectile_RangeAndVelocity", SkillPower, "Increases projectile range and speed by (12-24)%.")); ConcurrentDictionary<string, CreateJevelLegendStruct> orAdd12 = SkillModList.GetOrAdd("veilofchaos", new ConcurrentDictionary<string, CreateJevelLegendStruct>()); orAdd12.TryAdd("1", new CreateJevelLegendStruct("SpellMod_VeilOfChaos_ApplySnareOnExplode", SkillPower, "Inflicts a fading snare lasting (0,9-1,5)sec when an illusion explodes.")); orAdd12.TryAdd("2", new CreateJevelLegendStruct("SpellMod_VeilOfChaos_BonusDamageOnExplode", SkillPower, "Increases damage done when an illusion explodes by (14-25)%.")); orAdd12.TryAdd("3", new CreateJevelLegendStruct("SpellMod_VeilOfChaos_BonusIllusion", SkillPower, "Spawns a second illusion when recasting dealing (50-80)% of the original damage.")); orAdd12.TryAdd("4", new CreateJevelLegendStruct("SpellMod_Shared_Chaos_ConsumeIgniteAgonizingFlames_OnAttack", SkillPower, "Hitting a target affected by Ignite engulfs the target in agonizing flames dealing (4-6)% damage and healing self for (8-12)% of your spell power 5 times.")); orAdd12.TryAdd("5", new CreateJevelLegendStruct("SpellMod_Shared_Veil_BonusDamageOnPrimary", SkillPower, "Increases damage of next primary attack by (14-25)%.")); orAdd12.TryAdd("6", new CreateJevelLegendStruct("SpellMod_Shared_Veil_BuffAndIllusionDuration", SkillPower, "Increases elude duration by (13-20)%.")); ConcurrentDictionary<string, CreateJevelLegendStruct> orAdd13 = SkillModList.GetOrAdd("coldsnap", new ConcurrentDictionary<string, CreateJevelLegendStruct>()); orAdd13.TryAdd("1", new CreateJevelLegendStruct("SpellMod_ColdSnap_BonusAbsorb", SkillPower, "The shield absorbs an additional (25-40)% of your spell power.")); orAdd13.TryAdd("2", new CreateJevelLegendStruct("SpellMod_ColdSnap_BonusDamage", SkillPower, "Increaces damage by (13-20)%.")); orAdd13.TryAdd("3", new CreateJevelLegendStruct("SpellMod_ColdSnap_HasteWhileShielded", SkillPower, "When triggered increases movement speed by (15,3-25)% while the shield last.")); orAdd13.TryAdd("4", new CreateJevelLegendStruct("SpellMod_ColdSnap_Immaterial", SkillPower, "When triggered turn inmmaterial for (0,8-1)sec.")); orAdd13.TryAdd("5", new CreateJevelLegendStruct("SpellMod_Shared_Frost_IncreaseFreezeWhenChill", SkillPower, "Increases Freeze duration by (0,6-1,2)sec when hitting a Chilled target.")); orAdd13.TryAdd("6", new CreateJevelLegendStruct("SpellMod_Shared_FrostWeapon", SkillPower, "When triggered, charges target's weapon with arctic energy. Next primary attack deals (29-40)% bonus damage and inflicts Chill.")); orAdd13.TryAdd("7", new CreateJevelLegendStruct("SpellMod_Shared_IncreaseMoveSpeedDuringChannel_High", SkillPower, "Increases movement speed when channeling by (24-35)%.")); ConcurrentDictionary<string, CreateJevelLegendStruct> orAdd14 = SkillModList.GetOrAdd("crystallance", new ConcurrentDictionary<string, CreateJevelLegendStruct>()); orAdd14.TryAdd("1", new CreateJevelLegendStruct("SpellMod_CrystalLance_BonusDamageToFrosty", SkillPower, "Increases damage done Chilled anf Frozen targets by (38-60)%.")); orAdd14.TryAdd("2", new CreateJevelLegendStruct("SpellMod_CrystalLance_PierceEnemies", SkillPower, "Pierces up to (2-3) targets dealing 50% reduced damage per target.")); orAdd14.TryAdd("3", new CreateJevelLegendStruct("SpellMod_Shared_CastRate", SkillPower, "Increases cast rate by (14-25)%.")); orAdd14.TryAdd("4", new CreateJevelLegendStruct("SpellMod_Shared_Frost_IncreaseFreezeWhenChill", SkillPower, "Increases Freeze duration by (0,6-1,2)sec when hitting a Chilled target.")); orAdd14.TryAdd("5", new CreateJevelLegendStruct("SpellMod_Shared_Frost_ShieldOnFrosty", SkillPower, "Hitting a chilled or frozen target shields you for (58-80)% of your spell power.")); orAdd14.TryAdd("6", new CreateJevelLegendStruct("SpellMod_Shared_Projectile_RangeAndVelocity", SkillPower, "Increases projectile range and speed by (12-24)%.")); ConcurrentDictionary<string, CreateJevelLegendStruct> orAdd15 = SkillModList.GetOrAdd("frostbarrier", new ConcurrentDictionary<string, CreateJevelLegendStruct>()); orAdd15.TryAdd("1", new CreateJevelLegendStruct("SpellMod_FrostBarrier_BonusDamage", SkillPower, "Increaces damage by (11-20)%.")); orAdd15.TryAdd("2", new CreateJevelLegendStruct("SpellMod_FrostBarrier_BonusSpellPowerOnAbsorb", SkillPower, "Absorbing an attack increases your spell power by (6-10)% for 6sec. Effect stacks up to 3 times.")); orAdd15.TryAdd("3", new CreateJevelLegendStruct("SpellMod_FrostBarrier_ConsumeAttackReduceCooldownXTimes", SkillPower, "Absorbing an attack reduces coodown by (0,5-0,8)sec from up to 3 attacks.")); orAdd15.TryAdd("4", new CreateJevelLegendStruct("SpellMod_FrostBarrier_KnockbackOnRecast", SkillPower, "Cone of cold knocks targets back (1,9-3) meters on hit.")); orAdd15.TryAdd("5", new CreateJevelLegendStruct("SpellMod_FrostBarrier_ShieldOnFrostyRecast", SkillPower, "Hitting a Chilled or Frozen target with the cone of cold shields you for (58-80)% of your spell power.")); orAdd15.TryAdd("6", new CreateJevelLegendStruct("SpellMod_Shared_Frost_ConsumeChillIntoFreeze_Recast", SkillPower, "Cone of cold consumes Chill and inflicts Freeze lasting 4(2,5-4)s.")); orAdd15.TryAdd("7", new CreateJevelLegendStruct("SpellMod_Shared_IncreaseMoveSpeedDuringChannel_Low", SkillPower, "Increases movement speed when channeling by (8-12)%.")); ConcurrentDictionary<string, CreateJevelLegendStruct> orAdd16 = SkillModList.GetOrAdd("frostbat", new ConcurrentDictionary<string, CreateJevelLegendStruct>()); orAdd16.TryAdd("1", new CreateJevelLegendStruct("SpellMod_FrostBat_AreaDamage", SkillPower, "The frost inpact blast deals (29-40)% damage to surrounding enemies.")); orAdd16.TryAdd("2", new CreateJevelLegendStruct("SpellMod_FrostBat_BonusDamageToFrosty", SkillPower, "Increases damage done to Chilled and Frozen targets by (25-40)%.")); orAdd16.TryAdd("3", new CreateJevelLegendStruct("SpellMod_Shared_CastRate", SkillPower, "Increases cast rate by (14-25)%.")); orAdd16.TryAdd("4", new CreateJevelLegendStruct("SpellMod_Shared_Frost_SplinterNovaOnFrosty", SkillPower, "Hitting a Chilled or Frozen target shatters the projectile into 8 splinters, each dealing (19-30)% damage and inflicting Chill.")); orAdd16.TryAdd("5", new CreateJevelLegendStruct("SpellMod_Shared_Frost_ShieldOnFrosty", SkillPower, "Hitting a chilled or frozen target shields you for (58-80)% of your spell power.")); orAdd16.TryAdd("6", new CreateJevelLegendStruct("SpellMod_Shared_Projectile_RangeAndVelocity", SkillPower, "Increases projectile range and speed by (12-24)%.")); ConcurrentDictionary<string, CreateJevelLegendStruct> orAdd17 = SkillModList.GetOrAdd("icenova", new ConcurrentDictionary<string, CreateJevelLegendStruct>()); orAdd17.TryAdd("1", new CreateJevelLegendStruct("SpellMod_IceNova_ApplyShield", SkillPower, "The nova shields self and allies for (58-80)% of your spell power.")); orAdd17.TryAdd("2", new CreateJevelLegendStruct("SpellMod_IceNova_BonusDamageToFrosty", SkillPower, "Increases damage done to Chelled and Frozen targets by (29-40)%.")); orAdd17.TryAdd("3", new CreateJevelLegendStruct("SpellMod_IceNova_RecastLesserNova", SkillPower, "Recast to conjure a lessert ice nova dealing (31-50)% of the original damage.")); orAdd17.TryAdd("4", new CreateJevelLegendStruct("SpellMod_Shared_Cooldown_Medium", SkillPower, "Reduces cooldown by (8-12)%.")); orAdd17.TryAdd("5", new CreateJevelLegendStruct("SpellMod_Shared_TargetAoE_IncreaseRange_Medium", SkillPower, "Increases range by (11-20)%.")); ConcurrentDictionary<string, CreateJevelLegendStruct> orAdd18 = SkillModList.GetOrAdd("veiloffrost", new ConcurrentDictionary<string, CreateJevelLegendStruct>()); orAdd18.TryAdd("1", new CreateJevelLegendStruct("SpellMod_Shared_Frost_ConsumeChillIntoFreeze_OnAttack", SkillPower, "Next primary attack consumes Chill and inflicts Freeze lasting (2,5-4)sec.")); orAdd18.TryAdd("2", new CreateJevelLegendStruct("SpellMod_VeilOfFrost_FrostNova", SkillPower, "Next primary attack conjures a nova of frost dealing (31-50)% damage and inflicting Chill on nearby enemies.")); orAdd18.TryAdd("3", new CreateJevelLegendStruct("SpellMod_VeilOfFrost_IllusionFrostBlast", SkillPower, "Illusion explodes in a nova of ice dealing (25- 40)% damage and inflicting Chill on nearby enemies.")); orAdd18.TryAdd("4", new CreateJevelLegendStruct("SpellMod_VeilOfFrost_ShieldBonus", SkillPower, "of Increases shield absorb amount by (38-60)% your spell power.")); orAdd18.TryAdd("5", new CreateJevelLegendStruct("SpellMod_Shared_Veil_BonusDamageOnPrimary", SkillPower, "Increases damage of next primary attack by (14—25)%.")); orAdd18.TryAdd("6", new CreateJevelLegendStruct("SpellMod_Shared_Veil_BuffAndIllusionDuration", SkillPower, "Increases elude duration by (13-20)%.")); ConcurrentDictionary<string, CreateJevelLegendStruct> orAdd19 = SkillModList.GetOrAdd("misttrance", new ConcurrentDictionary<string, CreateJevelLegendStruct>()); orAdd19.TryAdd("1", new CreateJevelLegendStruct("SpellMod_MIstTrance_DamageOnAttack", SkillPower, "When triggered your next primal attac used within 5sec deal (31-50)% bonus damage.")); orAdd19.TryAdd("2", new CreateJevelLegendStruct("SpellMod_MistTrance_FearOnTrigger", SkillPower, "When triggered fears nearby enemies aroung you dor (1,3-2)sec.")); orAdd19.TryAdd("3", new CreateJevelLegendStruct("SpellMod_MistTrance_HasteOnTrigger", SkillPower, "When triggered increases movement speed by (14-21)% for 3sec.")); orAdd19.TryAdd("4", new CreateJevelLegendStruct("SpellMod_MistTrance_PhantasmOnTrigger", SkillPower, "When triggered grants (2-4) stacks of Phantasm.")); orAdd19.TryAdd("5", new CreateJevelLegendStruct("SpellMod_MistTrance_ReduceSecondaryWeaponCD", SkillPower, "When triggered reduces the cooldown of your secondary weapon skill by (50-80)%.")); orAdd19.TryAdd("6", new CreateJevelLegendStruct("SpellMod_Shared_IncreaseMoveSpeedDuringChannel_High", SkillPower, "Increases movement speed when channeling by (24-35)%.")); orAdd19.TryAdd("7", new CreateJevelLegendStruct("SpellMod_Shared_KnockbackOnHit_Medium", SkillPower, "Knock targets back (1,9-3) meters on hit.")); orAdd19.TryAdd("8", new CreateJevelLegendStruct("SpellMod_Shared_TravelBuff_IncreaseRange_Medium", SkillPower, "Increases distance traveled by (11-20)%.")); ConcurrentDictionary<string, CreateJevelLegendStruct> orAdd20 = SkillModList.GetOrAdd("mosquito", new ConcurrentDictionary<string, CreateJevelLegendStruct>()); orAdd20.TryAdd("1", new CreateJevelLegendStruct("SpellMod_Mosquito_BonusDamage", SkillPower, "Increases damage by (25-40)%.")); orAdd20.TryAdd("2", new CreateJevelLegendStruct("SpellMod_Mosquito_BonusFearDuration", SkillPower, "Increases duration of fear by (0,5-0,8)sec.")); orAdd20.TryAdd("3", new CreateJevelLegendStruct("SpellMod_Mosquito_BonusHealthAndSpeed", SkillPower, "Increases mosquito maximum health by 25-40)%.")); orAdd20.TryAdd("4", new CreateJevelLegendStruct("SpellMod_Mosquito_ShieldOnSpawn", SkillPower, "Shields nearby allies for (45-60)% of your spell power when the mosquito is summoned.")); orAdd20.TryAdd("5", new CreateJevelLegendStruct("SpellMod_Mosquito_WispsOnDestroy", SkillPower, "Spawns 3 wisps healing selfor ally for 60% of your spell power when the mosquito explodes.")); ConcurrentDictionary<string, CreateJevelLegendStruct> orAdd21 = SkillModList.GetOrAdd("phantomaegis", new ConcurrentDictionary<string, CreateJevelLegendStruct>()); orAdd21.TryAdd("1", new CreateJevelLegendStruct("SpellMod_PhantomAegis_ConsumeShieldAndPullAlly", SkillPower, "Recast to consume the barrier from an allied target pulling the ally towards tou.")); orAdd21.TryAdd("2", new CreateJevelLegendStruct("SpellMod_PhantomAegis_ExplodeOnDestroy", SkillPower, "The barrier explodes if destroyed inflicting a (1,2-1,6)sec Fear on nearby enemies.")); orAdd21.TryAdd("3", new CreateJevelLegendStruct("SpellMod_PhantomAegis_IncreaseLifetime", SkillPower, "Increasers target speel power by (15-25)% while the barrier last.")); orAdd21.TryAdd("4", new CreateJevelLegendStruct("SpellMod_PhantomAegis_IncreaseSpellPower", SkillPower, "Increases target spell power by (15-24)% while the barrier last.")); orAdd21.TryAdd("5", new CreateJevelLegendStruct("SpellMod_Shared_DispellDebuffs", SkillPower, "Removes all negative effects.")); orAdd21.TryAdd("6", new CreateJevelLegendStruct("SpellMod_Shared_KnockbackOnHit_Medium", SkillPower, "Knock targets back (1,9-3) meters on hit.")); orAdd21.TryAdd("7", new CreateJevelLegendStruct("SpellMod_Shared_MovementSpeed_Normal", SkillPower, "Increases movement speed by (10-14)%.")); ConcurrentDictionary<string, CreateJevelLegendStruct> orAdd22 = SkillModList.GetOrAdd("spectralwolf", new ConcurrentDictionary<string, CreateJevelLegendStruct>()); orAdd22.TryAdd("1", new CreateJevelLegendStruct("SpellMod_Shared_Illusion_ConsumeWeakenSpawnWisp", SkillPower, "Consumes Weaken to spawn a wisp healing self or ally for (38-60)% of your spell power.")); orAdd22.TryAdd("2", new CreateJevelLegendStruct("SpellMod_Shared_Illusion_WeakenShield", SkillPower, "Hitting a target affected by Weaken grants you a shield absorbing (25-40)% damage based on your spell power stacking up to 3 times.")); orAdd22.TryAdd("3", new CreateJevelLegendStruct("SpellMod_Shared_Projectile_RangeAndVelocity", SkillPower, "Increases projectile range and speed by (12-24)%.")); orAdd22.TryAdd("4", new CreateJevelLegendStruct("SpellMod_SpectralWolf_AddBounces", SkillPower, "Increases maximum bounces by 1.")); orAdd22.TryAdd("5", new CreateJevelLegendStruct("SpellMod_SpectralWolf_DecreaseBounceDamageReduction", SkillPower, "Reduces damage penalty per bounce by (9-15)%.")); orAdd22.TryAdd("6", new CreateJevelLegendStruct("SpellMod_SpectralWolf_FirstBounceInflictFadingSnare", SkillPower, "Initial projectile inflicts a fading snare on enemies hit lasting (1,2-1,8)sec.")); orAdd22.TryAdd("7", new CreateJevelLegendStruct("SpellMod_SpectralWolf_ReturnToOwner", SkillPower, "The wolf returns to you after the last bounce, healing for (85-100)% of your spell power.")); orAdd22.TryAdd("8", new CreateJevelLegendStruct("SpellMod_SpectralWolf_WeakenApplyXPhantasm", SkillPower, "Hitting a target affected by Weaken grants (2-3) stacks of Phantasm.")); ConcurrentDictionary<string, CreateJevelLegendStruct> orAdd23 = SkillModList.GetOrAdd("wraithspear", new ConcurrentDictionary<string, CreateJevelLegendStruct>()); orAdd23.TryAdd("1", new CreateJevelLegendStruct("SpellMod_Shared_ApplyFadingSnare_Medium", SkillPower, "Inflicts a fading snare on enemies hit lasting (0,9-1,5)sec.")); orAdd23.TryAdd("2", new CreateJevelLegendStruct("SpellMod_Shared_Illusion_ConsumeWeakenSpawnWisp", SkillPower, "Consumes Weaken to spawn a wisp healing self or ally for (38-60)% of your spell power.")); orAdd23.TryAdd("3", new CreateJevelLegendStruct("SpellMod_Shared_Illusion_WeakenShield", SkillPower, "Hitting a target affected by Weaken grants you a shield absorbing (25-40)% damage based on your spell power stacking up to 3 times.")); orAdd23.TryAdd("4", new CreateJevelLegendStruct("SpellMod_Shared_Projectile_IncreaseRange_Medium", SkillPower, "Increases projectile range by (15-25)%.")); orAdd23.TryAdd("5", new CreateJevelLegendStruct("SpellMod_WraithSpear_BonusDamage", SkillPower, "Increases damage by (14-25)%.")); orAdd23.TryAdd("6", new CreateJevelLegendStruct("SpellMod_WraithSpear_ReducedDamageReduction", SkillPower, "Damage penalty per hit is reduced by (6-10)%.")); orAdd23.TryAdd("7", new CreateJevelLegendStruct("SpellMod_WraithSpear_ShieldAlly", SkillPower, "Hitting an ally shields them for (60-90)% of your spell power.")); ConcurrentDictionary<string, CreateJevelLegendStruct> orAdd24 = SkillModList.GetOrAdd("veilofillusion", new ConcurrentDictionary<string, CreateJevelLegendStruct>()); orAdd24.TryAdd("1", new CreateJevelLegendStruct("SpellMod_VeilOfIllusion_AttackInflictFadingSnare", SkillPower, "Next primary attack inflicts a fading snare lasting (1,4-2)sec.")); orAdd24.TryAdd("2", new CreateJevelLegendStruct("SpellMod_VeilOfIllusion_IllusionProjectileDamage", SkillPower, "Illusion projectiles deal (13-20)% damage.")); orAdd24.TryAdd("3", new CreateJevelLegendStruct("SpellMod_VeilOfIllusion_PhantasmOnHit", SkillPower, "Next primary attack grants (3-4) stacks of Phantasm.")); orAdd24.TryAdd("4", new CreateJevelLegendStruct("SpellMod_VeilOfIllusion_RecastDetonate", SkillPower, "Detonate your illusion dealing (24-35)% damage and inflicting weaken in an area on recast.")); orAdd24.TryAdd("5", new CreateJevelLegendStruct("SpellMod_Shared_Veil_BonusDamageOnPrimary", SkillPower, "Increases damage of next primary attack by (14-25)%.")); orAdd24.TryAdd("6", new CreateJevelLegendStruct("SpellMod_Shared_Veil_BuffAndIllusionDuration", SkillPower, "Increases elude duration by (13-20)%")); orAdd24.TryAdd("7", new CreateJevelLegendStruct("SpellMod_Shared_Illusion_WeakenShield_OnAttack", SkillPower, "Hitting an enemy affected by Weaken with your next primary attack grants a shield absorbing (25-40)% damage based on your spell power stacking up to 3 times.")); ConcurrentDictionary<string, CreateJevelLegendStruct> orAdd25 = SkillModList.GetOrAdd("balllightning", new ConcurrentDictionary<string, CreateJevelLegendStruct>()); orAdd25.TryAdd("1", new CreateJevelLegendStruct("SpellMod_BallLightning_BonusDamage", SkillPower, "Increases damage per shock by (4-6)%.")); orAdd25.TryAdd("2", new CreateJevelLegendStruct("SpellMod_BallLightning_DetonateOnRecast", SkillPower, "Recast to detonate the orb early. The explosion deals (31-50)% increased damage.")); orAdd25.TryAdd("3", new CreateJevelLegendStruct("SpellMod_BallLightning_Haste", SkillPower, "Increases nearby allies movement speed by (10-15) for 4sec when the orb explodes.")); orAdd25.TryAdd("4", new CreateJevelLegendStruct("SpellMod_BallLightning_KnockbackOnExplode", SkillPower, "Knocks enemies back (1,9-3) meters when the orb explodes.")); orAdd25.TryAdd("5", new CreateJevelLegendStruct("SpellMod_Shared_Projectile_IncreaseRange_Medium", SkillPower, "Increases projectile range by (15-25)%.")); orAdd25.TryAdd("6", new CreateJevelLegendStruct("SpellMod_Shared_Storm_ConsumeStaticIntoStun_Explode", SkillPower, "Consumes Static to stun enemies for (0,4-0,7)sec when the orb explodes.")); ConcurrentDictionary<string, CreateJevelLegendStruct> orAdd26 = SkillModList.GetOrAdd("cyclone", new ConcurrentDictionary<string, CreateJevelLegendStruct>()); orAdd26.TryAdd("1", new CreateJevelLegendStruct("SpellMod_Cyclone_BonusDamage", SkillPower, "Increases damage by (13-20)%.")); orAdd26.TryAdd("2", new CreateJevelLegendStruct("SpellMod_Cyclone_IncreaseLifetime", SkillPower, "Increases projectile lifetime by (14-25)%.")); orAdd26.TryAdd("3", new CreateJevelLegendStruct("SpellMod_Shared_Projectile_RangeAndVelocity", SkillPower, "Increases projectile range and speed by (12-24)%.")); orAdd26.TryAdd("4", new CreateJevelLegendStruct("SpellMod_Shared_Storm_ConsumeStaticIntoStun", SkillPower, "Consumes Static to stun the target for (0,4-0,7)sec.")); orAdd26.TryAdd("5", new CreateJevelLegendStruct("SpellMod_Shared_Storm_ConsumeStaticIntoWeaponCharge", SkillPower, "Consumes Static to charge your weapon up to 3 times. Next primary attack deals (19-30)% bonus damage per stack and inflicts Static.")); ConcurrentDictionary<string, CreateJevelLegendStruct> orAdd27 = SkillModList.GetOrAdd("discharge", new ConcurrentDictionary<string, CreateJevelLegendStruct>()); orAdd27.TryAdd("1", new CreateJevelLegendStruct("SpellMod_Discharge_BonusDamage", SkillPower, "Increases damage done by storm shields by (13-20)%.")); orAdd27.TryAdd("2", new CreateJevelLegendStruct("SpellMod_Discharge_Immaterial", SkillPower, "Turn Immaterial for (1-1,6)s if you have 3 Storm Shields active when the effect ends.")); orAdd27.TryAdd("3", new CreateJevelLegendStruct("SpellMod_Discharge_IncreaseStunDuration", SkillPower, "Increases duration of the stun effect by (0,3-0,4)sec.")); orAdd27.TryAdd("4", new CreateJevelLegendStruct("SpellMod_Discharge_RecastDetonate", SkillPower, "Recast to end the effect triggering an explosion dealing (31-50)% damage and knocking nearby enemies back.")); orAdd27.TryAdd("5", new CreateJevelLegendStruct("SpellMod_Discharge_SpellLeech", SkillPower, "Each active storm shield grants (4-6)% spell life leech.")); orAdd27.TryAdd("6", new CreateJevelLegendStruct("SpellMod_Shared_IncreaseMoveSpeedDuringChannel_High", SkillPower, "Increases movement speed when channeling by (24-35)%.")); orAdd27.TryAdd("7", new CreateJevelLegendStruct("SpellMod_Shared_Storm_GrantWeaponCharge", SkillPower, "When triggered charge your weapon up to 3 times. Next primary attack deals (19-30)% bonus damage per stack and inflicts Static.")); ConcurrentDictionary<string, CreateJevelLegendStruct> orAdd28 = SkillModList.GetOrAdd("lightningwall", new ConcurrentDictionary<string, CreateJevelLegendStruct>()); orAdd28.TryAdd("1", new CreateJevelLegendStruct("SpellMod_LightningWall_ApplyShield", SkillPower, "Passing through the wall shields ally target for (45-60)% of your spell power.")); orAdd28.TryAdd("2", new CreateJevelLegendStruct("SpellMod_LightningWall_BonusDamage", SkillPower, "Increases damage per hit by (6-12)%.")); orAdd28.TryAdd("3", new CreateJevelLegendStruct("SpellMod_LightningWall_ConsumeProjectileWeaponCharge", SkillPower, "Blocking projectiles charges your weapon up to 3 times. Next primary attack deals (19-30)% bonus damage per stack and inflicts Static.")); orAdd28.TryAdd("4", new CreateJevelLegendStruct("SpellMod_LightningWall_FadingSnare", SkillPower, "Inflicts a fading snare lasting 1,5(0,9-1,5)s on the initial hit.")); orAdd28.TryAdd("5", new CreateJevelLegendStruct("SpellMod_LightningWall_IncreaseMovementSpeed", SkillPower, "Increases movement speed by an additional (13-20)% when passing through the wall.")); ConcurrentDictionary<string, CreateJevelLegendStruct> orAdd29 = SkillModList.GetOrAdd("polarityshift", new ConcurrentDictionary<string, CreateJevelLegendStruct>()); orAdd29.TryAdd("1", new CreateJevelLegendStruct("SpellMod_Shared_ApplyFadingSnare_Medium", SkillPower, "Inflicts a fading snare on enemies hit lasting (0,9-1,5)sec.")); orAdd29.TryAdd("2", new CreateJevelLegendStruct("SpellMod_Shared_Projectile_RangeAndVelocity", SkillPower, "Increases projectile range and speed by (12-24)%.")); orAdd29.TryAdd("3", new CreateJevelLegendStruct("SpellMod_Shared_Storm_ConsumeStaticIntoWeaponCharge", SkillPower, "Consumes Static to charge your weapon up to 3 times. Next primary attack deals (19-30)% bonus damage per stack and inflicts Static.")); orAdd29.TryAdd("4", new CreateJevelLegendStruct("SpellMod_Storm_PolarityShift_AreaImpactDestination", SkillPower, "Triggers a lightning nova upon reaching the destination dealing (31-50)% damage and inflicting Static on nearby enemies.")); orAdd29.TryAdd("5", new CreateJevelLegendStruct("SpellMod_Storm_PolarityShift_AreaImpactOrigin", SkillPower, "Triggers a lightning nova at the origin location dealing (31-50)% damage and inflicting Static on nearby enemies.")); ConcurrentDictionary<string, CreateJevelLegendStruct> orAdd30 = SkillModList.GetOrAdd("veilofstorm", new ConcurrentDictionary<string, CreateJevelLegendStruct>()); orAdd30.TryAdd("1", new CreateJevelLegendStruct("SpellMod_Shared_Storm_ConsumeStaticIntoStun", SkillPower, "Consumes Static to stun the target for (0,4-0,7)sec.")); orAdd30.TryAdd("2", new CreateJevelLegendStruct("SpellMod_Shared_Veil_BonusDamageOnPrimary", SkillPower, "Increases damage of next primary attack by (14-25)%.")); orAdd30.TryAdd("3", new CreateJevelLegendStruct("SpellMod_Shared_Veil_BuffAndIllusionDuration", SkillPower, "Increases elude duration by (13-20)%.")); orAdd30.TryAdd("4", new CreateJevelLegendStruct("SpellMod_VeilOfStorm_AttackInflictFadingSnare", SkillPower, "Next primary attack inflicts a fading snare lasting (1,4-2)sec.")); orAdd30.TryAdd("5", new CreateJevelLegendStruct("SpellMod_VeilOfStorm_DashInflictStatic", SkillPower, "Dashing through an enemy inflicts Static.")); orAdd30.TryAdd("6", new CreateJevelLegendStruct("SpellMod_VeilOfStorm_SparklingIllusion", SkillPower, "Your illusion periodically shocks a nearby enemy dealing (10-20)% damage and inflicting Static.")); ConcurrentDictionary<string, CreateJevelLegendStruct> orAdd31 = SkillModList.GetOrAdd("corpseexplosion", new ConcurrentDictionary<string, CreateJevelLegendStruct>()); orAdd31.TryAdd("1", new CreateJevelLegendStruct("SpellMod_CorpseExplosion_BonusDamage", SkillPower, "Increases damage by (13-20)%.")); orAdd31.TryAdd("2", new CreateJevelLegendStruct("SpellMod_CorpseExplosion_DoubleImpact", SkillPower, "Triggers a second lesser explosion at the same location dealing (31-50)% damage.")); orAdd31.TryAdd("3", new CreateJevelLegendStruct("SpellMod_CorpseExplosion_HealMinions", SkillPower, "Heals all allied skeletons hit by (58-80)% of their maximum health and reset their lifetime.")); orAdd31.TryAdd("4", new CreateJevelLegendStruct("SpellMod_CorpseExplosion_KillingBlow", SkillPower, "Deals (18-25)% bonus damage to enemies below 30% health, lethal attacks reduce cooldown by (1,7-2,3)sec.")); orAdd31.TryAdd("5", new CreateJevelLegendStruct("SpellMod_CorpseExplosion_SkullNova", SkillPower, "Spawns a nova of projectiles from impact location, each projectile dealing (25-40)% damage and inflicting Condemn.")); orAdd31.TryAdd("6", new CreateJevelLegendStruct("SpellMod_CorpseExplosion_SnareBonus", SkillPower, "Inflicts a fading snare on enemies hit lasting (1-1,5)sec.")); orAdd31.TryAdd("7", new CreateJevelLegendStruct("SpellMod_Shared_Cooldown_Medium", SkillPower, "Reduces cooldown by (8-12)%.")); orAdd31.TryAdd("8", new CreateJevelLegendStruct("SpellMod_Shared_TargetAoE_IncreaseRange_Medium", SkillPower, "Increases range by (11-20)%.")); ConcurrentDictionary<string, CreateJevelLegendStruct> orAdd32 = SkillModList.GetOrAdd("corruptedskull", new ConcurrentDictionary<string, CreateJevelLegendStruct>()); orAdd32.TryAdd("1", new CreateJevelLegendStruct("SpellMod_CorruptedSkull_BoneSpirit", SkillPower, "Conjures a bone spirit that circles around the target dealing (9-15)% damage and inflicting Condemn to any enemy it hits.")); orAdd32.TryAdd("2", new CreateJevelLegendStruct("SpellMod_CorruptedSkull_BonusDamage", SkillPower, "Increases damage by (11-20)%.")); orAdd32.TryAdd("3", new CreateJevelLegendStruct("SpellMod_CorruptedSkull_DetonateSkeleton", SkillPower, "Hitting an ally skeleton causes it to explode dealing (48-70)% damage and inflicting Condemn on nearby enemies.")); orAdd32.TryAdd("4", new CreateJevelLegendStruct("SpellMod_CorruptedSkull_LesserProjectiles", SkillPower, "Launch two spiraling projectiles instead of one, each projectile deals (35-50)% of the original damage.")); orAdd32.TryAdd("5", new CreateJevelLegendStruct("SpellMod_Shared_KnockbackOnHit_Medium", SkillPower, "Knock targets back (1,9-3) meters on hit.")); orAdd32.TryAdd("6", new CreateJevelLegendStruct("SpellMod_Shared_Projectile_RangeAndVelocity", SkillPower, "Increases projectile range and speed by (12-24)%.")); ConcurrentDictionary<string, CreateJevelLegendStruct> orAdd33 = SkillModList.GetOrAdd("deathknight", new ConcurrentDictionary<string, CreateJevelLegendStruct>()); orAdd33.TryAdd("1", new CreateJevelLegendStruct("SpellMod_DeathKnight_BonusDamage", SkillPower, "Increases damage by (14-20)%.")); orAdd33.TryAdd("2", new CreateJevelLegendStruct("SpellMod_DeathKnight_IncreaseLifetime", SkillPower, "Increases Death Knight lifetime by (25-40)%.")); orAdd33.TryAdd("3", new CreateJevelLegendStruct("SpellMod_DeathKnight_LifeLeech", SkillPower, "Damage done by the Death Knight heals you for (18-25)% of damage done.")); orAdd33.TryAdd("4", new CreateJevelLegendStruct("SpellMod_DeathKnight_MaxHealth", SkillPower, "Increases Death Knight health by (25-40)%.")); orAdd33.TryAdd("5", new CreateJevelLegendStruct("SpellMod_DeathKnight_SkeletonMageOnLifetimeEnded", SkillPower, "Summon a Skeleton Mage with (25-40)% increased power when the Death Knight lifetime expire.")); orAdd33.TryAdd("6", new CreateJevelLegendStruct("SpellMod_DeathKnight_SnareEnemiesOnSummon", SkillPower, "Inflicts a fading snare lasting (1,2-1,7)sec on enemies nearby the summoning location.")); ConcurrentDictionary<string, CreateJevelLegendStruct> orAdd34 = SkillModList.GetOrAdd("soulburn", new ConcurrentDictionary<string, CreateJevelLegendStruct>()); orAdd34.TryAdd("1", new CreateJevelLegendStruct("SpellMod_Shared_DispellDebuffs_Self", SkillPower, "Removes all negative effects from self when cast.")); orAdd34.TryAdd("2", new CreateJevelLegendStruct("SpellMod_Soulburn_BonusDamage", SkillPower, "Increases damage by (10-16)%.")); orAdd34.TryAdd("3", new CreateJevelLegendStruct("SpellMod_Soulburn_BonusLifeDrain", SkillPower, "Increases life drain by (8-15)%.")); orAdd34.TryAdd("4", new CreateJevelLegendStruct("SpellMod_Soulburn_ConsumeSkeletonEmpower", SkillPower, "Consume up to 3 allied skeletons increasing your spell and physical power by (7-12)% per skeleton for 8s.")); orAdd34.TryAdd("5", new CreateJevelLegendStruct("SpellMod_Soulburn_ConsumeSkeletonHeal", SkillPower, "Consume up to 3 allied skeletons healing you for (63-100)% of your spell power per skeleton.")); orAdd34.TryAdd("6", new CreateJevelLegendStruct("SpellMod_Soulburn_IncreasedSilenceDuration", SkillPower, "Increases silence duration by (0,4-0,5)sec.")); orAdd34.TryAdd("7", new CreateJevelLegendStruct("SpellMod_Soulburn_IncreaseTriggerCount", SkillPower, "Increases targets hit by 1.")); orAdd34.TryAdd("8", new CreateJevelLegendStruct("SpellMod_Soulburn_ReduceCooldownOnSilence", SkillPower, "Reduces cooldown by (0,5-0,8)sec for each target silenced.")); ConcurrentDictionary<string, CreateJevelLegendStruct> orAdd35 = SkillModList.GetOrAdd("wardofthedamned", new ConcurrentDictionary<string, CreateJevelLegendStruct>()); orAdd35.TryAdd("1", new CreateJevelLegendStruct("SpellMod_Shared_IncreaseMoveSpeedDuringChannel_Low", SkillPower, "Increases movement speed when channeling by (8-12)%.")); orAdd35.TryAdd("2", new CreateJevelLegendStruct("SpellMod_WardOfTheDamned_BonusDamageOnRecast", SkillPower, "Increases damage done by the recast attack by (13-20).")); orAdd35.TryAdd("3", new CreateJevelLegendStruct("SpellMod_WardOfTheDamned_DamageMeleeAttackers", SkillPower, "Melee attackers take (31-50)% damage when striking the barrier.")); orAdd35.TryAdd("4", new CreateJevelLegendStruct("SpellMod_WardOfTheDamned_EmpowerSkeletonsOnRecast", SkillPower, "Empower allied skeletons hit by the recast for increasing their damage output by (19-30)% for 8sec.")); orAdd35.TryAdd("5", new CreateJevelLegendStruct("SpellMod_WardOfTheDamned_HealOnAbsorbProjectile", SkillPower, "Absorbing a projectile heals you for (30-45)% your spell power.")); orAdd35.TryAdd("6", new CreateJevelLegendStruct("SpellMod_WardOfTheDamned_KnockbackOnRecast", SkillPower, "The recast attack knocks targets back (1,9-3) meters on hit.")); orAdd35.TryAdd("7", new CreateJevelLegendStruct("SpellMod_WardOfTheDamned_MightSpawnMageSkeleton", SkillPower, "(25-40)% chance to spawn a Skeleton Mage instead ofa Skeleton Warrior when triggered.")); orAdd35.TryAdd("8", new CreateJevelLegendStruct("SpellMod_WardOfTheDamned_ShieldSkeletonsOnRecast", SkillPower, "Shields allied skeletons hit by the recast for (75-120)% of your spell power. The shield last for 4s.")); ConcurrentDictionary<string, CreateJevelLegendStruct> orAdd36 = SkillModList.GetOrAdd("veilofbones", new ConcurrentDictionary<string, CreateJevelLegendStruct>()); orAdd36.TryAdd("1", new CreateJevelLegendStruct("SpellMod_VeilOfBones_BonusDamageBelowTreshhold", SkillPower, "Increases damage done to targets below critical health by (25-40)%.")); orAdd36.TryAdd("2", new CreateJevelLegendStruct("SpellMod_VeilOfBones_DashHealMinions", SkillPower, "Heals all allied skeletons you dash through by (58-80)% oftheir maximum health and reset their lifetime.")); orAdd36.TryAdd("3", new CreateJevelLegendStruct("SpellMod_VeilOfBones_DashInflictCondemn", SkillPower, "Dashing through an enemy inflicts Condemn.")); orAdd36.TryAdd("4", new CreateJevelLegendStruct("SpellMod_VeilOfBones_SpawnSkeletonMage", SkillPower, "Striking an enemy summons a Skeleton Mage instead of Skeleton Warrior.")); orAdd36.TryAdd("5", new CreateJevelLegendStruct("SpellMod_Shared_Veil_BonusDamageOnPrimary", SkillPower, "Increases damage of next primary attack by (14-25)%.")); orAdd36.TryAdd("6", new CreateJevelLegendStruct("SpellMod_Shared_Veil_BuffAndIllusionDuration", SkillPower, "Increases elude duration by (13-20)%.")); } } public struct CreateJevelLegendStruct { public string Mod { get; set; } public float Power { get; set; } public string Description { get; set; } public CreateJevelLegendStruct(string mod = "", float power = 1f, string desc = "null") { Mod = mod; Power = power; Description = desc; } } } namespace JewelCreator.Configs { internal class MainConfig { private static readonly string FileDirectory = Path.Combine("BepInEx", "config"); private static readonly string FileName = "JewelsCreator.cfg"; private static readonly string fullPath = Path.Combine(FileDirectory, FileName); private static readonly ConfigFile Conf = new ConfigFile(fullPath, true); public static ConfigEntry<bool> EnableCommand; public static ConfigEntry<bool> AdminOnlyCommand; public static ConfigEntry<int> TierLevel; public static ConfigEntry<float> SkillModPower; public static void SettingsInit() { EnableCommand = Conf.Bind<bool>("JewelCreator", "Enabled", true, "Enable command \"JewelCreator\"."); AdminOnlyCommand = Conf.Bind<bool>("JewelCreator", "AdminOnly", true, "Enable command \"JewelCreator\". only for Admins"); TierLevel = Conf.Bind<int>("JewelCreator", "TierLevel", 4, "Setup (1-4) tier of jewels."); SkillModPower = Conf.Bind<float>("JewelCreator", "SkillModPower", 1f, "Setup (0.0 - 1.0) jewels skill modification power."); SettingsBind(); } public static void SettingsBind() { //IL_002e: Unknown result type (might be due to invalid IL or missing references) //IL_0034: Expected O, but got Unknown //IL_0090: Unknown result type (might be due to invalid IL or missing references) //IL_0096: Expected O, but got Unknown bool flag = default(bool); if (TierLevel.Value < 1 || TierLevel.Value > 4) { ManualLogSource logger = Plugin.Logger; BepInExWarningLogInterpolatedStringHandler val = new BepInExWarningLogInterpolatedStringHandler(67, 0, ref flag); if (flag) { ((BepInExLogInterpolatedStringHandler)val).AppendLiteral("Tier level must be from 1 to 4 inclusive. set to default value (4)."); } logger.LogWarning(val); TierLevel.Value = 4; } if (SkillModPower.Value < 0f || SkillModPower.Value > 1f) { ManualLogSource logger2 = Plugin.Logger; BepInExWarningLogInterpolatedStringHandler val = new BepInExWarningLogInterpolatedStringHandler(72, 0, ref flag); if (flag) { ((BepInExLogInterpolatedStringHandler)val).AppendLiteral("Skill Mod Power must be from 0 to 1 inclusive. set to default value (1)."); } logger2.LogWarning(val); SkillModPower.Value = 1f; } DB.AdminOnlyCommand = AdminOnlyCommand.Value; DB.EnabledCommand = EnableCommand.Value; DB.JewelTier = TierLevel.Value - 1; DB.SkillPower = SkillModPower.Value; } } } namespace JewelCreator.Commands { internal class JewelCreatorCommands { [Command("jewelcreator", "jc", ".jewelcreator ?", "Jewel creator.", null, false)] public static void JewelCreatorCommand(ChatCommandContext ctx, string arg1 = "", string arg2 = "") { //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_0041: Unknown result type (might be due to invalid IL or missing references) //IL_004c: Unknown result type (might be due to invalid IL or missing references) //IL_0053: Expected O, but got Unknown //IL_04f3: Unknown result type (might be due to invalid IL or missing references) if (!ctx.Event.User.IsAdmin && DB.AdminOnlyCommand) { ctx.Reply("<color=red>[denied]</color> JewelCreator"); } else if (DB.EnabledCommand) { ulong platformId = ctx.User.PlatformId; StringBuilder val = new StringBuilder(); string text = ""; List<string> value; ConcurrentDictionary<string, CreateJevelLegendStruct> value2; if (arg1 == null || string.IsNullOrEmpty(arg1) || arg1.Equals("?")) { val.Clear(); val.AppendLine("[.jc] [Jewel Skill] [Skill mods]"); val.AppendLine("This command creates a Jewel with your chosen skill and up to 4 modifiers for that skill. "); val.AppendLine("Select a Jewel Skill School"); text = ".jc ["; foreach (string key in DB.SkillClass.Keys) { text = text + "\"" + char.ToUpper(key[0]) + key.Substring(1) + "\" | "; } text = text.Substring(0, text.Length - 3); text += "]"; val.Append(text); ctx.Reply(((Object)val).ToString()); } else if (DB.SkillClass.TryGetValue(arg1.ToLower(), out value)) { val.Clear(); val.AppendLine("Select a Skill"); text = ".jc ["; foreach (string item in value) { text = text + "\"" + char.ToUpper(item[0]) + item.Substring(1) + "\" | "; } text = text.Substring(0, text.Length - 3); text += "]"; val.Append(text); ctx.Reply(((Object)val).ToString()); } else if (DB.SkillModList.TryGetValue(arg1.ToLower(), out value2)) { if (arg2 == null || arg2.Equals("?") || string.IsNullOrEmpty(arg2)) { val.Clear(); val.AppendLine("Modifiers for [" + arg1 + "]:"); for (int i = 1; i <= value2.Count; i++) { val.AppendLine($"{i}. {value2[$"{i}"].Description}"); if (val.Length > 450) { ctx.Reply(((Object)val).ToString()); val.Clear(); val.AppendLine(""); } } ctx.Reply(((Object)val).ToString()); } else if (arg2.Length <= 4 && arg2.Length >= 1) { string[] array = new string[4]; for (int j = 0; j < 4; j++) { if (j < arg2.Length) { array[j] = arg2[j].ToString(); } else { array[j] = "0"; } } bool flag = false; for (int k = 0; k < 4; k++) { for (int l = 0; l < 4; l++) { if (k != l && array[k] == array[l] && array[k] != "0") { flag = true; } } } bool flag2 = true; if (!flag) { string[] array2 = array; foreach (string text2 in array2) { if (!value2.ContainsKey(text2) && text2 != "0") { flag2 = false; ctx.Reply("Incorrect Modifications!"); return; } } if (flag2) { Helper.CreateJewel(ctx.User, arg1.ToLower(), array, value2); ctx.Reply("Jewel created."); } } else { ctx.Reply("Modifications can't be duplicated!"); } } else if (arg2.Length > 4) { ctx.Reply("There cannot be more than 4 modifiers!"); } else { ctx.Reply("Incorrect parameters."); } } else { ctx.Reply("Not found ability."); } } else { ctx.Reply("This command is disabled."); } } } }