Please disclose if any significant portion of your mod was created using AI tools by adding the 'AI Generated' category. Failing to do so may result in the mod being removed from Thunderstore.
Decompiled source of InsightHeimSS3 v1.0.3
BepInEx/plugins/StarLevelSystem.dll
Decompiled a year 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.3")] [assembly: TargetFramework(".NETFramework,Version=v4.8", FrameworkDisplayName = ".NET Framework 4.8")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("0.0.3.0")] namespace StarLevelSystem { internal class ValConfig { [CompilerGenerated] private sealed class <OnClientReceiveColorConfigs>d__38 : 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__38(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__37 : 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__37(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__36 : 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__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; 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> EnableScalingBirds; public static ConfigEntry<float> BirdSizeScalePerLevel; 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); EnableScalingBirds = BindServerConfig("LevelSystem", "EnableScalingBirds", value: true, "Enables birds to scale with the level system. This will cause them to become larger and give more drops."); BirdSizeScalePerLevel = BindServerConfig("LevelSystem", "BirdSizeScalePerLevel", 0.1f, "The amount of size that birds gain per level. 0.1 = 10% larger per level.", advanced: true, 0f, 2f); 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__36))] public static IEnumerator OnServerRecieveConfigs(long sender, ZPackage package) { //yield-return decompiler failed: Unexpected instruction in Iterator.Dispose() return new <OnServerRecieveConfigs>d__36(0); } [IteratorStateMachine(typeof(<OnClientReceiveLevelConfigs>d__37))] private static IEnumerator OnClientReceiveLevelConfigs(long sender, ZPackage package) { //yield-return decompiler failed: Unexpected instruction in Iterator.Dispose() return new <OnClientReceiveLevelConfigs>d__37(0) { package = package }; } [IteratorStateMachine(typeof(<OnClientReceiveColorConfigs>d__38))] private static IEnumerator OnClientReceiveColorConfigs(long sender, ZPackage package) { //yield-return decompiler failed: Unexpected instruction in Iterator.Dispose() return new <OnClientReceiveColorConfigs>d__38(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.3")] [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.3"; 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; } } 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); } } } internal 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, 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_hatchling", 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 = 0.2f, value = -0.01f } }, { 4, new ColorDef { hue = -0.4f, saturation = 0.4f, value = -0.01f } }, { 5, new ColorDef { hue = -0.5f, saturation = 0.6f, value = -0.01f } }, { 6, new ColorDef { hue = 0.3f, saturation = 0.8f, value = -0.01f } }, { 7, new ColorDef { hue = -0.8f, saturation = -0.1f, value = -0.01f } }, { 8, new ColorDef { hue = -0.8f, saturation = -0.3f, value = -0.01f } }, { 9, new C