Decompiled source of JewelCreator v0.1.2

JewelCreator.dll

Decompiled 6 months ago
using 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.");
			}
		}
	}
}