Decompiled source of Praetoria Frostloche v1.2.3
BepInEx/plugins/StarLevelSystem.dll
Decompiled 11 hours ago
The result has been truncated due to the large size, download it to view full contents!
using System; using System.Collections; using System.Collections.Generic; using System.Diagnostics; using System.IO; using System.Linq; using System.Reflection; using System.Reflection.Emit; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Runtime.Versioning; using System.Security.Permissions; using BepInEx; using BepInEx.Configuration; using BepInEx.Logging; using HarmonyLib; using Jotunn; using Jotunn.Entities; using Jotunn.Managers; using StarLevelSystem.common; using StarLevelSystem.modules; using UnityEngine; using UnityEngine.UI; using YamlDotNet.Serialization; using YamlDotNet.Serialization.NamingConventions; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: AssemblyTitle("StarLevelSystem")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("")] [assembly: AssemblyProduct("StarLevelSystem")] [assembly: AssemblyCopyright("Copyright © 2021")] [assembly: AssemblyTrademark("")] [assembly: ComVisible(false)] [assembly: Guid("e3243d22-4307-4008-ba36-9f326008cde5")] [assembly: AssemblyFileVersion("0.0.2")] [assembly: TargetFramework(".NETFramework,Version=v4.8", FrameworkDisplayName = ".NET Framework 4.8")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("0.0.2.0")] namespace StarLevelSystem { internal class ValConfig { [CompilerGenerated] private sealed class <OnClientReceiveColorConfigs>d__36 : IEnumerator<object>, IDisposable, IEnumerator { private int <>1__state; private object <>2__current; public ZPackage package; object IEnumerator<object>.Current { [DebuggerHidden] get { return <>2__current; } } object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } [DebuggerHidden] public <OnClientReceiveColorConfigs>d__36(int <>1__state) { this.<>1__state = <>1__state; } [DebuggerHidden] void IDisposable.Dispose() { <>1__state = -2; } private bool MoveNext() { switch (<>1__state) { default: return false; case 0: <>1__state = -1; Colorization.UpdateYamlConfig(package.ReadString()); <>2__current = null; <>1__state = 1; return true; case 1: <>1__state = -1; return false; } } bool IEnumerator.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext return this.MoveNext(); } [DebuggerHidden] void IEnumerator.Reset() { throw new NotSupportedException(); } } [CompilerGenerated] private sealed class <OnClientReceiveLevelConfigs>d__35 : IEnumerator<object>, IDisposable, IEnumerator { private int <>1__state; private object <>2__current; public ZPackage package; object IEnumerator<object>.Current { [DebuggerHidden] get { return <>2__current; } } object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } [DebuggerHidden] public <OnClientReceiveLevelConfigs>d__35(int <>1__state) { this.<>1__state = <>1__state; } [DebuggerHidden] void IDisposable.Dispose() { <>1__state = -2; } private bool MoveNext() { switch (<>1__state) { default: return false; case 0: <>1__state = -1; LevelSystemData.UpdateYamlConfig(package.ReadString()); <>2__current = null; <>1__state = 1; return true; case 1: <>1__state = -1; return false; } } bool IEnumerator.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext return this.MoveNext(); } [DebuggerHidden] void IEnumerator.Reset() { throw new NotSupportedException(); } } [CompilerGenerated] private sealed class <OnServerRecieveConfigs>d__34 : IEnumerator<object>, IDisposable, IEnumerator { private int <>1__state; private object <>2__current; object IEnumerator<object>.Current { [DebuggerHidden] get { return <>2__current; } } object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } [DebuggerHidden] public <OnServerRecieveConfigs>d__34(int <>1__state) { this.<>1__state = <>1__state; } [DebuggerHidden] void IDisposable.Dispose() { <>1__state = -2; } private bool MoveNext() { switch (<>1__state) { default: return false; case 0: <>1__state = -1; Logger.LogDebug("Server recieved config from client, rejecting due to being the server."); <>2__current = null; <>1__state = 1; return true; case 1: <>1__state = -1; return false; } } bool IEnumerator.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext return this.MoveNext(); } [DebuggerHidden] void IEnumerator.Reset() { throw new NotSupportedException(); } } public static ConfigFile cfg; internal static string levelsFilePath = Path.Combine(Paths.ConfigPath, "StarLevelSystem", "LevelSettings.yaml"); internal static string colorsFilePath = Path.Combine(Paths.ConfigPath, "StarLevelSystem", "ColorSettings.yaml"); private static CustomRPC LevelSettingsRPC; private static CustomRPC ColorSettingsRPC; public static ConfigEntry<bool> EnableDebugMode; public static ConfigEntry<int> MaxLevel; public static ConfigEntry<bool> EnableCreatureScalingPerLevel; public static ConfigEntry<bool> EnableScalingInDungeons; public static ConfigEntry<float> PerLevelScaleBonus; public static ConfigEntry<float> PerLevelLootScale; public static ConfigEntry<int> LootDropsPerTick; public static ConfigEntry<float> EnemyHealthMultiplier; public static ConfigEntry<float> BossEnemyHealthMultiplier; public static ConfigEntry<float> EnemyHealthPerWorldLevel; public static ConfigEntry<float> EnemyDamageLevelMultiplier; public static ConfigEntry<float> BossEnemyDamageMultiplier; public static ConfigEntry<bool> EnableDistanceLevelScalingBonus; public static ConfigEntry<bool> EnableMultiplayerEnemyHealthScaling; public static ConfigEntry<bool> EnableMultiplayerEnemyDamageScaling; public static ConfigEntry<int> MultiplayerScalingRequiredPlayersNearby; public static ConfigEntry<float> MultiplayerEnemyDamageModifier; public static ConfigEntry<float> MultiplayerEnemyHealthModifier; public ValConfig(ConfigFile cf) { cfg = cf; cfg.SaveOnConfigSet = true; CreateConfigValues(cf); } public void SetupConfigRPCs() { //IL_0011: Unknown result type (might be due to invalid IL or missing references) //IL_001d: Unknown result type (might be due to invalid IL or missing references) //IL_0027: Expected O, but got Unknown //IL_0027: Expected O, but got Unknown //IL_003d: Unknown result type (might be due to invalid IL or missing references) //IL_0049: Unknown result type (might be due to invalid IL or missing references) //IL_0053: Expected O, but got Unknown //IL_0053: Expected O, but got Unknown LevelSettingsRPC = NetworkManager.Instance.AddRPC("LSE_LevelsRPC", new CoroutineHandler(OnServerRecieveConfigs), new CoroutineHandler(OnClientReceiveLevelConfigs)); ColorSettingsRPC = NetworkManager.Instance.AddRPC("LSE_ColorsRPC", new CoroutineHandler(OnServerRecieveConfigs), new CoroutineHandler(OnClientReceiveColorConfigs)); SynchronizationManager.Instance.AddInitialSynchronization(LevelSettingsRPC, (Func<ZPackage>)SendLevelsConfigs); SynchronizationManager.Instance.AddInitialSynchronization(ColorSettingsRPC, (Func<ZPackage>)SendColorsConfigs); } private void CreateConfigValues(ConfigFile Config) { //IL_001a: Unknown result type (might be due to invalid IL or missing references) //IL_001f: Unknown result type (might be due to invalid IL or missing references) //IL_002c: Expected O, but got Unknown //IL_002c: Unknown result type (might be due to invalid IL or missing references) //IL_0036: Expected O, but got Unknown EnableDebugMode = Config.Bind<bool>("Client config", "EnableDebugMode", false, new ConfigDescription("Enables Debug logging.", (AcceptableValueBase)null, new object[1] { (object)new ConfigurationManagerAttributes { IsAdvanced = true } })); EnableDebugMode.SettingChanged += Logger.enableDebugLogging; Logger.CheckEnableDebugLogging(); MaxLevel = BindServerConfig("LevelSystem", "MaxLevel", 5, "The Maximum number of stars that a creature can have", advanced: false, 1, 100); EnableCreatureScalingPerLevel = BindServerConfig("LevelSystem", "EnableCreatureScalingPerLevel", value: true, "Enables started creatures to get larger for each star"); EnableDistanceLevelScalingBonus = BindServerConfig("LevelSystem", "EnableDistanceLevelScalingBonus", value: true, "Creatures further away from the center of the world have a higher chance to levelup, this is a bonus applied to existing creature/biome configuration."); PerLevelScaleBonus = BindServerConfig("LevelSystem", "PerLevelScaleBonus", 0.1f, "The additional size that a creature grows each star level.", advanced: true, 0f, 2f); PerLevelScaleBonus.SettingChanged += Colorization.StarLevelScaleChanged; EnableScalingInDungeons = BindServerConfig("LevelSystem", "EnableScalingInDungeons", value: false, "Enables scaling in dungeons, this can cause creatures to become stuck."); PerLevelLootScale = BindServerConfig("LevelSystem", "PerLevelLootScale", 0.5f, "The amount of additional loot that a creature provides per each star level", advanced: true, 0f, 2f); LootDropsPerTick = BindServerConfig("LevelSystem", "LootDropsPerTick", 20, "The number of loot drops that are generated per tick, reducing this will reduce lag when massive amounts of loot is generated at once.", advanced: true, 1, 100); EnemyHealthMultiplier = BindServerConfig("LevelSystem", "EnemyHealthMultiplier", 1f, "The amount of health that each level gives a creature, vanilla is 1x. At 2x each creature has double the base health and gains twice as much per level.", advanced: false, 0.01f, 5f); EnemyHealthPerWorldLevel = BindServerConfig("LevelSystem", "EnemyHealthPerWorldLevel", 0.2f, "The percent amount of health that each world level gives a creature, vanilla is 2x (eg 200% more health each world level).", advanced: false, 0f, 2f); EnemyDamageLevelMultiplier = BindServerConfig("LevelSystem", "EnemyDamageLevelMultiplier", 0.1f, "The amount of damage that each level gives a creatures, vanilla is 0.5x (eg 50% more damage each level).", advanced: false, 0f, 2f); BossEnemyHealthMultiplier = BindServerConfig("LevelSystem", "BossEnemyHealthMultiplier", 0.3f, "The amount of health that each level gives a boss. 1 is 100% more health per level.", advanced: false, 0f, 5f); BossEnemyDamageMultiplier = BindServerConfig("LevelSystem", "BossEnemyDamageMultiplier", 0.02f, "The amount of damage that each level gives a boss. 1 is 100% more damage per level.", advanced: false, 0f, 5f); MultiplayerEnemyDamageModifier = BindServerConfig("Multiplayer", "MultiplayerEnemyDamageModifier", 0.05f, "The additional amount of damage enemies will do to players, when there is a group of players together, per player. .2 = 20%", advanced: true, 0f, 2f); MultiplayerEnemyHealthModifier = BindServerConfig("Multiplayer", "MultiplayerEnemyHealthModifier", 0.2f, "The additional amount of health enemies gain when players are grouped together, per player. .3 = 30%", advanced: true, 0f, 2f); MultiplayerScalingRequiredPlayersNearby = BindServerConfig("Multiplayer", "MultiplayerScalingRequiredPlayersNearby", 3, "The number of players in a local area required to cause monsters to gain bonus health and/or damage.", advanced: true, 0, 10); EnableMultiplayerEnemyHealthScaling = BindServerConfig("Multiplayer", "EnableMultiplayerEnemyHealthScaling", value: true, "Wether or not creatures gain more health when players are grouped up."); EnableMultiplayerEnemyDamageScaling = BindServerConfig("Multiplayer", "EnableMultiplayerEnemyDamageScaling", value: false, "Wether or not creatures gain more damage when players are grouped up."); } internal void LoadYamlConfigs() { string[] files = Directory.GetFiles(GetSecondaryConfigDirectoryPath()); bool flag = false; bool flag2 = false; string[] array = files; foreach (string text in array) { if (text.Contains("LevelSettings.yaml")) { Logger.LogDebug("Found level configuration: " + text); levelsFilePath = text; flag = true; } if (text.Contains("ColorSettings.yaml")) { Logger.LogDebug("Found color configuration: " + text); colorsFilePath = text; flag2 = true; } } if (!flag) { Logger.LogDebug("Level config file missing, recreating."); using StreamWriter streamWriter = new StreamWriter(levelsFilePath); string value = "#################################################\r\n# Star Level System Expanded - Level Settings\r\n#################################################\r\n"; streamWriter.WriteLine(value); streamWriter.WriteLine(LevelSystemData.YamlDefaultConfig()); } if (!flag2) { Logger.LogDebug("Color config file missing, recreating."); using StreamWriter streamWriter2 = new StreamWriter(colorsFilePath); string value2 = "#################################################\r\n# Star Level System Expanded - Creature Level Color Settings\r\n#################################################\r\n"; streamWriter2.WriteLine(value2); streamWriter2.WriteLine(Colorization.YamlDefaultConfig()); } SetupFileWatcher("ColorSettings.yaml"); SetupFileWatcher("LevelSettings.yaml"); } private void SetupFileWatcher(string filtername) { FileSystemWatcher fileSystemWatcher = new FileSystemWatcher(); fileSystemWatcher.Path = GetSecondaryConfigDirectoryPath(); fileSystemWatcher.NotifyFilter = NotifyFilters.LastWrite; fileSystemWatcher.Filter = filtername; if (filtername == "ColorSettings.yaml") { fileSystemWatcher.Changed += UpdateColorsOnChange; fileSystemWatcher.Created += UpdateColorsOnChange; fileSystemWatcher.Renamed += UpdateColorsOnChange; } if (filtername == "LevelSettings.yaml") { fileSystemWatcher.Changed += UpdateLevelsOnChange; fileSystemWatcher.Created += UpdateLevelsOnChange; fileSystemWatcher.Renamed += UpdateLevelsOnChange; } fileSystemWatcher.SynchronizingObject = ThreadingHelper.SynchronizingObject; fileSystemWatcher.EnableRaisingEvents = true; } private static void UpdateLevelsOnChange(object sender, FileSystemEventArgs e) { if (!SynchronizationManager.Instance.PlayerIsAdmin) { Logger.LogInfo("Player is not an admin, and not allowed to change local configuration. Ignoring."); } else if (File.Exists(e.FullPath)) { try { LevelSystemData.UpdateYamlConfig(File.ReadAllText(e.FullPath)); LevelSettingsRPC.SendPackage(ZNet.instance.m_peers, SendFileAsZPackage(e.FullPath)); } catch { Logger.LogWarning("Failed to update levels configuration"); } } } private static void UpdateColorsOnChange(object sender, FileSystemEventArgs e) { if (!SynchronizationManager.Instance.PlayerIsAdmin) { Logger.LogInfo("Player is not an admin, and not allowed to change local configuration. Ignoring."); } else if (File.Exists(e.FullPath)) { try { LevelSystemData.UpdateYamlConfig(File.ReadAllText(e.FullPath)); LevelSettingsRPC.SendPackage(ZNet.instance.m_peers, SendFileAsZPackage(e.FullPath)); } catch { Logger.LogWarning("Failed to update levels configuration"); } } } private static void UpdateConfigFileOnChange(object sender, FileSystemEventArgs e) { if (!SynchronizationManager.Instance.PlayerIsAdmin) { Logger.LogInfo("Player is not an admin, and not allowed to change local configuration. Ignoring."); } else { if (!File.Exists(e.FullPath)) { return; } string yaml = File.ReadAllText(e.FullPath); FileInfo fileInfo = new FileInfo(e.FullPath); Logger.LogDebug("Filewatch changes from: (" + fileInfo.Name + ") " + fileInfo.FullName); string name = fileInfo.Name; if (!(name == "ColorSettings.yaml")) { if (name == "LevelSettings.yaml") { Logger.LogDebug("Triggering Level Settings update."); LevelSystemData.UpdateYamlConfig(yaml); LevelSettingsRPC.SendPackage(ZNet.instance.m_peers, SendFileAsZPackage(e.FullPath)); } } else { Colorization.UpdateYamlConfig(yaml); ColorSettingsRPC.SendPackage(ZNet.instance.m_peers, SendFileAsZPackage(e.FullPath)); } } } private static ZPackage SendFileAsZPackage(string filepath) { //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_000c: Unknown result type (might be due to invalid IL or missing references) //IL_0014: Expected O, but got Unknown string text = File.ReadAllText(filepath); ZPackage val = new ZPackage(); val.Write(text); return val; } private static ZPackage SendLevelsConfigs() { return SendFileAsZPackage(levelsFilePath); } private static ZPackage SendColorsConfigs() { return SendFileAsZPackage(colorsFilePath); } [IteratorStateMachine(typeof(<OnServerRecieveConfigs>d__34))] public static IEnumerator OnServerRecieveConfigs(long sender, ZPackage package) { //yield-return decompiler failed: Unexpected instruction in Iterator.Dispose() return new <OnServerRecieveConfigs>d__34(0); } [IteratorStateMachine(typeof(<OnClientReceiveLevelConfigs>d__35))] private static IEnumerator OnClientReceiveLevelConfigs(long sender, ZPackage package) { //yield-return decompiler failed: Unexpected instruction in Iterator.Dispose() return new <OnClientReceiveLevelConfigs>d__35(0) { package = package }; } [IteratorStateMachine(typeof(<OnClientReceiveColorConfigs>d__36))] private static IEnumerator OnClientReceiveColorConfigs(long sender, ZPackage package) { //yield-return decompiler failed: Unexpected instruction in Iterator.Dispose() return new <OnClientReceiveColorConfigs>d__36(0) { package = package }; } public static string GetSecondaryConfigDirectoryPath() { return Directory.CreateDirectory(Path.Combine(Paths.ConfigPath, "StarLevelSystem")).FullName; } public static ConfigEntry<bool> BindServerConfig(string catagory, string key, bool value, string description, AcceptableValueBase acceptableValues = null, bool advanced = false) { //IL_0013: Unknown result type (might be due to invalid IL or missing references) //IL_0018: Unknown result type (might be due to invalid IL or missing references) //IL_001f: Unknown result type (might be due to invalid IL or missing references) //IL_002d: Expected O, but got Unknown //IL_002d: Unknown result type (might be due to invalid IL or missing references) //IL_0037: Expected O, but got Unknown return cfg.Bind<bool>(catagory, key, value, new ConfigDescription(description, acceptableValues, new object[1] { (object)new ConfigurationManagerAttributes { IsAdminOnly = true, IsAdvanced = advanced } })); } public static ConfigEntry<int> BindServerConfig(string catagory, string key, int value, string description, bool advanced = false, int valmin = 0, int valmax = 150) { //IL_001a: Unknown result type (might be due to invalid IL or missing references) //IL_001f: Unknown result type (might be due to invalid IL or missing references) //IL_0026: Unknown result type (might be due to invalid IL or missing references) //IL_0034: Expected O, but got Unknown //IL_0034: Unknown result type (might be due to invalid IL or missing references) //IL_003e: Expected O, but got Unknown return cfg.Bind<int>(catagory, key, value, new ConfigDescription(description, (AcceptableValueBase)(object)new AcceptableValueRange<int>(valmin, valmax), new object[1] { (object)new ConfigurationManagerAttributes { IsAdminOnly = true, IsAdvanced = advanced } })); } public static ConfigEntry<float> BindServerConfig(string catagory, string key, float value, string description, bool advanced = false, float valmin = 0f, float valmax = 150f) { //IL_001a: Unknown result type (might be due to invalid IL or missing references) //IL_001f: Unknown result type (might be due to invalid IL or missing references) //IL_0026: Unknown result type (might be due to invalid IL or missing references) //IL_0034: Expected O, but got Unknown //IL_0034: Unknown result type (might be due to invalid IL or missing references) //IL_003e: Expected O, but got Unknown return cfg.Bind<float>(catagory, key, value, new ConfigDescription(description, (AcceptableValueBase)(object)new AcceptableValueRange<float>(valmin, valmax), new object[1] { (object)new ConfigurationManagerAttributes { IsAdminOnly = true, IsAdvanced = advanced } })); } public static ConfigEntry<string> BindServerConfig(string catagory, string key, string value, string description, AcceptableValueList<string> acceptableValues = null, bool advanced = false) { //IL_0013: Unknown result type (might be due to invalid IL or missing references) //IL_0018: Unknown result type (might be due to invalid IL or missing references) //IL_001f: Unknown result type (might be due to invalid IL or missing references) //IL_002d: Expected O, but got Unknown //IL_002d: Unknown result type (might be due to invalid IL or missing references) //IL_0037: Expected O, but got Unknown return cfg.Bind<string>(catagory, key, value, new ConfigDescription(description, (AcceptableValueBase)(object)acceptableValues, new object[1] { (object)new ConfigurationManagerAttributes { IsAdminOnly = true, IsAdvanced = advanced } })); } } internal class Logger { public static LogLevel Level = (LogLevel)16; public static void enableDebugLogging(object sender, EventArgs e) { //IL_0016: Unknown result type (might be due to invalid IL or missing references) //IL_000e: Unknown result type (might be due to invalid IL or missing references) if (ValConfig.EnableDebugMode.Value) { Level = (LogLevel)32; } else { Level = (LogLevel)16; } } public static void CheckEnableDebugLogging() { //IL_0016: Unknown result type (might be due to invalid IL or missing references) //IL_000e: Unknown result type (might be due to invalid IL or missing references) if (ValConfig.EnableDebugMode.Value) { Level = (LogLevel)32; } else { Level = (LogLevel)16; } } public static void LogDebug(string message) { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Invalid comparison between Unknown and I4 if ((int)Level >= 32) { StarLevelSystem.Log.LogInfo((object)message); } } public static void LogInfo(string message) { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Invalid comparison between Unknown and I4 if ((int)Level >= 16) { StarLevelSystem.Log.LogInfo((object)message); } } public static void LogWarning(string message) { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_0006: Invalid comparison between Unknown and I4 if ((int)Level >= 4) { StarLevelSystem.Log.LogWarning((object)message); } } public static void LogError(string message) { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_0006: Invalid comparison between Unknown and I4 if ((int)Level >= 2) { StarLevelSystem.Log.LogError((object)message); } } } [BepInPlugin("MidnightsFX.StarLevelSystem", "StarLevelSystem", "0.0.2")] [BepInDependency(/*Could not decode attribute arguments.*/)] internal class StarLevelSystem : BaseUnityPlugin { public const string PluginGUID = "MidnightsFX.StarLevelSystem"; public const string PluginName = "StarLevelSystem"; public const string PluginVersion = "0.0.2"; public ValConfig cfg; public static CustomLocalization Localization = LocalizationManager.Instance.GetLocalization(); public static ManualLogSource Log; public static Harmony HarmonyInstance { get; private set; } public void Awake() { Log = ((BaseUnityPlugin)this).Logger; cfg = new ValConfig(((BaseUnityPlugin)this).Config); cfg.SetupConfigRPCs(); cfg.LoadYamlConfigs(); HarmonyInstance = Harmony.CreateAndPatchAll(Assembly.GetExecutingAssembly(), "MidnightsFX.StarLevelSystem"); Colorization.SetupLevelEffects(); Colorization.Init(); LevelSystemData.Init(); Logger.LogInfo((object)"Star Levels have been expanded."); } } } namespace StarLevelSystem.modules { public class ColorDef { public float hue { get; set; } public float saturation { get; set; } public float value { get; set; } public bool is_emissive { get; set; } public LevelSetup toLevelEffect() { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_0005: Unknown result type (might be due to invalid IL or missing references) //IL_0010: Unknown result type (might be due to invalid IL or missing references) //IL_001c: Unknown result type (might be due to invalid IL or missing references) //IL_0028: Unknown result type (might be due to invalid IL or missing references) //IL_0034: Unknown result type (might be due to invalid IL or missing references) //IL_0040: Unknown result type (might be due to invalid IL or missing references) //IL_0053: Unknown result type (might be due to invalid IL or missing references) //IL_0058: Unknown result type (might be due to invalid IL or missing references) //IL_005e: Expected O, but got Unknown return new LevelSetup { m_scale = 1f, m_hue = hue, m_saturation = saturation, m_value = value, m_setEmissiveColor = is_emissive, m_emissiveColor = new Color(hue, saturation, value) }; } } public static class Colorization { [HarmonyPatch(typeof(LevelEffects), "SetupLevelVisualization")] public static class PreventDefaultLevelSetup { public static bool Prefix() { return false; } } [HarmonyPatch(typeof(Character), "SetLevel")] public static class AddLevelEffectsWhenSpawned { public static void Postfix(Character __instance) { //IL_001c: Unknown result type (might be due to invalid IL or missing references) //IL_006e: Unknown result type (might be due to invalid IL or missing references) //IL_0074: Unknown result type (might be due to invalid IL or missing references) if (__instance.m_level > 1) { ApplyColorizationWithoutLevelEffects(__instance); ApplyHighLevelVisual(__instance); if (((Component)__instance).transform.position.y < 3000f && !ValConfig.EnableScalingInDungeons.Value) { float num = 1f + ValConfig.PerLevelScaleBonus.Value * (float)__instance.m_level; Logger.LogDebug($"Setting character size {num} and color."); Transform transform = ((Component)__instance).transform; transform.localScale *= num; Physics.SyncTransforms(); } } } } [HarmonyPatch(typeof(Character), "Awake")] public static class AddLevelEffectsWhenLoaded { public static void Postfix(Character __instance) { //IL_001c: Unknown result type (might be due to invalid IL or missing references) //IL_006e: Unknown result type (might be due to invalid IL or missing references) //IL_0074: Unknown result type (might be due to invalid IL or missing references) if (__instance.m_level > 1) { ApplyColorizationWithoutLevelEffects(__instance); ApplyHighLevelVisual(__instance); if (((Component)__instance).transform.position.y < 3000f && !ValConfig.EnableScalingInDungeons.Value) { float num = 1f + ValConfig.PerLevelScaleBonus.Value * (float)__instance.m_level; Logger.LogDebug($"Setting character size {num} and color."); Transform transform = ((Component)__instance).transform; transform.localScale *= num; Physics.SyncTransforms(); } } } } public static DataObjects.CreatureColorizationSettings creatureColorizationSettings = defaultColorizationSettings; private static DataObjects.CreatureColorizationSettings defaultColorizationSettings = new DataObjects.CreatureColorizationSettings { characterSpecificColorization = ColorizationData.characterColorizationData, defaultLevelColorization = ColorizationData.defaultColorizationData }; public static void Init() { creatureColorizationSettings = defaultColorizationSettings; try { UpdateYamlConfig(File.ReadAllText(ValConfig.colorsFilePath)); } catch (Exception arg) { Logger.LogWarning((object)$"There was an error updating the Color Level values, defaults will be used. Exception: {arg}"); } } public static string YamlDefaultConfig() { return DataObjects.yamlserializer.Serialize((object)defaultColorizationSettings); } public static bool UpdateYamlConfig(string yaml) { try { creatureColorizationSettings = DataObjects.yamldeserializer.Deserialize<DataObjects.CreatureColorizationSettings>(yaml); if (creatureColorizationSettings.defaultLevelColorization.Count + 1 < 103) { creatureColorizationSettings.defaultLevelColorization = defaultColorizationSettings.defaultLevelColorization; } Logger.LogInfo("Updated ColorizationSettings."); Character[] array = Resources.FindObjectsOfTypeAll<Character>(); foreach (Character val in array) { if (val.m_level > 1) { ApplyColorizationWithoutLevelEffects(val); } } } catch (Exception ex) { StarLevelSystem.Log.LogError((object)("Failed to parse ColorizationSettings YAML: " + ex.Message)); return false; } return true; } public static void SetupLevelEffects() { for (int i = defaultColorizationSettings.defaultLevelColorization.Count + 1; 103 > i; i++) { float num = Random.Range(-0.1f, 0.1f); float num2 = Random.Range(-0.1f, 0.1f); float num3 = Random.Range(-0.3f, 0.3f); Logger.LogDebug($"LevelEffects: {i} - hue:{num2}, sat:{num}, val:{num3}"); defaultColorizationSettings.defaultLevelColorization.Add(i, new ColorDef { hue = num2, saturation = num, value = num3 }); } } public static void ApplyHighLevelVisual(Character charc) { LevelEffects componentInChildren = ((Component)charc).gameObject.GetComponentInChildren<LevelEffects>(); if (!((Object)(object)componentInChildren == (Object)null)) { if (charc.m_level > componentInChildren.m_levelSetups.Count) { _ = componentInChildren.m_levelSetups.Count; } LevelSetup val = componentInChildren.m_levelSetups[componentInChildren.m_levelSetups.Count - 1]; if ((Object)(object)val.m_enableObject != (Object)null) { val.m_enableObject.SetActive(true); } } } private static void ApplyColorizationWithoutLevelEffects(Character cgo) { //IL_00c3: Unknown result type (might be due to invalid IL or missing references) //IL_00c9: Expected O, but got Unknown //IL_0117: Unknown result type (might be due to invalid IL or missing references) int num = cgo.m_level - 1; LevelSetup val = creatureColorizationSettings.defaultLevelColorization[num].toLevelEffect(); string prefabName = Utils.GetPrefabName(((Component)cgo).gameObject); Logger.LogDebug("Checking for character specific colorization " + prefabName); if (creatureColorizationSettings.characterSpecificColorization.ContainsKey(prefabName)) { if (creatureColorizationSettings.characterSpecificColorization[prefabName].TryGetValue(num, out var value)) { Logger.LogDebug($"Found character specific colorization for {prefabName} - {num}"); val = value.toLevelEffect(); } } else { Logger.LogDebug($"No character specific colorization for {prefabName} - {num}"); } try { SkinnedMeshRenderer[] componentsInChildren = ((Component)cgo).gameObject.GetComponentsInChildren<SkinnedMeshRenderer>(); foreach (SkinnedMeshRenderer obj in componentsInChildren) { Material[] sharedMaterials = ((Renderer)obj).sharedMaterials; sharedMaterials[0] = new Material(sharedMaterials[0]); sharedMaterials[0].SetFloat("_Hue", val.m_hue); sharedMaterials[0].SetFloat("_Saturation", val.m_saturation); sharedMaterials[0].SetFloat("_Value", val.m_value); if (val.m_setEmissiveColor) { sharedMaterials[0].SetColor("_EmissionColor", val.m_emissiveColor); } ((Renderer)obj).sharedMaterials = sharedMaterials; } } catch (Exception arg) { Logger.LogError($"Exception while colorizing {arg}"); } } internal static void StarLevelScaleChanged(object s, EventArgs e) { //IL_0014: Unknown result type (might be due to invalid IL or missing references) //IL_005b: Unknown result type (might be due to invalid IL or missing references) //IL_0061: Unknown result type (might be due to invalid IL or missing references) Character[] array = Resources.FindObjectsOfTypeAll<Character>(); foreach (Character val in array) { ((Component)val).transform.localScale = Vector3.one; float num = 1f + ValConfig.PerLevelScaleBonus.Value * (float)(val.m_level - 1); Logger.LogDebug($"Setting {((Object)val).name} size {num}."); Transform transform = ((Component)val).transform; transform.localScale *= num; } Physics.SyncTransforms(); } } public static class ColorizationData { internal static readonly Dictionary<string, Dictionary<int, ColorDef>> characterColorizationData = new Dictionary<string, Dictionary<int, ColorDef>> { { "Deer", new Dictionary<int, ColorDef> { { 1, new ColorDef { hue = 0.05f, saturation = -0.1f, value = 0f } }, { 2, new ColorDef { hue = 0.09f, saturation = -0.5f, value = -0.05f } }, { 3, new ColorDef { hue = 0f, saturation = 0f, value = -0.07f } }, { 4, new ColorDef { hue = 0.09f, saturation = 0f, value = -0.09f } }, { 5, new ColorDef { hue = -0.11f, saturation = 0f, value = -0.11f } }, { 6, new ColorDef { hue = 0f, saturation = 0.5f, value = -0.15f } }, { 7, new ColorDef { hue = 0f, saturation = 0.5f, value = 0f } }, { 8, new ColorDef { hue = 0f, saturation = 0.5f, value = -0.08f } }, { 9, new ColorDef { hue = 0f, saturation = -0.3f, value = 0f } }, { 10, new ColorDef { hue = 0f, saturation = -0.5f, value = 0f } } } }, { "Boar", new Dictionary<int, ColorDef> { { 1, new ColorDef { hue = 0f, saturation = 0f, value = -0.05f } }, { 2, new ColorDef { hue = 0f, saturation = 0f, value = -0.07f } }, { 3, new ColorDef { hue = 0f, saturation = 0f, value = -0.09f } }, { 4, new ColorDef { hue = 0.1f, saturation = 0f, value = -0.05f } }, { 5, new ColorDef { hue = 0.15f, saturation = 0f, value = -0.05f } }, { 6, new ColorDef { hue = 0.05f, saturation = 0f, value = 0.05f } }, { 7, new ColorDef { hue = -0.05f, saturation = 0.1f, value = 0.05f } }, { 8, new ColorDef { hue = -0.1f, saturation = 0.1f, value = -0.05f } }, { 9, new ColorDef { hue = 0f, saturation = -0.1f, value = 0.02f } }, { 10, new ColorDef { hue = 0f, saturation = -0.05f, value = -0.1f } } } }, { "Neck", new Dictionary<int, ColorDef> { { 1, new ColorDef { hue = 0f, saturation = 0f, value = -0.07f } }, { 2, new ColorDef { hue = 0.05f, saturation = 0f, value = -0.1f } }, { 3, new ColorDef { hue = -0.1f, saturation = 0f, value = -0.05f } }, { 4, new ColorDef { hue = -0.2f, saturation = 0f, value = -0.1f } }, { 5, new ColorDef { hue = -0.4f, saturation = 0f, value = -0.1f } }, { 6, new ColorDef { hue = 0.4f, saturation = 0f, value = -0.05f } }, { 7, new ColorDef { hue = 0.25f, saturation = 0f, value = -0.05f } }, { 8, new ColorDef { hue = 0.35f, saturation = 0f, value = -0.1f } }, { 9, new ColorDef { hue = 0.1f, saturation = 0f, value = -0.15f } }, { 10, new ColorDef { hue = 0.1f, saturation = 0f, value = -0.2f } } } }, { "Greyling", new Dictionary<int, ColorDef> { { 1, new ColorDef { hue = -0.06f, saturation = 0.1f, value = 0.05f } }, { 2, new ColorDef { hue = 0f, saturation = 0.2f, value = -0.01f } }, { 3, new ColorDef { hue = -0.1f, saturation = 0.2f, value = -0.01f } }, { 4, new ColorDef { hue = -0.2f, saturation = 0.2f, value = -0.01f } }, { 5, new ColorDef { hue = -0.4f, saturation = 0f, value = -0.01f } }, { 6, new ColorDef { hue = -0.5f, saturation = 0f, value = -0.01f } }, { 7, new ColorDef { hue = -0.7f, saturation = 0f, value = -0.01f } }, { 8, new ColorDef { hue = -0.8f, saturation = 0f, value = -0.01f } }, { 9, new ColorDef { hue = -1f, saturation = 0f, value = -0.01f } }, { 10, new ColorDef { hue = -1f, saturation = 0.2f, value = -0.07f } } } }, { "Eikthyr", new Dictionary<int, ColorDef> { { 1, new ColorDef { hue = -0.1f, saturation = 0f, value = 0f } }, { 2, new ColorDef { hue = -0.5f, saturation = 0f, value = 0f } }, { 3, new ColorDef { hue = -0.2f, saturation = 0f, value = -0.1f } }, { 4, new ColorDef { hue = 0.1f, saturation = 0f, value = 0f } }, { 5, new ColorDef { hue = 0.1f, saturation = 0f, value = -0.1f } }, { 6, new ColorDef { hue = 0.8f, saturation = 0f, value = -0.01f } }, { 7, new ColorDef { hue = 0.5f, saturation = 0f, value = -0.05f } }, { 8, new ColorDef { hue = -0.75f, saturation = 0f, value = -0.15f } }, { 9, new ColorDef { hue = 0.15f, saturation = 0f, value = 0.05f } }, { 10, new ColorDef { hue = 0.2f, saturation = 0f, value = 0.5f } } } }, { "Greydwarf", new Dictionary<int, ColorDef> { { 1, new ColorDef { hue = -0.06f, saturation = 0.1f, value = 0.05f } }, { 2, new ColorDef { hue = 0f, saturation = 0.2f, value = -0.01f } }, { 3, new ColorDef { hue = -0.1f, saturation = 0.2f, value = -0.01f } }, { 4, new ColorDef { hue = -0.2f, saturation = 0.2f, value = -0.01f } }, { 5, new ColorDef { hue = -0.4f, saturation = 0f, value = -0.01f } }, { 6, new ColorDef { hue = -0.5f, saturation = 0f, value = -0.01f } }, { 7, new ColorDef { hue = -0.7f, saturation = 0f, value = -0.01f } }, { 8, new ColorDef { hue = -0.8f, saturation = 0f, value = -0.01f } }, { 9, new ColorDef { hue = -1f, saturation = 0f, value = -0.01f } }, { 10, new ColorDef { hue = -1f, saturation = 0.2f, value = -0.07f } } } }, { "Greydwarf_Shaman", new Dictionary<int, ColorDef> { { 1, new ColorDef { hue = 0.1f, saturation = 0f, value = 0f } }, { 2, new ColorDef { hue = 0.3f, saturation = 0f, value = 0f } }, { 3, new ColorDef { hue = -0.2f, saturation = 0f, value = -0.01f } }, { 4, new ColorDef { hue = -0.4f, saturation = 0f, value = -0.01f } }, { 5, new ColorDef { hue = -0.5f, saturation = 0f, value = -0.01f } }, { 6, new ColorDef { hue = 0.3f, saturation = 0f, value = -0.01f } }, { 7, new ColorDef { hue = -0.8f, saturation = 0f, value = -0.01f } }, { 8, new ColorDef { hue = -0.8f, saturation = 0f, value = -0.01f } }, { 9, new ColorDef { hue = -1f, saturation = 0f, value = -0.01f } }, { 10, new ColorDef { hue = -1f, saturation = 0.2f, value = -0.07f } } } }, { "Greydwarf_Elite", new Dictionary<int, ColorDef> { { 1, new ColorDef { hue = -0.046f, saturation = 0f, value = 0f } }, { 2, new ColorDef { hue = -0.108f, saturation = 0f, value = 0f } }, { 3, new ColorDef { hue = -0.2f, saturation = 0f, value = -0.01f } }, { 4, new ColorDef { hue = -0.4f, saturation = 0f, value = -0.01f } }, { 5, new ColorDef { hue = -0.5f, saturation = 0f, value = -0.01f } }, { 6, new ColorDef { hue = 0.3f, saturation = 0f, value = -0.01f } }, { 7, new ColorDef { hue = -0.8f, saturation = 0f, value = -0.01f } }, { 8, new ColorDef { hue = -0.8f, saturation = 0f, value = -0.01f } }, { 9, new ColorDef { hue = -1f, saturation = 0f, value = -0.01f } }, { 10, new ColorDef { hue = -1f, saturation = 0.2f, value = -0.07f } } } }, { "Skeleton", new Dictionary<int, ColorDef> { { 1, new ColorDef { hue = -0.03f, saturation = 0.3f, value = 0f } }, { 2, new ColorDef { hue = -0.1f, saturation = 0.3f, value = -0.1f } }, { 3, new ColorDef { hue = -0.12f, saturation = 0.3f, value = -0.1f } }, { 4, new ColorDef { hue = 0.01f, saturation = 0.3f, value = -0.1f } }, { 5, new ColorDef { hue = 0.1f, saturation = 0.3f, value = -0.1f } }, { 6, new ColorDef { hue = 0.15f, saturation = 0.3f, value = -0.1f } }, { 7, new ColorDef { hue = 0.1f, saturation = 0.3f, value = -0.2f } }, { 8, new ColorDef { hue = -0.8f, saturation = 0.3f, value = -0.2f } }, { 9, new ColorDef { hue = 0.9f, saturation = 0.3f, value = -0.2f } }, { 10, new ColorDef { hue = -1f, saturation = 0.4f, value = -0.25f } } } }, { "Skeleton_NoArcher", new Dictionary<int, ColorDef> { { 1, new ColorDef { hue = -0.03f, saturation = 0.3f, value = 0f } }, { 2, new ColorDef { hue = -0.1f, saturation = 0.3f, value = -0.1f } }, { 3, new ColorDef { hue = -0.12f, saturation = 0.3f, value = -0.1f } }, { 4, new ColorDef { hue = 0.01f, saturation = 0.3f, value = -0.1f } }, { 5, new ColorDef { hue = 0.1f, saturation = 0.3f, value = -0.1f } }, { 6, new ColorDef { hue = 0.15f, saturation = 0.3f, value = -0.1f } }, { 7, new ColorDef { hue = 0.1f, saturation = 0.3f, value = -0.2f } }, { 8, new ColorDef { hue = -0.8f, saturation = 0.3f, value = -0.2f } }, { 9, new ColorDef { hue = 0.9f, saturation = 0.3f, value = -0.2f } }, { 10, new ColorDef { hue = -1f, saturation = 0.4f, value = -0.25f } } } }, { "Skeleton_Poison", new Dictionary<int, ColorDef> { { 1, new ColorDef { hue = 0.16f, saturation = 0f, value = 0f } }, { 2, new ColorDef { hue = -0.2f, saturation = 0f, value = 0f } }, { 3, new ColorDef { hue = -0.12f, saturation = 0.3f, value = -0.1f } }, { 4, new ColorDef { hue = 0.01f, saturation = 0.3f, value = -0.1f } }, { 5, new ColorDef { hue = 0.1f, saturation = 0.3f, value = -0.1f } }, { 6, new ColorDef { hue = 0.15f, saturation = 0.3f, value = -0.1f } }, { 7, new ColorDef { hue = 0.1f, saturation = 0.3f, value = -0.2f } }, { 8, new ColorDef { hue = -0.8f, saturation = 0.3f, value = -0.2f } }, { 9, new ColorDef { hue = 0.9f, saturation = 0.3f, value = -0.2f } }, { 10, new ColorDef { hue = -1f, saturation = 0.4f, value = -0.25f } } } }, { "Troll", new Dictionary<int, ColorDef> { { 1, new ColorDef { hue = -0.1f, saturation = 0.1f, value = 0f } }, { 2, new ColorDef { hue = -0.12f, saturation = 0.2f, value = 0f } }, { 3, new ColorDef { hue = -0.15f, saturation = 0.3f, value = -0.1f } }, { 4, new ColorDef { hue = -0.2f, saturation = 0.3f, value = -0.05f } }, { 5, new ColorDef { hue = 0.4f, saturation = 0.3f, value = -0.1f } }, { 6, new ColorDef { hue = 0.45f, saturation = 0.3f, value = -0.1f } }, { 7, new ColorDef { hue = 0.5f, saturation = 0.3f, value = 0f } }, { 8, new ColorDef { hue = 0.85f, saturation = 0.3f, value = 0f } }, { 9, new ColorDef { hue = 0.9f, saturation = 0.3f, value = 0f } }, { 10, new ColorDef { hue = 1f, saturation = 0.5f, value = 0f } } } }, { "Serpent", new Dictionary<int, ColorDef> { { 1, new ColorDef { hue = -0.05f, saturation = 0f, value = -0.01f } }, { 2, new ColorDef { hue = -0.1f, saturation = 0f, value = -0.01f } }, { 3, new ColorDef { hue = -0.2f, saturation = 0f, value = -0.01f } }, { 4, new ColorDef { hue = -0.4f, saturation = 0f, value = -0.01f } }, { 5, new ColorDef { hue = -0.5f, saturation = 0f, value = -0.01f } }, { 6, new ColorDef { hue = 0.3f, saturation = 0f, value = -0.01f } }, { 7, new ColorDef { hue = -0.8f, saturation = 0f, value = -0.01f } }, { 8, new ColorDef { hue = -0.8f, saturation = 0f, value = -0.01f } }, { 9, new ColorDef { hue = -1f, saturation = 0f, value = -0.01f } }, { 10, new ColorDef { hue = -1f, saturation = 0.2f, value = -0.07f } } } }, { "Skeleton_Hildir", new Dictionary<int, ColorDef> { { 1, new ColorDef { hue = 0.16f, saturation = 0f, value = 0f } }, { 2, new ColorDef { hue = -0.2f, saturation = 0f, value = 0f } }, { 3, new ColorDef { hue = -0.12f, saturation = 0.3f, value = -0.1f } }, { 4, new ColorDef { hue = 0.01f, saturation = 0.3f, value = -0.1f } }, { 5, new ColorDef { hue = 0.1f, saturation = 0.3f, value = -0.1f } }, { 6, new ColorDef { hue = 0.15f, saturation = 0.3f, value = -0.1f } }, { 7, new ColorDef { hue = 0.1f, saturation = 0.3f, value = -0.2f } }, { 8, new ColorDef { hue = -0.8f, saturation = 0.3f, value = -0.2f } }, { 9, new ColorDef { hue = 0.9f, saturation = 0.3f, value = -0.2f } }, { 10, new ColorDef { hue = -1f, saturation = 0.4f, value = -0.25f } } } }, { "Skeleton_Hildir_nochest", new Dictionary<int, ColorDef> { { 1, new ColorDef { hue = 0.16f, saturation = 0f, value = 0f } }, { 2, new ColorDef { hue = -0.2f, saturation = 0f, value = 0f } }, { 3, new ColorDef { hue = -0.12f, saturation = 0.3f, value = -0.1f } }, { 4, new ColorDef { hue = 0.01f, saturation = 0.3f, value = -0.1f } }, { 5, new ColorDef { hue = 0.1f, saturation = 0.3f, value = -0.1f } }, { 6, new ColorDef { hue = 0.15f, saturation = 0.3f, value = -0.1f } }, { 7, new ColorDef { hue = 0.1f, saturation = 0.3f, value = -0.2f } }, { 8, new ColorDef { hue = -0.8f, saturation = 0.3f, value = -0.2f } }, { 9, new ColorDef { hue = 0.9f, saturation = 0.3f, value = -0.2f } }, { 10, new ColorDef { hue = -1f, saturation = 0.4f, value = -0.25f } } } }, { "gd_king", new Dictionary<int, ColorDef> { { 1, new ColorDef { hue = -0.12f, saturation = 0f, value = 0f } }, { 2, new ColorDef { hue = -0.22f, saturation = 0f, value = -0.1f } }, { 3, new ColorDef { hue = -0.33f, saturation = 0f, value = -0.1f } }, { 4, new ColorDef { hue = -0.44f, saturation = 0.3f, value = 0f } }, { 5, new ColorDef { hue = -0.55f, saturation = 0.3f, value = 0.05f } }, { 6, new ColorDef { hue = -0.66f, saturation = 0f, value = 0.07f } }, { 7, new ColorDef { hue = -0.66f, saturation = -0.15f, value = 0.1f } }, { 8, new ColorDef { hue = -0.66f, saturation = -0.45f, value = 0.1f } }, { 9, new ColorDef { hue = -0.88f, saturation = 0f, value = 0.2f } }, { 10, new ColorDef { hue = -1f, saturation = 0.4f, value = -0.25f } } } }, { "Draugr", new Dictionary<int, ColorDef> { { 1, new ColorDef { hue = 0.27f, saturation = 0f, value = 0f } }, { 2, new ColorDef { hue = -0.25f, saturation = 0.04f, value = 0f } }, { 3, new ColorDef { hue = 0.32f, saturation = 0.3f, value = 0.01f } }, { 4, new ColorDef { hue = 0.1f, saturation = 0.5f, value = 0.01f } }, { 5, new ColorDef { hue = -0.2f, saturation = -0.2f, value = 0.01f } }, { 6, new ColorDef { hue = -0.4f, saturation = -0.2f, value = 0.01f } }, { 7, new ColorDef { hue = -0.6f, saturation = -0.2f, value = 0.01f } }, { 8, new ColorDef { hue = -0.9f, saturation = -0.2f, value = 0.01f } }, { 9, new ColorDef { hue = 1f, saturation = 0.2f, value = 0.01f } }, { 10, new ColorDef { hue = 0.9f, saturation = 0.5f, value = 0.01f } } } }, { "Draugr_Ranged", new Dictionary<int, ColorDef> { { 1, new ColorDef { hue = 0.27f, saturation = 0f, value = 0f } }, { 2, new ColorDef { hue = -0.25f, saturation = 0.04f, value = 0f } }, { 3, new ColorDef { hue = 0.32f, saturation = 0.3f, value = 0.01f } }, { 4, new ColorDef { hue = 0.1f, saturation = 0.5f, value = 0.01f } }, { 5, new ColorDef { hue = -0.2f, saturation = -0.2f, value = 0.01f } }, { 6, new ColorDef { hue = -0.4f, saturation = -0.2f, value = 0.01f } }, { 7, new ColorDef { hue = -0.6f, saturation = -0.2f, value = 0.01f } }, { 8, new ColorDef { hue = -0.9f, saturation = -0.2f, value = 0.01f } }, { 9, new ColorDef { hue = 1f, saturation = 0.2f, value = 0.01f } }, { 10, new ColorDef { hue = 0.9f, saturation = 0.5f, value = 0.01f } } } }, { "Draugr_Elite", new Dictionary<int, ColorDef> { { 1, new ColorDef { hue = -0.1f, saturation = 0f, value = 0f } }, { 2, new ColorDef { hue = -0.2f, saturation = 0f, value = 0f } }, { 3, new ColorDef { hue = 0.32f, saturation = 0.3f, value = 0.01f } }, { 4, new ColorDef { hue = 0.1f, saturation = 0.5f, value = 0.01f } }, { 5, new ColorDef { hue = -0.2f, saturation = -0.2f, value = 0.01f } }, { 6, new ColorDef { hue = -0.4f, saturation = -0.2f, value = 0.01f } }, { 7, new ColorDef { hue = -0.6f, saturation = -0.2f, value = 0.01f } }, { 8, new ColorDef { hue = -0.9f, saturation = -0.2f, value = 0.01f } }, { 9, new ColorDef { hue = 1f, saturation = 0.2f, value = 0.01f } }, { 10, new ColorDef { hue = 0.9f, saturation = 0.5f, value = 0.01f } } } }, { "Abomination", new Dictionary<int, ColorDef> { { 1, new ColorDef { hue = -0.1f, saturation = 0f, value = 0f } }, { 2, new ColorDef { hue = -0.2f, saturation = 0f, value = 0f } }, { 3, new ColorDef { hue = 0.32f, saturation = 0.3f, value = 0.01f } }, { 4, new ColorDef { hue = 0.1f, saturation = 0.5f, value = 0.01f } }, { 5, new ColorDef { hue = -0.2f, saturation = -0.2f, value = 0.01f } }, { 6, new ColorDef { hue = -0.4f, saturation = -0.2f, value = 0.01f } }, { 7, new ColorDef { hue = -0.6f, saturation = -0.2f, value = 0.01f } }, { 8, new ColorDef { hue = -0.9f, saturation = -0.2f, value = 0.01f } }, { 9, new ColorDef { hue = 1f, saturation = 0.2f, value = 0.01f } }, { 10, new ColorDef { hue = 0.9f, saturation = 0.5f, value = 0.01f } } } }, { "Surtling", new Dictionary<int, ColorDef> { { 1, new ColorDef { hue = 0.16f, saturation = 0f, value = 0f } }, { 2, new ColorDef { hue = -0.5f, saturation = 0.5f, value = -1f } }, { 3, new ColorDef { hue = -0.12f, saturation = 0.3f, value = -2f } }, { 4, new ColorDef { hue = 0.01f, saturation = 0.3f, value = -3f } }, { 5, new ColorDef { hue = 0.1f, saturation = 0.3f, value = -4f } }, { 6, new ColorDef { hue = 0.15f, saturation = 0.3f, value = -5f } }, { 7, new ColorDef { hue = 1f, saturation = 0.5f, value = -5f } }, { 8, new ColorDef { hue = -0.8f, saturation = 0.5f, value = -5f } }, { 9, new ColorDef { hue = 0.9f, saturation = 0.8f, value = -5f } }, { 10, new ColorDef { hue = -1f, saturation = 1f, value = -5f } } } }, { "Leech", new Dictionary<int, ColorDef> { { 1, new ColorDef { hue = 0.23f, saturation = 0.26f, value = 0.04f } }, { 2, new ColorDef { hue = -0.139f, saturation = 0.47f, value = 0.06f } }, { 3, new ColorDef { hue = 0.32f, saturation = 0.3f, value = 0.01f } }, { 4, new ColorDef { hue = 0.1f, saturation = 0.5f, value = 0.01f } }, { 5, new ColorDef { hue = -0.2f, saturation = -0.2f, value = 0.01f } }, { 6, new ColorDef { hue = -0.4f, saturation = -0.2f, value = 0.01f } }, { 7, new ColorDef { hue = -0.6f, saturation = -0.2f, value = 0.01f } }, { 8, new ColorDef { hue = -0.9f, saturation = -0.2f, value = 0.01f } }, { 9, new ColorDef { hue = 1f, saturation = 0.2f, value = 0.01f } }, { 10, new ColorDef { hue = 0.9f, saturation = 0.5f, value = 0.01f } } } }, { "Blob", new Dictionary<int, ColorDef> { { 1, new ColorDef { hue = 0.23f, saturation = 0.26f, value = 0.04f } }, { 2, new ColorDef { hue = -0.139f, saturation = 0.47f, value = 0.06f } } } }, { "BlobElite", new Dictionary<int, ColorDef> { { 1, new ColorDef { hue = 0.23f, saturation = 0.26f, value = 0.04f } }, { 2, new ColorDef { hue = -0.139f, saturation = 0.47f, value = 0.06f } } } }, { "Bonemass", new Dictionary<int, ColorDef> { { 1, new ColorDef { hue = 0f, saturation = 0f, value = 0f } }, { 2, new ColorDef { hue = 0f, saturation = 0f, value = 0f } } } }, { "Wolf", new Dictionary<int, ColorDef> { { 1, new ColorDef { hue = 0f, saturation = 0.1f, value = -0.03f } }, { 2, new ColorDef { hue = -0.1f, saturation = 0.2f, value = -0.05f } }, { 3, new ColorDef { hue = -0.4f, saturation = 0.2f, value = -0.1f } }, { 4, new ColorDef { hue = 0.2f, saturation = 0.1f, value = -0.1f } }, { 5, new ColorDef { hue = 0.4f, saturation = 0.2f, value = -0.1f } }, { 6, new ColorDef { hue = 0.6f, saturation = 0.2f, value = -0.1f } }, { 7, new ColorDef { hue = 0.4f, saturation = 0.3f, value = -0.05f } }, { 8, new ColorDef { hue = 0.1f, saturation = -0.5f, value = -0.2f } }, { 9, new ColorDef { hue = -0.9f, saturation = 0.2f, value = -0.3f } }, { 10, new ColorDef { hue = 0.9f, saturation = 0.3f, value = -0.4f } } } }, { "Ulv", new Dictionary<int, ColorDef> { { 1, new ColorDef { hue = 0f, saturation = 0.1f, value = -0.03f } }, { 2, new ColorDef { hue = -0.1f, saturation = 0.2f, value = -0.05f } }, { 3, new ColorDef { hue = -0.4f, saturation = 0.2f, value = -0.1f } }, { 4, new ColorDef { hue = 0.2f, saturation = 0.1f, value = -0.1f } }, { 5, new ColorDef { hue = 0.4f, saturation = 0.2f, value = -0.1f } }, { 6, new ColorDef { hue = 0.6f, saturation = 0.2f, value = -0.1f } }, { 7, new ColorDef { hue = 0.4f, saturation = 0.3f, value = -0.05f } }, { 8, new ColorDef { hue = 0.1f, saturation = -0.5f, value = -0.2f } }, { 9, new ColorDef { hue = -0.9f, saturation = 0.2f, value = -0.3f } }, { 10, new ColorDef { hue = 0.9f, saturation = 0.3f, value = -0.4f } } } }, { "Fenring", new Dictionary<int, ColorDef> { { 1, new ColorDef { hue = 0f, saturation = 0.1f, value = -0.03f } }, { 2, new ColorDef { hue = -0.1f, saturation = 0.2f, value = -0.05f } }, { 3, new ColorDef { hue = -0.4f, saturation = 0.2f, value = -0.1f } }, { 4, new ColorDef { hue = 0.2f, saturation = 0.1f, value = -0.1f } }, { 5, new ColorDef { hue = 0.4f, saturation = 0.2f, value = -0.1f } }, { 6, new ColorDef { hue = 0.6f, saturation = 0.2f, value = -0.1f } }, { 7, new ColorDef { hue = 0.4f, saturation = 0.3f, value = -0.05f } }, { 8, new ColorDef { hue = 0.1f, saturation = -0.5f, value = -0.2f } }, { 9, new ColorDef { hue = -0.9f, saturation = 0.2f, value = -0.3f } }, { 10, new ColorDef { hue = 0.9f, saturation = 0.3f, value = -0.4f } } } }, { "Fenring_Cultist", new Dictionary<int, ColorDef> { { 1, new ColorDef { hue = 0f, saturation = 0.1f, value = -0.03f } }, { 2, new ColorDef { hue = -0.1f, saturation = 0.2f, value = -0.05f } }, { 3, new ColorDef { hue = 0.32f, saturation = 0.3f, value = 0.01f } }, { 4, new ColorDef { hue = 0.1f, saturation = 0.5f, value = 0.01f } }, { 5, new ColorDef { hue = -0.2f, saturation = -0.2f, value = 0.01f } }, { 6, new ColorDef { hue = -0.4f, saturation = -0.2f, value = 0.01f } }, { 7, new ColorDef { hue = -0.6f, saturation = -0.2f, value = 0.01f } }, { 8, new ColorDef { hue = -0.9f, saturation = -0.2f, value = 0.01f } }, { 9, new ColorDef { hue = 1f, saturation = 0.2f, value = 0.01f } }, { 10, new ColorDef { hue = 0.9f, saturation = 0.5f, value = 0.01f } } } }, { "Hatchling", new Dictionary<int, ColorDef> { { 1, new ColorDef { hue = 0f, saturation = 0.1f, value = -0.03f } }, { 2, new ColorDef { hue = -0.1f, saturation = 0.2f, value = -0.05f } }, { 3, new ColorDef { hue = -0.12f, saturation = 0.3f, value = -0.1f } }, { 4, new ColorDef { hue = 0.01f, saturation = 0.3f, value = -0.1f } }, { 5, new ColorDef { hue = 0.1f, saturation = 0.3f, value = -0.1f } }, { 6, new ColorDef { hue = 0.15f, saturation = 0.3f, value = -0.1f } }, { 7, new ColorDef { hue = 0.1f, saturation = 0.3f, value = -0.2f } }, { 8, new ColorDef { hue = -0.8f, saturation = 0.3f, value = -0.2f } }, { 9, new ColorDef { hue = 0.9f, saturation = 0.3f, value = -0.2f } }, { 10, new ColorDef { hue = -1f, saturation = 0.4f, value = -0.25f } } } }, { "StoneGolem", new Dictionary<int, ColorDef> { { 1, new ColorDef { hue = 0f, saturation = 0.1f, value = -0.03f } }, { 2, new ColorDef { hue = -0.1f, saturation = 0.2f, value = -0.05f } }, { 3, new ColorDef { hue = -0.12f, saturation = 0.3f, value = -0.1f } }, { 4, new ColorDef { hue = 0.01f, saturation = 0.3f, value = -0.1f } }, { 5, new ColorDef { hue = 0.1f, saturation = 0.3f, value = -0.1f } }, { 6, new ColorDef { hue = 0.15f, saturation = 0.3f, value = -0.1f } }, { 7, new ColorDef { hue = 0.1f, saturation = 0.3f, value = -0.2f } }, { 8, new ColorDef { hue = -0.8f, saturation = 0.3f, value = -0.2f } }, { 9, new ColorDef { hue = 0.9f, saturation = 0.3f, value = -0.2f } }, { 10, new ColorDef { hue = -1f, saturation = 0.4f, value = -0.25f } } } }, { "Dragon", new Dictionary<int, ColorDef> { { 1, new ColorDef { hue = 0f, saturation = 0.1f, value = -0.03f } }, { 2, new ColorDef { hue = -0.1f, saturation = 0.2f, value = -0.05f } }, { 3, new ColorDef { hue = -0.12f, saturation = 0.3f, value = -0.1f } }, { 4, new ColorDef { hue = 0.01f, saturation = 0.3f, value = -0.1f } }, { 5, new ColorDef { hue = 0.1f, saturation = 0.3f, value = -0.1f } }, { 6, new ColorDef { hue = 0.15f, saturation = 0.3f, value = -0.1f } }, { 7, new ColorDef { hue = 0.1f, saturation = 0.3f, value = -0.2f } }, { 8, new ColorDef { hue = -0.8f, saturation = 0.3f, value = -0.2f } }, { 9, new ColorDef { hue = 0.9f, saturation = 0.3f, value = -0.2f } }, { 10, new ColorDef { hue = 1f, saturation = 0.3f, value = 0.05f } } } }, { "Deathsquito", new Dictionary<int, ColorDef> { { 1, new ColorDef { hue = -0.05f, saturation = 0f, value = 0f } }, { 2, new ColorDef { hue = -0.15f, saturation = 0f, value = 0f } }, { 3, new ColorDef { hue = -0.12f, saturation = 0.3f, value = -0.1f } }, { 4, new ColorDef { hue = 0.01f, saturation = 0.3f, value = -0.1f } }, { 5, new ColorDef { hue = 0.1f, saturation = 0.3f, value = -0.1f } }, { 6, new ColorDef { hue = 0.15f, saturation = 0.3f, value = -0.1f } }, { 7, new ColorDef { hue = 0.1f, saturation = 0.3f, value = -0.2f } }, { 8, new ColorDef { hue = -0.8f, saturation = 0.3f, value = -0.2f } }, { 9, new ColorDef { hue = 0.9f, saturation = 0.3f, value = -0.2f } }, { 10, new ColorDef { hue = -1f, saturation = 0.4f, value = -0.25f } } } }, { "Lox", new Dictionary<int, ColorDef> { { 1, new ColorDef { hue = -0.05f, saturation = 0f, value = 0f } }, { 2, new ColorDef { hue = -0.1f, saturation = 0f, value = 0f } }, { 3, new ColorDef { hue = -0.14f, saturation = 0f, value = 0f } }, { 4, new ColorDef { hue = -0.2f, saturation = 0f, value = 0f } }, { 5, new ColorDef { hue = 0f, saturation = 0f, value = -0.1f } }, { 6, new ColorDef { hue = 0.07f, saturation = 0f, value = 0f } }, { 7, new ColorDef { hue = 0.14f, saturation = 0f, value = 0f } }, { 8, new ColorDef { hue = 0.18f, saturation = 0f, value = 0f } }, { 9, new ColorDef { hue = 0.35f, saturation = 0f, value = 0f } }, { 10, new ColorDef { hue = 0f, saturation = -0.5f, value = 0f } } } }, { "GoblinArcher", new Dictionary<int, ColorDef> { { 1, new ColorDef { hue = -0.05f, saturation = 0f, value = 0f } }, { 2, new ColorDef { hue = -0.08f, saturation = 0f, value = 0f } }, { 3, new ColorDef { hue = -0.12f, saturation = 0f, value = 0f } }, { 4, new ColorDef { hue = -0.15f, saturation = 0f, value = 0f } }, { 5, new ColorDef { hue = -0.18f, saturation = 0f, value = 0f } }, { 6, new ColorDef { hue = -0.2f, saturation = 0f, value = 0f } }, { 7, new ColorDef { hue = -0.22f, saturation = 0f, value = 0f } }, { 8, new ColorDef { hue = -0.24f, saturation = 0f, value = 0f } }, { 9, new ColorDef { hue = -0.26f, saturation = 0f, value = 0f } }, { 10, new ColorDef { hue = -0.28f, saturation = 0f, value = 0f } } } }, { "Goblin", new Dictionary<int, ColorDef> { { 1, new ColorDef { hue = -0.05f, saturation = 0f, value = 0f } }, { 2, new ColorDef { hue = -0.08f, saturation = 0f, value = 0f } }, { 3, new ColorDef { hue = -0.12f, saturation = 0f, value = 0f } }, { 4, new ColorDef { hue = -0.15f, saturation = 0f, value = 0f } }, { 5, new ColorDef { hue = -0.18f, saturation = 0f, value = 0f } }, { 6, new ColorDef { hue = -0.2f, saturation = 0f, value = 0f } }, { 7, new ColorDef { hue = -0.22f, saturation = 0f, value = 0f } }, { 8, new ColorDef { hue = -0.24f, saturation = 0f, value = 0f } }, { 9, new ColorDef { hue = -0.26f, saturation = 0f, value = 0f } }, { 10, new ColorDef { hue = -0.28f, saturation = 0f, value = 0f } } } }, { "GoblinBrute", new Dictionary<int, ColorDef> { { 1, new ColorDef { hue = -0.1f, saturation = -0.1f, value = 0f } }, { 2, new ColorDef { hue = -0.18f, saturation = 0f, value = 0f } }, { 3, new ColorDef { hue = -0.12f, saturation = 0.3f, value = -0.1f } }, { 4, new ColorDef { hue = 0.01f, saturation = 0.3f, value = -0.1f } }, { 5, new ColorDef { hue = 0.1f, saturation = 0.3f, value = -0.1f } }, { 6, new ColorDef { hue = 0.15f, saturation = 0.3f, value = -0.1f } }, { 7, new ColorDef { hue = -0.1f, saturation = 0.3f, value = -0.2f } }, { 8, new ColorDef { hue = -0.2f, saturation = 0.3f, value = -0.15f } }, { 9, new ColorDef { hue = 0.9f, saturation = 0.3f, value = -0.2f } }, { 10, new ColorDef { hue = -1f, saturation = 0.4f, value = -0.25f } } } }, { "GoblinShaman", new Dictionary<int, ColorDef> { { 1, new ColorDef { hue = -0.1f, saturation = -0.1f, value = 0f } }, { 2, new ColorDef { hue = -0.18f, saturation = 0f, value = 0f } }, { 3, new ColorDef { hue = -0.12f, saturation = 0.3f, value = -0.1f } }, { 4, new ColorDef { hue = 0.01f, saturation = 0.3f, value = -0.1f } }, { 5, new ColorDef { hue = 0.1f, saturation = 0.3f, value = -0.1f } }, { 6, new ColorDef { hue = 0.15f, saturation = 0.3f, value = -0.1f } }, { 7, new ColorDef { hue = -0.1f, saturation = 0.3f, value = -0.2f } }, { 8, new ColorDef { hue = -0.2f, saturation = 0.3f, value = -0.15f } }, { 9, new ColorDef { hue = 0.9f, saturation = 0.3f, value = -0.2f } }, { 10, new ColorDef { hue = -1f, saturation = 0.4f, value = -0.25f } } } }, { "GoblinBrute_Hildir", new Dictionary<int, ColorDef> { { 1, new ColorDef { hue = -0.1f, saturation = -0.1f, value = 0f } }, { 2, new ColorDef { hue = -0.18f, saturation = 0f, value = 0f } }, { 3, new ColorDef { hue = -0.12f, saturation = 0.3f, value = -0.1f } }, { 4, new ColorDef { hue = 0.01f, saturation = 0.3f, value = -0.1f } }, { 5, new ColorDef { hue = 0.1f, saturation = 0.3f, value = -0.1f } }, { 6, new ColorDef { hue = 0.15f, saturation = 0.3f, value = -0.1f } }, { 7, new ColorDef { hue = -0.1f, saturation = 0.3f, value = -0.2f } }, { 8, new ColorDef { hue = -0.2f, saturation = 0.3f, value = -0.15f } }, { 9, new ColorDef { hue = 0.9f, saturation = 0.3f, value = -0.2f } }, { 10, new ColorDef { hue = -1f, saturation = 0.4f, value = -0.25f } } } }, { "GoblinBruteBros", new Dictionary<int, ColorDef> { { 1, new ColorDef { hue = -0.1f, saturation = -0.1f, value = 0f } }, { 2, new ColorDef { hue = -0.18f, saturation = 0f, value = 0f } }, { 3, new ColorDef { hue = -0.12f, saturation = 0.3f, value = -0.1f } }, { 4, new ColorDef { hue = 0.01f, saturation = 0.3f, value = -0.1f } }, { 5, new ColorDef { hue = 0.1f, saturation = 0.3f, value = -0.1f } }, { 6, new ColorDef { hue = 0.15f, saturation = 0.3f, value = -0.1f } }, { 7, new ColorDef { hue = -0.1f, saturation = 0.3f, value = -0.2f } }, { 8, new ColorDef { hue = -0.2f, saturation = 0.3f, value = -0.15f } }, { 9, new ColorDef { hue = 0.9f, saturation = 0.3f, value = -0.2f } }, { 10, new ColorDef { hue = -1f, saturation = 0.4f, value = -0.25f } } } }, { "GoblinKing", new Dictionary<int, ColorDef> { { 1, new ColorDef { hue = 0f, saturation = 0f, value = 0f } }, { 2, new ColorDef { hue = 0f, saturation = 0f, value = 0f } } } }, { "Hen", new Dictionary<int, ColorDef> { { 1, new ColorDef { hue = 0.05f, saturation = -0.1f, value = 0f } }, { 2, new ColorDef { hue = 0.09f, saturation = -0.5f, value = -0.05f } }, { 3, new ColorDef { hue = -0.14f, saturation = 0f, value = 0f } }, { 4, new ColorDef { hue = -0.2f, saturation = 0f, value = 0f } }, { 5, new ColorDef { hue = 0f, saturation = 0f, value = -0.1f } }, { 6, new ColorDef { hue = 0.07f, saturation = 0f, value = 0f } }, { 7, new ColorDef { hue = 0.14f, saturation = 0f, value = 0f } }, { 8, new ColorDef { hue = 0.18f, saturation = 0f, value = 0f } }, { 9, new ColorDef { hue = 0.35f, saturation = 0f, value = 0f } }, { 10, new ColorDef { hue = -1f, saturation = 0.4f, value = -0.25f } } } }, { "Gjall", new Dictionary<int, ColorDef> { { 1, new ColorDef { hue = 0.201f, saturation = 0.29f, value = -0.42f } }, { 2, new ColorDef { hue = -0.103f, saturation = -0.08f, value = -0.42f } }, { 3, new ColorDef { hue = -0.14f, saturation = 0f, value = 0f } }, { 4, new ColorDef { hue = -0.2f, saturation = 0f, value = 0f } }, { 5, new ColorDef { hue = 0f, saturation = 0f, value = -0.1f } }, { 6, new ColorDef { hue = 0.07f, saturation = 0f, value = 0f } }, { 7, new ColorDef { hue = 0.14f, saturation = 0f, value = 0f } }, { 8, new ColorDef { hue = 0.18f, saturation = 0f, value = 0f } }, { 9, new ColorDef { hue = 0.35f, saturation = 0f, value = 0f } }, { 10, new ColorDef { hue = -1f, saturation = 0.4f, value = -0.25f } } } }, { "Tick", new Dictionary<int, ColorDef> { { 1, new ColorDef { hue = -0.337f, saturation = -0.09f, value = -0.41f } }, { 2, new ColorDef { hue = -0.027f, saturation = 0.29f, value = -0.41f } }, { 3, new ColorDef { hue = -0.14f, saturation = 0f, value = 0f } }, { 4, new ColorDef { hue = -0.2f, saturation = 0f, value = 0f } }, { 5, new ColorDef { hue = 0f, saturation = 0f, value = -0.1f } }, { 6, new ColorDef { hue = 0.07f, saturation = 0f, value = 0f } }, { 7, new ColorDef { hue = 0.14f, saturation = 0f, value = 0f } }, { 8, new ColorDef { hue = 0.18f, saturation = 0f, value = 0f } }, { 9, new ColorDef { hue = 0.35f, saturation = 0f, value = 0f } }, { 10, new ColorDef { hue = -1f, saturation = 0.4f, value = -0.25f } } } }, { "Seeker", new Dictionary<int, ColorDef> { { 1, new ColorDef { hue = -0.28f, saturation = -0.3f, value = -0.1f } }, { 2, new ColorDef { hue = -0.1f, saturation = 0.1f, value = -0.2f } }, { 3, new ColorDef { hue = -0.14f, saturation = 0f, value = 0f } }, { 4, new ColorDef { hue = -0.2f, saturation = 0f, value = 0f } }, { 5, new ColorDef { hue = 0f, saturation = 0f, value = -0.1f } }, { 6, new ColorDef { hue = 0.07f, saturation = 0f, value = 0f } }, { 7, new ColorDef { hue = 0.14f, saturation = 0f, value = 0f } }, { 8, new ColorDef { hue = 0.18f, saturation = 0f, value = 0f } }, { 9, new ColorDef { hue = 0.35f, saturation = 0f, value = 0f } }, { 10, new ColorDef { hue = -1f, saturation = 0.4f, value = -0.25f } } } }, { "SeekerBrute", new Dictionary<int, ColorDef> { { 1, new ColorDef { hue = 0.5f, saturation = 0.05f, value = -0.08f } }, { 2, new ColorDef { hue = -0.351f, saturation = -0.04f, value = -0.1f } }, { 3, new ColorDef { hue = -0.14f, saturation = 0f, value = 0f } }, { 4, new ColorDef { hue = -0.2f, saturation = 0f, value = 0f } }, { 5, new ColorDef { hue = 0f, saturation = 0f, value = -0.1f } }, { 6, new ColorDef { hue = 0.07f, saturation = 0f, value = 0f } }, { 7, new ColorDef { hue = 0.14f, saturation = 0f, value = 0f } }, { 8, new ColorDef { hue = 0.18f, saturation = 0f, value = 0f } }, { 9, new ColorDef { hue = 0.35f, saturation = 0f, value = 0f } }, { 10, new ColorDef { hue = -1f, saturation = 0.4f, value = -0.25f } } } }, { "DvergerMageIce", new Dictionary<int, ColorDef> { { 1, new ColorDef { hue = 0.1f, saturation = 0.2f, value = 0f } }, { 2, new ColorDef { hue = 0f, saturation = -1f, value = 0f } }, { 3, new ColorDef { hue = -0.14f, saturation = 0f, value = 0f } }, { 4, new ColorDef { hue = -0.2f, saturation = 0f, value = 0f } }, { 5, new ColorDef { hue = 0f, saturation = 0f, value = -0.1f } }, { 6, new ColorDef { hue = 0.07f, saturation = 0f, value = 0f } }, { 7, new ColorDef { hue = 0.14f, saturation = 0f, value = 0f } }, { 8, new ColorDef { hue = 0.18f, saturation = 0f, value = 0f } }, { 9, new ColorDef { hue = 0.35f, saturation = 0f, value = 0f } }, { 10, new ColorDef { hue = -1f, saturation = 0.4f, value = -0.25f } } } }, { "DvergerMageSupport", new Dictionary<int, ColorDef> { { 1, new ColorDef { hue = 0.1f, saturation = 0.2f, value = 0f } }, { 2, new ColorDef { hue = 0f, saturation = -1f, value = 0f } }, { 3, new ColorDef { hue = -0.14f, saturation = 0f, value = 0f } }, { 4, new ColorDef { hue = -0.2f, saturation = 0f, value = 0f } }, { 5, new ColorDef { hue = 0f, saturation = 0f, value = -0.1f } }, { 6, new ColorDef { hue = 0.07f, saturation = 0f, value = 0f } }, { 7, new ColorDef { hue = 0.14f, saturation = 0f, value = 0f } }, { 8, new ColorDef { hue = 0.18f, saturation = 0f, value = 0f } }, { 9, new ColorDef { hue = 0.35f, saturation = 0f, value = 0f } }, { 10, new ColorDef { hue = -1f, saturation = 0.4f, value = -0.25f } } } }, { "DvergerMageFire", new Dictionary<int, ColorDef> { { 1, new ColorDef { hue = 0.1f, saturation = 0.2f, value = 0f } }, { 2, new ColorDef { hue = 0f, saturation = -1f, value = 0f } }, { 3, new ColorDef { hue = -0.14f, saturation = 0f, value = 0f } }, { 4, new ColorDef { hue = -0.2f, saturation = 0f, value = 0f } }, { 5, new ColorDef { hue = 0f, saturation = 0f, value = -0.1f } }, { 6, new ColorDef { hue = 0.07f, saturation = 0f, value = 0f } }, { 7, new ColorDef { hue = 0.14f, saturation = 0f, value = 0f } }, { 8, new ColorDef { hue = 0.18f, saturation = 0f, value = 0f } }, { 9, new ColorDef { hue = 0.35f, saturation = 0f, value = 0f } }, { 10, new ColorDef { hue = -1f, saturation = 0.4f, value = -0.25f } } } }, { "DvergerMage", new Dictionary<int, ColorDef> { { 1, new ColorDef { hue = 0.1f, saturation = 0.2f, value = 0f } }, { 2, new ColorDef { hue = 0f, saturation = -1f, value = 0f } }, { 3, new ColorDef { hue = -0.14f, saturation = 0f, value = 0f } }, { 4, new ColorDef { hue = -0.2f, saturation = 0f, value = 0f } }, { 5, new ColorDef { hue = 0f, saturation = 0f, value = -0.1f } }, { 6, new ColorDef { hue = 0.07f, saturation = 0f, value = 0f } }, { 7, new ColorDef { hue = 0.14f, saturation = 0f, value = 0f } }, { 8, new ColorDef { hue = 0.18f, saturation = 0f, value = 0f } }, { 9, new ColorDef { hue = 0.35f, saturation = 0f, value = 0f } }, { 10, new ColorDef { hue = -1f, saturation = 0.4f, value = -0.25f } } } }, { "Dverger", new Dictionary<int, ColorDef> { { 1, new ColorDef { hue = 0.1f, saturation = 0.2f, value = 0f } }, { 2, new ColorDef { hue = 0f, saturation = -1f, value = 0f } }, { 3, new ColorDef { hue = -0.14f, saturation = 0f, value = 0f } }, { 4, new ColorDef { hue = -0.2f, saturation = 0f, value = 0f } }, { 5, new ColorDef { hue = 0f, saturation = 0f, value = -0.1f } }, { 6, new ColorDef { hue = 0.07f, saturation = 0f, value = 0f } }, { 7, new ColorDef { hue = 0.14f, saturation = 0f, value = 0f } }, { 8, new ColorDef { hue = 0.18f, saturation = 0f, value = 0f } }, { 9, new ColorDef { hue = 0.35f, saturation = 0f, value = 0f } }, { 10, new ColorDef { hue = -1f, saturation = 0.4f, value = -0.25f } } } }, { "Skeleton_Friendly", new Dictionary<int, ColorDef> { { 1, new ColorDef { hue = -0.03f, saturation = 0.3f, value = 0f } }, { 2, new ColorDef { hue = -0.1f, saturation = 0.3f, value = -0.1f } }, { 3, new ColorDef { hue = -0.15f, saturation = 0.3f, value = -0.151f } }, { 4, new ColorDef { hue = -0.1f, saturation = 0.3f, value = -0.18f } }, { 5, new ColorDef { hue = 0.1f, saturation = 0.3f, value = -0.1f } }, { 6, new ColorDef { hue = 0.15f, saturation = 0.3f, value = -0.1f } }, { 7, new ColorDef { hue = 0.1f, saturation = 0.3f, value = -0.2f } }, { 8, new ColorDef { hue = -0.8f, saturation = 0.3f, value = -0.2f } }, { 9, new ColorDef { hue = 0.9f, saturation = 0.3f, value = -0.2f } }, { 10, new ColorDef { hue = -1f, saturation = 0.4f, value = -0.25f } } } }, { "SeekerQueen", new Dictionary<int, ColorDef> { { 1, new ColorDef { hue = -0.03f, saturation = 0.3f, value = 0f } }, { 2, new ColorDef { hue = -0.1f, saturation = 0.3f, value = -0.1f } }, { 3, new ColorDef { hue = -0.15f, saturation = 0.3f, value = -0.151f } }, { 4, new ColorDef { hue = -0.1f, saturation = 0.3f, value = -0.18f } }, { 5, new ColorDef { hue = 0.1f, saturation = 0.3f, value = -0.1f } }, { 6, new ColorDef { hue = 0.15f, saturation = 0.3f, value = -0.1f } }, { 7, new ColorDef { hue = 0.1f, saturation = 0.3f, value = -0.2f } }, { 8, new ColorDef { hue = -0.8f, saturation = 0.3f, value = -0.2f } }, { 9, new ColorDef { hue = 0.9f, saturation = 0.3f, value = -0.2f } }, { 10, new ColorDef { hue = -1f, saturation = 0.4f, value = -0.25f } } } }, { "BonemawSerpent", new Dictionary<int, ColorDef> { { 1, new ColorDef { hue = -0.05f, saturation = 0f, value = -0.01f } }, { 2, new ColorDef { hue = -0.1f, saturation = 0f, value = -0.01f } }, { 3, new ColorDef { hue = -0.2f, saturation = 0f, value = -0.01f } }, { 4, new ColorDef { hue = -0.4f, saturation = 0f, value = -0.01f } }, { 5, new ColorDef { hue = -0.5f, saturation = 0f, value = -0.01f } }, { 6, new ColorDef { hue = 0.3f, saturation = 0f, value = -0.01f } }, { 7, new ColorDef { hue = -0.8f, saturation = 0f, value = -0.01f } }, { 8, new ColorDef { hue = -0.8f, saturation = 0f, value = -0.01f } }, { 9, new ColorDef { hue = -1f, saturation = 0f, value = -0.01f } }, { 10, new ColorDef { hue = -1f, saturation = 0.2f, value = -0.07f } } } }, { "Asksvin", new Dictionary<int, ColorDef> { { 1, new ColorDef { hue = -0.477f, saturation = -1f, value = 0.02f } }, { 2, new ColorDef { hue = 0.5f, saturation = -0.08f, value = 0.08f } }, { 3, new ColorDef { hue = -0.2f, saturation = 0f, value = -0.01f } }, { 4, new ColorDef { hue = -0.4f, saturation = 0f, value = -0.01f } }, { 5, new ColorDef { hue = -0.5f, saturation = 0f, value = -0.01f } }, { 6, new ColorDef { hue = 0.3f, saturation = 0f, value = -0.01f } }, { 7, new ColorDef { hue = -0.8f, saturation = 0f, value = -0.01f } }, { 8, new ColorDef { hue = -0.8f, sa