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.");
}
}
}
}