From 93d6f988d81f8bba1ca67cc6ee8df82740e20d88 Mon Sep 17 00:00:00 2001 From: AkiniKites Date: Tue, 25 Jan 2022 19:14:11 -0500 Subject: [PATCH 01/32] Mode data to yml file --- Data/DataHandler.cs | 41 + Data/MobData.cs | 45 + DataHandler.cs | 497 ----- DeepDungeonDex.csproj | 10 +- Plugin.cs | 69 +- PluginUI.cs | 9 +- data.yml | 4870 +++++++++++++++++++++++++++++++++++++++++ 7 files changed, 4999 insertions(+), 542 deletions(-) create mode 100644 Data/DataHandler.cs create mode 100644 Data/MobData.cs delete mode 100644 DataHandler.cs create mode 100644 data.yml diff --git a/Data/DataHandler.cs b/Data/DataHandler.cs new file mode 100644 index 0000000..7736244 --- /dev/null +++ b/Data/DataHandler.cs @@ -0,0 +1,41 @@ +using System.Collections.Generic; +using System.IO; +using System.Threading.Tasks; +using YamlDotNet.Serialization; +using YamlDotNet.Serialization.NamingConventions; + +namespace DeepDungeonDex.Data +{ + public class DataHandler + { + private static bool _dataLoaded = false; + + private static Dictionary _mobData; + private static string DataPath => Path.Combine(Plugin.PluginInterface.AssemblyLocation.Directory.FullName, "data.yml"); + + public static MobData Mobs(uint nameID) + { + if (!_dataLoaded) + return null; + + if (_mobData.TryGetValue(nameID, out MobData value)) + return value; + return null; + } + + public static void Load() + { + Task.Run(() => + { + var deserializer = new DeserializerBuilder() + .WithNamingConvention(CamelCaseNamingConvention.Instance) + .Build(); + var yaml = File.ReadAllText(DataPath); + + _mobData = deserializer.Deserialize>(yaml); + + _dataLoaded = true; + }); + } + } +} diff --git a/Data/MobData.cs b/Data/MobData.cs new file mode 100644 index 0000000..361bcf3 --- /dev/null +++ b/Data/MobData.cs @@ -0,0 +1,45 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace DeepDungeonDex.Data +{ + public class MobData + { + public class Vulnerabilities + { + public bool? CanStun { get; set; } + public bool? CanHeavy { get; set; } + public bool? CanSlow { get; set; } + public bool? CanSleep { get; set; } + public bool? CanBind { get; set; } + public bool? IsUndead { get; set; } + } + public Vulnerabilities Vuln { get; set; } + + public string MobNotes { get; set; } + + public enum ThreatLevel + { + Unspecified, + Easy, + Caution, + Dangerous, + Vicious + } + public ThreatLevel Threat { get; set; } + + public enum AggroType + { + Unspecified, + Sight, + Sound, + Proximity, + Boss + } + public AggroType Aggro { get; set; } + + } +} diff --git a/DataHandler.cs b/DataHandler.cs deleted file mode 100644 index 89e7130..0000000 --- a/DataHandler.cs +++ /dev/null @@ -1,497 +0,0 @@ -using System.Collections.Generic; - -namespace DeepDungeonDex -{ - public class DataHandler - { - public class MobData - { - public class Vulnerabilities - { - public bool? CanStun { get; set; } - public bool? CanHeavy { get; set; } - public bool? CanSlow { get; set; } - public bool? CanSleep { get; set; } - public bool? CanBind { get; set; } - public bool? IsUndead { get; set; } - } - public Vulnerabilities Vuln { get; set; } - - public string MobNotes { get; set; } - - public enum ThreatLevel - { - Unspecified, - Easy, - Caution, - Dangerous, - Vicious - } - public ThreatLevel Threat { get; set; } - - public enum AggroType - { - Unspecified, - Sight, - Sound, - Proximity, - Boss - } - public AggroType Aggro { get; set; } - - } - - public static MobData Mobs(uint nameID) - { - if (mobs.TryGetValue(nameID, out MobData value)) return value; - else return null; - } - - private static readonly Dictionary mobs = new Dictionary() - { - // HoH floors 1-9 - { 7262, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = true}, MobNotes="Auto inflicts Heavy debuff" } }, - { 7263, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = true}, MobNotes="Auto applies Physical Vuln Up every 10s" } }, - { 7264, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = true}, MobNotes="AoE applies Paralysis" } }, - { 7265, new MobData { Threat=MobData.ThreatLevel.Dangerous, Aggro=MobData.AggroType.Proximity, Vuln = new MobData.Vulnerabilities{CanStun = true}, MobNotes="Triple auto inflicts Bleed" } }, - { 7266, new MobData { Threat=MobData.ThreatLevel.Caution, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = true}, MobNotes="Untelegraphed Sleep followed by AoE" } }, - { 7267, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = false}, MobNotes="AoE applies Bleed" } }, - { 7268, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = true}, MobNotes="Gaze" } }, - { 7269, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Proximity, Vuln = new MobData.Vulnerabilities{CanStun = true}, MobNotes="" } }, - { 7270, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = true}, MobNotes="AoE inflicts knockback" } }, - { 7271, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = true}, MobNotes="Conal AoE inflicts Bleed\nCircle AoE inflicts knockback" } }, - { 7272, new MobData { Threat=MobData.ThreatLevel.Dangerous, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = true}, MobNotes="Unavoidable tankbuster-like \"Jaws\"" } }, - { 7273, new MobData { Threat=MobData.ThreatLevel.Caution, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = true}, MobNotes="Untelegraphed buster inflicts Bleed and knockback" } }, - { 7274, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = true}, MobNotes="" } }, - // HoH floors 11-19 - { 7275, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = true}, MobNotes="" } }, - { 7276, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Proximity, Vuln = new MobData.Vulnerabilities{CanStun = true}, MobNotes="" } }, - { 7277, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = true}, MobNotes="" } }, - { 7278, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = true}, MobNotes="" } }, - { 7279, new MobData { Threat=MobData.ThreatLevel.Caution, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = true}, MobNotes="Lite buster \"Scissor Run\" followed by AoE" } }, - { 7280, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Proximity, Vuln = new MobData.Vulnerabilities{CanStun = true}, MobNotes="" } }, - { 7281, new MobData { Threat=MobData.ThreatLevel.Caution, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = true}, MobNotes="Gaze inflicts Seduce, followed by large AoE that inflicts Minimum" } }, - { 7282, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = true}, MobNotes="" } }, - { 7283, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = true}, MobNotes="" } }, - { 7284, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = false}, MobNotes="" } }, - { 7285, new MobData { Threat=MobData.ThreatLevel.Caution, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = true}, MobNotes="Buster and triple auto" } }, - { 7286, new MobData { Threat=MobData.ThreatLevel.Dangerous, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = true}, MobNotes="Roomwide ENRAGE" } }, - { 7287, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = true}, MobNotes="" } }, - // HoH floors 21-29 - { 7288, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Proximity, Vuln = new MobData.Vulnerabilities{CanStun = true, CanHeavy = true, CanBind = false}, MobNotes="Gaze inflicts Blind" } }, - { 7289, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = true, CanHeavy = true, CanSleep = true}, MobNotes="Cures self and allies" } }, - { 7290, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Proximity, Vuln = new MobData.Vulnerabilities{CanStun = true, CanSleep = false}, MobNotes="Casts AoEs with knockback unaggroed\nLine AoE inflicts Bleed" } }, - { 7291, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = true, CanSleep = true}, MobNotes="Buffs own damage" } }, - { 7292, new MobData { Threat=MobData.ThreatLevel.Caution, Aggro=MobData.AggroType.Proximity, Vuln = new MobData.Vulnerabilities{CanStun = true, CanSleep = false}, MobNotes="Untelegraphed conal AoE with knockback, buster" } }, - { 7293, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = false}, MobNotes="" } }, - { 7294, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = true, CanSleep = true}, MobNotes="" } }, - { 7295, new MobData { Threat=MobData.ThreatLevel.Caution, Aggro=MobData.AggroType.Proximity, Vuln = new MobData.Vulnerabilities{CanStun = true}, MobNotes="Draw-in followed by cleave" } }, - { 7296, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = true}, MobNotes="Gaze" } }, - { 7297, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Sound, Vuln = new MobData.Vulnerabilities{CanStun = true, CanSleep = true}, MobNotes="Line AoE inflicts Bleed" } }, - { 7298, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = true, CanHeavy = true}, MobNotes="Cross AoE inflicts Suppuration" } }, - { 7299, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = true}, MobNotes="Large AoE inflicts Paralysis" } }, - { 7300, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = true}, MobNotes="Circle AoE inflicts Suppuration" } }, - //HoH floors 31-39 - { 7301, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = true}, MobNotes="" } }, - { 7302, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = true}, MobNotes="Casts AoEs unaggroed" } }, - { 7303, new MobData { Threat=MobData.ThreatLevel.Caution, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = true}, MobNotes="Double auto inflicts Bleed\nLow health ENRAGE" } }, - { 7304, new MobData { Threat=MobData.ThreatLevel.Caution, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = true}, MobNotes="Low health ENRAGE" } }, - { 7305, new MobData { Threat=MobData.ThreatLevel.Caution, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = true}, MobNotes="Line AoE inflicts Bleed\nLow health ENRAGE" } }, - { 7306, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = true}, MobNotes="Cleaves every other auto" } }, - { 7307, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = true}, MobNotes="" } }, - { 7308, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = false}, MobNotes="Weak stack attack" } }, - { 7309, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = true}, MobNotes="" } }, - { 7310, new MobData { Threat=MobData.ThreatLevel.Caution, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = true}, MobNotes="Extremely large AoE" } }, - { 7311, new MobData { Threat=MobData.ThreatLevel.Caution, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = true}, MobNotes="Line AoE inflicts Bleed\nLow health ENRAGE" } }, - { 7312, new MobData { Threat=MobData.ThreatLevel.Caution, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = true}, MobNotes="Frontal cleave without cast or telegraph" } }, - { 7313, new MobData { Threat=MobData.ThreatLevel.Caution, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = true}, MobNotes="Gaze inflicts Otter" } }, - // HoH floors 41-49 - { 7314, new MobData { Threat=MobData.ThreatLevel.Caution, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = true}, MobNotes="Casts AoEs unaggroed" } }, - { 7315, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Proximity, Vuln = new MobData.Vulnerabilities{CanStun = true}, MobNotes="" } }, - { 7316, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = true}, MobNotes="" } }, - { 7317, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = true}, MobNotes="" } }, - { 7318, new MobData { Threat=MobData.ThreatLevel.Caution, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = false}, MobNotes="Large line AoE\nEventual ENRAGE" } }, - { 7319, new MobData { Threat=MobData.ThreatLevel.Caution, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = true}, MobNotes="Casts AoEs unaggroed" } }, - { 7320, new MobData { Threat=MobData.ThreatLevel.Caution, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = true}, MobNotes="Purple: double auto" } }, - { 7321, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = false}, MobNotes="Large cone AoE" } }, - { 7322, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = true}, MobNotes="" } }, - { 7323, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = true}, MobNotes="Green: Casts AoEs unaggroed" } }, - { 7324, new MobData { Threat=MobData.ThreatLevel.Caution, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = false}, MobNotes="Very wide line AoE" } }, - { 7325, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = true}, MobNotes="" } }, - { 7326, new MobData { Threat=MobData.ThreatLevel.Caution, Aggro=MobData.AggroType.Sound, Vuln = new MobData.Vulnerabilities{CanStun = true}, MobNotes="Eventual ENRAGE" } }, - //HoH floors 51-59 - { 7327, new MobData { Threat=MobData.ThreatLevel.Caution, Aggro=MobData.AggroType.Sound, Vuln = new MobData.Vulnerabilities{CanStun = true}, MobNotes="Autos inflict stacking vuln up" } }, - { 7328, new MobData { Threat=MobData.ThreatLevel.Caution, Aggro=MobData.AggroType.Sound, Vuln = new MobData.Vulnerabilities{CanStun = true}, MobNotes="Buster inflicts Bleed" } }, - { 7329, new MobData { Threat=MobData.ThreatLevel.Caution, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = true}, MobNotes="Buffs own damage" } }, - { 7330, new MobData { Threat=MobData.ThreatLevel.Caution, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = true}, MobNotes="Eventual instant ENRAGE" } }, - { 7331, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = true}, MobNotes="Cone AoE inflicts Bleed" } }, - { 7332, new MobData { Threat=MobData.ThreatLevel.Caution, Aggro=MobData.AggroType.Proximity, Vuln = new MobData.Vulnerabilities{CanStun = true}, MobNotes="Exclusively fatal line AoEs" } }, - { 7333, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = true}, MobNotes="" } }, - { 7334, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = true}, MobNotes="" } }, - { 7335, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = true}, MobNotes="Draw-in attack" } }, - { 7336, new MobData { Threat=MobData.ThreatLevel.Caution, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = false}, MobNotes="Instant AoEs on targeted player unaggroed" } }, - { 7337, new MobData { Threat=MobData.ThreatLevel.Dangerous, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = true}, MobNotes="Conal gaze, very quick low health ENRAGE" } }, - { 7338, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = false}, MobNotes="" } }, - { 7339, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = false}, MobNotes="" } }, - // HoH floors 61-69 - { 7340, new MobData { Threat=MobData.ThreatLevel.Caution, Aggro=MobData.AggroType.Proximity, Vuln = new MobData.Vulnerabilities{CanStun = true}, MobNotes="Inflicts stacking Poison that lasts 30s" } }, - { 7341, new MobData { Threat=MobData.ThreatLevel.Caution, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = true}, MobNotes="Inflicts stacking vuln up" } }, - { 7342, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = true}, MobNotes="" } }, - { 7343, new MobData { Threat=MobData.ThreatLevel.Caution, Aggro=MobData.AggroType.Proximity, Vuln = new MobData.Vulnerabilities{CanStun = true}, MobNotes="Fast alternating line AoEs that inflict Paralysis" } }, - { 7344, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Sound, Vuln = new MobData.Vulnerabilities{CanStun = true}, MobNotes="Caster, double auto" } }, - { 7345, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = true}, MobNotes="Conal AoE inflicts Paralysis" } }, - { 7346, new MobData { Threat=MobData.ThreatLevel.Caution, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = true}, MobNotes="Cleave and potent Poison" } }, - { 7347, new MobData { Threat=MobData.ThreatLevel.Caution, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = true}, MobNotes="Large donut AoE, gaze attack inflicts Fear" } }, - { 7348, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = true}, MobNotes="Large circular AoE inflicts Bleed" } }, - { 7349, new MobData { Threat=MobData.ThreatLevel.Caution, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = true}, MobNotes="Buffs own or ally's defense" } }, - { 7350, new MobData { Threat=MobData.ThreatLevel.Caution, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = true}, MobNotes="AoE inflicts numerous debuffs at once" } }, - { 7351, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = true}, MobNotes="" } }, - // HoH floors 71-79 - { 7352, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = true}, MobNotes="" } }, - { 7353, new MobData { Threat=MobData.ThreatLevel.Caution, Aggro=MobData.AggroType.Proximity, Vuln = new MobData.Vulnerabilities{CanStun = true}, MobNotes="Casts large AoE unaggroed\nExtremely large circular AoE" } }, - { 7354, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = true}, MobNotes="Untelegraphed knockback on rear" } }, - { 7355, new MobData { Threat=MobData.ThreatLevel.Caution, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = true}, MobNotes="Double auto inflicts Bleed" } }, - { 7356, new MobData { Threat=MobData.ThreatLevel.Caution, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = true}, MobNotes="Casts AoEs unaggroed that inflict Deep Freeze" } }, - { 7357, new MobData { Threat=MobData.ThreatLevel.Dangerous, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = false}, MobNotes="Casts roomwide AoEs unaggroed\nLarge conal draw-in attack followed by heavy damage" } }, - { 7358, new MobData { Threat=MobData.ThreatLevel.Caution, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = true}, MobNotes="Buffs own damage" } }, - { 7359, new MobData { Threat=MobData.ThreatLevel.Dangerous, Aggro=MobData.AggroType.Proximity, Vuln = new MobData.Vulnerabilities{CanStun = true}, MobNotes="Haste, eventual ENRAGE" } }, - { 7360, new MobData { Threat=MobData.ThreatLevel.Caution, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = true}, MobNotes="Very large AoEs" } }, - { 7361, new MobData { Threat=MobData.ThreatLevel.Caution, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = false}, MobNotes="Draw-in attack, extremely large AoE, eventual ENRAGE" } }, - { 7362, new MobData { Threat=MobData.ThreatLevel.Caution, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = false}, MobNotes="Extremely large conal AoE, gaze inflicts Fear" } }, - { 7363, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = false}, MobNotes="" } }, - { 7364, new MobData { Threat=MobData.ThreatLevel.Dangerous, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = true}, MobNotes="Double auto and very large AoE" } }, - // HoH floors 81-89 - { 7365, new MobData { Threat=MobData.ThreatLevel.Dangerous, Aggro=MobData.AggroType.Proximity, Vuln = new MobData.Vulnerabilities{CanStun = false}, MobNotes="Ram's Voice - get out\nDragon's Voice - get in\nTelegraphed cleaves" } }, - { 7366, new MobData { Threat=MobData.ThreatLevel.Dangerous, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = false}, MobNotes="Buffs own damage unaggroed\nLarge AoE unaggroed that inflicts vuln up and stacks" } }, - { 7367, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = false}, MobNotes="Charges on aggro" } }, - { 7368, new MobData { Threat=MobData.ThreatLevel.Caution, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = false}, MobNotes="Untelegraphed conal AoE on random player, gaze attack" } }, - { 7369, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = false}, MobNotes="Casts AoEs unaggroed" } }, - { 7370, new MobData { Threat=MobData.ThreatLevel.Dangerous, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = true}, MobNotes="Double autos, very strong rear cleave if behind" } }, - { 7371, new MobData { Threat=MobData.ThreatLevel.Caution, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = false}, MobNotes="Alternates line and circle AoEs untelegraphed" } }, - { 7372, new MobData { Threat=MobData.ThreatLevel.Dangerous, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = true}, MobNotes="Buffs own damage and double autos" } }, - { 7373, new MobData { Threat=MobData.ThreatLevel.Caution, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = false}, MobNotes="Draw-in attack, tons of bleed, and a stacking poison" } }, - { 7374, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Proximity, Vuln = new MobData.Vulnerabilities{CanStun = false}, MobNotes="Large donut AoE" } }, - { 7375, new MobData { Threat=MobData.ThreatLevel.Dangerous, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = false}, MobNotes="Cone AoE, circle AoE, partywide damage" } }, - { 7376, new MobData { Threat=MobData.ThreatLevel.Dangerous, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = false}, MobNotes="Charges, buffs own damage, double autos, electricity Bleed" } }, - { 7377, new MobData { Threat=MobData.ThreatLevel.Caution, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = false}, MobNotes="Charges, buffs own damage, untelegraphed buster \"Ripper Claw\"" } }, - // HoH floors 91-99 - { 7378, new MobData { Threat=MobData.ThreatLevel.Vicious, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = true}, MobNotes="WAR: Triple knockback with heavy damage\nBuffs own attack\nExtremely high damage cleave with knockback" } }, - { 7379, new MobData { Threat=MobData.ThreatLevel.Dangerous, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = true}, MobNotes="MNK: Haste buff, short invuln" } }, - { 7380, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = true}, MobNotes="WHM: double autos\n\"Stone\" can be line of sighted" } }, - { 7381, new MobData { Threat=MobData.ThreatLevel.Dangerous, Aggro=MobData.AggroType.Proximity, Vuln = new MobData.Vulnerabilities{CanStun = false}, MobNotes="Cleave\nLarge line AoE that can be line of sighted" } }, - { 7382, new MobData { Threat=MobData.ThreatLevel.Dangerous, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = true}, MobNotes="\"Charybdis\" AoE that leaves tornadoes on random players" } }, - { 7383, new MobData { Threat=MobData.ThreatLevel.Caution, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = true}, MobNotes="" } }, - { 7384, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = true}, MobNotes="Casts targeted AoEs unaggroed, buffs own defense" } }, - { 7385, new MobData { Threat=MobData.ThreatLevel.Caution, Aggro=MobData.AggroType.Proximity, Vuln = new MobData.Vulnerabilities{CanStun = true}, MobNotes="Targeted AoEs, cleaves" } }, - { 7386, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = true}, MobNotes="Extremely quick line AoE \"Death's Door\" that instantly kills" } }, - { 7387, new MobData { Threat=MobData.ThreatLevel.Caution, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = true}, MobNotes="Deals heavy damage to random players" } }, - { 7388, new MobData { Threat=MobData.ThreatLevel.Dangerous, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = false}, MobNotes="Charges\nUntelegraphed line AoE \"Swipe\"\nUntelegraphed wide circle AoE \"Swing\"" } }, - { 7389, new MobData { Threat=MobData.ThreatLevel.Dangerous, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = false}, MobNotes="Repeatedly cleaves for high damage, lifesteal, buffs own damage, three stacks of damage up casts ENRAGE \"Black Nebula\"" } }, - { 7390, new MobData { Threat=MobData.ThreatLevel.Dangerous, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = true}, MobNotes="Rapid double autos and untelegraphed line AoE \"Quasar\"" } }, - { 7391, new MobData { Threat=MobData.ThreatLevel.Caution, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{}, MobNotes="Double autos, cone AoE inflicts Sleep" } }, - { 7584, new MobData { Threat=MobData.ThreatLevel.Dangerous, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = false}, MobNotes="Permanent stacking damage buff\nMassive enrage on random player\"Allagan Meteor\"\nGaze attack" } }, - // HoH bosses and misc. - { 7392, new MobData { Threat=MobData.ThreatLevel.Caution, Aggro=MobData.AggroType.Proximity, Vuln = new MobData.Vulnerabilities{CanStun = true, CanSleep = false}, MobNotes="Floors 1-30: Bronze chests only\nHigh damage autos and instant kill AoE\n\"Malice\" can be interrupted with silence/stun/knockback/witching/\ninterject" } }, - { 7393, new MobData { Threat=MobData.ThreatLevel.Caution, Aggro=MobData.AggroType.Proximity, Vuln = new MobData.Vulnerabilities{CanStun = true}, MobNotes="Floors 31-60: Silver chests only\nHigh damage autos and instant kill AoE\n\"Malice\" can be interrupted with silence/stun/interject" } }, - { 7394, new MobData { Threat=MobData.ThreatLevel.Caution, Aggro=MobData.AggroType.Proximity, Vuln = new MobData.Vulnerabilities{CanStun = false}, MobNotes="Floors 61+: Gold chests only\nHigh damage autos and instant kill AoE\n\"Malice\" can only be interrupted with interject\nCANNOT STUN" } }, - { 7478, new MobData { Threat=MobData.ThreatLevel.Caution, Aggro=MobData.AggroType.Boss, Vuln = new MobData.Vulnerabilities{CanStun = false, CanBind = false, CanHeavy = false, CanSleep = false, CanSlow = false}, MobNotes="Summons lightning clouds that inflict stacking vuln up when they explode\nBoss does proximity AoE under itself that knocks players into the air\nGet knocked into a cloud to dispel it and avoid vuln\nHalf-roomwide AoE" } }, - { 7480, new MobData { Threat=MobData.ThreatLevel.Caution, Aggro=MobData.AggroType.Boss, Vuln = new MobData.Vulnerabilities{CanStun = false, CanBind = false, CanHeavy = false, CanSleep = false, CanSlow = false}, MobNotes="Goes to center of arena and casts knockback to wall (cannot be knockback invulned)\nFollows immediately with a half-roomwide AoE" } }, - { 7481, new MobData { Threat=MobData.ThreatLevel.Caution, Aggro=MobData.AggroType.Boss, Vuln = new MobData.Vulnerabilities{CanStun = false, CanBind = false, CanHeavy = false, CanSleep = false, CanSlow = false}, MobNotes="Summons butterflies on edges of arena\nDoes gaze mechanic that inflicts Fear\nButterflies explode untelegraphed" } }, - { 7483, new MobData { Threat=MobData.ThreatLevel.Caution, Aggro=MobData.AggroType.Boss, Vuln = new MobData.Vulnerabilities{CanStun = false, CanBind = false, CanHeavy = false, CanSleep = false, CanSlow = false}, MobNotes="Summons clouds on edge of arena\nDoes to-wall knockback that ignores knockback invuln (look for safe spot in clouds!)\nFollows immediately with targeted line AoE" } }, - { 7485, new MobData { Threat=MobData.ThreatLevel.Caution, Aggro=MobData.AggroType.Boss, Vuln = new MobData.Vulnerabilities{CanStun = false, CanBind = false, CanHeavy = false, CanSleep = false, CanSlow = false}, MobNotes="1) Untelegraphed swipe\n2) Untelegraphed line AoE on random player\n3) Gaze mechanic that inflicts Fear\n4) Summons pulsating bombs over arena and does a proximity AoE\n5) Repeats after bombs explode for the last time" } }, - { 7487, new MobData { Threat=MobData.ThreatLevel.Caution, Aggro=MobData.AggroType.Boss, Vuln = new MobData.Vulnerabilities{CanStun = false, CanBind = false, CanHeavy = false, CanSleep = false, CanSlow = false}, MobNotes="Summons staffs that do various AoEs\nStaffs then do line AoEs targeting players\nRoomwide AoE" } }, - { 7489, new MobData { Threat=MobData.ThreatLevel.Caution, Aggro=MobData.AggroType.Boss, Vuln = new MobData.Vulnerabilities{CanStun = false, CanBind = false, CanHeavy = false, CanSleep = false, CanSlow = false}, MobNotes="1) Untelegraphed frontal cleave\n2) Targets random player with \"Innerspace\" puddle (standing in puddle inflicts Minimum)\n3) Targets random player with \"Hound out of Hell\"\n4) Targeted player must stand in puddle to dodge \"Hound out of Hell\" and \"Devour\" (will instant-kill if not in puddle and give the boss a stack of damage up)\n5) Repeat" } }, - { 7490, new MobData { Threat=MobData.ThreatLevel.Caution, Aggro=MobData.AggroType.Boss, Vuln = new MobData.Vulnerabilities{CanStun = false, CanBind = false, CanHeavy = false, CanSleep = false, CanSlow = false}, MobNotes="1) Summons balls of ice\n2) Summons icicle that pierces through room, detonating any ice balls it hits\n3) \"Lunar Cry\" detonates remaining ice balls\n4) Exploding ice balls inflict Deep Freeze if they hit a player\n5) Boss jumps to random player, instantly killing if player is frozen (light damage otherwise)" } }, - { 7493, new MobData { Threat=MobData.ThreatLevel.Caution, Aggro=MobData.AggroType.Boss, Vuln = new MobData.Vulnerabilities{CanStun = false, CanBind = false, CanHeavy = false, CanSleep = false, CanSlow = false}, MobNotes="1) Heavy roomwide damage \"Ancient Quaga\"\n2) Pulsing rocks appear over arena, causing moderate damage and Heavy debuff if player is hit by one\n3) \"Meteor Impact\" summons proximity AoE at boss's current location\n4) Line AoE \"Aura Cannon\"\n5) Targeted circle AoE \"Burning Rave\"\n6) Point-blank circle AoE \"Knuckle Press\"\n7) Repeat" } }, - { 7610, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Proximity, Vuln = new MobData.Vulnerabilities{CanStun = false}, MobNotes="Does not interact, wide stun and immediately dies when attacked" } }, - - //PotD data - //PotD 1-10 - { 4975, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = true, CanBind = true, CanHeavy = true, CanSleep = true, IsUndead = false}, MobNotes="Casts Haste on itself" } }, - { 4976, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = true, CanBind = true, CanHeavy = true, CanSleep = true, IsUndead = false}, MobNotes="" } }, - { 4977, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Sound, Vuln = new MobData.Vulnerabilities{CanStun = true, CanBind = false, CanHeavy = false, CanSleep = false, IsUndead = false}, MobNotes="" } }, - { 4978, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = true, CanBind = true, CanHeavy = true, CanSleep = false, IsUndead = false}, MobNotes="" } }, - { 4979, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Proximity, Vuln = new MobData.Vulnerabilities{CanStun = true, CanBind = true, CanHeavy = true, CanSleep = true, IsUndead = false}, MobNotes="" } }, - { 4980, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = true, CanBind = true, CanHeavy = true, CanSleep = false, IsUndead = false}, MobNotes="Inflicts Poison" } }, - { 4981, new MobData { Threat=MobData.ThreatLevel.Caution, Aggro=MobData.AggroType.Proximity, Vuln = new MobData.Vulnerabilities{CanStun = true, CanBind = false, CanHeavy = false, CanSleep = false, IsUndead = false}, MobNotes="High damage \"Final Sting\"" } }, - { 4982, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Sound, Vuln = new MobData.Vulnerabilities{CanStun = true, CanBind = false, CanHeavy = false, CanSleep = true, IsUndead = false}, MobNotes="Inflicts vulnerability up" } }, - { 4983, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = true, CanBind = true, CanHeavy = true, CanSleep = false, IsUndead = false}, MobNotes="" } }, - { 4984, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = true, CanBind = true, CanHeavy = true, CanSleep = true, IsUndead = false}, MobNotes="" } }, - { 4985, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Proximity, Vuln = new MobData.Vulnerabilities{CanStun = true, CanBind = true, CanHeavy = true, CanSleep = false, IsUndead = false}, MobNotes="Mini buster \"Rhino Charge\"" } }, - { 4986, new MobData { Threat=MobData.ThreatLevel.Caution, Aggro=MobData.AggroType.Boss, Vuln = new MobData.Vulnerabilities{CanStun = false, CanBind = false, CanHeavy = false, CanSleep = false, IsUndead = false, CanSlow = false}, MobNotes="1) \"Whipcrack\" - light tankbuster\n2) \"Stormwind\" - conal AOE\n3) \"Bombination\" - circular AOE on boss inflicts Slow\n4) \"Lumisphere\" - targeted AOE on random player\n5) \"Aeroblast\" - roomwide AOE inflicts Bleed" } }, - //PotD 11-20 - { 4987, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = true, CanBind = true, CanHeavy = false, CanSleep = false, IsUndead = false}, MobNotes="" } }, - { 4988, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = true, CanBind = false, CanHeavy = false, CanSleep = false, IsUndead = false}, MobNotes="Inflicts poison" } }, - { 4989, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = true, CanBind = false, CanHeavy = true, CanSleep = false, IsUndead = false}, MobNotes="\"Sticky Tongue\" does not stun if facing towards" } }, - { 4990, new MobData { Threat=MobData.ThreatLevel.Caution, Aggro=MobData.AggroType.Sound, Vuln = new MobData.Vulnerabilities{CanStun = true, CanBind = false, CanHeavy = false, CanSleep = false, IsUndead = false}, MobNotes="Eventual ENRAGE" } }, - { 4991, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Sound, Vuln = new MobData.Vulnerabilities{CanStun = true, CanBind = true, CanHeavy = true, CanSleep = true, IsUndead = false}, MobNotes="" } }, - { 4992, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Sound, Vuln = new MobData.Vulnerabilities{CanStun = true, CanBind = true, CanHeavy = true, CanSleep = true, IsUndead = false}, MobNotes="" } }, - { 4993, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Proximity, Vuln = new MobData.Vulnerabilities{CanStun = true, CanBind = true, CanHeavy = true, CanSleep = false, IsUndead = false}, MobNotes="Area of effect Slow" } }, - { 4994, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Proximity, Vuln = new MobData.Vulnerabilities{CanStun = true, CanBind = true, CanHeavy = true, CanSleep = true, IsUndead = false}, MobNotes="" } }, - { 4995, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Proximity, Vuln = new MobData.Vulnerabilities{CanStun = true, CanBind = false, CanHeavy = true, CanSleep = false, IsUndead = false}, MobNotes="" } }, - { 4996, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Proximity, Vuln = new MobData.Vulnerabilities{CanStun = true, CanBind = false, CanHeavy = false, CanSleep = false, IsUndead = false}, MobNotes="Buffs own damage" } }, - { 4997, new MobData { Threat=MobData.ThreatLevel.Dangerous, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = true, CanBind = false, CanHeavy = false, CanSleep = true, IsUndead = false}, MobNotes="Gaze attack inflicts Petrify, \"Devour\" instantly kills players inflicted with Toad" } }, - { 4998, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = false, CanBind = true, CanHeavy = true, CanSleep = false, IsUndead = false}, MobNotes="" } }, - { 4999, new MobData { Threat=MobData.ThreatLevel.Caution, Aggro=MobData.AggroType.Boss, Vuln = new MobData.Vulnerabilities{CanStun = false, CanBind = false, CanHeavy = false, CanSleep = false, IsUndead = false, CanSlow = false}, MobNotes="1) \"Bloody Caress\" - high damage cleave\n2) Two telegraphed AOEs and a roomwide AOE\n3) Summons two hornets that must be killed before they \"Final Sting\"\n4) \"Rotten Stench\" - high damage line AOE" } }, - //PotD 21-30 - { 5000, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = true, CanBind = true, CanHeavy = true, CanSleep = true, IsUndead = false}, MobNotes="" } }, - { 5001, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = true, CanBind = true, CanHeavy = true, CanSleep = true, IsUndead = false}, MobNotes="" } }, - { 5002, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = false, CanBind = true, CanHeavy = true, CanSleep = true, IsUndead = false}, MobNotes="" } }, - { 5003, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = true, CanBind = false, CanHeavy = true, CanSleep = true, IsUndead = false}, MobNotes="" } }, - { 5004, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Proximity, Vuln = new MobData.Vulnerabilities{CanStun = true, CanBind = false, CanHeavy = true, CanSleep = true, IsUndead = false}, MobNotes="" } }, - { 5005, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = true, CanBind = true, CanHeavy = true, CanSleep = true, IsUndead = false}, MobNotes="" } }, - { 5006, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Proximity, Vuln = new MobData.Vulnerabilities{CanStun = true, CanBind = true, CanHeavy = true, CanSleep = true, IsUndead = false}, MobNotes="" } }, - { 5007, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = false, CanBind = false, CanHeavy = true, CanSleep = false, IsUndead = false}, MobNotes="" } }, - { 5008, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Proximity, Vuln = new MobData.Vulnerabilities{CanStun = true, CanBind = false, CanHeavy = false, CanSleep = false, IsUndead = false}, MobNotes="" } }, - { 5009, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Sound, Vuln = new MobData.Vulnerabilities{CanStun = true, CanBind = true, CanHeavy = true, CanSleep = false, IsUndead = false}, MobNotes="" } }, - { 5010, new MobData { Threat=MobData.ThreatLevel.Caution, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = true, CanBind = false, CanHeavy = true, CanSleep = true, IsUndead = false}, MobNotes="Untelegraphed AOE does moderate damage and knockback" } }, - { 5011, new MobData { Threat=MobData.ThreatLevel.Caution, Aggro=MobData.AggroType.Sound, Vuln = new MobData.Vulnerabilities{CanStun = true, CanBind = true, CanHeavy = true, CanSleep = true, IsUndead = false}, MobNotes="\"Chirp\" inflicts Sleep for 15s" } }, - { 5012, new MobData { Threat=MobData.ThreatLevel.Caution, Aggro=MobData.AggroType.Boss, Vuln = new MobData.Vulnerabilities{CanStun = false, CanBind = false, CanHeavy = false, CanSleep = false, IsUndead = false, CanSlow = false}, MobNotes="1) Spread out fire and ice AOEs and don't drop them in center because: \n2) Get inside boss's hitbox for \"Fear Itself\" - will inflict high damage and Terror if not avoided" } }, - //PotD 31-40 - { 5013, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Proximity, Vuln = new MobData.Vulnerabilities{CanStun = true, CanBind = false, CanHeavy = false, CanSleep = false, IsUndead = false}, MobNotes="" } }, - { 5014, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Sound, Vuln = new MobData.Vulnerabilities{CanStun = true, CanBind = false, CanHeavy = false, CanSleep = false, IsUndead = false}, MobNotes="" } }, - { 5015, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = true, CanBind = true, CanHeavy = true, CanSleep = true, IsUndead = false}, MobNotes="" } }, - { 5016, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Proximity, Vuln = new MobData.Vulnerabilities{CanStun = false, CanSleep = false, IsUndead = true}, MobNotes="" } }, - { 5017, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = true, CanSleep = false, IsUndead = false}, MobNotes="" } }, - { 5018, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = true, CanSleep = true, IsUndead = false}, MobNotes="" } }, - { 5019, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Proximity, Vuln = new MobData.Vulnerabilities{CanStun = true, CanSleep = false, IsUndead = false}, MobNotes="" } }, - { 5020, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Proximity, Vuln = new MobData.Vulnerabilities{CanStun = true, CanSleep = true, IsUndead = false}, MobNotes="" } }, - { 5021, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = true, CanSleep = true, IsUndead = false}, MobNotes="" } }, - { 5022, new MobData { Threat=MobData.ThreatLevel.Caution, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = true, CanBind = false, CanHeavy = false, CanSleep = false, IsUndead = false}, MobNotes="\"Dark Mist\" inflicts Terror" } }, - { 5023, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = true, CanSleep = false, IsUndead = false}, MobNotes="" } }, - { 5024, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Proximity, Vuln = new MobData.Vulnerabilities{CanStun = true, CanSleep = true, IsUndead = true}, MobNotes="" } }, - { 5025, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Boss, Vuln = new MobData.Vulnerabilities{CanStun = false, CanBind = false, CanHeavy = false, CanSleep = false, IsUndead = true, CanSlow = false}, MobNotes="1) Summons four lingering AoEs\n2) Summons two adds -- they must be killed before boss casts \"Scream\", adds will target player with high damage AoEs if not dead" } }, - // PotD 41-50 - { 5026, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = true, CanSleep = false, IsUndead = false}, MobNotes="" } }, - { 5027, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = true, CanSleep = false, IsUndead = false}, MobNotes="" } }, - { 5028, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = true, CanSleep = false, IsUndead = false}, MobNotes="" } }, - { 5029, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Proximity, Vuln = new MobData.Vulnerabilities{CanStun = true, CanSleep = false, IsUndead = false}, MobNotes="" } }, - { 5030, new MobData { Threat=MobData.ThreatLevel.Caution, Aggro=MobData.AggroType.Sound, Vuln = new MobData.Vulnerabilities{CanStun = true, CanSleep = true, IsUndead = false}, MobNotes="Inflicts Paralysis" } }, - { 5031, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = true, CanSleep = false, IsUndead = false}, MobNotes="" } }, - { 5032, new MobData { Threat=MobData.ThreatLevel.Caution, Aggro=MobData.AggroType.Proximity, Vuln = new MobData.Vulnerabilities{CanStun = true, CanSleep = false, IsUndead = false}, MobNotes="Inflicts Paralysis" } }, - { 5033, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = false, CanSleep = false, IsUndead = false}, MobNotes="" } }, - { 5034, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = false, CanSleep = false, IsUndead = false}, MobNotes="" } }, - { 5035, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = true, CanSleep = false, IsUndead = false}, MobNotes="" } }, - { 5036, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Proximity, Vuln = new MobData.Vulnerabilities{CanStun = true, CanSleep = false, IsUndead = false}, MobNotes="" } }, - { 5037, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Sound, Vuln = new MobData.Vulnerabilities{CanStun = false, CanSleep = false, IsUndead = true}, MobNotes="" } }, - { 5038, new MobData { Threat=MobData.ThreatLevel.Caution, Aggro=MobData.AggroType.Boss, Vuln = new MobData.Vulnerabilities{CanStun = false, CanBind = false, CanHeavy = false, CanSleep = false, IsUndead = false, CanSlow = false}, MobNotes="FOLLOW MECHANICS -- failed mechanics power up an unavoidable room AoE\nBoss will occasionally inflict Disease which slows\n1) \"In Health\" -- can be roomwide AoE with safe spot on boss or targeted AoE under boss \n2) \"Cold Feet\" -- Gaze" } }, - // PotD special NPCs and misc. - { 5039, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{}, MobNotes="" } }, - { 5040, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{}, MobNotes="" } }, - { 5041, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Proximity, Vuln = new MobData.Vulnerabilities{CanStun = false}, MobNotes="Does not interact, wide stun and immediately dies when attacked" } }, - { 5046, new MobData { Threat=MobData.ThreatLevel.Caution, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{}, MobNotes="Immune to Pomander of Witching" } }, - { 5047, new MobData { Threat=MobData.ThreatLevel.Caution, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{}, MobNotes="Immune to Pomander of Witching" } }, - { 5048, new MobData { Threat=MobData.ThreatLevel.Caution, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = false}, MobNotes="Immune to Pomander of Witching" } }, - { 5049, new MobData { Threat=MobData.ThreatLevel.Caution, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{}, MobNotes="Immune to Pomander of Witching" } }, - { 5050, new MobData { Threat=MobData.ThreatLevel.Caution, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{}, MobNotes="Immune to Pomander of Witching" } }, - { 5051, new MobData { Threat=MobData.ThreatLevel.Caution, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{}, MobNotes="Immune to Pomander of Witching" } }, - { 5052, new MobData { Threat=MobData.ThreatLevel.Caution, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{}, MobNotes="Immune to Pomander of Witching" } }, - { 5053, new MobData { Threat=MobData.ThreatLevel.Caution, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{}, MobNotes="Immune to Pomander of Witching" } }, - { 5283, new MobData { Threat=MobData.ThreatLevel.Caution, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{}, MobNotes="Immune to Pomander of Witching" } }, - { 5284, new MobData { Threat=MobData.ThreatLevel.Caution, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{}, MobNotes="Immune to Pomander of Witching" } }, - { 5285, new MobData { Threat=MobData.ThreatLevel.Caution, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{}, MobNotes="Immune to Pomander of Witching" } }, - { 5286, new MobData { Threat=MobData.ThreatLevel.Caution, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{}, MobNotes="Immune to Pomander of Witching" } }, - { 5287, new MobData { Threat=MobData.ThreatLevel.Caution, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{}, MobNotes="Immune to Pomander of Witching" } }, - { 5288, new MobData { Threat=MobData.ThreatLevel.Caution, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{}, MobNotes="Immune to Pomander of Witching" } }, - { 5289, new MobData { Threat=MobData.ThreatLevel.Caution, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{}, MobNotes="Immune to Pomander of Witching" } }, - { 5290, new MobData { Threat=MobData.ThreatLevel.Caution, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{}, MobNotes="Immune to Pomander of Witching" } }, - { 5291, new MobData { Threat=MobData.ThreatLevel.Caution, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{}, MobNotes="Immune to Pomander of Witching" } }, - { 5292, new MobData { Threat=MobData.ThreatLevel.Caution, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{}, MobNotes="Immune to Pomander of Witching" } }, - { 5293, new MobData { Threat=MobData.ThreatLevel.Caution, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{}, MobNotes="Immune to Pomander of Witching" } }, - { 5294, new MobData { Threat=MobData.ThreatLevel.Caution, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{}, MobNotes="Immune to Pomander of Witching" } }, - { 5295, new MobData { Threat=MobData.ThreatLevel.Caution, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{}, MobNotes="Immune to Pomander of Witching" } }, - { 5296, new MobData { Threat=MobData.ThreatLevel.Caution, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{}, MobNotes="Immune to Pomander of Witching" } }, - { 5297, new MobData { Threat=MobData.ThreatLevel.Caution, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{}, MobNotes="Immune to Pomander of Witching" } }, - { 5298, new MobData { Threat=MobData.ThreatLevel.Caution, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{}, MobNotes="Immune to Pomander of Witching" } }, - // PotD 51-60 - { 5299, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = true, CanSleep = true, IsUndead = false}, MobNotes="Gaze inflicts Paralysis" } }, - { 5300, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = true, CanSleep = false, IsUndead = false}, MobNotes="" } }, - { 5301, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = true, CanSleep = true, IsUndead = true}, MobNotes="" } }, - { 5302, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = true, IsUndead = false}, MobNotes="" } }, - { 5303, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = true, CanSleep = false, IsUndead = false}, MobNotes="" } }, - { 5304, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = true, CanSleep = true, IsUndead = false}, MobNotes="" } }, - { 5305, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Proximity, Vuln = new MobData.Vulnerabilities{CanStun = true, CanSleep = false, IsUndead = false}, MobNotes="" } }, - { 5306, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = true, CanSleep = false, IsUndead = false}, MobNotes="" } }, - { 5307, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Proximity, Vuln = new MobData.Vulnerabilities{CanStun = true, CanSleep = false, IsUndead = false}, MobNotes="" } }, - { 5308, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Proximity, Vuln = new MobData.Vulnerabilities{CanStun = true, CanSleep = false, IsUndead = false}, MobNotes="Gaze inflicts Blind and does high damage" } }, - { 5309, new MobData { Threat=MobData.ThreatLevel.Caution, Aggro=MobData.AggroType.Boss, Vuln = new MobData.Vulnerabilities{CanStun = false, CanBind = false, CanHeavy = false, CanSleep = false, IsUndead = false, CanSlow = false}, MobNotes="Drops large puddle AoEs that inflict Bleed if stood in\n\"Valfodr\" -- targeted unavoidable line AoE centered on player that causes strong knockback, avoid AoEs surrounding outer edge" } }, - // PotD 61-70 - { 5311, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = true, CanSleep = true, IsUndead = false}, MobNotes="" } }, - { 5312, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = true, CanSleep = true, IsUndead = false}, MobNotes="" } }, - { 5313, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Proximity, Vuln = new MobData.Vulnerabilities{CanStun = true, CanSleep = false, IsUndead = false}, MobNotes="" } }, - { 5314, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Proximity, Vuln = new MobData.Vulnerabilities{CanStun = true, CanSleep = true, IsUndead = false}, MobNotes="" } }, - { 5315, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = true, CanSleep = true, IsUndead = false}, MobNotes="" } }, - { 5316, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = true, IsUndead = false}, MobNotes="" } }, - { 5317, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = true, CanSleep = false, IsUndead = false}, MobNotes="" } }, - { 5318, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = true, CanSleep = true, IsUndead = false}, MobNotes="" } }, - { 5319, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = true, CanSleep = false, IsUndead = false}, MobNotes="" } }, - { 5320, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Proximity, Vuln = new MobData.Vulnerabilities{CanStun = true, CanSleep = true, IsUndead = false}, MobNotes="" } }, - { 5321, new MobData { Threat=MobData.ThreatLevel.Caution, Aggro=MobData.AggroType.Boss, Vuln = new MobData.Vulnerabilities{CanStun = false, CanBind = false, CanHeavy = false, CanSleep = false, IsUndead = false, CanSlow = false}, MobNotes="\"Douse\" -- lingering ground AoE that inflicts Bleed if stood in and buffs boss with Haste if left in it\nOccasionally casts targeted ground AoEs" } }, - // PotD 71-80 - { 5322, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = true, CanSleep = true, IsUndead = false}, MobNotes="" } }, - { 5323, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = false, CanSleep = true, IsUndead = false}, MobNotes="" } }, - { 5324, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Proximity, Vuln = new MobData.Vulnerabilities{CanStun = false, CanSleep = false, IsUndead = false}, MobNotes="" } }, - { 5325, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = true, CanSleep = true, IsUndead = false}, MobNotes="" } }, - { 5326, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Proximity, Vuln = new MobData.Vulnerabilities{CanStun = true, CanSleep = true, IsUndead = false}, MobNotes="" } }, - { 5327, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = true, CanSleep = true, IsUndead = false}, MobNotes="" } }, - { 5328, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = true, CanSleep = true, IsUndead = false}, MobNotes="" } }, - { 5329, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Proximity, Vuln = new MobData.Vulnerabilities{CanStun = true, CanSleep = true, IsUndead = false}, MobNotes="" } }, - { 5330, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = true, CanSleep = true, IsUndead = false}, MobNotes="" } }, - { 5331, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = true, CanSleep = false, IsUndead = false}, MobNotes="" } }, - { 5332, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = true, CanSleep = true, IsUndead = false}, MobNotes="" } }, - { 5333, new MobData { Threat=MobData.ThreatLevel.Caution, Aggro=MobData.AggroType.Boss, Vuln = new MobData.Vulnerabilities{CanStun = false, CanBind = false, CanHeavy = false, CanSleep = false, CanSlow = false, IsUndead = false}, MobNotes="\"Charybdis\" -- lingering ground tornadoes that cause high damage if sucked into\nBoss will run to edge of arena and cast \"Trounce\" - wide conal AoE\nAt 17%% casts \"Ecliptic Meteor\" - HIGH DAMAGE roomwide with long cast that deals 80%% of total health damage" } }, - // PotD 81-90 - { 5334, new MobData { Threat=MobData.ThreatLevel.Caution, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = true, CanSleep = true, IsUndead = false}, MobNotes="Casts wide \"Self Destruct\" if not killed in time" } }, - { 5335, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Sound, Vuln = new MobData.Vulnerabilities{CanStun = true, CanSleep = false, IsUndead = false}, MobNotes="" } }, - { 5336, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = true, CanSleep = true, IsUndead = false}, MobNotes="" } }, - { 5337, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = false, CanSleep = false, IsUndead = false}, MobNotes="" } }, - { 5338, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Sound, Vuln = new MobData.Vulnerabilities{CanStun = true, CanSleep = false, IsUndead = false}, MobNotes="" } }, - { 5339, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = true, CanSleep = false, IsUndead = false}, MobNotes="" } }, - { 5340, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Sound, Vuln = new MobData.Vulnerabilities{CanStun = true, CanSleep = false, IsUndead = false}, MobNotes="" } }, - { 5341, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = true, CanSleep = true, IsUndead = false}, MobNotes="" } }, - { 5342, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Proximity, Vuln = new MobData.Vulnerabilities{CanStun = false, CanSleep = true, IsUndead = false}, MobNotes="" } }, - { 5343, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = true, CanSleep = false, IsUndead = false}, MobNotes="" } }, - { 5344, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Proximity, Vuln = new MobData.Vulnerabilities{CanStun = false, CanSleep = false, IsUndead = false}, MobNotes="" } }, - { 5345, new MobData { Threat=MobData.ThreatLevel.Caution, Aggro=MobData.AggroType.Boss, Vuln = new MobData.Vulnerabilities{CanStun = false, CanBind = false, CanHeavy = false, CanSleep = false, IsUndead = false, CanSlow = false}, MobNotes="Casts large AoEs\nSummons \"Grey Bomb\" - must be killed before it does high roomwide damage\nBegins long cast \"Massive Burst\" and summons \"Giddy Bomb\" that must be knocked towards the boss to interrupt cast" } }, - // PotD 91-100 - { 5346, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Proximity, Vuln = new MobData.Vulnerabilities{CanStun = true, IsUndead = true}, MobNotes="" } }, - { 5347, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Proximity, Vuln = new MobData.Vulnerabilities{CanStun = false, CanSleep = false, IsUndead = true}, MobNotes="" } }, - { 5348, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = false, IsUndead = false}, MobNotes="" } }, - { 5349, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Proximity, Vuln = new MobData.Vulnerabilities{CanStun = true, CanSleep = false, IsUndead = false}, MobNotes="" } }, - { 5350, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Sound, Vuln = new MobData.Vulnerabilities{CanSleep = false, IsUndead = false}, MobNotes="" } }, - { 5351, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Sound, Vuln = new MobData.Vulnerabilities{CanStun = true, CanSleep = false, IsUndead = false}, MobNotes="" } }, - { 5352, new MobData { Threat=MobData.ThreatLevel.Caution, Aggro=MobData.AggroType.Proximity, Vuln = new MobData.Vulnerabilities{CanStun = true, CanSleep = false, IsUndead = true}, MobNotes="" } }, - { 5353, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Proximity, Vuln = new MobData.Vulnerabilities{IsUndead = true}, MobNotes="" } }, - { 5354, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Proximity, Vuln = new MobData.Vulnerabilities{CanStun = true, CanSleep = false, IsUndead = false}, MobNotes="" } }, - { 5355, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Sound, Vuln = new MobData.Vulnerabilities{CanStun = false, CanSleep = false, IsUndead = true}, MobNotes="" } }, - { 5356, new MobData { Threat=MobData.ThreatLevel.Caution, Aggro=MobData.AggroType.Boss, Vuln = new MobData.Vulnerabilities{CanStun = false, CanBind = false, CanHeavy = false, CanSleep = false, IsUndead = false, CanSlow = false}, MobNotes="Summons adds and does large targeted AoEs -- adds are vulnerable to Pomander of Resolution's attacks" } }, - // PotD 101-110 - { 5360, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = true, CanSleep = true, IsUndead = false}, MobNotes="" } }, - { 5361, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = true, CanSleep = true, IsUndead = false}, MobNotes="" } }, - { 5362, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanSleep = false, IsUndead = false}, MobNotes="" } }, - { 5363, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = true, CanSleep = true, IsUndead = false}, MobNotes="" } }, - { 5364, new MobData { Threat=MobData.ThreatLevel.Caution, Aggro=MobData.AggroType.Proximity, Vuln = new MobData.Vulnerabilities{CanStun = true, CanSleep = true, IsUndead = false}, MobNotes="Floors 101-110: \nNothing notable (ignore threat level)\nFloors 191-200: \nDouble autos" } }, - { 5365, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = true, CanSleep = false, IsUndead = false}, MobNotes="Inflicts Poison" } }, - { 5366, new MobData { Threat=MobData.ThreatLevel.Caution, Aggro=MobData.AggroType.Proximity, Vuln = new MobData.Vulnerabilities{CanStun = true, CanSleep = false, IsUndead = false}, MobNotes="High damage \"Final Sting\"" } }, - { 5367, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Sound, Vuln = new MobData.Vulnerabilities{CanStun = true, CanSleep = false, IsUndead = false}, MobNotes="Inflicts vulnerability up" } }, - { 5368, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = true, CanSleep = false, IsUndead = false}, MobNotes="" } }, - { 5369, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = true, CanSleep = false, IsUndead = false}, MobNotes="" } }, - { 5370, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = true, CanSleep = false, IsUndead = false}, MobNotes="Mini buster \"Rhino Charge\"" } }, - { 5371, new MobData { Threat=MobData.ThreatLevel.Caution, Aggro=MobData.AggroType.Boss, Vuln = new MobData.Vulnerabilities{CanStun = false, CanBind = false, CanHeavy = false, CanSleep = false, CanSlow = false, IsUndead = false}, MobNotes="1) \"Whipcrack\" - light tankbuster\n2) \"Stormwind\" - conal AOE\n3) \"Bombination\" - circular AOE on boss inflicts Slow\n4) \"Lumisphere\" - targeted AOE on random player\n5) \"Aeroblast\" - roomwide AOE inflicts Bleed" } }, - // PotD 111-120 - { 5372, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{IsUndead = false}, MobNotes="" } }, - { 5373, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = true, IsUndead = false}, MobNotes="" } }, - { 5374, new MobData { Threat=MobData.ThreatLevel.Caution, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = true, CanSleep = true, IsUndead = false}, MobNotes="\"Sticky Tongue\" draw-in and stun attack if not facing, followed by \"Labored Leap\" AoE centered on enemy" } }, - { 5375, new MobData { Threat=MobData.ThreatLevel.Caution, Aggro=MobData.AggroType.Sound, Vuln = new MobData.Vulnerabilities{CanStun = true, CanSleep = false, IsUndead = false}, MobNotes="Eventual ENRAGE" } }, - { 5376, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = true, CanSleep = true, IsUndead = false}, MobNotes="" } }, - { 5377, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Sound, Vuln = new MobData.Vulnerabilities{CanSleep = true, IsUndead = false}, MobNotes="Casts invuln buff on itself" } }, - { 5378, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Proximity, Vuln = new MobData.Vulnerabilities{CanStun = true, CanSleep = false, IsUndead = false}, MobNotes="Area of effect Slow" } }, - { 5379, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Sound, Vuln = new MobData.Vulnerabilities{CanStun = true, CanSleep = true, IsUndead = false}, MobNotes="" } }, - { 5380, new MobData { Threat=MobData.ThreatLevel.Caution, Aggro=MobData.AggroType.Proximity, Vuln = new MobData.Vulnerabilities{CanStun = true, IsUndead = false}, MobNotes="Will inflict Sleep before casting \"Bad Breath\"" } }, - { 5381, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Proximity, Vuln = new MobData.Vulnerabilities{CanStun = true, CanSleep = false, IsUndead = false}, MobNotes="Buffs own damage" } }, - { 5382, new MobData { Threat=MobData.ThreatLevel.Dangerous, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = true, IsUndead = false}, MobNotes="Gaze attack inflicts Petrify, \"Regorge\" infllicts Poison\nWill one-shot kill anyone inflicted with Toad" } }, - { 5383, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = false, IsUndead = false}, MobNotes="" } }, - { 5384, new MobData { Threat=MobData.ThreatLevel.Caution, Aggro=MobData.AggroType.Boss, Vuln = new MobData.Vulnerabilities{CanStun = false, CanBind = false, CanHeavy = false, CanSleep = false, CanSlow = false, IsUndead = false}, MobNotes="1) \"Bloody Caress\" - high damage cleave\n2) Two telegraphed AOEs and a roomwide AOE\n3) Summons two hornets that must be killed before they \"Final Sting\"\n4) \"Rotten Stench\" - high damage line AOE" } }, - // PotD 121-130 - { 5385, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = true, CanSleep = true, IsUndead = false}, MobNotes="" } }, - { 5386, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = true, CanSleep = true, IsUndead = false}, MobNotes="" } }, - { 5387, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = false, CanSleep = true, IsUndead = false}, MobNotes="" } }, - { 5388, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = true, IsUndead = false}, MobNotes="" } }, - { 5389, new MobData { Threat=MobData.ThreatLevel.Caution, Aggro=MobData.AggroType.Proximity, Vuln = new MobData.Vulnerabilities{CanStun = true, CanSleep = true, IsUndead = false}, MobNotes="Double autos" } }, - { 5390, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = true, CanSleep = true, IsUndead = false}, MobNotes="" } }, - { 5391, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Proximity, Vuln = new MobData.Vulnerabilities{CanSleep = true, IsUndead = false}, MobNotes="" } }, - { 5392, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = false, CanSleep = false, IsUndead = false}, MobNotes="" } }, - { 5393, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Proximity, Vuln = new MobData.Vulnerabilities{CanStun = true, CanSleep = false, IsUndead = false}, MobNotes="" } }, - { 5394, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Sound, Vuln = new MobData.Vulnerabilities{CanStun = true, CanSleep = false, IsUndead = false}, MobNotes="" } }, - { 5395, new MobData { Threat=MobData.ThreatLevel.Caution, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = true, CanSleep = true, IsUndead = false}, MobNotes="\"11-Tonze Swing\" - point-blank untelegraphed AoE that does high damage and knockback" } }, - { 5396, new MobData { Threat=MobData.ThreatLevel.Caution, Aggro=MobData.AggroType.Sound, Vuln = new MobData.Vulnerabilities{CanStun = true, CanSleep = false, IsUndead = false}, MobNotes="\"Chirp\" inflicts Sleep for 15s" } }, - { 5397, new MobData { Threat=MobData.ThreatLevel.Caution, Aggro=MobData.AggroType.Boss, Vuln = new MobData.Vulnerabilities{CanStun = false, CanBind = false, CanHeavy = false, CanSleep = false, CanSlow = false, IsUndead = false}, MobNotes="1) Spread out fire and ice AOEs and don't drop them in center because: \n2) Get inside boss's hitbox for fast cast \"Fear Itself\" - will inflict high damage and Terror if not avoided" } }, - // PotD 131-140 - { 5398, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Sound, Vuln = new MobData.Vulnerabilities{CanStun = true, CanSleep = false, IsUndead = false}, MobNotes="" } }, - { 5399, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Sound, Vuln = new MobData.Vulnerabilities{CanStun = true, CanSleep = false, IsUndead = false}, MobNotes="" } }, - { 5400, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = false, CanSleep = false, IsUndead = false}, MobNotes="" } }, - { 5401, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Proximity, Vuln = new MobData.Vulnerabilities{CanStun = true, CanSleep = false, IsUndead = true}, MobNotes="" } }, - { 5402, new MobData { Threat=MobData.ThreatLevel.Caution, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = true, CanSleep = false, IsUndead = false}, MobNotes="Untelegraphed conal AoE \"Level 5 Petrify\" inflicts Petrify" } }, - { 5403, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = true, CanSleep = true, IsUndead = false}, MobNotes="" } }, - { 5404, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Proximity, Vuln = new MobData.Vulnerabilities{CanStun = true, CanSleep = false, IsUndead = false}, MobNotes="" } }, - { 5405, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Proximity, Vuln = new MobData.Vulnerabilities{CanStun = true, CanSleep = true, IsUndead = false}, MobNotes="" } }, - { 5406, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = true, CanSleep = true, IsUndead = false}, MobNotes="Casts targeted AoE that inflicts Bleed" } }, - { 5407, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = false, CanSleep = false, IsUndead = false}, MobNotes="" } }, - { 5408, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = true, CanSleep = false, IsUndead = false}, MobNotes="" } }, - { 5409, new MobData { Threat=MobData.ThreatLevel.Caution, Aggro=MobData.AggroType.Proximity, Vuln = new MobData.Vulnerabilities{CanStun = true, CanSleep = true, IsUndead = true}, MobNotes="Floors 131-140: \nNothing notable (ignore threat level)\nFloors 191-200: \nDouble autos" } }, - { 5410, new MobData { Threat=MobData.ThreatLevel.Caution, Aggro=MobData.AggroType.Boss, Vuln = new MobData.Vulnerabilities{CanStun = false, CanBind = false, CanHeavy = false, CanSleep = false, CanSlow = false, IsUndead = true}, MobNotes="1) Summons four lingering AoEs\n2) Summons two adds -- they must be killed before boss casts \"Scream\", adds will target player with high damage AoEs if not dead" } }, - // PotD 141-150 - { 5411, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{IsUndead = false}, MobNotes="" } }, - { 5412, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{IsUndead = false}, MobNotes="" } }, - { 5413, new MobData { Threat=MobData.ThreatLevel.Caution, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = true, IsUndead = false}, MobNotes="\"Charybdis\" - semi-enrage that drops party health to 1%%" } }, - { 5414, new MobData { Threat=MobData.ThreatLevel.Dangerous, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = true, IsUndead = false}, MobNotes="Very high damage, inflicts Poison" } }, - { 5415, new MobData { Threat=MobData.ThreatLevel.Dangerous, Aggro=MobData.AggroType.Proximity, Vuln = new MobData.Vulnerabilities{CanStun = true, IsUndead = false}, MobNotes="Floors 141-150: \nNothing notable (ignore threat level)\nFloors 191-200: \nCasts large donut AoE \"Death Spiral\" that deals heavy damage\nHas soft enrage of a strong damage buff" } }, - { 5416, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Sound, Vuln = new MobData.Vulnerabilities{CanStun = true, IsUndead = false}, MobNotes="" } }, - { 5417, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = true, IsUndead = false}, MobNotes="" } }, - { 5418, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Proximity, Vuln = new MobData.Vulnerabilities{CanStun = true, IsUndead = false}, MobNotes="" } }, - { 5419, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = true, IsUndead = false}, MobNotes="" } }, - { 5420, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Proximity, Vuln = new MobData.Vulnerabilities{CanStun = false, IsUndead = false}, MobNotes="Casts Gaze \"Evil Eye\"" } }, - { 5421, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{IsUndead = false}, MobNotes="Buffs own damage, untelegraphed high damage \"Ripper Claw\" - can be avoided by walking behind" } }, - { 5422, new MobData { Threat=MobData.ThreatLevel.Caution, Aggro=MobData.AggroType.Proximity, Vuln = new MobData.Vulnerabilities{CanStun = true, IsUndead = true}, MobNotes="High health and very large AoE \"Scream\"" } }, - { 5423, new MobData { Threat=MobData.ThreatLevel.Dangerous, Aggro=MobData.AggroType.Sound, Vuln = new MobData.Vulnerabilities{CanStun = false, IsUndead = true}, MobNotes="Very high damage for the floors it appears on" } }, - { 5424, new MobData { Threat=MobData.ThreatLevel.Caution, Aggro=MobData.AggroType.Boss, Vuln = new MobData.Vulnerabilities{CanStun = false, CanBind = false, CanHeavy = false, CanSleep = false, CanSlow = false, IsUndead = false}, MobNotes="Summons adds\n\"Fanatic Zombie\" will grab player and root in place until killed\n\"Fanatic Succubus\" will heal boss if it reaches it" } }, - // PotD 151-160 - { 5429, new MobData { Threat=MobData.ThreatLevel.Caution, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = true, CanBind = true, CanHeavy = true, CanSleep = true, IsUndead = false}, MobNotes="Double autos\nGaze inflicts Paralysis" } }, - { 5430, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = true, CanBind = false, CanHeavy = false, CanSleep = false, IsUndead = false}, MobNotes="Inflicts Vuln Up debuff" } }, - { 5431, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = true, CanBind = false, CanHeavy = false, CanSleep = false, IsUndead = false}, MobNotes="\"Ice Spikes\" reflects damage\n\"Void Blizzard\" inflicts Slow" } }, - { 5432, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = true, CanBind = false, CanHeavy = false, CanSleep = false, IsUndead = false}, MobNotes="" } }, - { 5433, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = true, CanBind = true, CanHeavy = true, CanSleep = false, IsUndead = false}, MobNotes="Double autos that lifesteal" } }, - { 5434, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Proximity, Vuln = new MobData.Vulnerabilities{CanStun = true, CanBind = false, CanHeavy = false, CanSleep = false, IsUndead = false}, MobNotes="" } }, - { 5435, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = true, CanBind = false, CanHeavy = false, CanSleep = false, IsUndead = false}, MobNotes="" } }, - { 5436, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Proximity, Vuln = new MobData.Vulnerabilities{CanStun = true, CanBind = false, CanHeavy = false, CanSleep = false, IsUndead = false}, MobNotes="Double autos" } }, - { 5437, new MobData { Threat=MobData.ThreatLevel.Caution, Aggro=MobData.AggroType.Proximity, Vuln = new MobData.Vulnerabilities{CanStun = true, CanBind = true, CanHeavy = true, CanSleep = false, IsUndead = false}, MobNotes="Double autos\nGaze inflicts heavy damage and Blind" } }, - { 5438, new MobData { Threat=MobData.ThreatLevel.Caution, Aggro=MobData.AggroType.Boss, Vuln = new MobData.Vulnerabilities{CanStun = false, CanBind = false, CanHeavy = false, CanSleep = false, CanSlow = false, IsUndead = false}, MobNotes="Drops lingering AoEs that cause heavy Bleed if stood in\n\"Valfodr\" -- targeted unavoidable line AoE centered on player that causes strong knockback, avoid AoEs surrounding outer edge" } }, - // PotD 161-170 - { 5439, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = true, CanBind = true, CanHeavy = true, CanSleep = true, IsUndead = false}, MobNotes="" } }, - { 5440, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = true, CanBind = false, CanHeavy = true, CanSleep = true, IsUndead = false}, MobNotes="" } }, - { 5441, new MobData { Threat=MobData.ThreatLevel.Caution, Aggro=MobData.AggroType.Proximity, Vuln = new MobData.Vulnerabilities{CanStun = true, CanBind = true, CanHeavy = true, CanSleep = true, IsUndead = false}, MobNotes="" } }, - { 5442, new MobData { Threat=MobData.ThreatLevel.Caution, Aggro=MobData.AggroType.Proximity, Vuln = new MobData.Vulnerabilities{CanStun = true, CanBind = false, CanHeavy = true, CanSleep = true, IsUndead = false}, MobNotes="Double autos" } }, - { 5443, new MobData { Threat=MobData.ThreatLevel.Caution, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = true, CanBind = true, CanHeavy = true, CanSleep = true, IsUndead = false}, MobNotes="Double autos" } }, - { 5444, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = true, CanBind = false, CanHeavy = false, CanSleep = false, IsUndead = false}, MobNotes="" } }, - { 5445, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = true, CanBind = false, CanHeavy = false, CanSleep = false, IsUndead = false}, MobNotes="" } }, - { 5446, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = true, CanBind = true, CanHeavy = true, CanSleep = true, IsUndead = false}, MobNotes="" } }, - { 5447, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = true, CanBind = false, CanHeavy = false, CanSleep = false, IsUndead = false}, MobNotes="" } }, - { 5448, new MobData { Threat=MobData.ThreatLevel.Caution, Aggro=MobData.AggroType.Proximity, Vuln = new MobData.Vulnerabilities{CanStun = true, CanBind = true, CanHeavy = true, CanSleep = true, IsUndead = false}, MobNotes="" } }, - { 5449, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Boss, Vuln = new MobData.Vulnerabilities{CanStun = false, CanBind = false, CanHeavy = false, CanSleep = false, CanSlow = false, IsUndead = false}, MobNotes="\"Douse\" -- lingering ground AoE that inflicts Bleed if stood in and buffs boss with Haste and Damage Up if left in it\nOccasionally inflicts Heavy and casts targeted ground AoEs " } }, - // PotD 171-180 - { 5450, new MobData { Threat=MobData.ThreatLevel.Caution, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = true, CanBind = true, CanHeavy = true, CanSleep = true, IsUndead = false}, MobNotes="Double autos" } }, - { 5451, new MobData { Threat=MobData.ThreatLevel.Caution, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = false, CanBind = false, CanHeavy = false, CanSleep = true, IsUndead = false}, MobNotes="Has semi-enrage around 30s in combat" } }, - { 5452, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Proximity, Vuln = new MobData.Vulnerabilities{CanStun = false, CanBind = false, CanHeavy = false, CanSleep = false, IsUndead = false}, MobNotes="\"Revelation\" inflicts Confusion\n\"Tropical Wind\" gives enemy a large Haste and damage buff" } }, - { 5453, new MobData { Threat=MobData.ThreatLevel.Caution, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = true, CanBind = false, CanHeavy = true, CanSleep = true, IsUndead = false}, MobNotes="\"Glower\" - untelegraphed line AoE\n\"100-Tonze Swing\" - untelegraphed point-blank AoE" } }, - { 5454, new MobData { Threat=MobData.ThreatLevel.Caution, Aggro=MobData.AggroType.Proximity, Vuln = new MobData.Vulnerabilities{CanStun = true, CanBind = false, CanHeavy = true, CanSleep = true, IsUndead = false}, MobNotes="Buffs own damage and inflicts Physical Vuln Up with AoE damage out of combat" } }, - { 5455, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = true, CanBind = true, CanHeavy = true, CanSleep = true, IsUndead = false}, MobNotes="" } }, - { 5456, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = true, CanBind = true, CanHeavy = true, CanSleep = true, IsUndead = false}, MobNotes="" } }, - { 5457, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Proximity, Vuln = new MobData.Vulnerabilities{CanStun = true, CanBind = true, CanHeavy = true, CanSleep = true, IsUndead = false}, MobNotes="" } }, - { 5458, new MobData { Threat=MobData.ThreatLevel.Caution, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = true, CanBind = true, CanHeavy = true, CanSleep = true, IsUndead = false}, MobNotes="Double autos" } }, - { 5459, new MobData { Threat=MobData.ThreatLevel.Vicious, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = true, CanBind = false, CanHeavy = false, CanSleep = false, IsUndead = false}, MobNotes="Cleave inflicts Bleed\n\"Flying Frenzy\" targets a player and does heavy damage, Vuln Down, and stuns" } }, - { 5460, new MobData { Threat=MobData.ThreatLevel.Dangerous, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = true, CanBind = true, CanHeavy = true, CanSleep = true, IsUndead = false}, MobNotes="Cleave does heavy damage and inflicts potent Bleed" } }, - { 5461, new MobData { Threat=MobData.ThreatLevel.Dangerous, Aggro=MobData.AggroType.Boss, Vuln = new MobData.Vulnerabilities{CanStun = false, CanBind = false, CanHeavy = false, CanSleep = false, CanSlow = false, IsUndead = false}, MobNotes="\"Charybdis\" -- lingering ground tornadoes cast twice in a row that cause high damage if sucked into\nBoss will run to top or bottom of arena and cast \"Trounce\" - wide conal AoE\nAt 15%% casts FAST CAST \"Ecliptic Meteor\" - HIGH DAMAGE roomwide with long cast that deals 80%% of total health damage every 9 seconds" } }, - // PotD 181-190 - { 5462, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = true, CanBind = true, CanHeavy = true, CanSleep = true, IsUndead = false}, MobNotes="" } }, - { 5463, new MobData { Threat=MobData.ThreatLevel.Caution, Aggro=MobData.AggroType.Sound, Vuln = new MobData.Vulnerabilities{CanStun = true, CanBind = true, CanHeavy = true, CanSleep = false, IsUndead = false}, MobNotes="Double autos" } }, - { 5464, new MobData { Threat=MobData.ThreatLevel.Vicious, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = false, CanBind = true, CanHeavy = true, CanSleep = false, IsUndead = false}, MobNotes="Instant AoE that inflicts heavy Bleed" } }, - { 5465, new MobData { Threat=MobData.ThreatLevel.Dangerous, Aggro=MobData.AggroType.Sound, Vuln = new MobData.Vulnerabilities{CanStun = false, CanBind = true, CanHeavy = true, CanSleep = false, IsUndead = false}, MobNotes="Instant AoE on pull, double autos\nAt 30 seconds will cast semi-enrage" } }, - { 5466, new MobData { Threat=MobData.ThreatLevel.Caution, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = false, CanBind = true, CanHeavy = true, CanSleep = false, IsUndead = false}, MobNotes="Sucks in player and does heavy damage\n\"Tail Screw\" does damage and inflicts Slow" } }, - { 5467, new MobData { Threat=MobData.ThreatLevel.Dangerous, Aggro=MobData.AggroType.Sound, Vuln = new MobData.Vulnerabilities{CanStun = true, CanBind = true, CanHeavy = true, CanSleep = false, IsUndead = false}, MobNotes="Instant AoE burst does heavy damage and inflicts Slow\nInstant cone inflicts Poison" } }, - { 5468, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Proximity, Vuln = new MobData.Vulnerabilities{CanStun = false, CanBind = true, CanHeavy = true, CanSleep = false, IsUndead = false}, MobNotes="" } }, - { 5469, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Sound, Vuln = new MobData.Vulnerabilities{CanStun = true, CanBind = true, CanHeavy = true, CanSleep = false, IsUndead = false}, MobNotes="" } }, - { 5470, new MobData { Threat=MobData.ThreatLevel.Vicious, Aggro=MobData.AggroType.Proximity, Vuln = new MobData.Vulnerabilities{CanStun = false, CanBind = true, CanHeavy = true, CanSleep = true, IsUndead = false}, MobNotes="If familiar with chimera mechanics can be engaged\n\"The Dragon's Voice\" - be inside hitbox\n\"The Ram's Voice\" - be outside of melee range" } }, - { 5471, new MobData { Threat=MobData.ThreatLevel.Dangerous, Aggro=MobData.AggroType.Boss, Vuln = new MobData.Vulnerabilities{CanStun = false, CanBind = false, CanHeavy = false, CanSleep = false, CanSlow = false, IsUndead = false}, MobNotes="Kill blue bomb when it appears\nPush red bomb into boss during \"Massive Burst\" cast, will wipe party if not stunned\nBoss has cleave that does heavy damage" } }, - // PotD 191-200 - { 5472, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Sound, Vuln = new MobData.Vulnerabilities{CanStun = false, CanBind = false, CanHeavy = false, CanSleep = false, IsUndead = false}, MobNotes="" } }, - { 5473, new MobData { Threat=MobData.ThreatLevel.Dangerous, Aggro=MobData.AggroType.Sight, Vuln = new MobData.Vulnerabilities{CanStun = false, CanBind = false, CanHeavy = false, CanSleep = false, IsUndead = false}, MobNotes="Casts untelegraphed cone \"Level 5 Death\"" } }, - { 5474, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Proximity, Vuln = new MobData.Vulnerabilities{CanStun = false, CanBind = false, CanHeavy = true, CanSleep = false, IsUndead = false}, MobNotes="" } }, - { 5475, new MobData { Threat=MobData.ThreatLevel.Caution, Aggro=MobData.AggroType.Proximity, Vuln = new MobData.Vulnerabilities{CanStun = true, CanBind = false, CanHeavy = false, CanSleep = false, IsUndead = true}, MobNotes="Double auto" } }, - // PotD misc. - { 5479, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Sound, Vuln = new MobData.Vulnerabilities{CanStun = true, CanBind = false, CanHeavy = false, CanSleep = false, IsUndead = false}, MobNotes="" } }, - { 5480, new MobData { Threat=MobData.ThreatLevel.Easy, Aggro=MobData.AggroType.Sound, Vuln = new MobData.Vulnerabilities{CanStun = true, CanBind = false, CanHeavy = false, CanSleep = false, IsUndead = false}, MobNotes="" } }, - { 2566, new MobData { Threat=MobData.ThreatLevel.Caution, Aggro=MobData.AggroType.Proximity, Vuln = new MobData.Vulnerabilities{CanStun = false}, MobNotes="High damage autos and instant kill AoE\n\"Infatuation\" can only be interrupted with interject" } }, - - }; - } -} diff --git a/DeepDungeonDex.csproj b/DeepDungeonDex.csproj index efb18eb..02ada1c 100644 --- a/DeepDungeonDex.csproj +++ b/DeepDungeonDex.csproj @@ -10,10 +10,11 @@ true false false + true + false + $(AppData)\XIVLauncher\devPlugins\DeepDungeonDex\ - - $(AppData)\XIVLauncher\addon\Hooks\dev\Dalamud.dll @@ -42,6 +43,9 @@ + + Always + Always @@ -49,7 +53,7 @@ - + diff --git a/Plugin.cs b/Plugin.cs index 96d56d2..389948f 100644 --- a/Plugin.cs +++ b/Plugin.cs @@ -1,4 +1,5 @@ using System; +using Dalamud.Data; using Dalamud.Game.ClientState; using Dalamud.Plugin; using Dalamud.Game.ClientState.Conditions; @@ -6,53 +7,47 @@ using Dalamud.Game.ClientState.Objects.Types; using Dalamud.Game.Command; using Dalamud.Game; +using Dalamud.Game.Gui; +using Dalamud.Game.Network; +using Dalamud.IoC; +using DeepDungeonDex.Data; namespace DeepDungeonDex { public class Plugin : IDalamudPlugin { - private DalamudPluginInterface pluginInterface; private Configuration config; private PluginUI ui; private ConfigUI cui; private GameObject previousTarget; - private ClientState _clientState; - private Condition _condition; - private TargetManager _targetManager; - private Framework _framework; - private CommandManager _commands; + + [PluginService] internal static DalamudPluginInterface PluginInterface { get; private set; } = null!; + [PluginService] internal static ClientState ClientState { get; private set; } = null!; + [PluginService] internal static CommandManager CommandManager { get; private set; } = null!; + [PluginService] internal static Condition Condition { get; private set; } = null!; + [PluginService] internal static Framework Framework { get; private set; } = null!; + [PluginService] internal static TargetManager Targets { get; private set; } = null!; public string Name => "DeepDungeonDex"; - public Plugin( - DalamudPluginInterface pluginInterface, - ClientState clientState, - CommandManager commands, - Condition condition, - Framework framework, - //SeStringManager seStringManager, - TargetManager targets) + public Plugin() { - this.pluginInterface = pluginInterface; - this._clientState = clientState; - this._condition = condition; - this._framework = framework; - this._commands = commands; - this._targetManager = targets; - - this.config = (Configuration)this.pluginInterface.GetPluginConfig() ?? new Configuration(); - this.config.Initialize(this.pluginInterface); - this.ui = new PluginUI(config, clientState); + DataHandler.Load(); + + this.config = (Configuration)PluginInterface.GetPluginConfig() ?? new Configuration(); + this.config.Initialize(PluginInterface); + this.ui = new PluginUI(config, ClientState); this.cui = new ConfigUI(config.Opacity, config.IsClickthrough, config.HideRedVulns, config.HideBasedOnJob, config); - this.pluginInterface.UiBuilder.Draw += this.ui.Draw; - this.pluginInterface.UiBuilder.Draw += this.cui.Draw; + + PluginInterface.UiBuilder.Draw += this.ui.Draw; + PluginInterface.UiBuilder.Draw += this.cui.Draw; - this._commands.AddHandler("/pddd", new CommandInfo(OpenConfig) + CommandManager.AddHandler("/pddd", new CommandInfo(OpenConfig) { HelpMessage = "DeepDungeonDex config" }); - - this._framework.Update += this.GetData; + + Framework.Update += this.GetData; } public void OpenConfig(string command, string args) @@ -62,12 +57,12 @@ public void OpenConfig(string command, string args) public void GetData(Framework framework) { - if (!this._condition[ConditionFlag.InDeepDungeon]) + if (!Condition[ConditionFlag.InDeepDungeon]) { ui.IsVisible = false; return; } - GameObject target = _targetManager.Target; + GameObject target = Targets.Target; TargetData t = new TargetData(); if (!t.IsValidTarget(target)) @@ -87,16 +82,14 @@ protected virtual void Dispose(bool disposing) { if (!disposing) return; - this._commands.RemoveHandler("/pddd"); - - this.pluginInterface.SavePluginConfig(this.config); + CommandManager.RemoveHandler("/pddd"); - this.pluginInterface.UiBuilder.Draw -= this.ui.Draw; - this.pluginInterface.UiBuilder.Draw -= this.cui.Draw; + PluginInterface.SavePluginConfig(this.config); - this._framework.Update -= this.GetData; + PluginInterface.UiBuilder.Draw -= this.ui.Draw; + PluginInterface.UiBuilder.Draw -= this.cui.Draw; - this.pluginInterface.Dispose(); + Framework.Update -= this.GetData; } public void Dispose() diff --git a/PluginUI.cs b/PluginUI.cs index 0aa5f88..2946827 100644 --- a/PluginUI.cs +++ b/PluginUI.cs @@ -1,6 +1,7 @@ using ImGuiNET; using System.Numerics; using Dalamud.Game.ClientState; +using DeepDungeonDex.Data; namespace DeepDungeonDex { @@ -89,22 +90,22 @@ public void Draw() ImGui.Text("Threat:\n"); switch (mobData.Threat) { - case DataHandler.MobData.ThreatLevel.Easy: + case MobData.ThreatLevel.Easy: ImGui.PushStyleColor(ImGuiCol.Text, 0xFF00FF00); ImGui.Text("Easy"); ImGui.PopStyleColor(); break; - case DataHandler.MobData.ThreatLevel.Caution: + case MobData.ThreatLevel.Caution: ImGui.PushStyleColor(ImGuiCol.Text, 0xFF00FFFF); ImGui.Text("Caution"); ImGui.PopStyleColor(); break; - case DataHandler.MobData.ThreatLevel.Dangerous: + case MobData.ThreatLevel.Dangerous: ImGui.PushStyleColor(ImGuiCol.Text, 0xFF0000FF); ImGui.Text("Dangerous"); ImGui.PopStyleColor(); break; - case DataHandler.MobData.ThreatLevel.Vicious: + case MobData.ThreatLevel.Vicious: ImGui.PushStyleColor(ImGuiCol.Text, 0xFFFF00FF); ImGui.Text("Vicious"); ImGui.PopStyleColor(); diff --git a/data.yml b/data.yml new file mode 100644 index 0000000..baf2f3e --- /dev/null +++ b/data.yml @@ -0,0 +1,4870 @@ +# -------------------------- +# HoH +# -------------------------- + +# -------------------------- +# HoH floors 1-9 +# -------------------------- +7262: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: + canBind: + isUndead: + mobNotes: Auto inflicts Heavy debuff + threat: Easy + aggro: Sight +7263: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: + canBind: + isUndead: + mobNotes: Auto applies Physical Vuln Up every 10s + threat: Easy + aggro: Sight +7264: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: + canBind: + isUndead: + mobNotes: AoE applies Paralysis + threat: Easy + aggro: Sight +7265: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: + canBind: + isUndead: + mobNotes: Triple auto inflicts Bleed + threat: Dangerous + aggro: Proximity +7266: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: + canBind: + isUndead: + mobNotes: Untelegraphed Sleep followed by AoE + threat: Caution + aggro: Sight +7267: + vuln: + canStun: false + canHeavy: + canSlow: + canSleep: + canBind: + isUndead: + mobNotes: AoE applies Bleed + threat: Easy + aggro: Sight +7268: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: + canBind: + isUndead: + mobNotes: Gaze + threat: Easy + aggro: Sight +7269: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: + canBind: + isUndead: + mobNotes: '' + threat: Easy + aggro: Proximity +7270: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: + canBind: + isUndead: + mobNotes: AoE inflicts knockback + threat: Easy + aggro: Sight +7271: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: + canBind: + isUndead: + mobNotes: >- + Conal AoE inflicts Bleed + + Circle AoE inflicts knockback + threat: Easy + aggro: Sight +7272: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: + canBind: + isUndead: + mobNotes: Unavoidable tankbuster-like "Jaws" + threat: Dangerous + aggro: Sight +7273: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: + canBind: + isUndead: + mobNotes: Untelegraphed buster inflicts Bleed and knockback + threat: Caution + aggro: Sight +7274: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: + canBind: + isUndead: + mobNotes: '' + threat: Easy + aggro: Sight +# -------------------------- +# HoH floors 11-19 +# -------------------------- +7275: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: + canBind: + isUndead: + mobNotes: '' + threat: Easy + aggro: Sight +7276: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: + canBind: + isUndead: + mobNotes: '' + threat: Easy + aggro: Proximity +7277: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: + canBind: + isUndead: + mobNotes: '' + threat: Easy + aggro: Sight +7278: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: + canBind: + isUndead: + mobNotes: '' + threat: Easy + aggro: Sight +7279: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: + canBind: + isUndead: + mobNotes: Lite buster "Scissor Run" followed by AoE + threat: Caution + aggro: Sight +7280: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: + canBind: + isUndead: + mobNotes: '' + threat: Easy + aggro: Proximity +7281: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: + canBind: + isUndead: + mobNotes: Gaze inflicts Seduce, followed by large AoE that inflicts Minimum + threat: Caution + aggro: Sight +7282: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: + canBind: + isUndead: + mobNotes: '' + threat: Easy + aggro: Sight +7283: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: + canBind: + isUndead: + mobNotes: '' + threat: Easy + aggro: Sight +7284: + vuln: + canStun: false + canHeavy: + canSlow: + canSleep: + canBind: + isUndead: + mobNotes: '' + threat: Easy + aggro: Sight +7285: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: + canBind: + isUndead: + mobNotes: Buster and triple auto + threat: Caution + aggro: Sight +7286: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: + canBind: + isUndead: + mobNotes: Roomwide ENRAGE + threat: Dangerous + aggro: Sight +7287: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: + canBind: + isUndead: + mobNotes: '' + threat: Easy + aggro: Sight +# -------------------------- +# HoH floors 21-29 +# -------------------------- +7288: + vuln: + canStun: true + canHeavy: true + canSlow: + canSleep: + canBind: false + isUndead: + mobNotes: Gaze inflicts Blind + threat: Easy + aggro: Proximity +7289: + vuln: + canStun: true + canHeavy: true + canSlow: + canSleep: true + canBind: + isUndead: + mobNotes: Cures self and allies + threat: Easy + aggro: Sight +7290: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: false + canBind: + isUndead: + mobNotes: >- + Casts AoEs with knockback unaggroed + + Line AoE inflicts Bleed + threat: Easy + aggro: Proximity +7291: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: true + canBind: + isUndead: + mobNotes: Buffs own damage + threat: Easy + aggro: Sight +7292: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: false + canBind: + isUndead: + mobNotes: Untelegraphed conal AoE with knockback, buster + threat: Caution + aggro: Proximity +7293: + vuln: + canStun: false + canHeavy: + canSlow: + canSleep: + canBind: + isUndead: + mobNotes: '' + threat: Easy + aggro: Sight +7294: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: true + canBind: + isUndead: + mobNotes: '' + threat: Easy + aggro: Sight +7295: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: + canBind: + isUndead: + mobNotes: Draw-in followed by cleave + threat: Caution + aggro: Proximity +7296: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: + canBind: + isUndead: + mobNotes: Gaze + threat: Easy + aggro: Sight +7297: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: true + canBind: + isUndead: + mobNotes: Line AoE inflicts Bleed + threat: Easy + aggro: Sound +7298: + vuln: + canStun: true + canHeavy: true + canSlow: + canSleep: + canBind: + isUndead: + mobNotes: Cross AoE inflicts Suppuration + threat: Easy + aggro: Sight +7299: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: + canBind: + isUndead: + mobNotes: Large AoE inflicts Paralysis + threat: Easy + aggro: Sight +7300: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: + canBind: + isUndead: + mobNotes: Circle AoE inflicts Suppuration + threat: Easy + aggro: Sight +# -------------------------- +# HoH floors 31-39 +# -------------------------- +7301: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: + canBind: + isUndead: + mobNotes: '' + threat: Easy + aggro: Sight +7302: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: + canBind: + isUndead: + mobNotes: Casts AoEs unaggroed + threat: Easy + aggro: Sight +7303: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: + canBind: + isUndead: + mobNotes: >- + Double auto inflicts Bleed + + Low health ENRAGE + threat: Caution + aggro: Sight +7304: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: + canBind: + isUndead: + mobNotes: Low health ENRAGE + threat: Caution + aggro: Sight +7305: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: + canBind: + isUndead: + mobNotes: >- + Line AoE inflicts Bleed + + Low health ENRAGE + threat: Caution + aggro: Sight +7306: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: + canBind: + isUndead: + mobNotes: Cleaves every other auto + threat: Easy + aggro: Sight +7307: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: + canBind: + isUndead: + mobNotes: '' + threat: Easy + aggro: Sight +7308: + vuln: + canStun: false + canHeavy: + canSlow: + canSleep: + canBind: + isUndead: + mobNotes: Weak stack attack + threat: Easy + aggro: Sight +7309: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: + canBind: + isUndead: + mobNotes: '' + threat: Easy + aggro: Sight +7310: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: + canBind: + isUndead: + mobNotes: Extremely large AoE + threat: Caution + aggro: Sight +7311: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: + canBind: + isUndead: + mobNotes: >- + Line AoE inflicts Bleed + + Low health ENRAGE + threat: Caution + aggro: Sight +7312: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: + canBind: + isUndead: + mobNotes: Frontal cleave without cast or telegraph + threat: Caution + aggro: Sight +7313: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: + canBind: + isUndead: + mobNotes: Gaze inflicts Otter + threat: Caution + aggro: Sight +# -------------------------- +# HoH floors 41-49 +# -------------------------- +7314: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: + canBind: + isUndead: + mobNotes: Casts AoEs unaggroed + threat: Caution + aggro: Sight +7315: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: + canBind: + isUndead: + mobNotes: '' + threat: Easy + aggro: Proximity +7316: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: + canBind: + isUndead: + mobNotes: '' + threat: Easy + aggro: Sight +7317: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: + canBind: + isUndead: + mobNotes: '' + threat: Easy + aggro: Sight +7318: + vuln: + canStun: false + canHeavy: + canSlow: + canSleep: + canBind: + isUndead: + mobNotes: >- + Large line AoE + + Eventual ENRAGE + threat: Caution + aggro: Sight +7319: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: + canBind: + isUndead: + mobNotes: Casts AoEs unaggroed + threat: Caution + aggro: Sight +7320: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: + canBind: + isUndead: + mobNotes: 'Purple: double auto' + threat: Caution + aggro: Sight +7321: + vuln: + canStun: false + canHeavy: + canSlow: + canSleep: + canBind: + isUndead: + mobNotes: Large cone AoE + threat: Easy + aggro: Sight +7322: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: + canBind: + isUndead: + mobNotes: '' + threat: Easy + aggro: Sight +7323: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: + canBind: + isUndead: + mobNotes: 'Green: Casts AoEs unaggroed' + threat: Easy + aggro: Sight +7324: + vuln: + canStun: false + canHeavy: + canSlow: + canSleep: + canBind: + isUndead: + mobNotes: Very wide line AoE + threat: Caution + aggro: Sight +7325: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: + canBind: + isUndead: + mobNotes: '' + threat: Easy + aggro: Sight +7326: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: + canBind: + isUndead: + mobNotes: Eventual ENRAGE + threat: Caution + aggro: Sound +# -------------------------- +# HoH floors 51-59 +# -------------------------- +7327: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: + canBind: + isUndead: + mobNotes: Autos inflict stacking vuln up + threat: Caution + aggro: Sound +7328: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: + canBind: + isUndead: + mobNotes: Buster inflicts Bleed + threat: Caution + aggro: Sound +7329: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: + canBind: + isUndead: + mobNotes: Buffs own damage + threat: Caution + aggro: Sight +7330: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: + canBind: + isUndead: + mobNotes: Eventual instant ENRAGE + threat: Caution + aggro: Sight +7331: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: + canBind: + isUndead: + mobNotes: Cone AoE inflicts Bleed + threat: Easy + aggro: Sight +7332: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: + canBind: + isUndead: + mobNotes: Exclusively fatal line AoEs + threat: Caution + aggro: Proximity +7333: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: + canBind: + isUndead: + mobNotes: '' + threat: Easy + aggro: Sight +7334: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: + canBind: + isUndead: + mobNotes: '' + threat: Easy + aggro: Sight +7335: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: + canBind: + isUndead: + mobNotes: Draw-in attack + threat: Easy + aggro: Sight +7336: + vuln: + canStun: false + canHeavy: + canSlow: + canSleep: + canBind: + isUndead: + mobNotes: Instant AoEs on targeted player unaggroed + threat: Caution + aggro: Sight +7337: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: + canBind: + isUndead: + mobNotes: Conal gaze, very quick low health ENRAGE + threat: Dangerous + aggro: Sight +7338: + vuln: + canStun: false + canHeavy: + canSlow: + canSleep: + canBind: + isUndead: + mobNotes: '' + threat: Easy + aggro: Sight +7339: + vuln: + canStun: false + canHeavy: + canSlow: + canSleep: + canBind: + isUndead: + mobNotes: '' + threat: Easy + aggro: Sight +# -------------------------- +# HoH floors 61-69 +# -------------------------- +7340: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: + canBind: + isUndead: + mobNotes: Inflicts stacking Poison that lasts 30s + threat: Caution + aggro: Proximity +7341: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: + canBind: + isUndead: + mobNotes: Inflicts stacking vuln up + threat: Caution + aggro: Sight +7342: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: + canBind: + isUndead: + mobNotes: '' + threat: Easy + aggro: Sight +7343: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: + canBind: + isUndead: + mobNotes: Fast alternating line AoEs that inflict Paralysis + threat: Caution + aggro: Proximity +7344: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: + canBind: + isUndead: + mobNotes: Caster, double auto + threat: Easy + aggro: Sound +7345: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: + canBind: + isUndead: + mobNotes: Conal AoE inflicts Paralysis + threat: Easy + aggro: Sight +7346: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: + canBind: + isUndead: + mobNotes: Cleave and potent Poison + threat: Caution + aggro: Sight +7347: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: + canBind: + isUndead: + mobNotes: Large donut AoE, gaze attack inflicts Fear + threat: Caution + aggro: Sight +7348: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: + canBind: + isUndead: + mobNotes: Large circular AoE inflicts Bleed + threat: Easy + aggro: Sight +7349: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: + canBind: + isUndead: + mobNotes: Buffs own or ally's defense + threat: Caution + aggro: Sight +7350: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: + canBind: + isUndead: + mobNotes: AoE inflicts numerous debuffs at once + threat: Caution + aggro: Sight +7351: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: + canBind: + isUndead: + mobNotes: '' + threat: Easy + aggro: Sight +# -------------------------- +# HoH floors 71-79 +# -------------------------- +7352: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: + canBind: + isUndead: + mobNotes: '' + threat: Easy + aggro: Sight +7353: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: + canBind: + isUndead: + mobNotes: >- + Casts large AoE unaggroed + + Extremely large circular AoE + threat: Caution + aggro: Proximity +7354: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: + canBind: + isUndead: + mobNotes: Untelegraphed knockback on rear + threat: Easy + aggro: Sight +7355: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: + canBind: + isUndead: + mobNotes: Double auto inflicts Bleed + threat: Caution + aggro: Sight +7356: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: + canBind: + isUndead: + mobNotes: Casts AoEs unaggroed that inflict Deep Freeze + threat: Caution + aggro: Sight +7357: + vuln: + canStun: false + canHeavy: + canSlow: + canSleep: + canBind: + isUndead: + mobNotes: >- + Casts roomwide AoEs unaggroed + + Large conal draw-in attack followed by heavy damage + threat: Dangerous + aggro: Sight +7358: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: + canBind: + isUndead: + mobNotes: Buffs own damage + threat: Caution + aggro: Sight +7359: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: + canBind: + isUndead: + mobNotes: Haste, eventual ENRAGE + threat: Dangerous + aggro: Proximity +7360: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: + canBind: + isUndead: + mobNotes: Very large AoEs + threat: Caution + aggro: Sight +7361: + vuln: + canStun: false + canHeavy: + canSlow: + canSleep: + canBind: + isUndead: + mobNotes: Draw-in attack, extremely large AoE, eventual ENRAGE + threat: Caution + aggro: Sight +7362: + vuln: + canStun: false + canHeavy: + canSlow: + canSleep: + canBind: + isUndead: + mobNotes: Extremely large conal AoE, gaze inflicts Fear + threat: Caution + aggro: Sight +7363: + vuln: + canStun: false + canHeavy: + canSlow: + canSleep: + canBind: + isUndead: + mobNotes: '' + threat: Easy + aggro: Sight +7364: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: + canBind: + isUndead: + mobNotes: Double auto and very large AoE + threat: Dangerous + aggro: Sight +# -------------------------- +# HoH floors 81-89 +# -------------------------- +7365: + vuln: + canStun: false + canHeavy: + canSlow: + canSleep: + canBind: + isUndead: + mobNotes: >- + Ram's Voice - get out + + Dragon's Voice - get in + + Telegraphed cleaves + threat: Dangerous + aggro: Proximity +7366: + vuln: + canStun: false + canHeavy: + canSlow: + canSleep: + canBind: + isUndead: + mobNotes: >- + Buffs own damage unaggroed + + Large AoE unaggroed that inflicts vuln up and stacks + threat: Dangerous + aggro: Sight +7367: + vuln: + canStun: false + canHeavy: + canSlow: + canSleep: + canBind: + isUndead: + mobNotes: Charges on aggro + threat: Easy + aggro: Sight +7368: + vuln: + canStun: false + canHeavy: + canSlow: + canSleep: + canBind: + isUndead: + mobNotes: Untelegraphed conal AoE on random player, gaze attack + threat: Caution + aggro: Sight +7369: + vuln: + canStun: false + canHeavy: + canSlow: + canSleep: + canBind: + isUndead: + mobNotes: Casts AoEs unaggroed + threat: Easy + aggro: Sight +7370: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: + canBind: + isUndead: + mobNotes: Double autos, very strong rear cleave if behind + threat: Dangerous + aggro: Sight +7371: + vuln: + canStun: false + canHeavy: + canSlow: + canSleep: + canBind: + isUndead: + mobNotes: Alternates line and circle AoEs untelegraphed + threat: Caution + aggro: Sight +7372: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: + canBind: + isUndead: + mobNotes: Buffs own damage and double autos + threat: Dangerous + aggro: Sight +7373: + vuln: + canStun: false + canHeavy: + canSlow: + canSleep: + canBind: + isUndead: + mobNotes: Draw-in attack, tons of bleed, and a stacking poison + threat: Caution + aggro: Sight +7374: + vuln: + canStun: false + canHeavy: + canSlow: + canSleep: + canBind: + isUndead: + mobNotes: Large donut AoE + threat: Easy + aggro: Proximity +7375: + vuln: + canStun: false + canHeavy: + canSlow: + canSleep: + canBind: + isUndead: + mobNotes: Cone AoE, circle AoE, partywide damage + threat: Dangerous + aggro: Sight +7376: + vuln: + canStun: false + canHeavy: + canSlow: + canSleep: + canBind: + isUndead: + mobNotes: Charges, buffs own damage, double autos, electricity Bleed + threat: Dangerous + aggro: Sight +7377: + vuln: + canStun: false + canHeavy: + canSlow: + canSleep: + canBind: + isUndead: + mobNotes: Charges, buffs own damage, untelegraphed buster "Ripper Claw" + threat: Caution + aggro: Sight +# -------------------------- +# HoH floors 91-99 +# -------------------------- +7378: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: + canBind: + isUndead: + mobNotes: >- + WAR: Triple knockback with heavy damage + + Buffs own attack + + Extremely high damage cleave with knockback + threat: Vicious + aggro: Sight +7379: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: + canBind: + isUndead: + mobNotes: 'MNK: Haste buff, short invuln' + threat: Dangerous + aggro: Sight +7380: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: + canBind: + isUndead: + mobNotes: >- + WHM: double autos + + "Stone" can be line of sighted + threat: Easy + aggro: Sight +7381: + vuln: + canStun: false + canHeavy: + canSlow: + canSleep: + canBind: + isUndead: + mobNotes: >- + Cleave + + Large line AoE that can be line of sighted + threat: Dangerous + aggro: Proximity +7382: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: + canBind: + isUndead: + mobNotes: '"Charybdis" AoE that leaves tornadoes on random players' + threat: Dangerous + aggro: Sight +7383: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: + canBind: + isUndead: + mobNotes: '' + threat: Caution + aggro: Sight +7384: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: + canBind: + isUndead: + mobNotes: Casts targeted AoEs unaggroed, buffs own defense + threat: Easy + aggro: Sight +7385: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: + canBind: + isUndead: + mobNotes: Targeted AoEs, cleaves + threat: Caution + aggro: Proximity +7386: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: + canBind: + isUndead: + mobNotes: Extremely quick line AoE "Death's Door" that instantly kills + threat: Easy + aggro: Sight +7387: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: + canBind: + isUndead: + mobNotes: Deals heavy damage to random players + threat: Caution + aggro: Sight +7388: + vuln: + canStun: false + canHeavy: + canSlow: + canSleep: + canBind: + isUndead: + mobNotes: >- + Charges + + Untelegraphed line AoE "Swipe" + + Untelegraphed wide circle AoE "Swing" + threat: Dangerous + aggro: Sight +7389: + vuln: + canStun: false + canHeavy: + canSlow: + canSleep: + canBind: + isUndead: + mobNotes: Repeatedly cleaves for high damage, lifesteal, buffs own damage, three stacks of damage up casts ENRAGE "Black Nebula" + threat: Dangerous + aggro: Sight +7390: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: + canBind: + isUndead: + mobNotes: Rapid double autos and untelegraphed line AoE "Quasar" + threat: Dangerous + aggro: Sight +7391: + vuln: + canStun: + canHeavy: + canSlow: + canSleep: + canBind: + isUndead: + mobNotes: Double autos, cone AoE inflicts Sleep + threat: Caution + aggro: Sight +7584: + vuln: + canStun: false + canHeavy: + canSlow: + canSleep: + canBind: + isUndead: + mobNotes: >- + Permanent stacking damage buff + + Massive enrage on random player"Allagan Meteor" + + Gaze attack + threat: Dangerous + aggro: Sight +# -------------------------- +# HoH bosses and misc. +# -------------------------- +7392: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: false + canBind: + isUndead: + mobNotes: >- + Floors 1-30: Bronze chests only + + High damage autos and instant kill AoE + + "Malice" can be interrupted with silence/stun/knockback/witching/ + + interject + threat: Caution + aggro: Proximity +7393: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: + canBind: + isUndead: + mobNotes: >- + Floors 31-60: Silver chests only + + High damage autos and instant kill AoE + + "Malice" can be interrupted with silence/stun/interject + threat: Caution + aggro: Proximity +7394: + vuln: + canStun: false + canHeavy: + canSlow: + canSleep: + canBind: + isUndead: + mobNotes: >- + Floors 61+: Gold chests only + + High damage autos and instant kill AoE + + "Malice" can only be interrupted with interject + + CANNOT STUN + threat: Caution + aggro: Proximity +7478: + vuln: + canStun: false + canHeavy: false + canSlow: false + canSleep: false + canBind: false + isUndead: + mobNotes: >- + Summons lightning clouds that inflict stacking vuln up when they explode + + Boss does proximity AoE under itself that knocks players into the air + + Get knocked into a cloud to dispel it and avoid vuln + + Half-roomwide AoE + threat: Caution + aggro: Boss +7480: + vuln: + canStun: false + canHeavy: false + canSlow: false + canSleep: false + canBind: false + isUndead: + mobNotes: >- + Goes to center of arena and casts knockback to wall (cannot be knockback invulned) + + Follows immediately with a half-roomwide AoE + threat: Caution + aggro: Boss +7481: + vuln: + canStun: false + canHeavy: false + canSlow: false + canSleep: false + canBind: false + isUndead: + mobNotes: >- + Summons butterflies on edges of arena + + Does gaze mechanic that inflicts Fear + + Butterflies explode untelegraphed + threat: Caution + aggro: Boss +7483: + vuln: + canStun: false + canHeavy: false + canSlow: false + canSleep: false + canBind: false + isUndead: + mobNotes: >- + Summons clouds on edge of arena + + Does to-wall knockback that ignores knockback invuln (look for safe spot in clouds!) + + Follows immediately with targeted line AoE + threat: Caution + aggro: Boss +7485: + vuln: + canStun: false + canHeavy: false + canSlow: false + canSleep: false + canBind: false + isUndead: + mobNotes: >- + 1) Untelegraphed swipe + + 2) Untelegraphed line AoE on random player + + 3) Gaze mechanic that inflicts Fear + + 4) Summons pulsating bombs over arena and does a proximity AoE + + 5) Repeats after bombs explode for the last time + threat: Caution + aggro: Boss +7487: + vuln: + canStun: false + canHeavy: false + canSlow: false + canSleep: false + canBind: false + isUndead: + mobNotes: >- + Summons staffs that do various AoEs + + Staffs then do line AoEs targeting players + + Roomwide AoE + threat: Caution + aggro: Boss +7489: + vuln: + canStun: false + canHeavy: false + canSlow: false + canSleep: false + canBind: false + isUndead: + mobNotes: >- + 1) Untelegraphed frontal cleave + + 2) Targets random player with "Innerspace" puddle (standing in puddle inflicts Minimum) + + 3) Targets random player with "Hound out of Hell" + + 4) Targeted player must stand in puddle to dodge "Hound out of Hell" and "Devour" (will instant-kill if not in puddle and give the boss a stack of damage up) + + 5) Repeat + threat: Caution + aggro: Boss +7490: + vuln: + canStun: false + canHeavy: false + canSlow: false + canSleep: false + canBind: false + isUndead: + mobNotes: >- + 1) Summons balls of ice + + 2) Summons icicle that pierces through room, detonating any ice balls it hits + + 3) "Lunar Cry" detonates remaining ice balls + + 4) Exploding ice balls inflict Deep Freeze if they hit a player + + 5) Boss jumps to random player, instantly killing if player is frozen (light damage otherwise) + threat: Caution + aggro: Boss +7493: + vuln: + canStun: false + canHeavy: false + canSlow: false + canSleep: false + canBind: false + isUndead: + mobNotes: >- + 1) Heavy roomwide damage "Ancient Quaga" + + 2) Pulsing rocks appear over arena, causing moderate damage and Heavy debuff if player is hit by one + + 3) "Meteor Impact" summons proximity AoE at boss's current location + + 4) Line AoE "Aura Cannon" + + 5) Targeted circle AoE "Burning Rave" + + 6) Point-blank circle AoE "Knuckle Press" + + 7) Repeat + threat: Caution + aggro: Boss +7610: + vuln: + canStun: false + canHeavy: + canSlow: + canSleep: + canBind: + isUndead: + mobNotes: Does not interact, wide stun and immediately dies when attacked + threat: Easy + aggro: Proximity + + +# -------------------------- +# PotD +# -------------------------- + +# -------------------------- +# PotD 1-10 +# -------------------------- + +4975: + vuln: + canStun: true + canHeavy: true + canSlow: + canSleep: true + canBind: true + isUndead: false + mobNotes: Casts Haste on itself + threat: Easy + aggro: Sight +4976: + vuln: + canStun: true + canHeavy: true + canSlow: + canSleep: true + canBind: true + isUndead: false + mobNotes: '' + threat: Easy + aggro: Sight +4977: + vuln: + canStun: true + canHeavy: false + canSlow: + canSleep: false + canBind: false + isUndead: false + mobNotes: '' + threat: Easy + aggro: Sound +4978: + vuln: + canStun: true + canHeavy: true + canSlow: + canSleep: false + canBind: true + isUndead: false + mobNotes: '' + threat: Easy + aggro: Sight +4979: + vuln: + canStun: true + canHeavy: true + canSlow: + canSleep: true + canBind: true + isUndead: false + mobNotes: '' + threat: Easy + aggro: Proximity +4980: + vuln: + canStun: true + canHeavy: true + canSlow: + canSleep: false + canBind: true + isUndead: false + mobNotes: Inflicts Poison + threat: Easy + aggro: Sight +4981: + vuln: + canStun: true + canHeavy: false + canSlow: + canSleep: false + canBind: false + isUndead: false + mobNotes: High damage "Final Sting" + threat: Caution + aggro: Proximity +4982: + vuln: + canStun: true + canHeavy: false + canSlow: + canSleep: true + canBind: false + isUndead: false + mobNotes: Inflicts vulnerability up + threat: Easy + aggro: Sound +4983: + vuln: + canStun: true + canHeavy: true + canSlow: + canSleep: false + canBind: true + isUndead: false + mobNotes: '' + threat: Easy + aggro: Sight +4984: + vuln: + canStun: true + canHeavy: true + canSlow: + canSleep: true + canBind: true + isUndead: false + mobNotes: '' + threat: Easy + aggro: Sight +4985: + vuln: + canStun: true + canHeavy: true + canSlow: + canSleep: false + canBind: true + isUndead: false + mobNotes: Mini buster "Rhino Charge" + threat: Easy + aggro: Proximity +4986: + vuln: + canStun: false + canHeavy: false + canSlow: false + canSleep: false + canBind: false + isUndead: false + mobNotes: >- + 1) "Whipcrack" - light tankbuster + + 2) "Stormwind" - conal AOE + + 3) "Bombination" - circular AOE on boss inflicts Slow + + 4) "Lumisphere" - targeted AOE on random player + + 5) "Aeroblast" - roomwide AOE inflicts Bleed + threat: Caution + aggro: Boss +# -------------------------- +# PotD 11-20 +# -------------------------- +4987: + vuln: + canStun: true + canHeavy: false + canSlow: + canSleep: false + canBind: true + isUndead: false + mobNotes: '' + threat: Easy + aggro: Sight +4988: + vuln: + canStun: true + canHeavy: false + canSlow: + canSleep: false + canBind: false + isUndead: false + mobNotes: Inflicts poison + threat: Easy + aggro: Sight +4989: + vuln: + canStun: true + canHeavy: true + canSlow: + canSleep: false + canBind: false + isUndead: false + mobNotes: '"Sticky Tongue" does not stun if facing towards' + threat: Easy + aggro: Sight +4990: + vuln: + canStun: true + canHeavy: false + canSlow: + canSleep: false + canBind: false + isUndead: false + mobNotes: Eventual ENRAGE + threat: Caution + aggro: Sound +4991: + vuln: + canStun: true + canHeavy: true + canSlow: + canSleep: true + canBind: true + isUndead: false + mobNotes: '' + threat: Easy + aggro: Sound +4992: + vuln: + canStun: true + canHeavy: true + canSlow: + canSleep: true + canBind: true + isUndead: false + mobNotes: '' + threat: Easy + aggro: Sound +4993: + vuln: + canStun: true + canHeavy: true + canSlow: + canSleep: false + canBind: true + isUndead: false + mobNotes: Area of effect Slow + threat: Easy + aggro: Proximity +4994: + vuln: + canStun: true + canHeavy: true + canSlow: + canSleep: true + canBind: true + isUndead: false + mobNotes: '' + threat: Easy + aggro: Proximity +4995: + vuln: + canStun: true + canHeavy: true + canSlow: + canSleep: false + canBind: false + isUndead: false + mobNotes: '' + threat: Easy + aggro: Proximity +4996: + vuln: + canStun: true + canHeavy: false + canSlow: + canSleep: false + canBind: false + isUndead: false + mobNotes: Buffs own damage + threat: Easy + aggro: Proximity +4997: + vuln: + canStun: true + canHeavy: false + canSlow: + canSleep: true + canBind: false + isUndead: false + mobNotes: Gaze attack inflicts Petrify, "Devour" instantly kills players inflicted with Toad + threat: Dangerous + aggro: Sight +4998: + vuln: + canStun: false + canHeavy: true + canSlow: + canSleep: false + canBind: true + isUndead: false + mobNotes: '' + threat: Easy + aggro: Sight +4999: + vuln: + canStun: false + canHeavy: false + canSlow: false + canSleep: false + canBind: false + isUndead: false + mobNotes: >- + 1) "Bloody Caress" - high damage cleave + + 2) Two telegraphed AOEs and a roomwide AOE + + 3) Summons two hornets that must be killed before they "Final Sting" + + 4) "Rotten Stench" - high damage line AOE + threat: Caution + aggro: Boss +# -------------------------- +# PotD 21-30 +# -------------------------- +5000: + vuln: + canStun: true + canHeavy: true + canSlow: + canSleep: true + canBind: true + isUndead: false + mobNotes: '' + threat: Easy + aggro: Sight +5001: + vuln: + canStun: true + canHeavy: true + canSlow: + canSleep: true + canBind: true + isUndead: false + mobNotes: '' + threat: Easy + aggro: Sight +5002: + vuln: + canStun: false + canHeavy: true + canSlow: + canSleep: true + canBind: true + isUndead: false + mobNotes: '' + threat: Easy + aggro: Sight +5003: + vuln: + canStun: true + canHeavy: true + canSlow: + canSleep: true + canBind: false + isUndead: false + mobNotes: '' + threat: Easy + aggro: Sight +5004: + vuln: + canStun: true + canHeavy: true + canSlow: + canSleep: true + canBind: false + isUndead: false + mobNotes: '' + threat: Easy + aggro: Proximity +5005: + vuln: + canStun: true + canHeavy: true + canSlow: + canSleep: true + canBind: true + isUndead: false + mobNotes: '' + threat: Easy + aggro: Sight +5006: + vuln: + canStun: true + canHeavy: true + canSlow: + canSleep: true + canBind: true + isUndead: false + mobNotes: '' + threat: Easy + aggro: Proximity +5007: + vuln: + canStun: false + canHeavy: true + canSlow: + canSleep: false + canBind: false + isUndead: false + mobNotes: '' + threat: Easy + aggro: Sight +5008: + vuln: + canStun: true + canHeavy: false + canSlow: + canSleep: false + canBind: false + isUndead: false + mobNotes: '' + threat: Easy + aggro: Proximity +5009: + vuln: + canStun: true + canHeavy: true + canSlow: + canSleep: false + canBind: true + isUndead: false + mobNotes: '' + threat: Easy + aggro: Sound +5010: + vuln: + canStun: true + canHeavy: true + canSlow: + canSleep: true + canBind: false + isUndead: false + mobNotes: Untelegraphed AOE does moderate damage and knockback + threat: Caution + aggro: Sight +5011: + vuln: + canStun: true + canHeavy: true + canSlow: + canSleep: true + canBind: true + isUndead: false + mobNotes: '"Chirp" inflicts Sleep for 15s' + threat: Caution + aggro: Sound +5012: + vuln: + canStun: false + canHeavy: false + canSlow: false + canSleep: false + canBind: false + isUndead: false + mobNotes: >- + 1) Spread out fire and ice AOEs and don't drop them in center because: + + 2) Get inside boss's hitbox for "Fear Itself" - will inflict high damage and Terror if not avoided + threat: Caution + aggro: Boss +# -------------------------- +# PotD 31-40 +# -------------------------- +5013: + vuln: + canStun: true + canHeavy: false + canSlow: + canSleep: false + canBind: false + isUndead: false + mobNotes: '' + threat: Easy + aggro: Proximity +5014: + vuln: + canStun: true + canHeavy: false + canSlow: + canSleep: false + canBind: false + isUndead: false + mobNotes: '' + threat: Easy + aggro: Sound +5015: + vuln: + canStun: true + canHeavy: true + canSlow: + canSleep: true + canBind: true + isUndead: false + mobNotes: '' + threat: Easy + aggro: Sight +5016: + vuln: + canStun: false + canHeavy: + canSlow: + canSleep: false + canBind: + isUndead: true + mobNotes: '' + threat: Easy + aggro: Proximity +5017: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: false + canBind: + isUndead: false + mobNotes: '' + threat: Easy + aggro: Sight +5018: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: true + canBind: + isUndead: false + mobNotes: '' + threat: Easy + aggro: Sight +5019: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: false + canBind: + isUndead: false + mobNotes: '' + threat: Easy + aggro: Proximity +5020: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: true + canBind: + isUndead: false + mobNotes: '' + threat: Easy + aggro: Proximity +5021: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: true + canBind: + isUndead: false + mobNotes: '' + threat: Easy + aggro: Sight +5022: + vuln: + canStun: true + canHeavy: false + canSlow: + canSleep: false + canBind: false + isUndead: false + mobNotes: '"Dark Mist" inflicts Terror' + threat: Caution + aggro: Sight +5023: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: false + canBind: + isUndead: false + mobNotes: '' + threat: Easy + aggro: Sight +5024: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: true + canBind: + isUndead: true + mobNotes: '' + threat: Easy + aggro: Proximity +5025: + vuln: + canStun: false + canHeavy: false + canSlow: false + canSleep: false + canBind: false + isUndead: true + mobNotes: >- + 1) Summons four lingering AoEs + + 2) Summons two adds -- they must be killed before boss casts "Scream", adds will target player with high damage AoEs if not dead + threat: Easy + aggro: Boss +# -------------------------- +# PotD 41-50 +# -------------------------- +5026: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: false + canBind: + isUndead: false + mobNotes: '' + threat: Easy + aggro: Sight +5027: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: false + canBind: + isUndead: false + mobNotes: '' + threat: Easy + aggro: Sight +5028: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: false + canBind: + isUndead: false + mobNotes: '' + threat: Easy + aggro: Sight +5029: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: false + canBind: + isUndead: false + mobNotes: '' + threat: Easy + aggro: Proximity +5030: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: true + canBind: + isUndead: false + mobNotes: Inflicts Paralysis + threat: Caution + aggro: Sound +5031: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: false + canBind: + isUndead: false + mobNotes: '' + threat: Easy + aggro: Sight +5032: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: false + canBind: + isUndead: false + mobNotes: Inflicts Paralysis + threat: Caution + aggro: Proximity +5033: + vuln: + canStun: false + canHeavy: + canSlow: + canSleep: false + canBind: + isUndead: false + mobNotes: '' + threat: Easy + aggro: Sight +5034: + vuln: + canStun: false + canHeavy: + canSlow: + canSleep: false + canBind: + isUndead: false + mobNotes: '' + threat: Easy + aggro: Sight +5035: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: false + canBind: + isUndead: false + mobNotes: '' + threat: Easy + aggro: Sight +5036: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: false + canBind: + isUndead: false + mobNotes: '' + threat: Easy + aggro: Proximity +5037: + vuln: + canStun: false + canHeavy: + canSlow: + canSleep: false + canBind: + isUndead: true + mobNotes: '' + threat: Easy + aggro: Sound +5038: + vuln: + canStun: false + canHeavy: false + canSlow: false + canSleep: false + canBind: false + isUndead: false + mobNotes: >- + FOLLOW MECHANICS -- failed mechanics power up an unavoidable room AoE + + Boss will occasionally inflict Disease which slows + + 1) "In Health" -- can be roomwide AoE with safe spot on boss or targeted AoE under boss + + 2) "Cold Feet" -- Gaze + threat: Caution + aggro: Boss +# -------------------------- +# PotD special NPCs and misc. +# -------------------------- +5039: + vuln: + canStun: + canHeavy: + canSlow: + canSleep: + canBind: + isUndead: + mobNotes: '' + threat: Easy + aggro: Sight +5040: + vuln: + canStun: + canHeavy: + canSlow: + canSleep: + canBind: + isUndead: + mobNotes: '' + threat: Easy + aggro: Sight +5041: + vuln: + canStun: false + canHeavy: + canSlow: + canSleep: + canBind: + isUndead: + mobNotes: Does not interact, wide stun and immediately dies when attacked + threat: Easy + aggro: Proximity +5046: + vuln: + canStun: + canHeavy: + canSlow: + canSleep: + canBind: + isUndead: + mobNotes: Immune to Pomander of Witching + threat: Caution + aggro: Sight +5047: + vuln: + canStun: + canHeavy: + canSlow: + canSleep: + canBind: + isUndead: + mobNotes: Immune to Pomander of Witching + threat: Caution + aggro: Sight +5048: + vuln: + canStun: false + canHeavy: + canSlow: + canSleep: + canBind: + isUndead: + mobNotes: Immune to Pomander of Witching + threat: Caution + aggro: Sight +5049: + vuln: + canStun: + canHeavy: + canSlow: + canSleep: + canBind: + isUndead: + mobNotes: Immune to Pomander of Witching + threat: Caution + aggro: Sight +5050: + vuln: + canStun: + canHeavy: + canSlow: + canSleep: + canBind: + isUndead: + mobNotes: Immune to Pomander of Witching + threat: Caution + aggro: Sight +5051: + vuln: + canStun: + canHeavy: + canSlow: + canSleep: + canBind: + isUndead: + mobNotes: Immune to Pomander of Witching + threat: Caution + aggro: Sight +5052: + vuln: + canStun: + canHeavy: + canSlow: + canSleep: + canBind: + isUndead: + mobNotes: Immune to Pomander of Witching + threat: Caution + aggro: Sight +5053: + vuln: + canStun: + canHeavy: + canSlow: + canSleep: + canBind: + isUndead: + mobNotes: Immune to Pomander of Witching + threat: Caution + aggro: Sight +5283: + vuln: + canStun: + canHeavy: + canSlow: + canSleep: + canBind: + isUndead: + mobNotes: Immune to Pomander of Witching + threat: Caution + aggro: Sight +5284: + vuln: + canStun: + canHeavy: + canSlow: + canSleep: + canBind: + isUndead: + mobNotes: Immune to Pomander of Witching + threat: Caution + aggro: Sight +5285: + vuln: + canStun: + canHeavy: + canSlow: + canSleep: + canBind: + isUndead: + mobNotes: Immune to Pomander of Witching + threat: Caution + aggro: Sight +5286: + vuln: + canStun: + canHeavy: + canSlow: + canSleep: + canBind: + isUndead: + mobNotes: Immune to Pomander of Witching + threat: Caution + aggro: Sight +5287: + vuln: + canStun: + canHeavy: + canSlow: + canSleep: + canBind: + isUndead: + mobNotes: Immune to Pomander of Witching + threat: Caution + aggro: Sight +5288: + vuln: + canStun: + canHeavy: + canSlow: + canSleep: + canBind: + isUndead: + mobNotes: Immune to Pomander of Witching + threat: Caution + aggro: Sight +5289: + vuln: + canStun: + canHeavy: + canSlow: + canSleep: + canBind: + isUndead: + mobNotes: Immune to Pomander of Witching + threat: Caution + aggro: Sight +5290: + vuln: + canStun: + canHeavy: + canSlow: + canSleep: + canBind: + isUndead: + mobNotes: Immune to Pomander of Witching + threat: Caution + aggro: Sight +5291: + vuln: + canStun: + canHeavy: + canSlow: + canSleep: + canBind: + isUndead: + mobNotes: Immune to Pomander of Witching + threat: Caution + aggro: Sight +5292: + vuln: + canStun: + canHeavy: + canSlow: + canSleep: + canBind: + isUndead: + mobNotes: Immune to Pomander of Witching + threat: Caution + aggro: Sight +5293: + vuln: + canStun: + canHeavy: + canSlow: + canSleep: + canBind: + isUndead: + mobNotes: Immune to Pomander of Witching + threat: Caution + aggro: Sight +5294: + vuln: + canStun: + canHeavy: + canSlow: + canSleep: + canBind: + isUndead: + mobNotes: Immune to Pomander of Witching + threat: Caution + aggro: Sight +5295: + vuln: + canStun: + canHeavy: + canSlow: + canSleep: + canBind: + isUndead: + mobNotes: Immune to Pomander of Witching + threat: Caution + aggro: Sight +5296: + vuln: + canStun: + canHeavy: + canSlow: + canSleep: + canBind: + isUndead: + mobNotes: Immune to Pomander of Witching + threat: Caution + aggro: Sight +5297: + vuln: + canStun: + canHeavy: + canSlow: + canSleep: + canBind: + isUndead: + mobNotes: Immune to Pomander of Witching + threat: Caution + aggro: Sight +5298: + vuln: + canStun: + canHeavy: + canSlow: + canSleep: + canBind: + isUndead: + mobNotes: Immune to Pomander of Witching + threat: Caution + aggro: Sight +# -------------------------- +# PotD 51-60 +# -------------------------- +5299: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: true + canBind: + isUndead: false + mobNotes: Gaze inflicts Paralysis + threat: Easy + aggro: Sight +5300: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: false + canBind: + isUndead: false + mobNotes: '' + threat: Easy + aggro: Sight +5301: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: true + canBind: + isUndead: true + mobNotes: '' + threat: Easy + aggro: Sight +5302: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: + canBind: + isUndead: false + mobNotes: '' + threat: Easy + aggro: Sight +5303: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: false + canBind: + isUndead: false + mobNotes: '' + threat: Easy + aggro: Sight +5304: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: true + canBind: + isUndead: false + mobNotes: '' + threat: Easy + aggro: Sight +5305: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: false + canBind: + isUndead: false + mobNotes: '' + threat: Easy + aggro: Proximity +5306: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: false + canBind: + isUndead: false + mobNotes: '' + threat: Easy + aggro: Sight +5307: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: false + canBind: + isUndead: false + mobNotes: '' + threat: Easy + aggro: Proximity +5308: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: false + canBind: + isUndead: false + mobNotes: Gaze inflicts Blind and does high damage + threat: Easy + aggro: Proximity +5309: + vuln: + canStun: false + canHeavy: false + canSlow: false + canSleep: false + canBind: false + isUndead: false + mobNotes: >- + Drops large puddle AoEs that inflict Bleed if stood in + + "Valfodr" -- targeted unavoidable line AoE centered on player that causes strong knockback, avoid AoEs surrounding outer edge + threat: Caution + aggro: Boss +# -------------------------- +# PotD 61-70 +# -------------------------- +5311: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: true + canBind: + isUndead: false + mobNotes: '' + threat: Easy + aggro: Sight +5312: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: true + canBind: + isUndead: false + mobNotes: '' + threat: Easy + aggro: Sight +5313: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: false + canBind: + isUndead: false + mobNotes: '' + threat: Easy + aggro: Proximity +5314: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: true + canBind: + isUndead: false + mobNotes: '' + threat: Easy + aggro: Proximity +5315: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: true + canBind: + isUndead: false + mobNotes: '' + threat: Easy + aggro: Sight +5316: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: + canBind: + isUndead: false + mobNotes: '' + threat: Easy + aggro: Sight +5317: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: false + canBind: + isUndead: false + mobNotes: '' + threat: Easy + aggro: Sight +5318: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: true + canBind: + isUndead: false + mobNotes: '' + threat: Easy + aggro: Sight +5319: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: false + canBind: + isUndead: false + mobNotes: '' + threat: Easy + aggro: Sight +5320: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: true + canBind: + isUndead: false + mobNotes: '' + threat: Easy + aggro: Proximity +5321: + vuln: + canStun: false + canHeavy: false + canSlow: false + canSleep: false + canBind: false + isUndead: false + mobNotes: >- + "Douse" -- lingering ground AoE that inflicts Bleed if stood in and buffs boss with Haste if left in it + + Occasionally casts targeted ground AoEs + threat: Caution + aggro: Boss +# -------------------------- +# PotD 71-80 +# -------------------------- +5322: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: true + canBind: + isUndead: false + mobNotes: '' + threat: Easy + aggro: Sight +5323: + vuln: + canStun: false + canHeavy: + canSlow: + canSleep: true + canBind: + isUndead: false + mobNotes: '' + threat: Easy + aggro: Sight +5324: + vuln: + canStun: false + canHeavy: + canSlow: + canSleep: false + canBind: + isUndead: false + mobNotes: '' + threat: Easy + aggro: Proximity +5325: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: true + canBind: + isUndead: false + mobNotes: '' + threat: Easy + aggro: Sight +5326: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: true + canBind: + isUndead: false + mobNotes: '' + threat: Easy + aggro: Proximity +5327: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: true + canBind: + isUndead: false + mobNotes: '' + threat: Easy + aggro: Sight +5328: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: true + canBind: + isUndead: false + mobNotes: '' + threat: Easy + aggro: Sight +5329: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: true + canBind: + isUndead: false + mobNotes: '' + threat: Easy + aggro: Proximity +5330: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: true + canBind: + isUndead: false + mobNotes: '' + threat: Easy + aggro: Sight +5331: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: false + canBind: + isUndead: false + mobNotes: '' + threat: Easy + aggro: Sight +5332: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: true + canBind: + isUndead: false + mobNotes: '' + threat: Easy + aggro: Sight +5333: + vuln: + canStun: false + canHeavy: false + canSlow: false + canSleep: false + canBind: false + isUndead: false + mobNotes: >- + "Charybdis" -- lingering ground tornadoes that cause high damage if sucked into + + Boss will run to edge of arena and cast "Trounce" - wide conal AoE + + At 17%% casts "Ecliptic Meteor" - HIGH DAMAGE roomwide with long cast that deals 80%% of total health damage + threat: Caution + aggro: Boss +# -------------------------- +# PotD 81-90 +# -------------------------- +5334: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: true + canBind: + isUndead: false + mobNotes: Casts wide "Self Destruct" if not killed in time + threat: Caution + aggro: Sight +5335: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: false + canBind: + isUndead: false + mobNotes: '' + threat: Easy + aggro: Sound +5336: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: true + canBind: + isUndead: false + mobNotes: '' + threat: Easy + aggro: Sight +5337: + vuln: + canStun: false + canHeavy: + canSlow: + canSleep: false + canBind: + isUndead: false + mobNotes: '' + threat: Easy + aggro: Sight +5338: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: false + canBind: + isUndead: false + mobNotes: '' + threat: Easy + aggro: Sound +5339: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: false + canBind: + isUndead: false + mobNotes: '' + threat: Easy + aggro: Sight +5340: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: false + canBind: + isUndead: false + mobNotes: '' + threat: Easy + aggro: Sound +5341: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: true + canBind: + isUndead: false + mobNotes: '' + threat: Easy + aggro: Sight +5342: + vuln: + canStun: false + canHeavy: + canSlow: + canSleep: true + canBind: + isUndead: false + mobNotes: '' + threat: Easy + aggro: Proximity +5343: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: false + canBind: + isUndead: false + mobNotes: '' + threat: Easy + aggro: Sight +5344: + vuln: + canStun: false + canHeavy: + canSlow: + canSleep: false + canBind: + isUndead: false + mobNotes: '' + threat: Easy + aggro: Proximity +5345: + vuln: + canStun: false + canHeavy: false + canSlow: false + canSleep: false + canBind: false + isUndead: false + mobNotes: >- + Casts large AoEs + + Summons "Grey Bomb" - must be killed before it does high roomwide damage + + Begins long cast "Massive Burst" and summons "Giddy Bomb" that must be knocked towards the boss to interrupt cast + threat: Caution + aggro: Boss +# -------------------------- +# PotD 91-100 +# -------------------------- +5346: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: + canBind: + isUndead: true + mobNotes: '' + threat: Easy + aggro: Proximity +5347: + vuln: + canStun: false + canHeavy: + canSlow: + canSleep: false + canBind: + isUndead: true + mobNotes: '' + threat: Easy + aggro: Proximity +5348: + vuln: + canStun: false + canHeavy: + canSlow: + canSleep: + canBind: + isUndead: false + mobNotes: '' + threat: Easy + aggro: Sight +5349: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: false + canBind: + isUndead: false + mobNotes: '' + threat: Easy + aggro: Proximity +5350: + vuln: + canStun: + canHeavy: + canSlow: + canSleep: false + canBind: + isUndead: false + mobNotes: '' + threat: Easy + aggro: Sound +5351: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: false + canBind: + isUndead: false + mobNotes: '' + threat: Easy + aggro: Sound +5352: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: false + canBind: + isUndead: true + mobNotes: '' + threat: Caution + aggro: Proximity +5353: + vuln: + canStun: + canHeavy: + canSlow: + canSleep: + canBind: + isUndead: true + mobNotes: '' + threat: Easy + aggro: Proximity +5354: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: false + canBind: + isUndead: false + mobNotes: '' + threat: Easy + aggro: Proximity +5355: + vuln: + canStun: false + canHeavy: + canSlow: + canSleep: false + canBind: + isUndead: true + mobNotes: '' + threat: Easy + aggro: Sound +5356: + vuln: + canStun: false + canHeavy: false + canSlow: false + canSleep: false + canBind: false + isUndead: false + mobNotes: Summons adds and does large targeted AoEs -- adds are vulnerable to Pomander of Resolution's attacks + threat: Caution + aggro: Boss +# -------------------------- +# PotD 101-110 +# -------------------------- +5360: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: true + canBind: + isUndead: false + mobNotes: '' + threat: Easy + aggro: Sight +5361: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: true + canBind: + isUndead: false + mobNotes: '' + threat: Easy + aggro: Sight +5362: + vuln: + canStun: + canHeavy: + canSlow: + canSleep: false + canBind: + isUndead: false + mobNotes: '' + threat: Easy + aggro: Sight +5363: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: true + canBind: + isUndead: false + mobNotes: '' + threat: Easy + aggro: Sight +5364: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: true + canBind: + isUndead: false + mobNotes: >- + Floors 101-110: + + Nothing notable (ignore threat level) + + Floors 191-200: + + Double autos + threat: Caution + aggro: Proximity +5365: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: false + canBind: + isUndead: false + mobNotes: Inflicts Poison + threat: Easy + aggro: Sight +5366: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: false + canBind: + isUndead: false + mobNotes: High damage "Final Sting" + threat: Caution + aggro: Proximity +5367: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: false + canBind: + isUndead: false + mobNotes: Inflicts vulnerability up + threat: Easy + aggro: Sound +5368: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: false + canBind: + isUndead: false + mobNotes: '' + threat: Easy + aggro: Sight +5369: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: false + canBind: + isUndead: false + mobNotes: '' + threat: Easy + aggro: Sight +5370: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: false + canBind: + isUndead: false + mobNotes: Mini buster "Rhino Charge" + threat: Easy + aggro: Sight +5371: + vuln: + canStun: false + canHeavy: false + canSlow: false + canSleep: false + canBind: false + isUndead: false + mobNotes: >- + 1) "Whipcrack" - light tankbuster + + 2) "Stormwind" - conal AOE + + 3) "Bombination" - circular AOE on boss inflicts Slow + + 4) "Lumisphere" - targeted AOE on random player + + 5) "Aeroblast" - roomwide AOE inflicts Bleed + threat: Caution + aggro: Boss +# -------------------------- +# PotD 111-120 +# -------------------------- +5372: + vuln: + canStun: + canHeavy: + canSlow: + canSleep: + canBind: + isUndead: false + mobNotes: '' + threat: Easy + aggro: Sight +5373: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: + canBind: + isUndead: false + mobNotes: '' + threat: Easy + aggro: Sight +5374: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: true + canBind: + isUndead: false + mobNotes: '"Sticky Tongue" draw-in and stun attack if not facing, followed by "Labored Leap" AoE centered on enemy' + threat: Caution + aggro: Sight +5375: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: false + canBind: + isUndead: false + mobNotes: Eventual ENRAGE + threat: Caution + aggro: Sound +5376: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: true + canBind: + isUndead: false + mobNotes: '' + threat: Easy + aggro: Sight +5377: + vuln: + canStun: + canHeavy: + canSlow: + canSleep: true + canBind: + isUndead: false + mobNotes: Casts invuln buff on itself + threat: Easy + aggro: Sound +5378: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: false + canBind: + isUndead: false + mobNotes: Area of effect Slow + threat: Easy + aggro: Proximity +5379: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: true + canBind: + isUndead: false + mobNotes: '' + threat: Easy + aggro: Sound +5380: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: + canBind: + isUndead: false + mobNotes: Will inflict Sleep before casting "Bad Breath" + threat: Caution + aggro: Proximity +5381: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: false + canBind: + isUndead: false + mobNotes: Buffs own damage + threat: Easy + aggro: Proximity +5382: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: + canBind: + isUndead: false + mobNotes: >- + Gaze attack inflicts Petrify, "Regorge" infllicts Poison + + Will one-shot kill anyone inflicted with Toad + threat: Dangerous + aggro: Sight +5383: + vuln: + canStun: false + canHeavy: + canSlow: + canSleep: + canBind: + isUndead: false + mobNotes: '' + threat: Easy + aggro: Sight +5384: + vuln: + canStun: false + canHeavy: false + canSlow: false + canSleep: false + canBind: false + isUndead: false + mobNotes: >- + 1) "Bloody Caress" - high damage cleave + + 2) Two telegraphed AOEs and a roomwide AOE + + 3) Summons two hornets that must be killed before they "Final Sting" + + 4) "Rotten Stench" - high damage line AOE + threat: Caution + aggro: Boss +# -------------------------- +# PotD 121-130 +# -------------------------- +5385: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: true + canBind: + isUndead: false + mobNotes: '' + threat: Easy + aggro: Sight +5386: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: true + canBind: + isUndead: false + mobNotes: '' + threat: Easy + aggro: Sight +5387: + vuln: + canStun: false + canHeavy: + canSlow: + canSleep: true + canBind: + isUndead: false + mobNotes: '' + threat: Easy + aggro: Sight +5388: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: + canBind: + isUndead: false + mobNotes: '' + threat: Easy + aggro: Sight +5389: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: true + canBind: + isUndead: false + mobNotes: Double autos + threat: Caution + aggro: Proximity +5390: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: true + canBind: + isUndead: false + mobNotes: '' + threat: Easy + aggro: Sight +5391: + vuln: + canStun: + canHeavy: + canSlow: + canSleep: true + canBind: + isUndead: false + mobNotes: '' + threat: Easy + aggro: Proximity +5392: + vuln: + canStun: false + canHeavy: + canSlow: + canSleep: false + canBind: + isUndead: false + mobNotes: '' + threat: Easy + aggro: Sight +5393: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: false + canBind: + isUndead: false + mobNotes: '' + threat: Easy + aggro: Proximity +5394: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: false + canBind: + isUndead: false + mobNotes: '' + threat: Easy + aggro: Sound +5395: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: true + canBind: + isUndead: false + mobNotes: '"11-Tonze Swing" - point-blank untelegraphed AoE that does high damage and knockback' + threat: Caution + aggro: Sight +5396: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: false + canBind: + isUndead: false + mobNotes: '"Chirp" inflicts Sleep for 15s' + threat: Caution + aggro: Sound +5397: + vuln: + canStun: false + canHeavy: false + canSlow: false + canSleep: false + canBind: false + isUndead: false + mobNotes: >- + 1) Spread out fire and ice AOEs and don't drop them in center because: + + 2) Get inside boss's hitbox for fast cast "Fear Itself" - will inflict high damage and Terror if not avoided + threat: Caution + aggro: Boss +# -------------------------- +# PotD 131-140 +# -------------------------- +5398: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: false + canBind: + isUndead: false + mobNotes: '' + threat: Easy + aggro: Sound +5399: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: false + canBind: + isUndead: false + mobNotes: '' + threat: Easy + aggro: Sound +5400: + vuln: + canStun: false + canHeavy: + canSlow: + canSleep: false + canBind: + isUndead: false + mobNotes: '' + threat: Easy + aggro: Sight +5401: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: false + canBind: + isUndead: true + mobNotes: '' + threat: Easy + aggro: Proximity +5402: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: false + canBind: + isUndead: false + mobNotes: Untelegraphed conal AoE "Level 5 Petrify" inflicts Petrify + threat: Caution + aggro: Sight +5403: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: true + canBind: + isUndead: false + mobNotes: '' + threat: Easy + aggro: Sight +5404: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: false + canBind: + isUndead: false + mobNotes: '' + threat: Easy + aggro: Proximity +5405: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: true + canBind: + isUndead: false + mobNotes: '' + threat: Easy + aggro: Proximity +5406: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: true + canBind: + isUndead: false + mobNotes: Casts targeted AoE that inflicts Bleed + threat: Easy + aggro: Sight +5407: + vuln: + canStun: false + canHeavy: + canSlow: + canSleep: false + canBind: + isUndead: false + mobNotes: '' + threat: Easy + aggro: Sight +5408: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: false + canBind: + isUndead: false + mobNotes: '' + threat: Easy + aggro: Sight +5409: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: true + canBind: + isUndead: true + mobNotes: >- + Floors 131-140: + + Nothing notable (ignore threat level) + + Floors 191-200: + + Double autos + threat: Caution + aggro: Proximity +5410: + vuln: + canStun: false + canHeavy: false + canSlow: false + canSleep: false + canBind: false + isUndead: true + mobNotes: >- + 1) Summons four lingering AoEs + + 2) Summons two adds -- they must be killed before boss casts "Scream", adds will target player with high damage AoEs if not dead + threat: Caution + aggro: Boss +# -------------------------- +# PotD 141-150 +# -------------------------- +5411: + vuln: + canStun: + canHeavy: + canSlow: + canSleep: + canBind: + isUndead: false + mobNotes: '' + threat: Easy + aggro: Sight +5412: + vuln: + canStun: + canHeavy: + canSlow: + canSleep: + canBind: + isUndead: false + mobNotes: '' + threat: Easy + aggro: Sight +5413: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: + canBind: + isUndead: false + mobNotes: '"Charybdis" - semi-enrage that drops party health to 1%%' + threat: Caution + aggro: Sight +5414: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: + canBind: + isUndead: false + mobNotes: Very high damage, inflicts Poison + threat: Dangerous + aggro: Sight +5415: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: + canBind: + isUndead: false + mobNotes: >- + Floors 141-150: + + Nothing notable (ignore threat level) + + Floors 191-200: + + Casts large donut AoE "Death Spiral" that deals heavy damage + + Has soft enrage of a strong damage buff + threat: Dangerous + aggro: Proximity +5416: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: + canBind: + isUndead: false + mobNotes: '' + threat: Easy + aggro: Sound +5417: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: + canBind: + isUndead: false + mobNotes: '' + threat: Easy + aggro: Sight +5418: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: + canBind: + isUndead: false + mobNotes: '' + threat: Easy + aggro: Proximity +5419: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: + canBind: + isUndead: false + mobNotes: '' + threat: Easy + aggro: Sight +5420: + vuln: + canStun: false + canHeavy: + canSlow: + canSleep: + canBind: + isUndead: false + mobNotes: Casts Gaze "Evil Eye" + threat: Easy + aggro: Proximity +5421: + vuln: + canStun: + canHeavy: + canSlow: + canSleep: + canBind: + isUndead: false + mobNotes: Buffs own damage, untelegraphed high damage "Ripper Claw" - can be avoided by walking behind + threat: Easy + aggro: Sight +5422: + vuln: + canStun: true + canHeavy: + canSlow: + canSleep: + canBind: + isUndead: true + mobNotes: High health and very large AoE "Scream" + threat: Caution + aggro: Proximity +5423: + vuln: + canStun: false + canHeavy: + canSlow: + canSleep: + canBind: + isUndead: true + mobNotes: Very high damage for the floors it appears on + threat: Dangerous + aggro: Sound +5424: + vuln: + canStun: false + canHeavy: false + canSlow: false + canSleep: false + canBind: false + isUndead: false + mobNotes: >- + Summons adds + + "Fanatic Zombie" will grab player and root in place until killed + + "Fanatic Succubus" will heal boss if it reaches it + threat: Caution + aggro: Boss +# -------------------------- +# PotD 151-160 +# -------------------------- +5429: + vuln: + canStun: true + canHeavy: true + canSlow: + canSleep: true + canBind: true + isUndead: false + mobNotes: >- + Double autos + + Gaze inflicts Paralysis + threat: Caution + aggro: Sight +5430: + vuln: + canStun: true + canHeavy: false + canSlow: + canSleep: false + canBind: false + isUndead: false + mobNotes: Inflicts Vuln Up debuff + threat: Easy + aggro: Sight +5431: + vuln: + canStun: true + canHeavy: false + canSlow: + canSleep: false + canBind: false + isUndead: false + mobNotes: >- + "Ice Spikes" reflects damage + + "Void Blizzard" inflicts Slow + threat: Easy + aggro: Sight +5432: + vuln: + canStun: true + canHeavy: false + canSlow: + canSleep: false + canBind: false + isUndead: false + mobNotes: '' + threat: Easy + aggro: Sight +5433: + vuln: + canStun: true + canHeavy: true + canSlow: + canSleep: false + canBind: true + isUndead: false + mobNotes: Double autos that lifesteal + threat: Easy + aggro: Sight +5434: + vuln: + canStun: true + canHeavy: false + canSlow: + canSleep: false + canBind: false + isUndead: false + mobNotes: '' + threat: Easy + aggro: Proximity +5435: + vuln: + canStun: true + canHeavy: false + canSlow: + canSleep: false + canBind: false + isUndead: false + mobNotes: '' + threat: Easy + aggro: Sight +5436: + vuln: + canStun: true + canHeavy: false + canSlow: + canSleep: false + canBind: false + isUndead: false + mobNotes: Double autos + threat: Easy + aggro: Proximity +5437: + vuln: + canStun: true + canHeavy: true + canSlow: + canSleep: false + canBind: true + isUndead: false + mobNotes: >- + Double autos + + Gaze inflicts heavy damage and Blind + threat: Caution + aggro: Proximity +5438: + vuln: + canStun: false + canHeavy: false + canSlow: false + canSleep: false + canBind: false + isUndead: false + mobNotes: >- + Drops lingering AoEs that cause heavy Bleed if stood in + + "Valfodr" -- targeted unavoidable line AoE centered on player that causes strong knockback, avoid AoEs surrounding outer edge + threat: Caution + aggro: Boss +# -------------------------- +# PotD 161-170 +# -------------------------- +5439: + vuln: + canStun: true + canHeavy: true + canSlow: + canSleep: true + canBind: true + isUndead: false + mobNotes: '' + threat: Easy + aggro: Sight +5440: + vuln: + canStun: true + canHeavy: true + canSlow: + canSleep: true + canBind: false + isUndead: false + mobNotes: '' + threat: Easy + aggro: Sight +5441: + vuln: + canStun: true + canHeavy: true + canSlow: + canSleep: true + canBind: true + isUndead: false + mobNotes: '' + threat: Caution + aggro: Proximity +5442: + vuln: + canStun: true + canHeavy: true + canSlow: + canSleep: true + canBind: false + isUndead: false + mobNotes: Double autos + threat: Caution + aggro: Proximity +5443: + vuln: + canStun: true + canHeavy: true + canSlow: + canSleep: true + canBind: true + isUndead: false + mobNotes: Double autos + threat: Caution + aggro: Sight +5444: + vuln: + canStun: true + canHeavy: false + canSlow: + canSleep: false + canBind: false + isUndead: false + mobNotes: '' + threat: Easy + aggro: Sight +5445: + vuln: + canStun: true + canHeavy: false + canSlow: + canSleep: false + canBind: false + isUndead: false + mobNotes: '' + threat: Easy + aggro: Sight +5446: + vuln: + canStun: true + canHeavy: true + canSlow: + canSleep: true + canBind: true + isUndead: false + mobNotes: '' + threat: Easy + aggro: Sight +5447: + vuln: + canStun: true + canHeavy: false + canSlow: + canSleep: false + canBind: false + isUndead: false + mobNotes: '' + threat: Easy + aggro: Sight +5448: + vuln: + canStun: true + canHeavy: true + canSlow: + canSleep: true + canBind: true + isUndead: false + mobNotes: '' + threat: Caution + aggro: Proximity +5449: + vuln: + canStun: false + canHeavy: false + canSlow: false + canSleep: false + canBind: false + isUndead: false + mobNotes: "\"Douse\" -- lingering ground AoE that inflicts Bleed if stood in and buffs boss with Haste and Damage Up if left in it\nOccasionally inflicts Heavy and casts targeted ground AoEs " + threat: Easy + aggro: Boss +# -------------------------- +# PotD 171-180 +# -------------------------- +5450: + vuln: + canStun: true + canHeavy: true + canSlow: + canSleep: true + canBind: true + isUndead: false + mobNotes: Double autos + threat: Caution + aggro: Sight +5451: + vuln: + canStun: false + canHeavy: false + canSlow: + canSleep: true + canBind: false + isUndead: false + mobNotes: Has semi-enrage around 30s in combat + threat: Caution + aggro: Sight +5452: + vuln: + canStun: false + canHeavy: false + canSlow: + canSleep: false + canBind: false + isUndead: false + mobNotes: >- + "Revelation" inflicts Confusion + + "Tropical Wind" gives enemy a large Haste and damage buff + threat: Easy + aggro: Proximity +5453: + vuln: + canStun: true + canHeavy: true + canSlow: + canSleep: true + canBind: false + isUndead: false + mobNotes: >- + "Glower" - untelegraphed line AoE + + "100-Tonze Swing" - untelegraphed point-blank AoE + threat: Caution + aggro: Sight +5454: + vuln: + canStun: true + canHeavy: true + canSlow: + canSleep: true + canBind: false + isUndead: false + mobNotes: Buffs own damage and inflicts Physical Vuln Up with AoE damage out of combat + threat: Caution + aggro: Proximity +5455: + vuln: + canStun: true + canHeavy: true + canSlow: + canSleep: true + canBind: true + isUndead: false + mobNotes: '' + threat: Easy + aggro: Sight +5456: + vuln: + canStun: true + canHeavy: true + canSlow: + canSleep: true + canBind: true + isUndead: false + mobNotes: '' + threat: Easy + aggro: Sight +5457: + vuln: + canStun: true + canHeavy: true + canSlow: + canSleep: true + canBind: true + isUndead: false + mobNotes: '' + threat: Easy + aggro: Proximity +5458: + vuln: + canStun: true + canHeavy: true + canSlow: + canSleep: true + canBind: true + isUndead: false + mobNotes: Double autos + threat: Caution + aggro: Sight +5459: + vuln: + canStun: true + canHeavy: false + canSlow: + canSleep: false + canBind: false + isUndead: false + mobNotes: >- + Cleave inflicts Bleed + + "Flying Frenzy" targets a player and does heavy damage, Vuln Down, and stuns + threat: Vicious + aggro: Sight +5460: + vuln: + canStun: true + canHeavy: true + canSlow: + canSleep: true + canBind: true + isUndead: false + mobNotes: Cleave does heavy damage and inflicts potent Bleed + threat: Dangerous + aggro: Sight +5461: + vuln: + canStun: false + canHeavy: false + canSlow: false + canSleep: false + canBind: false + isUndead: false + mobNotes: >- + "Charybdis" -- lingering ground tornadoes cast twice in a row that cause high damage if sucked into + + Boss will run to top or bottom of arena and cast "Trounce" - wide conal AoE + + At 15%% casts FAST CAST "Ecliptic Meteor" - HIGH DAMAGE roomwide with long cast that deals 80%% of total health damage every 9 seconds + threat: Dangerous + aggro: Boss +# -------------------------- +# PotD 181-190 +# -------------------------- +5462: + vuln: + canStun: true + canHeavy: true + canSlow: + canSleep: true + canBind: true + isUndead: false + mobNotes: '' + threat: Easy + aggro: Sight +5463: + vuln: + canStun: true + canHeavy: true + canSlow: + canSleep: false + canBind: true + isUndead: false + mobNotes: Double autos + threat: Caution + aggro: Sound +5464: + vuln: + canStun: false + canHeavy: true + canSlow: + canSleep: false + canBind: true + isUndead: false + mobNotes: Instant AoE that inflicts heavy Bleed + threat: Vicious + aggro: Sight +5465: + vuln: + canStun: false + canHeavy: true + canSlow: + canSleep: false + canBind: true + isUndead: false + mobNotes: >- + Instant AoE on pull, double autos + + At 30 seconds will cast semi-enrage + threat: Dangerous + aggro: Sound +5466: + vuln: + canStun: false + canHeavy: true + canSlow: + canSleep: false + canBind: true + isUndead: false + mobNotes: >- + Sucks in player and does heavy damage + + "Tail Screw" does damage and inflicts Slow + threat: Caution + aggro: Sight +5467: + vuln: + canStun: true + canHeavy: true + canSlow: + canSleep: false + canBind: true + isUndead: false + mobNotes: >- + Instant AoE burst does heavy damage and inflicts Slow + + Instant cone inflicts Poison + threat: Dangerous + aggro: Sound +5468: + vuln: + canStun: false + canHeavy: true + canSlow: + canSleep: false + canBind: true + isUndead: false + mobNotes: '' + threat: Easy + aggro: Proximity +5469: + vuln: + canStun: true + canHeavy: true + canSlow: + canSleep: false + canBind: true + isUndead: false + mobNotes: '' + threat: Easy + aggro: Sound +5470: + vuln: + canStun: false + canHeavy: true + canSlow: + canSleep: true + canBind: true + isUndead: false + mobNotes: >- + If familiar with chimera mechanics can be engaged + + "The Dragon's Voice" - be inside hitbox + + "The Ram's Voice" - be outside of melee range + threat: Vicious + aggro: Proximity +5471: + vuln: + canStun: false + canHeavy: false + canSlow: false + canSleep: false + canBind: false + isUndead: false + mobNotes: >- + Kill blue bomb when it appears + + Push red bomb into boss during "Massive Burst" cast, will wipe party if not stunned + + Boss has cleave that does heavy damage + threat: Dangerous + aggro: Boss +# -------------------------- +# PotD 191-200 +# -------------------------- +5472: + vuln: + canStun: false + canHeavy: false + canSlow: + canSleep: false + canBind: false + isUndead: false + mobNotes: '' + threat: Easy + aggro: Sound +5473: + vuln: + canStun: false + canHeavy: false + canSlow: + canSleep: false + canBind: false + isUndead: false + mobNotes: Casts untelegraphed cone "Level 5 Death" + threat: Dangerous + aggro: Sight +5474: + vuln: + canStun: false + canHeavy: true + canSlow: + canSleep: false + canBind: false + isUndead: false + mobNotes: '' + threat: Easy + aggro: Proximity +5475: + vuln: + canStun: true + canHeavy: false + canSlow: + canSleep: false + canBind: false + isUndead: true + mobNotes: Double auto + threat: Caution + aggro: Proximity +# -------------------------- +# PotD misc. +# -------------------------- +5479: + vuln: + canStun: true + canHeavy: false + canSlow: + canSleep: false + canBind: false + isUndead: false + mobNotes: '' + threat: Easy + aggro: Sound +5480: + vuln: + canStun: true + canHeavy: false + canSlow: + canSleep: false + canBind: false + isUndead: false + mobNotes: '' + threat: Easy + aggro: Sound +2566: + vuln: + canStun: false + canHeavy: + canSlow: + canSleep: + canBind: + isUndead: + mobNotes: >- + High damage autos and instant kill AoE + + "Infatuation" can only be interrupted with interject + threat: Caution + aggro: Proximity From a17a36ecb6349641429c646d5a5a3a32e1da98ab Mon Sep 17 00:00:00 2001 From: AkiniKites Date: Tue, 25 Jan 2022 19:55:39 -0500 Subject: [PATCH 02/32] Move job data to file --- Data/DataHandler.cs | 41 ----- Data/DataRepo.cs | 57 +++++++ Data/JobData.cs | 19 +++ DeepDungeonDex.csproj | 5 +- Plugin.cs | 21 +-- ConfigUI.cs => UI/ConfigUI.cs | 9 +- PluginUI.cs => UI/PluginUI.cs | 90 ++++------- job-data.yml | 287 ++++++++++++++++++++++++++++++++++ data.yml => mob-data.yml | 0 9 files changed, 416 insertions(+), 113 deletions(-) delete mode 100644 Data/DataHandler.cs create mode 100644 Data/DataRepo.cs create mode 100644 Data/JobData.cs rename ConfigUI.cs => UI/ConfigUI.cs (95%) rename PluginUI.cs => UI/PluginUI.cs (50%) create mode 100644 job-data.yml rename data.yml => mob-data.yml (100%) diff --git a/Data/DataHandler.cs b/Data/DataHandler.cs deleted file mode 100644 index 7736244..0000000 --- a/Data/DataHandler.cs +++ /dev/null @@ -1,41 +0,0 @@ -using System.Collections.Generic; -using System.IO; -using System.Threading.Tasks; -using YamlDotNet.Serialization; -using YamlDotNet.Serialization.NamingConventions; - -namespace DeepDungeonDex.Data -{ - public class DataHandler - { - private static bool _dataLoaded = false; - - private static Dictionary _mobData; - private static string DataPath => Path.Combine(Plugin.PluginInterface.AssemblyLocation.Directory.FullName, "data.yml"); - - public static MobData Mobs(uint nameID) - { - if (!_dataLoaded) - return null; - - if (_mobData.TryGetValue(nameID, out MobData value)) - return value; - return null; - } - - public static void Load() - { - Task.Run(() => - { - var deserializer = new DeserializerBuilder() - .WithNamingConvention(CamelCaseNamingConvention.Instance) - .Build(); - var yaml = File.ReadAllText(DataPath); - - _mobData = deserializer.Deserialize>(yaml); - - _dataLoaded = true; - }); - } - } -} diff --git a/Data/DataRepo.cs b/Data/DataRepo.cs new file mode 100644 index 0000000..cbeb2ed --- /dev/null +++ b/Data/DataRepo.cs @@ -0,0 +1,57 @@ +using System.Collections.Generic; +using System.IO; +using System.Threading.Tasks; +using YamlDotNet.Serialization; +using YamlDotNet.Serialization.NamingConventions; + +namespace DeepDungeonDex.Data +{ + public class DataRepo + { + private static bool _dataLoaded = false; + + private static Dictionary _mobData; + private static Dictionary _jobData; + + private static string DataDir => Plugin.PluginInterface.AssemblyLocation.Directory.FullName; + private static string MobsDbPath => Path.Combine(DataDir, "mob-data.yml"); + private static string JobsDbPath => Path.Combine(DataDir, "job-data.yml"); + + public static MobData GetMob(uint nameID) + { + if (!_dataLoaded) + return null; + + if (_mobData.TryGetValue(nameID, out var value)) + return value; + return null; + } + public static JobData GetJob(uint jobId) + { + if (!_dataLoaded) + return null; + + if (_jobData.TryGetValue(jobId, out var value)) + return value; + return null; + } + + public static void Load() + { + Task.Run(() => + { + var deserializer = new DeserializerBuilder() + .WithNamingConvention(CamelCaseNamingConvention.Instance) + .Build(); + + var yaml = File.ReadAllText(MobsDbPath); + _mobData = deserializer.Deserialize>(yaml); + + yaml = File.ReadAllText(JobsDbPath); + _jobData = deserializer.Deserialize>(yaml); + + _dataLoaded = true; + }); + } + } +} diff --git a/Data/JobData.cs b/Data/JobData.cs new file mode 100644 index 0000000..3495946 --- /dev/null +++ b/Data/JobData.cs @@ -0,0 +1,19 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace DeepDungeonDex.Data +{ + public class JobData + { + public string Name { get; set; } + + public bool CanStun { get; set; } + public bool CanSleep { get; set; } + public bool CanBind { get; set; } + public bool CanHeavy { get; set; } + public bool CanSlow { get; set; } + } +} diff --git a/DeepDungeonDex.csproj b/DeepDungeonDex.csproj index 02ada1c..af85bc9 100644 --- a/DeepDungeonDex.csproj +++ b/DeepDungeonDex.csproj @@ -43,7 +43,10 @@ - + + Always + + Always diff --git a/Plugin.cs b/Plugin.cs index 389948f..35e49af 100644 --- a/Plugin.cs +++ b/Plugin.cs @@ -7,16 +7,16 @@ using Dalamud.Game.ClientState.Objects.Types; using Dalamud.Game.Command; using Dalamud.Game; -using Dalamud.Game.Gui; -using Dalamud.Game.Network; using Dalamud.IoC; using DeepDungeonDex.Data; +using DeepDungeonDex.UI; namespace DeepDungeonDex { public class Plugin : IDalamudPlugin { - private Configuration config; + public static Configuration Config; + private PluginUI ui; private ConfigUI cui; private GameObject previousTarget; @@ -28,16 +28,19 @@ public class Plugin : IDalamudPlugin [PluginService] internal static Framework Framework { get; private set; } = null!; [PluginService] internal static TargetManager Targets { get; private set; } = null!; + [PluginService] internal static DataManager DataManager { get; private set; } = null!; + public string Name => "DeepDungeonDex"; public Plugin() { - DataHandler.Load(); + Config = (Configuration)PluginInterface.GetPluginConfig() ?? new Configuration(); + Config.Initialize(PluginInterface); + + DataRepo.Load(); - this.config = (Configuration)PluginInterface.GetPluginConfig() ?? new Configuration(); - this.config.Initialize(PluginInterface); - this.ui = new PluginUI(config, ClientState); - this.cui = new ConfigUI(config.Opacity, config.IsClickthrough, config.HideRedVulns, config.HideBasedOnJob, config); + this.ui = new PluginUI(); + this.cui = new ConfigUI(Config.Opacity, Config.IsClickthrough, Config.HideRedVulns, Config.HideBasedOnJob, Config); PluginInterface.UiBuilder.Draw += this.ui.Draw; PluginInterface.UiBuilder.Draw += this.cui.Draw; @@ -84,7 +87,7 @@ protected virtual void Dispose(bool disposing) CommandManager.RemoveHandler("/pddd"); - PluginInterface.SavePluginConfig(this.config); + PluginInterface.SavePluginConfig(Config); PluginInterface.UiBuilder.Draw -= this.ui.Draw; PluginInterface.UiBuilder.Draw -= this.cui.Draw; diff --git a/ConfigUI.cs b/UI/ConfigUI.cs similarity index 95% rename from ConfigUI.cs rename to UI/ConfigUI.cs index d737a8a..ca1c64a 100644 --- a/ConfigUI.cs +++ b/UI/ConfigUI.cs @@ -1,8 +1,13 @@ -using ImGuiNET; +using System; +using System.Collections.Generic; using System.Diagnostics; +using System.Linq; using System.Numerics; +using System.Text; +using System.Threading.Tasks; +using ImGuiNET; -namespace DeepDungeonDex +namespace DeepDungeonDex.UI { public class ConfigUI { diff --git a/PluginUI.cs b/UI/PluginUI.cs similarity index 50% rename from PluginUI.cs rename to UI/PluginUI.cs index 2946827..77763f0 100644 --- a/PluginUI.cs +++ b/UI/PluginUI.cs @@ -1,49 +1,25 @@ -using ImGuiNET; +using System; +using System.Collections.Generic; +using System.Linq; using System.Numerics; -using Dalamud.Game.ClientState; +using System.Text; +using System.Threading.Tasks; using DeepDungeonDex.Data; +using ImGuiNET; -namespace DeepDungeonDex +namespace DeepDungeonDex.UI { public class PluginUI { public bool IsVisible { get; set; } - private Configuration config; - private ClientState clientState; - public PluginUI(Configuration config, ClientState clientState) - { - this.config = config; - this.clientState = clientState; - } - - private readonly bool[] cjstun = - { - true, true, true, true, true, false, false, false, false, false, false, false, false, false, false, false, false, false, false, true, true, true, true, false, true, false, false, false, false, true, true, false, true, false, true, false, true, true, false, true, false - }; + public PluginUI() { } - private readonly bool[] cjsleep = - { - true, false, false, false, false, false, true, true, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, true, true, true, true, true, false, false, false, false, true, false, true, true, false, false, false, true - }; - - private readonly bool[] cjbind = - { - true, false, false, false, false, true, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, true, false, false, false, false, false, false, true, true, false, false, false, false, true, false, true, false, false - }; - - private readonly bool[] cjheavy = - { - true, false, false, false, false, true, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, true, false, false, false, false, false, false, true, true, false, false, false, false, true, false, true, false, false - }; - - private readonly bool[] cjslow = + private void PrintSingleVuln(bool? isVulnerable, string message, bool? jobOkay = null) { - true, true, true, true, true, true, false, false, false, false, false, false, false, false, false, false, false, false, false, true, true, true, true, true, false, false, false, false, false, true, true, true, true, false, true, false, true, true, true, true, false - }; + if (jobOkay == false && Plugin.Config.HideBasedOnJob) + return; - private void PrintSingleVuln(bool? isVulnerable, string message) - { switch (isVulnerable) { case true: @@ -52,7 +28,7 @@ private void PrintSingleVuln(bool? isVulnerable, string message) ImGui.PopStyleColor(); break; case false: - if (!config.HideRedVulns) + if (!Plugin.Config.HideRedVulns) { ImGui.PushStyleColor(ImGuiCol.Text, 0xFF0000FF); ImGui.Text(message); @@ -66,20 +42,26 @@ private void PrintSingleVuln(bool? isVulnerable, string message) break; } } + public void Draw() { if (!IsVisible) return; - var cjid = clientState.LocalPlayer == null ? 0 : clientState.LocalPlayer.ClassJob.GameData.RowId; - var mobData = DataHandler.Mobs(TargetData.NameID); + + var mobData = DataRepo.GetMob(TargetData.NameID); if (mobData == null) return; + + var cjid = Plugin.ClientState.LocalPlayer?.ClassJob.GameData?.RowId ?? 0; + var jobData = DataRepo.GetJob(cjid); + var flags = ImGuiWindowFlags.NoResize | ImGuiWindowFlags.AlwaysAutoResize | ImGuiWindowFlags.NoTitleBar; - if (config.IsClickthrough) + if (Plugin.Config.IsClickthrough) { flags |= ImGuiWindowFlags.NoInputs; } ImGui.SetNextWindowSizeConstraints(new Vector2(250, 0), new Vector2(9001, 9001)); - ImGui.SetNextWindowBgAlpha(config.Opacity); + ImGui.SetNextWindowBgAlpha(Plugin.Config.Opacity); + ImGui.Begin("cool strati window", flags); ImGui.Text("Name:\n"+TargetData.Name); ImGui.NewLine(); @@ -115,30 +97,18 @@ public void Draw() break; } ImGui.NextColumn(); - if (!config.HideBasedOnJob || cjstun[cjid]) - { - PrintSingleVuln(mobData.Vuln.CanStun, "Stun"); - } - if (!config.HideBasedOnJob || cjsleep[cjid]) - { - PrintSingleVuln(mobData.Vuln.CanSleep, "Sleep"); - } - if (!config.HideBasedOnJob || cjbind[cjid]) - { - PrintSingleVuln(mobData.Vuln.CanBind, "Bind"); - } - if (!config.HideBasedOnJob || cjheavy[cjid]) - { - PrintSingleVuln(mobData.Vuln.CanHeavy, "Heavy"); - } - if (!config.HideBasedOnJob || cjslow[cjid]) - { - PrintSingleVuln(mobData.Vuln.CanSlow, "Slow"); - } + + PrintSingleVuln(mobData.Vuln.CanStun, "Stun", jobData?.CanStun); + PrintSingleVuln(mobData.Vuln.CanSleep, "Sleep", jobData?.CanSleep); + PrintSingleVuln(mobData.Vuln.CanBind, "Bind", jobData?.CanBind); + PrintSingleVuln(mobData.Vuln.CanHeavy, "Heavy", jobData?.CanHeavy); + PrintSingleVuln(mobData.Vuln.CanSlow, "Slow", jobData?.CanSlow); + if (!(TargetData.NameID >= 7262 && TargetData.NameID <= 7610)) { PrintSingleVuln(mobData.Vuln.IsUndead, "Undead"); } + ImGui.NextColumn(); ImGui.Columns(1); ImGui.NewLine(); diff --git a/job-data.yml b/job-data.yml new file mode 100644 index 0000000..a3ab9e2 --- /dev/null +++ b/job-data.yml @@ -0,0 +1,287 @@ +0: + name: adventurer + canStun: true + canSleep: true + canBind: true + canHeavy: true + canSlow: true +1: + name: gladiator + canStun: true + canSleep: false + canBind: false + canHeavy: false + canSlow: true +2: + name: pugilist + canStun: true + canSleep: false + canBind: false + canHeavy: false + canSlow: true +3: + name: marauder + canStun: true + canSleep: false + canBind: false + canHeavy: false + canSlow: true +4: + name: lancer + canStun: true + canSleep: false + canBind: false + canHeavy: false + canSlow: true +5: + name: archer + canStun: false + canSleep: false + canBind: true + canHeavy: true + canSlow: true +6: + name: conjurer + canStun: false + canSleep: true + canBind: false + canHeavy: false + canSlow: false +7: + name: thaumaturge + canStun: false + canSleep: true + canBind: false + canHeavy: false + canSlow: false +8: + name: carpenter + canStun: false + canSleep: false + canBind: false + canHeavy: false + canSlow: false +9: + name: blacksmith + canStun: false + canSleep: false + canBind: false + canHeavy: false + canSlow: false +10: + name: armorer + canStun: false + canSleep: false + canBind: false + canHeavy: false + canSlow: false +11: + name: goldsmith + canStun: false + canSleep: false + canBind: false + canHeavy: false + canSlow: false +12: + name: leatherworker + canStun: false + canSleep: false + canBind: false + canHeavy: false + canSlow: false +13: + name: weaver + canStun: false + canSleep: false + canBind: false + canHeavy: false + canSlow: false +14: + name: alchemist + canStun: false + canSleep: false + canBind: false + canHeavy: false + canSlow: false +15: + name: culinarian + canStun: false + canSleep: false + canBind: false + canHeavy: false + canSlow: false +16: + name: miner + canStun: false + canSleep: false + canBind: false + canHeavy: false + canSlow: false +17: + name: botanist + canStun: false + canSleep: false + canBind: false + canHeavy: false + canSlow: false +18: + name: fisher + canStun: false + canSleep: false + canBind: false + canHeavy: false + canSlow: false +19: + name: paladin + canStun: true + canSleep: false + canBind: false + canHeavy: false + canSlow: true +20: + name: monk + canStun: true + canSleep: false + canBind: false + canHeavy: false + canSlow: true +21: + name: warrior + canStun: true + canSleep: false + canBind: false + canHeavy: false + canSlow: true +22: + name: dragoon + canStun: true + canSleep: false + canBind: false + canHeavy: false + canSlow: true +23: + name: bard + canStun: false + canSleep: false + canBind: true + canHeavy: true + canSlow: true +24: + name: white mage + canStun: true + canSleep: true + canBind: false + canHeavy: false + canSlow: false +25: + name: black mage + canStun: false + canSleep: true + canBind: false + canHeavy: false + canSlow: false +26: + name: arcanist + canStun: false + canSleep: true + canBind: false + canHeavy: false + canSlow: false +27: + name: summoner + canStun: false + canSleep: true + canBind: false + canHeavy: false + canSlow: false +28: + name: scholar + canStun: false + canSleep: true + canBind: false + canHeavy: false + canSlow: false +29: + name: rogue + canStun: true + canSleep: false + canBind: false + canHeavy: false + canSlow: true +30: + name: ninja + canStun: true + canSleep: false + canBind: true + canHeavy: true + canSlow: true +31: + name: machinist + canStun: false + canSleep: false + canBind: true + canHeavy: true + canSlow: true +32: + name: dark knight + canStun: true + canSleep: false + canBind: false + canHeavy: false + canSlow: true +33: + name: astrologian + canStun: false + canSleep: true + canBind: false + canHeavy: false + canSlow: false +34: + name: samurai + canStun: true + canSleep: false + canBind: false + canHeavy: false + canSlow: true +35: + name: red mage + canStun: false + canSleep: true + canBind: false + canHeavy: false + canSlow: false +36: + name: blue mage + canStun: true + canSleep: true + canBind: true + canHeavy: true + canSlow: true +37: + name: gunbreaker + canStun: true + canSleep: false + canBind: false + canHeavy: false + canSlow: true +38: + name: dancer + canStun: false + canSleep: false + canBind: true + canHeavy: true + canSlow: true +39: + name: reaper + canStun: true + canSleep: false + canBind: false + canHeavy: false + canSlow: true +40: + name: sage + canStun: false + canSleep: true + canBind: false + canHeavy: false + canSlow: false diff --git a/data.yml b/mob-data.yml similarity index 100% rename from data.yml rename to mob-data.yml From e54b5d08c75feb7dd91c7c94f6a6004eda55f523 Mon Sep 17 00:00:00 2001 From: AkiniKites Date: Tue, 25 Jan 2022 20:05:57 -0500 Subject: [PATCH 03/32] Code cleanup --- Attributes/AliasesAttribute.cs | 15 ----- Attributes/CommandAttribute.cs | 15 ----- Attributes/DoNotShowInHelpAttribute.cs | 9 --- Attributes/HelpMessageAttribute.cs | 15 ----- Plugin.cs | 53 ++++++--------- PluginCommandManager.cs | 92 -------------------------- TargetData.cs | 13 ++-- 7 files changed, 26 insertions(+), 186 deletions(-) delete mode 100644 Attributes/AliasesAttribute.cs delete mode 100644 Attributes/CommandAttribute.cs delete mode 100644 Attributes/DoNotShowInHelpAttribute.cs delete mode 100644 Attributes/HelpMessageAttribute.cs delete mode 100644 PluginCommandManager.cs diff --git a/Attributes/AliasesAttribute.cs b/Attributes/AliasesAttribute.cs deleted file mode 100644 index 911f7cd..0000000 --- a/Attributes/AliasesAttribute.cs +++ /dev/null @@ -1,15 +0,0 @@ -using System; - -namespace DeepDungeonDex.Attributes -{ - [AttributeUsage(AttributeTargets.Method)] - public class AliasesAttribute : Attribute - { - public string[] Aliases { get; } - - public AliasesAttribute(params string[] aliases) - { - Aliases = aliases; - } - } -} \ No newline at end of file diff --git a/Attributes/CommandAttribute.cs b/Attributes/CommandAttribute.cs deleted file mode 100644 index 1e7813e..0000000 --- a/Attributes/CommandAttribute.cs +++ /dev/null @@ -1,15 +0,0 @@ -using System; - -namespace DeepDungeonDex.Attributes -{ - [AttributeUsage(AttributeTargets.Method)] - public class CommandAttribute : Attribute - { - public string Command { get; } - - public CommandAttribute(string command) - { - Command = command; - } - } -} \ No newline at end of file diff --git a/Attributes/DoNotShowInHelpAttribute.cs b/Attributes/DoNotShowInHelpAttribute.cs deleted file mode 100644 index 8df6cc0..0000000 --- a/Attributes/DoNotShowInHelpAttribute.cs +++ /dev/null @@ -1,9 +0,0 @@ -using System; - -namespace DeepDungeonDex -{ - [AttributeUsage(AttributeTargets.Method)] - public class DoNotShowInHelpAttribute : Attribute - { - } -} \ No newline at end of file diff --git a/Attributes/HelpMessageAttribute.cs b/Attributes/HelpMessageAttribute.cs deleted file mode 100644 index aa66538..0000000 --- a/Attributes/HelpMessageAttribute.cs +++ /dev/null @@ -1,15 +0,0 @@ -using System; - -namespace DeepDungeonDex.Attributes -{ - [AttributeUsage(AttributeTargets.Method)] - public class HelpMessageAttribute : Attribute - { - public string HelpMessage { get; } - - public HelpMessageAttribute(string helpMessage) - { - HelpMessage = helpMessage; - } - } -} \ No newline at end of file diff --git a/Plugin.cs b/Plugin.cs index 35e49af..9e87e27 100644 --- a/Plugin.cs +++ b/Plugin.cs @@ -4,7 +4,6 @@ using Dalamud.Plugin; using Dalamud.Game.ClientState.Conditions; using Dalamud.Game.ClientState.Objects; -using Dalamud.Game.ClientState.Objects.Types; using Dalamud.Game.Command; using Dalamud.Game; using Dalamud.IoC; @@ -17,9 +16,8 @@ public class Plugin : IDalamudPlugin { public static Configuration Config; - private PluginUI ui; - private ConfigUI cui; - private GameObject previousTarget; + private PluginUI MainUI; + private ConfigUI ConfigUI; [PluginService] internal static DalamudPluginInterface PluginInterface { get; private set; } = null!; [PluginService] internal static ClientState ClientState { get; private set; } = null!; @@ -28,8 +26,6 @@ public class Plugin : IDalamudPlugin [PluginService] internal static Framework Framework { get; private set; } = null!; [PluginService] internal static TargetManager Targets { get; private set; } = null!; - [PluginService] internal static DataManager DataManager { get; private set; } = null!; - public string Name => "DeepDungeonDex"; public Plugin() @@ -39,48 +35,39 @@ public Plugin() DataRepo.Load(); - this.ui = new PluginUI(); - this.cui = new ConfigUI(Config.Opacity, Config.IsClickthrough, Config.HideRedVulns, Config.HideBasedOnJob, Config); + MainUI = new PluginUI(); + ConfigUI = new ConfigUI(Config.Opacity, Config.IsClickthrough, Config.HideRedVulns, Config.HideBasedOnJob, Config); - PluginInterface.UiBuilder.Draw += this.ui.Draw; - PluginInterface.UiBuilder.Draw += this.cui.Draw; + PluginInterface.UiBuilder.Draw += MainUI.Draw; + PluginInterface.UiBuilder.Draw += ConfigUI.Draw; + PluginInterface.UiBuilder.OpenConfigUi += OpenConfig; - CommandManager.AddHandler("/pddd", new CommandInfo(OpenConfig) + CommandManager.AddHandler("/pddd", new CommandInfo((c,a) => OpenConfig()) { HelpMessage = "DeepDungeonDex config" }); - Framework.Update += this.GetData; + Framework.Update += GetData; } - public void OpenConfig(string command, string args) + public void OpenConfig() { - cui.IsVisible = true; + ConfigUI.IsVisible = true; } public void GetData(Framework framework) { if (!Condition[ConditionFlag.InDeepDungeon]) { - ui.IsVisible = false; + MainUI.IsVisible = false; return; } - GameObject target = Targets.Target; + var target = Targets.Target; - TargetData t = new TargetData(); - if (!t.IsValidTarget(target)) - { - ui.IsVisible = false; - return; - } - else - { - previousTarget = target; - ui.IsVisible = true; - } + TargetData.UpdateTargetData(target, out var valid); + MainUI.IsVisible = valid; } - - #region IDisposable Support + protected virtual void Dispose(bool disposing) { if (!disposing) return; @@ -89,10 +76,10 @@ protected virtual void Dispose(bool disposing) PluginInterface.SavePluginConfig(Config); - PluginInterface.UiBuilder.Draw -= this.ui.Draw; - PluginInterface.UiBuilder.Draw -= this.cui.Draw; + PluginInterface.UiBuilder.Draw -= MainUI.Draw; + PluginInterface.UiBuilder.Draw -= ConfigUI.Draw; - Framework.Update -= this.GetData; + Framework.Update -= GetData; } public void Dispose() @@ -100,7 +87,5 @@ public void Dispose() Dispose(true); GC.SuppressFinalize(this); } - - #endregion } } \ No newline at end of file diff --git a/PluginCommandManager.cs b/PluginCommandManager.cs deleted file mode 100644 index 574acbf..0000000 --- a/PluginCommandManager.cs +++ /dev/null @@ -1,92 +0,0 @@ -#pragma warning disable CA1416 -using Dalamud.Game.Command; -using Dalamud.Plugin; -using DeepDungeonDex.Attributes; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Reflection; -using static Dalamud.Game.Command.CommandInfo; -// ReSharper disable ForCanBeConvertedToForeach - -namespace DeepDungeonDex -{ - public class PluginCommandManager : IDisposable - { - private readonly DalamudPluginInterface pluginInterface; - private readonly (string, CommandInfo)[] pluginCommands; - private readonly THost host; - private readonly CommandManager _commands; - - public PluginCommandManager(THost host, DalamudPluginInterface pluginInterface, CommandManager commands) - { - this.pluginInterface = pluginInterface; - this.host = host; - this._commands = commands; - - this.pluginCommands = host.GetType().GetMethods(BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Static | BindingFlags.Instance) - .Where(method => method.GetCustomAttribute() != null) - .SelectMany(GetCommandInfoTuple) - .ToArray(); - - AddCommandHandlers(); - } - - // http://codebetter.com/patricksmacchia/2008/11/19/an-easy-and-efficient-way-to-improve-net-code-performances/ - // Benchmarking this myself gave similar results, so I'm doing this to somewhat counteract using reflection to access command attributes. - // I like the convenience of attributes, but in principle it's a bit slower to use them as opposed to just initializing CommandInfos directly. - // It's usually sub-1 millisecond anyways, though. It probably doesn't matter at all. - private void AddCommandHandlers() - { - for (var i = 0; i < this.pluginCommands.Length; i++) - { - var (command, commandInfo) = this.pluginCommands[i]; - this._commands.AddHandler(command, commandInfo); - } - } - - private void RemoveCommandHandlers() - { - for (var i = 0; i < this.pluginCommands.Length; i++) - { - var (command, _) = this.pluginCommands[i]; - this._commands.RemoveHandler(command); - } - } - - private IEnumerable<(string, CommandInfo)> GetCommandInfoTuple(MethodInfo method) - { - var handlerDelegate = (HandlerDelegate)Delegate.CreateDelegate(typeof(HandlerDelegate), this.host, method); - - var command = handlerDelegate.Method.GetCustomAttribute(); - var aliases = handlerDelegate.Method.GetCustomAttribute(); - var helpMessage = handlerDelegate.Method.GetCustomAttribute(); - var doNotShowInHelp = handlerDelegate.Method.GetCustomAttribute(); - - var commandInfo = new CommandInfo(handlerDelegate) - { - HelpMessage = helpMessage?.HelpMessage ?? string.Empty, - ShowInHelp = doNotShowInHelp == null, - }; - - // Create list of tuples that will be filled with one tuple per alias, in addition to the base command tuple. - var commandInfoTuples = new List<(string, CommandInfo)> { (command.Command, commandInfo) }; - if (aliases != null) - { - // ReSharper disable once LoopCanBeConvertedToQuery - for (var i = 0; i < aliases.Aliases.Length; i++) - { - commandInfoTuples.Add((aliases.Aliases[i], commandInfo)); - } - } - - return commandInfoTuples; - } - - public void Dispose() - { - RemoveCommandHandlers(); - } - } -} -#pragma warning restore CA1416 \ No newline at end of file diff --git a/TargetData.cs b/TargetData.cs index f39a039..7c198b9 100644 --- a/TargetData.cs +++ b/TargetData.cs @@ -1,4 +1,5 @@ -using Dalamud.Game.ClientState.Objects.Types; +using System.Runtime.InteropServices.ComTypes; +using Dalamud.Game.ClientState.Objects.Types; using Dalamud.Game.Text.SeStringHandling; namespace DeepDungeonDex @@ -7,18 +8,18 @@ public class TargetData { public static uint NameID { get; set; } public static SeString Name { get; set; } - public bool IsValidTarget(GameObject target) + + public static void UpdateTargetData(GameObject target, out bool isValid) { if (target is BattleNpc bnpc) { Name = bnpc.Name; NameID = bnpc.NameId; - return true; + + isValid = true; } else - { - return false; - } + isValid = false; } } } \ No newline at end of file From a9a414af16b4618aff5d7521eb940066ae35e2e4 Mon Sep 17 00:00:00 2001 From: AkiniKites Date: Tue, 25 Jan 2022 20:32:44 -0500 Subject: [PATCH 04/32] Add overrides --- Data/DataRepo.cs | 95 +++++++++++++++++++++++++++++++++++++++++------- Data/MobData.cs | 12 +++--- UI/PluginUI.cs | 74 +++++++++++++++++++++++-------------- 3 files changed, 133 insertions(+), 48 deletions(-) diff --git a/Data/DataRepo.cs b/Data/DataRepo.cs index cbeb2ed..bdbcc51 100644 --- a/Data/DataRepo.cs +++ b/Data/DataRepo.cs @@ -1,6 +1,9 @@ -using System.Collections.Generic; +using System; +using System.Collections.Generic; using System.IO; using System.Threading.Tasks; +using Dalamud.Logging; +using Dalamud.Plugin; using YamlDotNet.Serialization; using YamlDotNet.Serialization.NamingConventions; @@ -8,30 +11,55 @@ namespace DeepDungeonDex.Data { public class DataRepo { + private static object _lock = new object(); private static bool _dataLoaded = false; private static Dictionary _mobData; + private static Dictionary _mobOverrideData; private static Dictionary _jobData; private static string DataDir => Plugin.PluginInterface.AssemblyLocation.Directory.FullName; private static string MobsDbPath => Path.Combine(DataDir, "mob-data.yml"); + private static string MobOverrideDbPath => Path.Combine(Plugin.PluginInterface.GetPluginConfigDirectory(), "mob-overrides-data.yml"); private static string JobsDbPath => Path.Combine(DataDir, "job-data.yml"); - public static MobData GetMob(uint nameID) + public static MobData GetMob(uint id) { if (!_dataLoaded) return null; - if (_mobData.TryGetValue(nameID, out var value)) + if (_mobOverrideData.TryGetValue(id, out var value)) + return value; + if (_mobData.TryGetValue(id, out value)) return value; return null; } - public static JobData GetJob(uint jobId) + + public static void SaveOverride(uint id, MobData data) + { + if (!_dataLoaded) + return; + + _mobOverrideData[id] = data; + Save(); + } + + public static void ClearOverride(uint id) + { + if (!_dataLoaded) + return; + + _mobOverrideData.Remove(id); + Save(); + } + + + public static JobData GetJob(uint id) { if (!_dataLoaded) return null; - if (_jobData.TryGetValue(jobId, out var value)) + if (_jobData.TryGetValue(id, out var value)) return value; return null; } @@ -40,17 +68,56 @@ public static void Load() { Task.Run(() => { - var deserializer = new DeserializerBuilder() - .WithNamingConvention(CamelCaseNamingConvention.Instance) - .Build(); + try + { + var deserializer = new DeserializerBuilder() + .WithNamingConvention(CamelCaseNamingConvention.Instance) + .Build(); + + var yaml = File.ReadAllText(MobsDbPath); + _mobData = deserializer.Deserialize>(yaml); - var yaml = File.ReadAllText(MobsDbPath); - _mobData = deserializer.Deserialize>(yaml); + if (File.Exists(MobOverrideDbPath)) + { + yaml = File.ReadAllText(MobOverrideDbPath); + _mobOverrideData = deserializer.Deserialize>(yaml); + } + else + _mobOverrideData = new Dictionary(); + + yaml = File.ReadAllText(JobsDbPath); + _jobData = deserializer.Deserialize>(yaml); + + + _dataLoaded = true; + } + catch(Exception ex) + { + PluginLog.Error("Error loading database: " + ex); + } + }); + } + + private static void Save() + { + Task.Run(() => + { + try + { + lock (_lock) + { + var serializer = new SerializerBuilder() + .WithNamingConvention(CamelCaseNamingConvention.Instance) + .Build(); - yaml = File.ReadAllText(JobsDbPath); - _jobData = deserializer.Deserialize>(yaml); - - _dataLoaded = true; + var yaml = serializer.Serialize(_mobOverrideData); + File.WriteAllText(MobOverrideDbPath, yaml); + } + } + catch (Exception ex) + { + PluginLog.Error("Error saving database: " + ex); + } }); } } diff --git a/Data/MobData.cs b/Data/MobData.cs index 361bcf3..724938f 100644 --- a/Data/MobData.cs +++ b/Data/MobData.cs @@ -10,12 +10,12 @@ public class MobData { public class Vulnerabilities { - public bool? CanStun { get; set; } - public bool? CanHeavy { get; set; } - public bool? CanSlow { get; set; } - public bool? CanSleep { get; set; } - public bool? CanBind { get; set; } - public bool? IsUndead { get; set; } + public bool? CanStun; + public bool? CanHeavy; + public bool? CanSlow; + public bool? CanSleep; + public bool? CanBind; + public bool? IsUndead; } public Vulnerabilities Vuln { get; set; } diff --git a/UI/PluginUI.cs b/UI/PluginUI.cs index 77763f0..f326c88 100644 --- a/UI/PluginUI.cs +++ b/UI/PluginUI.cs @@ -15,39 +15,52 @@ public class PluginUI public PluginUI() { } - private void PrintSingleVuln(bool? isVulnerable, string message, bool? jobOkay = null) + private bool PrintSingleVuln(ref bool? isVulnerable, string message, bool? jobOkay) { if (jobOkay == false && Plugin.Config.HideBasedOnJob) - return; + return false; + + if (isVulnerable == false && Plugin.Config.HideRedVulns) + return false; - switch (isVulnerable) + var color = isVulnerable switch { - case true: - ImGui.PushStyleColor(ImGuiCol.Text, 0xFF00FF00); - ImGui.Text(message); - ImGui.PopStyleColor(); - break; - case false: - if (!Plugin.Config.HideRedVulns) - { - ImGui.PushStyleColor(ImGuiCol.Text, 0xFF0000FF); - ImGui.Text(message); - ImGui.PopStyleColor(); - } - break; - default: - ImGui.PushStyleColor(ImGuiCol.Text, 0x50FFFFFF); - ImGui.Text(message); - ImGui.PopStyleColor(); - break; + true => 0xFF00FF00, + false => 0xFF0000FF, + _ => (uint)0x50FFFFFF + }; + + var dataChanged = false; + + ImGui.PushStyleColor(ImGuiCol.Text, color); + + if (ImGui.Selectable(message, false)) + { + //move next state + isVulnerable = MoveNextState(isVulnerable); + dataChanged = true; } + + ImGui.PopStyleColor(); + + return dataChanged; + } + + private bool? MoveNextState(bool? state) + { + return state switch + { + true => false, + false => null, + _ => true + }; } public void Draw() { if (!IsVisible) return; - + var mobData = DataRepo.GetMob(TargetData.NameID); if (mobData == null) return; @@ -98,17 +111,22 @@ public void Draw() } ImGui.NextColumn(); - PrintSingleVuln(mobData.Vuln.CanStun, "Stun", jobData?.CanStun); - PrintSingleVuln(mobData.Vuln.CanSleep, "Sleep", jobData?.CanSleep); - PrintSingleVuln(mobData.Vuln.CanBind, "Bind", jobData?.CanBind); - PrintSingleVuln(mobData.Vuln.CanHeavy, "Heavy", jobData?.CanHeavy); - PrintSingleVuln(mobData.Vuln.CanSlow, "Slow", jobData?.CanSlow); + var dataChanged = false; + + dataChanged |= PrintSingleVuln(ref mobData.Vuln.CanStun, "Stun", jobData?.CanStun); + dataChanged |= PrintSingleVuln(ref mobData.Vuln.CanSleep, "Sleep", jobData?.CanSleep); + dataChanged |= PrintSingleVuln(ref mobData.Vuln.CanBind, "Bind", jobData?.CanBind); + dataChanged |= PrintSingleVuln(ref mobData.Vuln.CanHeavy, "Heavy", jobData?.CanHeavy); + dataChanged |= PrintSingleVuln(ref mobData.Vuln.CanSlow, "Slow", jobData?.CanSlow); if (!(TargetData.NameID >= 7262 && TargetData.NameID <= 7610)) { - PrintSingleVuln(mobData.Vuln.IsUndead, "Undead"); + dataChanged |= PrintSingleVuln(ref mobData.Vuln.IsUndead, "Undead", null); } + if (dataChanged) + DataRepo.SaveOverride(TargetData.NameID, mobData); + ImGui.NextColumn(); ImGui.Columns(1); ImGui.NewLine(); From 0433b2936e6919de55d736058ae03b7b53259665 Mon Sep 17 00:00:00 2001 From: AkiniKites Date: Tue, 25 Jan 2022 20:50:25 -0500 Subject: [PATCH 05/32] Add reset button --- Data/DataRepo.cs | 10 +++++----- Data/MobData.cs | 19 +++++++++++++++++++ UI/PluginUI.cs | 11 +++++++++++ 3 files changed, 35 insertions(+), 5 deletions(-) diff --git a/Data/DataRepo.cs b/Data/DataRepo.cs index bdbcc51..c3c6bbb 100644 --- a/Data/DataRepo.cs +++ b/Data/DataRepo.cs @@ -29,9 +29,9 @@ public static MobData GetMob(uint id) return null; if (_mobOverrideData.TryGetValue(id, out var value)) - return value; - if (_mobData.TryGetValue(id, out value)) - return value; + return new MobData(value); + if (_mobData.TryGetValue(id, out value)) + return new MobData(value); return null; } @@ -39,7 +39,7 @@ public static void SaveOverride(uint id, MobData data) { if (!_dataLoaded) return; - + _mobOverrideData[id] = data; Save(); } @@ -48,7 +48,7 @@ public static void ClearOverride(uint id) { if (!_dataLoaded) return; - + _mobOverrideData.Remove(id); Save(); } diff --git a/Data/MobData.cs b/Data/MobData.cs index 724938f..ac417ad 100644 --- a/Data/MobData.cs +++ b/Data/MobData.cs @@ -16,6 +16,17 @@ public class Vulnerabilities public bool? CanSleep; public bool? CanBind; public bool? IsUndead; + + public Vulnerabilities() { } + public Vulnerabilities(Vulnerabilities vuln) + { + CanStun = vuln.CanStun; + CanHeavy = vuln.CanHeavy; + CanSlow = vuln.CanSlow; + CanSleep = vuln.CanSleep; + CanBind = vuln.CanBind; + IsUndead = vuln.IsUndead; + } } public Vulnerabilities Vuln { get; set; } @@ -41,5 +52,13 @@ public enum AggroType } public AggroType Aggro { get; set; } + public MobData() { } + public MobData(MobData mob) + { + Vuln = new Vulnerabilities(mob.Vuln); + MobNotes = mob.MobNotes; + Threat = mob.Threat; + Aggro = mob.Aggro; + } } } diff --git a/UI/PluginUI.cs b/UI/PluginUI.cs index f326c88..b064597 100644 --- a/UI/PluginUI.cs +++ b/UI/PluginUI.cs @@ -76,8 +76,19 @@ public void Draw() ImGui.SetNextWindowBgAlpha(Plugin.Config.Opacity); ImGui.Begin("cool strati window", flags); + + ImGui.Columns(2, null, false); ImGui.Text("Name:\n"+TargetData.Name); ImGui.NewLine(); + ImGui.NextColumn(); + + var resetText = "Reset"; + ImGui.SetCursorPosX(ImGui.GetCursorPosX() + ImGui.GetColumnWidth() - ImGui.CalcTextSize(resetText).X + - ImGui.GetScrollX() - 2 * ImGui.GetStyle().ItemSpacing.X); + + if (ImGui.Selectable(resetText, false)) + DataRepo.ClearOverride(TargetData.NameID); + ImGui.Columns(3, null, false); ImGui.Text("Aggro Type:\n"); ImGui.Text(mobData.Aggro.ToString()); From 3c593f0c8a65391fa103e612c8c3845173895aeb Mon Sep 17 00:00:00 2001 From: AkiniKites Date: Tue, 25 Jan 2022 20:53:08 -0500 Subject: [PATCH 06/32] Update version and url --- DeepDungeonDex.json | 4 ++-- UI/ConfigUI.cs | 1 - 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/DeepDungeonDex.json b/DeepDungeonDex.json index 063310d..2afda8b 100644 --- a/DeepDungeonDex.json +++ b/DeepDungeonDex.json @@ -5,8 +5,8 @@ "Description": "A live bestiary for Deep Dungeon. Shows target mob aggro type, a subjective threat level, status vulnerabilities, and a general overview of notable mechanics. Threat level is meant to be taken with a grain of salt, is aimed towards solo players, and assumes a general familiarity with deep dungeon mechanics and the class being played. Information is accurate to the best of my knowledge based on crowdsourced information, but I could use your help! Please open an issue on the GitHub if you'd like to correct inaccurate or untested data.", "Tags": ["deep dungeon","achievements","battle"], "InternalName": "DeepDungeonDex", - "AssemblyVersion": "1.2.0.0", - "RepoUrl": "https://github.com/Strati/DeepDungeonDex", + "AssemblyVersion": "1.3.0.0", + "RepoUrl": "https://github.com/AkiniKites/DeepDungeonDex", "ApplicableVersion": "any", "DalamudApiLevel": 5, "LoadPriority": 0 diff --git a/UI/ConfigUI.cs b/UI/ConfigUI.cs index ca1c64a..53c4caf 100644 --- a/UI/ConfigUI.cs +++ b/UI/ConfigUI.cs @@ -11,7 +11,6 @@ namespace DeepDungeonDex.UI { public class ConfigUI { - public bool IsVisible { get; set; } private float opacity; private bool isClickthrough; From 3684cae035874b267decb0499a7aaa729ab72595 Mon Sep 17 00:00:00 2001 From: AkiniKites Date: Fri, 4 Feb 2022 17:31:16 -0500 Subject: [PATCH 07/32] undo version changes --- DeepDungeonDex.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/DeepDungeonDex.json b/DeepDungeonDex.json index 2afda8b..063310d 100644 --- a/DeepDungeonDex.json +++ b/DeepDungeonDex.json @@ -5,8 +5,8 @@ "Description": "A live bestiary for Deep Dungeon. Shows target mob aggro type, a subjective threat level, status vulnerabilities, and a general overview of notable mechanics. Threat level is meant to be taken with a grain of salt, is aimed towards solo players, and assumes a general familiarity with deep dungeon mechanics and the class being played. Information is accurate to the best of my knowledge based on crowdsourced information, but I could use your help! Please open an issue on the GitHub if you'd like to correct inaccurate or untested data.", "Tags": ["deep dungeon","achievements","battle"], "InternalName": "DeepDungeonDex", - "AssemblyVersion": "1.3.0.0", - "RepoUrl": "https://github.com/AkiniKites/DeepDungeonDex", + "AssemblyVersion": "1.2.0.0", + "RepoUrl": "https://github.com/Strati/DeepDungeonDex", "ApplicableVersion": "any", "DalamudApiLevel": 5, "LoadPriority": 0 From cb6905ddcf911551e0db4bc64837b803b133a3dc Mon Sep 17 00:00:00 2001 From: AkiniKites Date: Fri, 4 Feb 2022 17:57:47 -0500 Subject: [PATCH 08/32] Improved repo definition --- Data/DataRepo.cs | 124 --------------------------------------------- Data/IRepoData.cs | 13 +++++ Data/JobData.cs | 15 +++++- Data/MobData.cs | 16 +++--- Data/RepoBase.cs | 126 ++++++++++++++++++++++++++++++++++++++++++++++ Plugin.cs | 6 ++- UI/PluginUI.cs | 8 +-- 7 files changed, 172 insertions(+), 136 deletions(-) delete mode 100644 Data/DataRepo.cs create mode 100644 Data/IRepoData.cs create mode 100644 Data/RepoBase.cs diff --git a/Data/DataRepo.cs b/Data/DataRepo.cs deleted file mode 100644 index c3c6bbb..0000000 --- a/Data/DataRepo.cs +++ /dev/null @@ -1,124 +0,0 @@ -using System; -using System.Collections.Generic; -using System.IO; -using System.Threading.Tasks; -using Dalamud.Logging; -using Dalamud.Plugin; -using YamlDotNet.Serialization; -using YamlDotNet.Serialization.NamingConventions; - -namespace DeepDungeonDex.Data -{ - public class DataRepo - { - private static object _lock = new object(); - private static bool _dataLoaded = false; - - private static Dictionary _mobData; - private static Dictionary _mobOverrideData; - private static Dictionary _jobData; - - private static string DataDir => Plugin.PluginInterface.AssemblyLocation.Directory.FullName; - private static string MobsDbPath => Path.Combine(DataDir, "mob-data.yml"); - private static string MobOverrideDbPath => Path.Combine(Plugin.PluginInterface.GetPluginConfigDirectory(), "mob-overrides-data.yml"); - private static string JobsDbPath => Path.Combine(DataDir, "job-data.yml"); - - public static MobData GetMob(uint id) - { - if (!_dataLoaded) - return null; - - if (_mobOverrideData.TryGetValue(id, out var value)) - return new MobData(value); - if (_mobData.TryGetValue(id, out value)) - return new MobData(value); - return null; - } - - public static void SaveOverride(uint id, MobData data) - { - if (!_dataLoaded) - return; - - _mobOverrideData[id] = data; - Save(); - } - - public static void ClearOverride(uint id) - { - if (!_dataLoaded) - return; - - _mobOverrideData.Remove(id); - Save(); - } - - - public static JobData GetJob(uint id) - { - if (!_dataLoaded) - return null; - - if (_jobData.TryGetValue(id, out var value)) - return value; - return null; - } - - public static void Load() - { - Task.Run(() => - { - try - { - var deserializer = new DeserializerBuilder() - .WithNamingConvention(CamelCaseNamingConvention.Instance) - .Build(); - - var yaml = File.ReadAllText(MobsDbPath); - _mobData = deserializer.Deserialize>(yaml); - - if (File.Exists(MobOverrideDbPath)) - { - yaml = File.ReadAllText(MobOverrideDbPath); - _mobOverrideData = deserializer.Deserialize>(yaml); - } - else - _mobOverrideData = new Dictionary(); - - yaml = File.ReadAllText(JobsDbPath); - _jobData = deserializer.Deserialize>(yaml); - - - _dataLoaded = true; - } - catch(Exception ex) - { - PluginLog.Error("Error loading database: " + ex); - } - }); - } - - private static void Save() - { - Task.Run(() => - { - try - { - lock (_lock) - { - var serializer = new SerializerBuilder() - .WithNamingConvention(CamelCaseNamingConvention.Instance) - .Build(); - - var yaml = serializer.Serialize(_mobOverrideData); - File.WriteAllText(MobOverrideDbPath, yaml); - } - } - catch (Exception ex) - { - PluginLog.Error("Error saving database: " + ex); - } - }); - } - } -} diff --git a/Data/IRepoData.cs b/Data/IRepoData.cs new file mode 100644 index 0000000..1af49a0 --- /dev/null +++ b/Data/IRepoData.cs @@ -0,0 +1,13 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace DeepDungeonDex.Data +{ + public interface IRepoData + { + T Clone(); + } +} diff --git a/Data/JobData.cs b/Data/JobData.cs index 3495946..0f91bef 100644 --- a/Data/JobData.cs +++ b/Data/JobData.cs @@ -6,7 +6,7 @@ namespace DeepDungeonDex.Data { - public class JobData + public class JobData : IRepoData { public string Name { get; set; } @@ -15,5 +15,18 @@ public class JobData public bool CanBind { get; set; } public bool CanHeavy { get; set; } public bool CanSlow { get; set; } + + public JobData Clone() + { + return new JobData() + { + Name = Name, + CanStun = CanStun, + CanSleep = CanSleep, + CanBind = CanBind, + CanHeavy = CanHeavy, + CanSlow = CanSlow + }; + } } } diff --git a/Data/MobData.cs b/Data/MobData.cs index ac417ad..de86753 100644 --- a/Data/MobData.cs +++ b/Data/MobData.cs @@ -6,7 +6,7 @@ namespace DeepDungeonDex.Data { - public class MobData + public class MobData : IRepoData { public class Vulnerabilities { @@ -53,12 +53,16 @@ public enum AggroType public AggroType Aggro { get; set; } public MobData() { } - public MobData(MobData mob) + + public MobData Clone() { - Vuln = new Vulnerabilities(mob.Vuln); - MobNotes = mob.MobNotes; - Threat = mob.Threat; - Aggro = mob.Aggro; + return new MobData() + { + Vuln = new Vulnerabilities(Vuln), + MobNotes = MobNotes, + Threat = Threat, + Aggro = Aggro + }; } } } diff --git a/Data/RepoBase.cs b/Data/RepoBase.cs new file mode 100644 index 0000000..b68adfb --- /dev/null +++ b/Data/RepoBase.cs @@ -0,0 +1,126 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Threading.Tasks; +using Dalamud.Logging; +using Dalamud.Plugin; +using YamlDotNet.Serialization; +using YamlDotNet.Serialization.NamingConventions; + +namespace DeepDungeonDex.Data +{ + public class DataRepo where T : class, IRepoData + { + private object _lock = new object(); + private bool _dataLoaded = false; + + private Dictionary _data; + private Dictionary _overrideData; + + private string DataDir => Plugin.PluginInterface.AssemblyLocation.Directory.FullName; + private string DbPath => Path.Combine(DataDir, $"{Name}.yml"); + private string OverrideDbPath => Path.Combine(Plugin.PluginInterface.GetPluginConfigDirectory(), $"{Name}-overrides.yml"); + + public string Name { get; } + + public static DataRepo Create(string name) => new DataRepo(name); + + private DataRepo(string name) + { + Name = name; + } + + public T Get(uint id) + { + return Get(id, out _); + } + public T Get(uint id, out bool isOverride) + { + isOverride = false; + if (!_dataLoaded) + return null; + + if (_overrideData.TryGetValue(id, out var value)) + { + isOverride = true; + return value.Clone(); + } + if (_data.TryGetValue(id, out value)) + return value.Clone(); + return null; + } + + public void SaveOverride(uint id, T data) + { + if (!_dataLoaded) + return; + + _overrideData[id] = data; + Save(); + } + + public void ClearOverride(uint id) + { + if (!_dataLoaded) + return; + + _overrideData.Remove(id); + Save(); + } + + public DataRepo Load() + { + Task.Run(() => + { + try + { + var deserializer = new DeserializerBuilder() + .WithNamingConvention(CamelCaseNamingConvention.Instance) + .Build(); + + var yaml = File.ReadAllText(DbPath); + _data = deserializer.Deserialize>(yaml); + + if (File.Exists(OverrideDbPath)) + { + yaml = File.ReadAllText(OverrideDbPath); + _overrideData = deserializer.Deserialize>(yaml); + } + else + _overrideData = new Dictionary(); + + _dataLoaded = true; + } + catch(Exception ex) + { + PluginLog.Error($"Error loading database ({Name}): {ex}"); + } + }); + + return this; + } + + private void Save() + { + Task.Run(() => + { + try + { + lock (_lock) + { + var serializer = new SerializerBuilder() + .WithNamingConvention(CamelCaseNamingConvention.Instance) + .Build(); + + var yaml = serializer.Serialize(_overrideData); + File.WriteAllText(OverrideDbPath, yaml); + } + } + catch (Exception ex) + { + PluginLog.Error($"Error saving database ({Name}): " + ex); + } + }); + } + } +} diff --git a/Plugin.cs b/Plugin.cs index 9e87e27..85654c6 100644 --- a/Plugin.cs +++ b/Plugin.cs @@ -19,6 +19,9 @@ public class Plugin : IDalamudPlugin private PluginUI MainUI; private ConfigUI ConfigUI; + public static DataRepo MobRepo { get; private set; } + public static DataRepo JobRepo { get; private set; } + [PluginService] internal static DalamudPluginInterface PluginInterface { get; private set; } = null!; [PluginService] internal static ClientState ClientState { get; private set; } = null!; [PluginService] internal static CommandManager CommandManager { get; private set; } = null!; @@ -33,7 +36,8 @@ public Plugin() Config = (Configuration)PluginInterface.GetPluginConfig() ?? new Configuration(); Config.Initialize(PluginInterface); - DataRepo.Load(); + MobRepo = DataRepo.Create("mob-data").Load(); + JobRepo = DataRepo.Create("job-data").Load(); MainUI = new PluginUI(); ConfigUI = new ConfigUI(Config.Opacity, Config.IsClickthrough, Config.HideRedVulns, Config.HideBasedOnJob, Config); diff --git a/UI/PluginUI.cs b/UI/PluginUI.cs index b064597..309d772 100644 --- a/UI/PluginUI.cs +++ b/UI/PluginUI.cs @@ -61,11 +61,11 @@ public void Draw() if (!IsVisible) return; - var mobData = DataRepo.GetMob(TargetData.NameID); + var mobData = Plugin.MobRepo.Get(TargetData.NameID); if (mobData == null) return; var cjid = Plugin.ClientState.LocalPlayer?.ClassJob.GameData?.RowId ?? 0; - var jobData = DataRepo.GetJob(cjid); + var jobData = Plugin.JobRepo.Get(cjid); var flags = ImGuiWindowFlags.NoResize | ImGuiWindowFlags.AlwaysAutoResize | ImGuiWindowFlags.NoTitleBar; if (Plugin.Config.IsClickthrough) @@ -87,7 +87,7 @@ public void Draw() - ImGui.GetScrollX() - 2 * ImGui.GetStyle().ItemSpacing.X); if (ImGui.Selectable(resetText, false)) - DataRepo.ClearOverride(TargetData.NameID); + Plugin.MobRepo.ClearOverride(TargetData.NameID); ImGui.Columns(3, null, false); ImGui.Text("Aggro Type:\n"); @@ -136,7 +136,7 @@ public void Draw() } if (dataChanged) - DataRepo.SaveOverride(TargetData.NameID, mobData); + Plugin.MobRepo.SaveOverride(TargetData.NameID, mobData); ImGui.NextColumn(); ImGui.Columns(1); From 0b89bd546ff45352a3c099e64859cab23586eb15 Mon Sep 17 00:00:00 2001 From: AkiniKites Date: Fri, 4 Feb 2022 18:00:04 -0500 Subject: [PATCH 09/32] Add conditional reset --- UI/PluginUI.cs | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/UI/PluginUI.cs b/UI/PluginUI.cs index 309d772..b244868 100644 --- a/UI/PluginUI.cs +++ b/UI/PluginUI.cs @@ -61,7 +61,7 @@ public void Draw() if (!IsVisible) return; - var mobData = Plugin.MobRepo.Get(TargetData.NameID); + var mobData = Plugin.MobRepo.Get(TargetData.NameID, out var isOverride); if (mobData == null) return; var cjid = Plugin.ClientState.LocalPlayer?.ClassJob.GameData?.RowId ?? 0; @@ -82,12 +82,15 @@ public void Draw() ImGui.NewLine(); ImGui.NextColumn(); - var resetText = "Reset"; - ImGui.SetCursorPosX(ImGui.GetCursorPosX() + ImGui.GetColumnWidth() - ImGui.CalcTextSize(resetText).X - - ImGui.GetScrollX() - 2 * ImGui.GetStyle().ItemSpacing.X); + if (isOverride) + { + var resetText = "Reset"; + ImGui.SetCursorPosX(ImGui.GetCursorPosX() + ImGui.GetColumnWidth() - ImGui.CalcTextSize(resetText).X + - ImGui.GetScrollX() - 2 * ImGui.GetStyle().ItemSpacing.X); - if (ImGui.Selectable(resetText, false)) - Plugin.MobRepo.ClearOverride(TargetData.NameID); + if (ImGui.Selectable(resetText, false)) + Plugin.MobRepo.ClearOverride(TargetData.NameID); + } ImGui.Columns(3, null, false); ImGui.Text("Aggro Type:\n"); From dc9acca29ce1580a68aabc7c11dc068d17e92d63 Mon Sep 17 00:00:00 2001 From: AkiniKites Date: Fri, 4 Feb 2022 18:52:30 -0500 Subject: [PATCH 10/32] Fix repo name --- Data/{RepoBase.cs => DataRepo.cs} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename Data/{RepoBase.cs => DataRepo.cs} (100%) diff --git a/Data/RepoBase.cs b/Data/DataRepo.cs similarity index 100% rename from Data/RepoBase.cs rename to Data/DataRepo.cs From ff60b6f0bbe4b7519026a7ebeaacbb4ba8b40854 Mon Sep 17 00:00:00 2001 From: AkiniKites Date: Fri, 4 Feb 2022 19:02:38 -0500 Subject: [PATCH 11/32] Remove static references in repo --- Data/DataRepo.cs | 26 ++++++++++++++++---------- DeepDungeonDex.csproj | 1 - Plugin.cs | 4 ++-- 3 files changed, 18 insertions(+), 13 deletions(-) diff --git a/Data/DataRepo.cs b/Data/DataRepo.cs index b68adfb..b366995 100644 --- a/Data/DataRepo.cs +++ b/Data/DataRepo.cs @@ -11,25 +11,31 @@ namespace DeepDungeonDex.Data { public class DataRepo where T : class, IRepoData { - private object _lock = new object(); + private object _lock = new(); private bool _dataLoaded = false; private Dictionary _data; private Dictionary _overrideData; - - private string DataDir => Plugin.PluginInterface.AssemblyLocation.Directory.FullName; - private string DbPath => Path.Combine(DataDir, $"{Name}.yml"); - private string OverrideDbPath => Path.Combine(Plugin.PluginInterface.GetPluginConfigDirectory(), $"{Name}-overrides.yml"); - - public string Name { get; } - public static DataRepo Create(string name) => new DataRepo(name); + public string Name { get; init; } + private string DbPath { get; init; } + private string OverrideDbPath { get; init; } - private DataRepo(string name) + public static DataRepo Create(DalamudPluginInterface plugin, string name) { - Name = name; + var dir = plugin.AssemblyLocation.Directory.FullName; + var repo = new DataRepo() + { + Name = name, + DbPath = Path.Combine(dir, $"{name}.yml"), + OverrideDbPath = Path.Combine(Plugin.PluginInterface.GetPluginConfigDirectory(), $"{name}-overrides.yml") + }; + + return repo; } + private DataRepo() { } + public T Get(uint id) { return Get(id, out _); diff --git a/DeepDungeonDex.csproj b/DeepDungeonDex.csproj index af85bc9..28b07d1 100644 --- a/DeepDungeonDex.csproj +++ b/DeepDungeonDex.csproj @@ -2,7 +2,6 @@ net5.0 - 8.0 1.2.0.0 1.2.0.0 diff --git a/Plugin.cs b/Plugin.cs index 85654c6..0989b36 100644 --- a/Plugin.cs +++ b/Plugin.cs @@ -36,8 +36,8 @@ public Plugin() Config = (Configuration)PluginInterface.GetPluginConfig() ?? new Configuration(); Config.Initialize(PluginInterface); - MobRepo = DataRepo.Create("mob-data").Load(); - JobRepo = DataRepo.Create("job-data").Load(); + MobRepo = DataRepo.Create(PluginInterface, "mob-data").Load(); + JobRepo = DataRepo.Create(PluginInterface, "job-data").Load(); MainUI = new PluginUI(); ConfigUI = new ConfigUI(Config.Opacity, Config.IsClickthrough, Config.HideRedVulns, Config.HideBasedOnJob, Config); From cad4542c77062122d5161de8b77c27fff581bedf Mon Sep 17 00:00:00 2001 From: AkiniKites Date: Fri, 4 Feb 2022 19:07:28 -0500 Subject: [PATCH 12/32] Actually remove static references --- Data/DataRepo.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Data/DataRepo.cs b/Data/DataRepo.cs index b366995..0ec9505 100644 --- a/Data/DataRepo.cs +++ b/Data/DataRepo.cs @@ -28,7 +28,7 @@ public static DataRepo Create(DalamudPluginInterface plugin, string name) { Name = name, DbPath = Path.Combine(dir, $"{name}.yml"), - OverrideDbPath = Path.Combine(Plugin.PluginInterface.GetPluginConfigDirectory(), $"{name}-overrides.yml") + OverrideDbPath = Path.Combine(plugin.GetPluginConfigDirectory(), $"{name}-overrides.yml") }; return repo; From e52f4e7d64d4c28deebb72daaa65f6c0cf9aa480 Mon Sep 17 00:00:00 2001 From: AkiniKites Date: Sat, 26 Feb 2022 08:50:58 -0500 Subject: [PATCH 13/32] Fix Gaelicat aggro --- mob-data.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mob-data.yml b/mob-data.yml index baf2f3e..1ab3de3 100644 --- a/mob-data.yml +++ b/mob-data.yml @@ -3504,7 +3504,7 @@ isUndead: false mobNotes: '' threat: Easy - aggro: Sight + aggro: Proximity 5363: vuln: canStun: true From f4c283e51efd34650e66d363c0f41218b8fd771b Mon Sep 17 00:00:00 2001 From: AkiniKites Date: Sun, 27 Feb 2022 11:02:19 -0500 Subject: [PATCH 14/32] Fix aggro and undead on some mobs --- mob-data.yml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/mob-data.yml b/mob-data.yml index 1ab3de3..674a9ba 100644 --- a/mob-data.yml +++ b/mob-data.yml @@ -4135,7 +4135,7 @@ canSlow: canSleep: canBind: - isUndead: false + isUndead: true mobNotes: >- Floors 141-150: @@ -4199,7 +4199,7 @@ canSlow: canSleep: canBind: - isUndead: false + isUndead: true mobNotes: Casts Gaze "Evil Eye" threat: Easy aggro: Proximity @@ -4749,7 +4749,7 @@ isUndead: false mobNotes: '' threat: Easy - aggro: Sound + aggro: Sight 5470: vuln: canStun: false @@ -4814,7 +4814,7 @@ canSlow: canSleep: false canBind: false - isUndead: false + isUndead: true mobNotes: '' threat: Easy aggro: Proximity @@ -4842,7 +4842,7 @@ isUndead: false mobNotes: '' threat: Easy - aggro: Sound + aggro: Sight 5480: vuln: canStun: true @@ -4853,7 +4853,7 @@ isUndead: false mobNotes: '' threat: Easy - aggro: Sound + aggro: Sight 2566: vuln: canStun: false From 431fd8bf6c07fc7cdbd9e0b968978393f1cf34fa Mon Sep 17 00:00:00 2001 From: AkiniKites Date: Fri, 29 Jul 2022 00:11:14 -0400 Subject: [PATCH 15/32] Add sketchy yaml merge --- Data/DataRepo.cs | 5 +-- Data/YamlMerge.cs | 89 ++++++++++++++++++++++++++++++++++++++++++++++ DeepDungeonDex.sln | 4 +-- Plugin.cs | 21 ++++++++++- UI/ConfigUI.cs | 15 -------- 5 files changed, 114 insertions(+), 20 deletions(-) create mode 100644 Data/YamlMerge.cs diff --git a/Data/DataRepo.cs b/Data/DataRepo.cs index 0ec9505..06ee484 100644 --- a/Data/DataRepo.cs +++ b/Data/DataRepo.cs @@ -18,8 +18,8 @@ public class DataRepo where T : class, IRepoData private Dictionary _overrideData; public string Name { get; init; } - private string DbPath { get; init; } - private string OverrideDbPath { get; init; } + public string DbPath { get; init; } + public string OverrideDbPath { get; init; } public static DataRepo Create(DalamudPluginInterface plugin, string name) { @@ -95,6 +95,7 @@ public DataRepo Load() else _overrideData = new Dictionary(); + PluginLog.Information($"Loaded data: mobs={_data.Count}, overrides={_overrideData.Count}"); _dataLoaded = true; } catch(Exception ex) diff --git a/Data/YamlMerge.cs b/Data/YamlMerge.cs new file mode 100644 index 0000000..d40e1f6 --- /dev/null +++ b/Data/YamlMerge.cs @@ -0,0 +1,89 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Text; +using System.Text.RegularExpressions; +using System.Threading.Tasks; +using Dalamud.Logging; +using YamlDotNet.Serialization; +using YamlDotNet.Serialization.NamingConventions; + +namespace DeepDungeonDex.Data +{ + public class YamlMerge + { + private static bool YamlObjectStart(string line) + { + return line.Length > 0 && Char.IsNumber(line[0]); + } + + private static bool MergeYamlChanges(List data, out List newData) + { + newData = new List(); + + var m = Regex.Match(data[0], @"\d+"); + if (!m.Success) + { + PluginLog.Error("Invalid object pattern: " + data[0]); + return false; + } + + var id = uint.Parse(m.Value); + var mob = Plugin.MobRepo.Get(id, out var isOverride); + + if (!isOverride) + return false; + + PluginLog.Information("Merging override for: " + id); + + var serializer = new SerializerBuilder() + .WithNamingConvention(CamelCaseNamingConvention.Instance) + .Build(); + + var mobDict = new Dictionary() { { id, mob } }; + + var yaml = serializer.Serialize(mobDict); + newData = yaml.Split(new[] { "\n", "\r\n" }, StringSplitOptions.RemoveEmptyEntries).ToList(); + + return true; + } + + //sketchy yaml merge + public static void MergeCustomChanges() + { + PluginLog.Information("Merging mob overrides"); + + var dbData = File.ReadAllLines(Plugin.MobRepo.DbPath).ToList(); + + int start = -1; + for (int i = 0; i < dbData.Count + 1; i++) + { + if (i == dbData.Count || YamlObjectStart(dbData[i])) + { + if (start == -1) + start = i; + else + { + var len = i - start; + if (len > 1) + { + var data = dbData.GetRange(start, len); + if (MergeYamlChanges(data, out var newData)) + { + dbData.RemoveRange(start, len); + dbData.InsertRange(start, newData); + + i += newData.Count - len; + } + } + + start = -1; + } + } + } + + File.WriteAllLines(Plugin.MobRepo.DbPath+"2", dbData); + } + } +} diff --git a/DeepDungeonDex.sln b/DeepDungeonDex.sln index 55dce01..c376f1a 100644 --- a/DeepDungeonDex.sln +++ b/DeepDungeonDex.sln @@ -1,7 +1,7 @@  Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 16 -VisualStudioVersion = 16.0.30011.22 +# Visual Studio Version 17 +VisualStudioVersion = 17.1.32407.343 MinimumVisualStudioVersion = 10.0.40219.1 Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "DeepDungeonDex", "DeepDungeonDex.csproj", "{517A4352-7F10-48B9-B332-BB592157E377}" EndProject diff --git a/Plugin.cs b/Plugin.cs index 0989b36..daf25bd 100644 --- a/Plugin.cs +++ b/Plugin.cs @@ -7,6 +7,7 @@ using Dalamud.Game.Command; using Dalamud.Game; using Dalamud.IoC; +using Dalamud.Logging; using DeepDungeonDex.Data; using DeepDungeonDex.UI; @@ -49,8 +50,12 @@ public Plugin() CommandManager.AddHandler("/pddd", new CommandInfo((c,a) => OpenConfig()) { HelpMessage = "DeepDungeonDex config" + }); + CommandManager.AddHandler("/pddd-merge", new CommandInfo((c, a) => MergeData()) + { + ShowInHelp = false }); - + Framework.Update += GetData; } @@ -59,6 +64,19 @@ public void OpenConfig() ConfigUI.IsVisible = true; } + public void MergeData() + { + try + { + YamlMerge.MergeCustomChanges(); + PluginLog.Information("Yaml merge ok."); + } + catch(Exception ex) + { + PluginLog.Error(ex, "Failed to merge changes"); + } + } + public void GetData(Framework framework) { if (!Condition[ConditionFlag.InDeepDungeon]) @@ -77,6 +95,7 @@ protected virtual void Dispose(bool disposing) if (!disposing) return; CommandManager.RemoveHandler("/pddd"); + CommandManager.RemoveHandler("/pddd-merge"); PluginInterface.SavePluginConfig(Config); diff --git a/UI/ConfigUI.cs b/UI/ConfigUI.cs index 53c4caf..ab60cf8 100644 --- a/UI/ConfigUI.cs +++ b/UI/ConfigUI.cs @@ -57,10 +57,6 @@ public void Draw() config.Save(); } ImGui.SameLine(); - var c = ImGui.GetCursorPos(); - ImGui.SetCursorPosX(ImGui.GetWindowContentRegionWidth() - ImGui.CalcTextSize("<3 Sponsor on GitHub").X); - ImGui.SmallButton("<3"); - ImGui.SetCursorPos(c); if (ImGui.IsItemHovered()) { ImGui.BeginTooltip(); @@ -73,17 +69,6 @@ public void Draw() ImGui.PushStyleColor(ImGuiCol.Button, 0xFF5E5BFF); ImGui.PushStyleColor(ImGuiCol.ButtonActive, 0xFF5E5BAA); ImGui.PushStyleColor(ImGuiCol.ButtonHovered, 0xFF5E5BDD); - c = ImGui.GetCursorPos(); - ImGui.SetCursorPosX(ImGui.GetWindowContentRegionWidth() - ImGui.CalcTextSize("Sponsor on GitHub").X); - if (ImGui.SmallButton("Sponsor on GitHub")) - { - Process.Start(new ProcessStartInfo() - { - FileName = "https://github.com/sponsors/Strati", - UseShellExecute = true - }); - } - ImGui.SetCursorPos(c); ImGui.PopStyleColor(3); ImGui.End(); } From 6a9e4bd1daf459c2df56e5c489c6c31c7d1faf3a Mon Sep 17 00:00:00 2001 From: AkiniKites Date: Fri, 29 Jul 2022 00:11:34 -0400 Subject: [PATCH 16/32] Update mob data --- mob-data.yml | 117 +++++++++++++++++++++++++-------------------------- 1 file changed, 58 insertions(+), 59 deletions(-) diff --git a/mob-data.yml b/mob-data.yml index 674a9ba..a9be71a 100644 --- a/mob-data.yml +++ b/mob-data.yml @@ -2259,7 +2259,7 @@ 5017: vuln: canStun: true - canHeavy: + canHeavy: false canSlow: canSleep: false canBind: @@ -2281,10 +2281,10 @@ 5019: vuln: canStun: true - canHeavy: + canHeavy: true canSlow: canSleep: false - canBind: + canBind: false isUndead: false mobNotes: '' threat: Easy @@ -2422,7 +2422,7 @@ canHeavy: canSlow: canSleep: false - canBind: + canBind: false isUndead: false mobNotes: '' threat: Easy @@ -2441,10 +2441,10 @@ 5033: vuln: canStun: false - canHeavy: + canHeavy: false canSlow: canSleep: false - canBind: + canBind: false isUndead: false mobNotes: '' threat: Easy @@ -2485,10 +2485,10 @@ 5037: vuln: canStun: false - canHeavy: + canHeavy: true canSlow: canSleep: false - canBind: + canBind: true isUndead: true mobNotes: '' threat: Easy @@ -2828,10 +2828,10 @@ 5300: vuln: canStun: true - canHeavy: + canHeavy: false canSlow: canSleep: false - canBind: + canBind: false isUndead: false mobNotes: '' threat: Easy @@ -2894,7 +2894,7 @@ 5306: vuln: canStun: true - canHeavy: + canHeavy: false canSlow: canSleep: false canBind: @@ -2916,7 +2916,7 @@ 5308: vuln: canStun: true - canHeavy: + canHeavy: true canSlow: canSleep: false canBind: @@ -2966,10 +2966,10 @@ 5313: vuln: canStun: true - canHeavy: + canHeavy: true canSlow: canSleep: false - canBind: + canBind: true isUndead: false mobNotes: '' threat: Easy @@ -2988,7 +2988,7 @@ 5315: vuln: canStun: true - canHeavy: + canHeavy: true canSlow: canSleep: true canBind: @@ -3104,10 +3104,10 @@ 5325: vuln: canStun: true - canHeavy: + canHeavy: true canSlow: canSleep: true - canBind: + canBind: false isUndead: false mobNotes: '' threat: Easy @@ -3126,10 +3126,10 @@ 5327: vuln: canStun: true - canHeavy: + canHeavy: true canSlow: canSleep: true - canBind: + canBind: true isUndead: false mobNotes: '' threat: Easy @@ -3170,10 +3170,10 @@ 5331: vuln: canStun: true - canHeavy: + canHeavy: false canSlow: canSleep: false - canBind: + canBind: false isUndead: false mobNotes: '' threat: Easy @@ -3225,7 +3225,7 @@ canHeavy: canSlow: canSleep: false - canBind: + canBind: true isUndead: false mobNotes: '' threat: Easy @@ -3266,10 +3266,10 @@ 5339: vuln: canStun: true - canHeavy: + canHeavy: true canSlow: canSleep: false - canBind: + canBind: true isUndead: false mobNotes: '' threat: Easy @@ -3310,7 +3310,7 @@ 5343: vuln: canStun: true - canHeavy: + canHeavy: true canSlow: canSleep: false canBind: @@ -3362,10 +3362,10 @@ 5347: vuln: canStun: false - canHeavy: + canHeavy: true canSlow: canSleep: false - canBind: + canBind: false isUndead: true mobNotes: '' threat: Easy @@ -3428,7 +3428,7 @@ 5353: vuln: canStun: - canHeavy: + canHeavy: false canSlow: canSleep: canBind: @@ -3450,10 +3450,10 @@ 5355: vuln: canStun: false - canHeavy: + canHeavy: true canSlow: canSleep: false - canBind: + canBind: true isUndead: true mobNotes: '' threat: Easy @@ -3548,10 +3548,10 @@ 5366: vuln: canStun: true - canHeavy: + canHeavy: false canSlow: canSleep: false - canBind: + canBind: false isUndead: false mobNotes: High damage "Final Sting" threat: Caution @@ -3570,7 +3570,7 @@ 5368: vuln: canStun: true - canHeavy: + canHeavy: true canSlow: canSleep: false canBind: @@ -3626,10 +3626,10 @@ 5372: vuln: canStun: - canHeavy: + canHeavy: false canSlow: canSleep: - canBind: + canBind: true isUndead: false mobNotes: '' threat: Easy @@ -3670,10 +3670,10 @@ 5376: vuln: canStun: true - canHeavy: + canHeavy: true canSlow: canSleep: true - canBind: + canBind: true isUndead: false mobNotes: '' threat: Easy @@ -3692,10 +3692,10 @@ 5378: vuln: canStun: true - canHeavy: + canHeavy: true canSlow: canSleep: false - canBind: + canBind: true isUndead: false mobNotes: Area of effect Slow threat: Easy @@ -3714,10 +3714,10 @@ 5380: vuln: canStun: true - canHeavy: + canHeavy: true canSlow: canSleep: - canBind: + canBind: false isUndead: false mobNotes: Will inflict Sleep before casting "Bad Breath" threat: Caution @@ -3793,10 +3793,10 @@ 5386: vuln: canStun: true - canHeavy: + canHeavy: true canSlow: canSleep: true - canBind: + canBind: true isUndead: false mobNotes: '' threat: Easy @@ -3837,10 +3837,10 @@ 5390: vuln: canStun: true - canHeavy: + canHeavy: true canSlow: canSleep: true - canBind: + canBind: true isUndead: false mobNotes: '' threat: Easy @@ -3881,10 +3881,10 @@ 5394: vuln: canStun: true - canHeavy: + canHeavy: true canSlow: canSleep: false - canBind: + canBind: true isUndead: false mobNotes: '' threat: Easy @@ -4019,10 +4019,10 @@ 5406: vuln: canStun: true - canHeavy: + canHeavy: true canSlow: canSleep: true - canBind: + canBind: true isUndead: false mobNotes: Casts targeted AoE that inflicts Bleed threat: Easy @@ -4098,7 +4098,7 @@ 5412: vuln: canStun: - canHeavy: + canHeavy: false canSlow: canSleep: canBind: @@ -4151,10 +4151,10 @@ 5416: vuln: canStun: true - canHeavy: + canHeavy: false canSlow: canSleep: - canBind: + canBind: false isUndead: false mobNotes: '' threat: Easy @@ -4173,7 +4173,7 @@ 5418: vuln: canStun: true - canHeavy: + canHeavy: false canSlow: canSleep: canBind: @@ -4217,10 +4217,10 @@ 5422: vuln: canStun: true - canHeavy: + canHeavy: false canSlow: canSleep: - canBind: + canBind: false isUndead: true mobNotes: High health and very large AoE "Scream" threat: Caution @@ -4558,7 +4558,7 @@ vuln: canStun: true canHeavy: true - canSlow: + canSlow: true canSleep: true canBind: false isUndead: false @@ -4857,14 +4857,13 @@ 2566: vuln: canStun: false - canHeavy: + canHeavy: false canSlow: canSleep: - canBind: + canBind: false isUndead: mobNotes: >- High damage autos and instant kill AoE - "Infatuation" can only be interrupted with interject threat: Caution aggro: Proximity From 9880d3f04a4ebe7787aa928307170ec72c68205d Mon Sep 17 00:00:00 2001 From: AkiniKites Date: Fri, 29 Jul 2022 00:17:15 -0400 Subject: [PATCH 17/32] Move project into dir --- .editorconfig | 16 ---------------- DeepDungeonDex.sln | 2 +- .../Configuration.cs | 0 .../DalamudPackager.targets | 0 {Data => DeepDungeonDex/Data}/DataRepo.cs | 0 {Data => DeepDungeonDex/Data}/IRepoData.cs | 0 {Data => DeepDungeonDex/Data}/JobData.cs | 0 {Data => DeepDungeonDex/Data}/MobData.cs | 0 {Data => DeepDungeonDex/Data}/YamlMerge.cs | 0 .../DeepDungeonDex.csproj | 11 ++++++----- .../DeepDungeonDex.json | 0 Plugin.cs => DeepDungeonDex/Plugin.cs | 0 TargetData.cs => DeepDungeonDex/TargetData.cs | 0 {UI => DeepDungeonDex/UI}/ConfigUI.cs | 0 {UI => DeepDungeonDex/UI}/PluginUI.cs | 0 job-data.yml => DeepDungeonDex/job-data.yml | 0 mob-data.yml => DeepDungeonDex/mob-data.yml | 0 global.json | 7 ------- 18 files changed, 7 insertions(+), 29 deletions(-) delete mode 100644 .editorconfig rename Configuration.cs => DeepDungeonDex/Configuration.cs (100%) rename DalamudPackager.targets => DeepDungeonDex/DalamudPackager.targets (100%) rename {Data => DeepDungeonDex/Data}/DataRepo.cs (100%) rename {Data => DeepDungeonDex/Data}/IRepoData.cs (100%) rename {Data => DeepDungeonDex/Data}/JobData.cs (100%) rename {Data => DeepDungeonDex/Data}/MobData.cs (100%) rename {Data => DeepDungeonDex/Data}/YamlMerge.cs (100%) rename DeepDungeonDex.csproj => DeepDungeonDex/DeepDungeonDex.csproj (95%) rename DeepDungeonDex.json => DeepDungeonDex/DeepDungeonDex.json (100%) rename Plugin.cs => DeepDungeonDex/Plugin.cs (100%) rename TargetData.cs => DeepDungeonDex/TargetData.cs (100%) rename {UI => DeepDungeonDex/UI}/ConfigUI.cs (100%) rename {UI => DeepDungeonDex/UI}/PluginUI.cs (100%) rename job-data.yml => DeepDungeonDex/job-data.yml (100%) rename mob-data.yml => DeepDungeonDex/mob-data.yml (100%) delete mode 100644 global.json diff --git a/.editorconfig b/.editorconfig deleted file mode 100644 index a41e61d..0000000 --- a/.editorconfig +++ /dev/null @@ -1,16 +0,0 @@ -[*.{cs,vb}] - -# IDE0003: Remove qualification -dotnet_style_qualification_for_event = false:none - -# IDE0003: Remove qualification -dotnet_style_qualification_for_field = false:none - -# IDE0003: Remove qualification -dotnet_style_qualification_for_method = false:none - -# IDE0003: Remove qualification -dotnet_style_qualification_for_property = false:none - -# IDE0060: Remove unused parameter -dotnet_code_quality_unused_parameters = non_public:suggestion diff --git a/DeepDungeonDex.sln b/DeepDungeonDex.sln index c376f1a..e69f775 100644 --- a/DeepDungeonDex.sln +++ b/DeepDungeonDex.sln @@ -3,7 +3,7 @@ Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio Version 17 VisualStudioVersion = 17.1.32407.343 MinimumVisualStudioVersion = 10.0.40219.1 -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "DeepDungeonDex", "DeepDungeonDex.csproj", "{517A4352-7F10-48B9-B332-BB592157E377}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "DeepDungeonDex", "DeepDungeonDex\DeepDungeonDex.csproj", "{517A4352-7F10-48B9-B332-BB592157E377}" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{F1FD06F1-DF12-43AD-B211-07E0999D9391}" EndProject diff --git a/Configuration.cs b/DeepDungeonDex/Configuration.cs similarity index 100% rename from Configuration.cs rename to DeepDungeonDex/Configuration.cs diff --git a/DalamudPackager.targets b/DeepDungeonDex/DalamudPackager.targets similarity index 100% rename from DalamudPackager.targets rename to DeepDungeonDex/DalamudPackager.targets diff --git a/Data/DataRepo.cs b/DeepDungeonDex/Data/DataRepo.cs similarity index 100% rename from Data/DataRepo.cs rename to DeepDungeonDex/Data/DataRepo.cs diff --git a/Data/IRepoData.cs b/DeepDungeonDex/Data/IRepoData.cs similarity index 100% rename from Data/IRepoData.cs rename to DeepDungeonDex/Data/IRepoData.cs diff --git a/Data/JobData.cs b/DeepDungeonDex/Data/JobData.cs similarity index 100% rename from Data/JobData.cs rename to DeepDungeonDex/Data/JobData.cs diff --git a/Data/MobData.cs b/DeepDungeonDex/Data/MobData.cs similarity index 100% rename from Data/MobData.cs rename to DeepDungeonDex/Data/MobData.cs diff --git a/Data/YamlMerge.cs b/DeepDungeonDex/Data/YamlMerge.cs similarity index 100% rename from Data/YamlMerge.cs rename to DeepDungeonDex/Data/YamlMerge.cs diff --git a/DeepDungeonDex.csproj b/DeepDungeonDex/DeepDungeonDex.csproj similarity index 95% rename from DeepDungeonDex.csproj rename to DeepDungeonDex/DeepDungeonDex.csproj index 28b07d1..d44f4f1 100644 --- a/DeepDungeonDex.csproj +++ b/DeepDungeonDex/DeepDungeonDex.csproj @@ -13,6 +13,12 @@ false $(AppData)\XIVLauncher\devPlugins\DeepDungeonDex\ + + + + + + @@ -64,9 +70,4 @@ - - - - - diff --git a/DeepDungeonDex.json b/DeepDungeonDex/DeepDungeonDex.json similarity index 100% rename from DeepDungeonDex.json rename to DeepDungeonDex/DeepDungeonDex.json diff --git a/Plugin.cs b/DeepDungeonDex/Plugin.cs similarity index 100% rename from Plugin.cs rename to DeepDungeonDex/Plugin.cs diff --git a/TargetData.cs b/DeepDungeonDex/TargetData.cs similarity index 100% rename from TargetData.cs rename to DeepDungeonDex/TargetData.cs diff --git a/UI/ConfigUI.cs b/DeepDungeonDex/UI/ConfigUI.cs similarity index 100% rename from UI/ConfigUI.cs rename to DeepDungeonDex/UI/ConfigUI.cs diff --git a/UI/PluginUI.cs b/DeepDungeonDex/UI/PluginUI.cs similarity index 100% rename from UI/PluginUI.cs rename to DeepDungeonDex/UI/PluginUI.cs diff --git a/job-data.yml b/DeepDungeonDex/job-data.yml similarity index 100% rename from job-data.yml rename to DeepDungeonDex/job-data.yml diff --git a/mob-data.yml b/DeepDungeonDex/mob-data.yml similarity index 100% rename from mob-data.yml rename to DeepDungeonDex/mob-data.yml diff --git a/global.json b/global.json deleted file mode 100644 index 1d5e2b1..0000000 --- a/global.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "sdk": { - "version": "5.0", - "rollForward": "latestMajor", - "allowPrerelease": true - } -} \ No newline at end of file From 18014e2d6051fbce9eedd0b6e30d46e361098c4c Mon Sep 17 00:00:00 2001 From: AkiniKites Date: Fri, 29 Jul 2022 00:18:27 -0400 Subject: [PATCH 18/32] Update readme --- README.md | 4 ---- 1 file changed, 4 deletions(-) diff --git a/README.md b/README.md index 885bab5..a2ca90d 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,3 @@ -# IMPORTANT NOTICE -This repo is no longer being maintained at this location. -[New location](https://github.com/wolfcomp/DeepDungeonDex) - # DeepDungeonDex A plugin for [XIVLauncher](https://github.com/goatcorp/FFXIVQuickLauncher) that displays live data for targeted mobs in Final Fantasy XIV's Deep Dungeons. From 80e902844d34159363930f71ffa03c8ec31d321f Mon Sep 17 00:00:00 2001 From: AkiniKites Date: Tue, 13 Sep 2022 18:57:23 -0400 Subject: [PATCH 19/32] Update for 6.2 --- DeepDungeonDex/DalamudPackager.targets | 14 ++++++-------- DeepDungeonDex/DeepDungeonDex.csproj | 17 +++++++---------- DeepDungeonDex/DeepDungeonDex.json | 11 ++++------- 3 files changed, 17 insertions(+), 25 deletions(-) diff --git a/DeepDungeonDex/DalamudPackager.targets b/DeepDungeonDex/DalamudPackager.targets index a58d9a4..0d7904f 100644 --- a/DeepDungeonDex/DalamudPackager.targets +++ b/DeepDungeonDex/DalamudPackager.targets @@ -1,11 +1,9 @@ - - - + + + ProjectDir="$(ProjectDir)" + OutputPath="$(OutputPath)" + AssemblyName="$(AssemblyName)" + MakeZip="false"/> \ No newline at end of file diff --git a/DeepDungeonDex/DeepDungeonDex.csproj b/DeepDungeonDex/DeepDungeonDex.csproj index d44f4f1..eed2722 100644 --- a/DeepDungeonDex/DeepDungeonDex.csproj +++ b/DeepDungeonDex/DeepDungeonDex.csproj @@ -1,10 +1,10 @@ - + - net5.0 + net6.0-windows - 1.2.0.0 - 1.2.0.0 + 2.0.0.0 + 2.0.0.0 true false @@ -19,7 +19,7 @@ - + $(AppData)\XIVLauncher\addon\Hooks\dev\Dalamud.dll @@ -54,14 +54,11 @@ Always - - Always - - - + + diff --git a/DeepDungeonDex/DeepDungeonDex.json b/DeepDungeonDex/DeepDungeonDex.json index aeed766..f6ccb49 100644 --- a/DeepDungeonDex/DeepDungeonDex.json +++ b/DeepDungeonDex/DeepDungeonDex.json @@ -1,13 +1,10 @@ { - "Author": "Strati", + "Author": "Akini", "Name": "DeepDungeonDex", "Punchline": "Live monster data for Deep Dungeons.", "Description": "A live bestiary for Deep Dungeon. Shows target mob aggro type, a subjective threat level, status vulnerabilities, and a general overview of notable mechanics. Threat level is meant to be taken with a grain of salt, is aimed towards solo players, and assumes a general familiarity with deep dungeon mechanics and the class being played. Information is accurate to the best of my knowledge based on crowdsourced information, but I could use your help! Please open an issue on the GitHub if you'd like to correct inaccurate or untested data.", - "Tags": ["deep dungeon","achievements","battle"], + "Tags": [ "deep dungeon", "achievements", "battle" ], "InternalName": "DeepDungeonDex", - "AssemblyVersion": "1.2.0.0", - "RepoUrl": "https://github.com/Strati/DeepDungeonDex", - "ApplicableVersion": "any", - "DalamudApiLevel": 6, - "LoadPriority": 0 + "RepoUrl": "https://github.com/AkiniKites/DeepDungeonDex.git", + "ApplicableVersion": "any" } From 5eeb77eb58eefa6ebad6dc8b06b834b53b652203 Mon Sep 17 00:00:00 2001 From: AkiniKites Date: Tue, 13 Sep 2022 18:57:53 -0400 Subject: [PATCH 20/32] Add mob name, fix merge --- DeepDungeonDex/Data/MobData.cs | 2 + DeepDungeonDex/Data/YamlMerge.cs | 26 +- DeepDungeonDex/mob-data.yml | 943 ++++++++++++++++++++++++++++--- 3 files changed, 899 insertions(+), 72 deletions(-) diff --git a/DeepDungeonDex/Data/MobData.cs b/DeepDungeonDex/Data/MobData.cs index de86753..5c6d282 100644 --- a/DeepDungeonDex/Data/MobData.cs +++ b/DeepDungeonDex/Data/MobData.cs @@ -30,6 +30,7 @@ public Vulnerabilities(Vulnerabilities vuln) } public Vulnerabilities Vuln { get; set; } + public string Name { get; set; } public string MobNotes { get; set; } public enum ThreatLevel @@ -59,6 +60,7 @@ public MobData Clone() return new MobData() { Vuln = new Vulnerabilities(Vuln), + Name = Name, MobNotes = MobNotes, Threat = Threat, Aggro = Aggro diff --git a/DeepDungeonDex/Data/YamlMerge.cs b/DeepDungeonDex/Data/YamlMerge.cs index d40e1f6..4067b00 100644 --- a/DeepDungeonDex/Data/YamlMerge.cs +++ b/DeepDungeonDex/Data/YamlMerge.cs @@ -17,6 +17,10 @@ private static bool YamlObjectStart(string line) { return line.Length > 0 && Char.IsNumber(line[0]); } + private static bool YamlComment(string line) + { + return line.TrimStart().Length > 0 && line.TrimStart()[0] == '#'; + } private static bool MergeYamlChanges(List data, out List newData) { @@ -44,7 +48,7 @@ private static bool MergeYamlChanges(List data, out List newData var mobDict = new Dictionary() { { id, mob } }; var yaml = serializer.Serialize(mobDict); - newData = yaml.Split(new[] { "\n", "\r\n" }, StringSplitOptions.RemoveEmptyEntries).ToList(); + newData = yaml.Split(new[] { "\n", "\r\n" }, StringSplitOptions.None).ToList(); return true; } @@ -59,16 +63,17 @@ public static void MergeCustomChanges() int start = -1; for (int i = 0; i < dbData.Count + 1; i++) { - if (i == dbData.Count || YamlObjectStart(dbData[i])) + if (i == dbData.Count + || YamlObjectStart(dbData[i]) + || YamlComment(dbData[i])) { - if (start == -1) - start = i; - else + if (start >= 0) { var len = i - start; if (len > 1) { var data = dbData.GetRange(start, len); + if (MergeYamlChanges(data, out var newData)) { dbData.RemoveRange(start, len); @@ -78,12 +83,19 @@ public static void MergeCustomChanges() } } - start = -1; + if (i != dbData.Count && YamlObjectStart(dbData[i])) + start = i; + else + start = -1; + } + else if (i != dbData.Count && !YamlComment(dbData[i]) && start == -1) + { + start = i; } } } - File.WriteAllLines(Plugin.MobRepo.DbPath+"2", dbData); + File.WriteAllLines(Plugin.MobRepo.DbPath + "2", dbData); } } } diff --git a/DeepDungeonDex/mob-data.yml b/DeepDungeonDex/mob-data.yml index a9be71a..3f923a9 100644 --- a/DeepDungeonDex/mob-data.yml +++ b/DeepDungeonDex/mob-data.yml @@ -13,9 +13,11 @@ canSleep: canBind: isUndead: + name: heavenly naked yumemi mobNotes: Auto inflicts Heavy debuff threat: Easy aggro: Sight + 7263: vuln: canStun: true @@ -24,9 +26,11 @@ canSleep: canBind: isUndead: + name: heavenly mutsu mobNotes: Auto applies Physical Vuln Up every 10s threat: Easy aggro: Sight + 7264: vuln: canStun: true @@ -35,9 +39,11 @@ canSleep: canBind: isUndead: + name: heavenly bombfish mobNotes: AoE applies Paralysis threat: Easy aggro: Sight + 7265: vuln: canStun: true @@ -46,9 +52,11 @@ canSleep: canBind: isUndead: + name: heavenly onryo mobNotes: Triple auto inflicts Bleed threat: Dangerous aggro: Proximity + 7266: vuln: canStun: true @@ -57,9 +65,11 @@ canSleep: canBind: isUndead: + name: heavenly coralshell mobNotes: Untelegraphed Sleep followed by AoE threat: Caution aggro: Sight + 7267: vuln: canStun: false @@ -68,9 +78,11 @@ canSleep: canBind: isUndead: + name: heavenly gyuki mobNotes: AoE applies Bleed threat: Easy aggro: Sight + 7268: vuln: canStun: true @@ -79,9 +91,11 @@ canSleep: canBind: isUndead: + name: heavenly uwabami mobNotes: Gaze threat: Easy aggro: Sight + 7269: vuln: canStun: true @@ -90,9 +104,11 @@ canSleep: canBind: isUndead: + name: heavenly kraken mobNotes: '' threat: Easy aggro: Proximity + 7270: vuln: canStun: true @@ -101,9 +117,11 @@ canSleep: canBind: isUndead: + name: heavenly ango mobNotes: AoE inflicts knockback threat: Easy aggro: Sight + 7271: vuln: canStun: true @@ -112,12 +130,14 @@ canSleep: canBind: isUndead: + name: heavenly matamata mobNotes: >- Conal AoE inflicts Bleed Circle AoE inflicts knockback threat: Easy aggro: Sight + 7272: vuln: canStun: true @@ -126,9 +146,11 @@ canSleep: canBind: isUndead: + name: heavenly shark mobNotes: Unavoidable tankbuster-like "Jaws" threat: Dangerous aggro: Sight + 7273: vuln: canStun: true @@ -137,9 +159,11 @@ canSleep: canBind: isUndead: + name: heavenly Amikiri mobNotes: Untelegraphed buster inflicts Bleed and knockback threat: Caution aggro: Sight + 7274: vuln: canStun: true @@ -148,9 +172,11 @@ canSleep: canBind: isUndead: + name: heavenly yumemi mobNotes: '' threat: Easy aggro: Sight + # -------------------------- # HoH floors 11-19 # -------------------------- @@ -162,9 +188,11 @@ canSleep: canBind: isUndead: + name: heavenly korpokkur mobNotes: '' threat: Easy aggro: Sight + 7276: vuln: canStun: true @@ -173,9 +201,11 @@ canSleep: canBind: isUndead: + name: heavenly shizuku mobNotes: '' threat: Easy aggro: Proximity + 7277: vuln: canStun: true @@ -184,9 +214,11 @@ canSleep: canBind: isUndead: + name: heavenly shiomushi mobNotes: '' threat: Easy aggro: Sight + 7278: vuln: canStun: true @@ -195,9 +227,11 @@ canSleep: canBind: isUndead: + name: heavenly hakagiri mobNotes: '' threat: Easy aggro: Sight + 7279: vuln: canStun: true @@ -206,9 +240,11 @@ canSleep: canBind: isUndead: + name: heavenly unkiu mobNotes: Lite buster "Scissor Run" followed by AoE threat: Caution aggro: Sight + 7280: vuln: canStun: true @@ -217,9 +253,11 @@ canSleep: canBind: isUndead: + name: heavenly apa mobNotes: '' threat: Easy aggro: Proximity + 7281: vuln: canStun: true @@ -228,9 +266,11 @@ canSleep: canBind: isUndead: + name: heavenly otokage mobNotes: Gaze inflicts Seduce, followed by large AoE that inflicts Minimum threat: Caution aggro: Sight + 7282: vuln: canStun: true @@ -239,9 +279,11 @@ canSleep: canBind: isUndead: + name: heavenly tatsunoko mobNotes: '' threat: Easy aggro: Sight + 7283: vuln: canStun: true @@ -250,9 +292,11 @@ canSleep: canBind: isUndead: + name: heavenly shioname mobNotes: '' threat: Easy aggro: Sight + 7284: vuln: canStun: false @@ -261,9 +305,11 @@ canSleep: canBind: isUndead: + name: heavenly amagoi mobNotes: '' threat: Easy aggro: Sight + 7285: vuln: canStun: true @@ -272,9 +318,11 @@ canSleep: canBind: isUndead: + name: heavenly Namazu mobNotes: Buster and triple auto threat: Caution aggro: Sight + 7286: vuln: canStun: true @@ -283,9 +331,11 @@ canSleep: canBind: isUndead: + name: heavenly hand mobNotes: Roomwide ENRAGE threat: Dangerous aggro: Sight + 7287: vuln: canStun: true @@ -294,9 +344,11 @@ canSleep: canBind: isUndead: + name: heavenly aomino mobNotes: '' threat: Easy aggro: Sight + # -------------------------- # HoH floors 21-29 # -------------------------- @@ -308,9 +360,11 @@ canSleep: canBind: false isUndead: + name: heavenly onibi mobNotes: Gaze inflicts Blind threat: Easy aggro: Proximity + 7289: vuln: canStun: true @@ -319,9 +373,11 @@ canSleep: true canBind: isUndead: + name: heavenly halgai mobNotes: Cures self and allies threat: Easy aggro: Sight + 7290: vuln: canStun: true @@ -330,12 +386,14 @@ canSleep: false canBind: isUndead: + name: heavenly dhruva mobNotes: >- Casts AoEs with knockback unaggroed Line AoE inflicts Bleed threat: Easy aggro: Proximity + 7291: vuln: canStun: true @@ -344,9 +402,11 @@ canSleep: true canBind: isUndead: + name: heavenly sai taisui mobNotes: Buffs own damage threat: Easy aggro: Sight + 7292: vuln: canStun: true @@ -355,9 +415,11 @@ canSleep: false canBind: isUndead: + name: heavenly hatamoto mobNotes: Untelegraphed conal AoE with knockback, buster threat: Caution aggro: Proximity + 7293: vuln: canStun: false @@ -366,9 +428,11 @@ canSleep: canBind: isUndead: + name: heavenly tenaga mobNotes: '' threat: Easy aggro: Sight + 7294: vuln: canStun: true @@ -377,9 +441,11 @@ canSleep: true canBind: isUndead: + name: heavenly keukegen mobNotes: '' threat: Easy aggro: Sight + 7295: vuln: canStun: true @@ -388,9 +454,11 @@ canSleep: canBind: isUndead: + name: heavenly yuki mobNotes: Draw-in followed by cleave threat: Caution aggro: Proximity + 7296: vuln: canStun: true @@ -399,9 +467,11 @@ canSleep: canBind: isUndead: + name: heavenly tengu mobNotes: Gaze threat: Easy aggro: Sight + 7297: vuln: canStun: true @@ -410,9 +480,11 @@ canSleep: true canBind: isUndead: + name: heavenly koja mobNotes: Line AoE inflicts Bleed threat: Easy aggro: Sound + 7298: vuln: canStun: true @@ -421,9 +493,11 @@ canSleep: canBind: isUndead: + name: heavenly katasharin mobNotes: Cross AoE inflicts Suppuration threat: Easy aggro: Sight + 7299: vuln: canStun: true @@ -432,9 +506,11 @@ canSleep: canBind: isUndead: + name: heavenly menreiki mobNotes: Large AoE inflicts Paralysis threat: Easy aggro: Sight + 7300: vuln: canStun: true @@ -443,9 +519,11 @@ canSleep: canBind: isUndead: + name: heavenly wanyudo mobNotes: Circle AoE inflicts Suppuration threat: Easy aggro: Sight + # -------------------------- # HoH floors 31-39 # -------------------------- @@ -457,9 +535,11 @@ canSleep: canBind: isUndead: + name: heavenly gedan mobNotes: '' threat: Easy aggro: Sight + 7302: vuln: canStun: true @@ -468,9 +548,11 @@ canSleep: canBind: isUndead: + name: heavenly hornbill mobNotes: Casts AoEs unaggroed threat: Easy aggro: Sight + 7303: vuln: canStun: true @@ -479,12 +561,14 @@ canSleep: canBind: isUndead: + name: heavenly hanya mobNotes: >- Double auto inflicts Bleed Low health ENRAGE threat: Caution aggro: Sight + 7304: vuln: canStun: true @@ -493,9 +577,11 @@ canSleep: canBind: isUndead: + name: heavenly harakiri mobNotes: Low health ENRAGE threat: Caution aggro: Sight + 7305: vuln: canStun: true @@ -504,12 +590,14 @@ canSleep: canBind: isUndead: + name: heavenly onmitsu mobNotes: >- Line AoE inflicts Bleed Low health ENRAGE threat: Caution aggro: Sight + 7306: vuln: canStun: true @@ -518,9 +606,11 @@ canSleep: canBind: isUndead: + name: heavenly moko mobNotes: Cleaves every other auto threat: Easy aggro: Sight + 7307: vuln: canStun: true @@ -529,9 +619,11 @@ canSleep: canBind: isUndead: + name: heavenly mokin mobNotes: '' threat: Easy aggro: Sight + 7308: vuln: canStun: false @@ -540,9 +632,11 @@ canSleep: canBind: isUndead: + name: heavenly kiyofusa mobNotes: Weak stack attack threat: Easy aggro: Sight + 7309: vuln: canStun: true @@ -551,9 +645,11 @@ canSleep: canBind: isUndead: + name: heavenly ashigaru mobNotes: '' threat: Easy aggro: Sight + 7310: vuln: canStun: true @@ -562,9 +658,11 @@ canSleep: canBind: isUndead: + name: heavenly shishi mobNotes: Extremely large AoE threat: Caution aggro: Sight + 7311: vuln: canStun: true @@ -573,12 +671,14 @@ canSleep: canBind: isUndead: + name: heavenly onmitsu mobNotes: >- Line AoE inflicts Bleed Low health ENRAGE threat: Caution aggro: Sight + 7312: vuln: canStun: true @@ -587,9 +687,11 @@ canSleep: canBind: isUndead: + name: heavenly vanara mobNotes: Frontal cleave without cast or telegraph threat: Caution aggro: Sight + 7313: vuln: canStun: true @@ -598,9 +700,11 @@ canSleep: canBind: isUndead: + name: heavenly dogu mobNotes: Gaze inflicts Otter threat: Caution aggro: Sight + # -------------------------- # HoH floors 41-49 # -------------------------- @@ -612,9 +716,11 @@ canSleep: canBind: isUndead: + name: heavenly saikoro mobNotes: Casts AoEs unaggroed threat: Caution aggro: Sight + 7315: vuln: canStun: true @@ -623,9 +729,11 @@ canSleep: canBind: isUndead: + name: heavenly ganseki mobNotes: '' threat: Easy aggro: Proximity + 7316: vuln: canStun: true @@ -634,9 +742,11 @@ canSleep: canBind: isUndead: + name: heavenly dhara mobNotes: '' threat: Easy aggro: Sight + 7317: vuln: canStun: true @@ -645,9 +755,11 @@ canSleep: canBind: isUndead: + name: heavenly sekizo mobNotes: '' threat: Easy aggro: Sight + 7318: vuln: canStun: false @@ -656,12 +768,14 @@ canSleep: canBind: isUndead: + name: heavenly sekiban mobNotes: >- Large line AoE Eventual ENRAGE threat: Caution aggro: Sight + 7319: vuln: canStun: true @@ -670,9 +784,11 @@ canSleep: canBind: isUndead: + name: heavenly saikoro mobNotes: Casts AoEs unaggroed threat: Caution aggro: Sight + 7320: vuln: canStun: true @@ -681,9 +797,11 @@ canSleep: canBind: isUndead: + name: heavenly iseki mobNotes: 'Purple: double auto' threat: Caution aggro: Sight + 7321: vuln: canStun: false @@ -692,9 +810,11 @@ canSleep: canBind: isUndead: + name: heavenly aka-ishi mobNotes: Large cone AoE threat: Easy aggro: Sight + 7322: vuln: canStun: true @@ -703,9 +823,11 @@ canSleep: canBind: isUndead: + name: heavenly monoiwa mobNotes: '' threat: Easy aggro: Sight + 7323: vuln: canStun: true @@ -714,9 +836,11 @@ canSleep: canBind: isUndead: + name: heavenly iseki mobNotes: 'Green: Casts AoEs unaggroed' threat: Easy aggro: Sight + 7324: vuln: canStun: false @@ -725,9 +849,11 @@ canSleep: canBind: isUndead: + name: heavenly kuro-usagi mobNotes: Very wide line AoE threat: Caution aggro: Sight + 7325: vuln: canStun: true @@ -736,9 +862,11 @@ canSleep: canBind: isUndead: + name: heavenly sekizo mobNotes: '' threat: Easy aggro: Sight + 7326: vuln: canStun: true @@ -747,9 +875,11 @@ canSleep: canBind: isUndead: + name: heavenly mizumimizu mobNotes: Eventual ENRAGE threat: Caution aggro: Sound + # -------------------------- # HoH floors 51-59 # -------------------------- @@ -761,9 +891,11 @@ canSleep: canBind: isUndead: + name: heavenly kamanari mobNotes: Autos inflict stacking vuln up threat: Caution aggro: Sound + 7328: vuln: canStun: true @@ -772,9 +904,11 @@ canSleep: canBind: isUndead: + name: heavenly kamakiri mobNotes: Buster inflicts Bleed threat: Caution aggro: Sound + 7329: vuln: canStun: true @@ -783,9 +917,11 @@ canSleep: canBind: isUndead: + name: heavenly tokagekiba mobNotes: Buffs own damage threat: Caution aggro: Sight + 7330: vuln: canStun: true @@ -794,9 +930,11 @@ canSleep: canBind: isUndead: + name: heavenly kongorei mobNotes: Eventual instant ENRAGE threat: Caution aggro: Sight + 7331: vuln: canStun: true @@ -805,9 +943,11 @@ canSleep: canBind: isUndead: + name: heavenly tesso mobNotes: Cone AoE inflicts Bleed threat: Easy aggro: Sight + 7332: vuln: canStun: true @@ -816,9 +956,11 @@ canSleep: canBind: isUndead: + name: heavenly maruishi mobNotes: Exclusively fatal line AoEs threat: Caution aggro: Proximity + 7333: vuln: canStun: true @@ -827,9 +969,11 @@ canSleep: canBind: isUndead: + name: heavenly karakuri mobNotes: '' threat: Easy aggro: Sight + 7334: vuln: canStun: true @@ -838,9 +982,11 @@ canSleep: canBind: isUndead: + name: heavenly shabti mobNotes: '' threat: Easy aggro: Sight + 7335: vuln: canStun: true @@ -849,9 +995,11 @@ canSleep: canBind: isUndead: + name: heavenly gowan mobNotes: Draw-in attack threat: Easy aggro: Sight + 7336: vuln: canStun: false @@ -860,9 +1008,11 @@ canSleep: canBind: isUndead: + name: heavenly rachimonai mobNotes: Instant AoEs on targeted player unaggroed threat: Caution aggro: Sight + 7337: vuln: canStun: true @@ -871,9 +1021,11 @@ canSleep: canBind: isUndead: + name: heavenly naga mobNotes: Conal gaze, very quick low health ENRAGE threat: Dangerous aggro: Sight + 7338: vuln: canStun: false @@ -882,9 +1034,11 @@ canSleep: canBind: isUndead: + name: heavenly tetsu-kyojin mobNotes: '' threat: Easy aggro: Sight + 7339: vuln: canStun: false @@ -893,9 +1047,11 @@ canSleep: canBind: isUndead: + name: heavenly dokyu mobNotes: '' threat: Easy aggro: Sight + # -------------------------- # HoH floors 61-69 # -------------------------- @@ -907,9 +1063,11 @@ canSleep: canBind: isUndead: + name: heavenly wakakusa mobNotes: Inflicts stacking Poison that lasts 30s threat: Caution aggro: Proximity + 7341: vuln: canStun: true @@ -918,9 +1076,11 @@ canSleep: canBind: isUndead: + name: heavenly mannenso mobNotes: Inflicts stacking vuln up threat: Caution aggro: Sight + 7342: vuln: canStun: true @@ -929,9 +1089,11 @@ canSleep: canBind: isUndead: + name: heavenly iwamushi mobNotes: '' threat: Easy aggro: Sight + 7343: vuln: canStun: true @@ -940,9 +1102,11 @@ canSleep: canBind: isUndead: + name: heavenly jellyfish mobNotes: Fast alternating line AoEs that inflict Paralysis threat: Caution aggro: Proximity + 7344: vuln: canStun: true @@ -951,9 +1115,11 @@ canSleep: canBind: isUndead: + name: heavenly doguzeri mobNotes: Caster, double auto threat: Easy aggro: Sound + 7345: vuln: canStun: true @@ -962,9 +1128,11 @@ canSleep: canBind: isUndead: + name: heavenly kosodegai mobNotes: Conal AoE inflicts Paralysis threat: Easy aggro: Sight + 7346: vuln: canStun: true @@ -973,9 +1141,11 @@ canSleep: canBind: isUndead: + name: heavenly shitaibana mobNotes: Cleave and potent Poison threat: Caution aggro: Sight + 7347: vuln: canStun: true @@ -984,9 +1154,11 @@ canSleep: canBind: isUndead: + name: heavenly hashiri-dokoro mobNotes: Large donut AoE, gaze attack inflicts Fear threat: Caution aggro: Sight + 7348: vuln: canStun: true @@ -995,9 +1167,11 @@ canSleep: canBind: isUndead: + name: heavenly penghou mobNotes: Large circular AoE inflicts Bleed threat: Easy aggro: Sight + 7349: vuln: canStun: true @@ -1006,9 +1180,11 @@ canSleep: canBind: isUndead: + name: heavenly jubokko mobNotes: Buffs own or ally's defense threat: Caution aggro: Sight + 7350: vuln: canStun: true @@ -1017,9 +1193,11 @@ canSleep: canBind: isUndead: + name: heavenly morbol mobNotes: AoE inflicts numerous debuffs at once threat: Caution aggro: Sight + 7351: vuln: canStun: true @@ -1028,9 +1206,11 @@ canSleep: canBind: isUndead: + name: heavenly chizakura mobNotes: '' threat: Easy aggro: Sight + # -------------------------- # HoH floors 71-79 # -------------------------- @@ -1042,9 +1222,11 @@ canSleep: canBind: isUndead: + name: heavenly shikubi mobNotes: '' threat: Easy aggro: Sight + 7353: vuln: canStun: true @@ -1053,12 +1235,14 @@ canSleep: canBind: isUndead: + name: heavenly ichijama mobNotes: >- Casts large AoE unaggroed Extremely large circular AoE threat: Caution aggro: Proximity + 7354: vuln: canStun: true @@ -1067,9 +1251,11 @@ canSleep: canBind: isUndead: + name: heavenly noyagi mobNotes: Untelegraphed knockback on rear threat: Easy aggro: Sight + 7355: vuln: canStun: true @@ -1078,9 +1264,11 @@ canSleep: canBind: isUndead: + name: heavenly okami mobNotes: Double auto inflicts Bleed threat: Caution aggro: Sight + 7356: vuln: canStun: true @@ -1089,9 +1277,11 @@ canSleep: canBind: isUndead: + name: heavenly yuki-tokage mobNotes: Casts AoEs unaggroed that inflict Deep Freeze threat: Caution aggro: Sight + 7357: vuln: canStun: false @@ -1100,12 +1290,14 @@ canSleep: canBind: isUndead: + name: heavenly mammoth mobNotes: >- Casts roomwide AoEs unaggroed Large conal draw-in attack followed by heavy damage threat: Dangerous aggro: Sight + 7358: vuln: canStun: true @@ -1114,9 +1306,11 @@ canSleep: canBind: isUndead: + name: heavenly tofu mobNotes: Buffs own damage threat: Caution aggro: Sight + 7359: vuln: canStun: true @@ -1125,9 +1319,11 @@ canSleep: canBind: isUndead: + name: heavenly jujishi mobNotes: Haste, eventual ENRAGE threat: Dangerous aggro: Proximity + 7360: vuln: canStun: true @@ -1136,9 +1332,11 @@ canSleep: canBind: isUndead: + name: heavenly yuki-otoko mobNotes: Very large AoEs threat: Caution aggro: Sight + 7361: vuln: canStun: false @@ -1147,9 +1345,11 @@ canSleep: canBind: isUndead: + name: heavenly yak mobNotes: Draw-in attack, extremely large AoE, eventual ENRAGE threat: Caution aggro: Sight + 7362: vuln: canStun: false @@ -1158,9 +1358,11 @@ canSleep: canBind: isUndead: + name: heavenly hyoga mobNotes: Extremely large conal AoE, gaze inflicts Fear threat: Caution aggro: Sight + 7363: vuln: canStun: false @@ -1169,9 +1371,11 @@ canSleep: canBind: isUndead: + name: heavenly hyozan mobNotes: '' threat: Easy aggro: Sight + 7364: vuln: canStun: true @@ -1180,9 +1384,11 @@ canSleep: canBind: isUndead: + name: heavenly shiro-jishi mobNotes: Double auto and very large AoE threat: Dangerous aggro: Sight + # -------------------------- # HoH floors 81-89 # -------------------------- @@ -1194,6 +1400,7 @@ canSleep: canBind: isUndead: + name: heavenly mukai-inu mobNotes: >- Ram's Voice - get out @@ -1202,6 +1409,7 @@ Telegraphed cleaves threat: Dangerous aggro: Proximity + 7366: vuln: canStun: false @@ -1210,12 +1418,14 @@ canSleep: canBind: isUndead: + name: heavenly rowan mobNotes: >- Buffs own damage unaggroed Large AoE unaggroed that inflicts vuln up and stacks threat: Dangerous aggro: Sight + 7367: vuln: canStun: false @@ -1224,9 +1434,11 @@ canSleep: canBind: isUndead: + name: heavenly Matanga mobNotes: Charges on aggro threat: Easy aggro: Sight + 7368: vuln: canStun: false @@ -1235,9 +1447,11 @@ canSleep: canBind: isUndead: + name: heavenly Gozu mobNotes: Untelegraphed conal AoE on random player, gaze attack threat: Caution aggro: Sight + 7369: vuln: canStun: false @@ -1246,9 +1460,11 @@ canSleep: canBind: isUndead: + name: heavenly ryukotsu mobNotes: Casts AoEs unaggroed threat: Easy aggro: Sight + 7370: vuln: canStun: true @@ -1257,9 +1473,11 @@ canSleep: canBind: isUndead: + name: heavenly ryujin mobNotes: Double autos, very strong rear cleave if behind threat: Dangerous aggro: Sight + 7371: vuln: canStun: false @@ -1268,9 +1486,11 @@ canSleep: canBind: isUndead: + name: heavenly hitotsume mobNotes: Alternates line and circle AoEs untelegraphed threat: Caution aggro: Sight + 7372: vuln: canStun: true @@ -1279,9 +1499,11 @@ canSleep: canBind: isUndead: + name: heavenly enko mobNotes: Buffs own damage and double autos threat: Dangerous aggro: Sight + 7373: vuln: canStun: false @@ -1290,9 +1512,11 @@ canSleep: canBind: isUndead: + name: heavenly araragi mobNotes: Draw-in attack, tons of bleed, and a stacking poison threat: Caution aggro: Sight + 7374: vuln: canStun: false @@ -1301,9 +1525,11 @@ canSleep: canBind: isUndead: + name: heavenly koki mobNotes: Large donut AoE threat: Easy aggro: Proximity + 7375: vuln: canStun: false @@ -1312,9 +1538,11 @@ canSleep: canBind: isUndead: + name: heavenly Garula mobNotes: Cone AoE, circle AoE, partywide damage threat: Dangerous aggro: Sight + 7376: vuln: canStun: false @@ -1323,9 +1551,11 @@ canSleep: canBind: isUndead: + name: heavenly shinzei mobNotes: Charges, buffs own damage, double autos, electricity Bleed threat: Dangerous aggro: Sight + 7377: vuln: canStun: false @@ -1334,9 +1564,11 @@ canSleep: canBind: isUndead: + name: heavenly rakshasa mobNotes: Charges, buffs own damage, untelegraphed buster "Ripper Claw" threat: Caution aggro: Sight + # -------------------------- # HoH floors 91-99 # -------------------------- @@ -1348,6 +1580,7 @@ canSleep: canBind: isUndead: + name: heavenly nuppeppo mobNotes: >- WAR: Triple knockback with heavy damage @@ -1356,6 +1589,7 @@ Extremely high damage cleave with knockback threat: Vicious aggro: Sight + 7379: vuln: canStun: true @@ -1364,9 +1598,11 @@ canSleep: canBind: isUndead: + name: heavenly nuppeppo mobNotes: 'MNK: Haste buff, short invuln' threat: Dangerous aggro: Sight + 7380: vuln: canStun: true @@ -1375,12 +1611,14 @@ canSleep: canBind: isUndead: + name: heavenly nuppeppo mobNotes: >- WHM: double autos "Stone" can be line of sighted threat: Easy aggro: Sight + 7381: vuln: canStun: false @@ -1389,12 +1627,14 @@ canSleep: canBind: isUndead: + name: heavenly mifune mobNotes: >- Cleave Large line AoE that can be line of sighted threat: Dangerous aggro: Proximity + 7382: vuln: canStun: true @@ -1403,9 +1643,11 @@ canSleep: canBind: isUndead: + name: heavenly jaki mobNotes: '"Charybdis" AoE that leaves tornadoes on random players' threat: Dangerous aggro: Sight + 7383: vuln: canStun: true @@ -1414,9 +1656,11 @@ canSleep: canBind: isUndead: + name: heavenly tokage-musha mobNotes: '' threat: Caution aggro: Sight + 7384: vuln: canStun: true @@ -1425,9 +1669,11 @@ canSleep: canBind: isUndead: + name: heavenly kyozo mobNotes: Casts targeted AoEs unaggroed, buffs own defense threat: Easy aggro: Sight + 7385: vuln: canStun: true @@ -1436,9 +1682,11 @@ canSleep: canBind: isUndead: + name: heavenly kuro-kishi mobNotes: Targeted AoEs, cleaves threat: Caution aggro: Proximity + 7386: vuln: canStun: true @@ -1447,9 +1695,11 @@ canSleep: canBind: isUndead: + name: heavenly shabti mobNotes: Extremely quick line AoE "Death's Door" that instantly kills threat: Easy aggro: Sight + 7387: vuln: canStun: true @@ -1458,9 +1708,11 @@ canSleep: canBind: isUndead: + name: heavenly zenki mobNotes: Deals heavy damage to random players threat: Caution aggro: Sight + 7388: vuln: canStun: false @@ -1469,6 +1721,7 @@ canSleep: canBind: isUndead: + name: heavenly Gozu mobNotes: >- Charges @@ -1477,6 +1730,7 @@ Untelegraphed wide circle AoE "Swing" threat: Dangerous aggro: Sight + 7389: vuln: canStun: false @@ -1485,9 +1739,11 @@ canSleep: canBind: isUndead: + name: heavenly kubinashi mobNotes: Repeatedly cleaves for high damage, lifesteal, buffs own damage, three stacks of damage up casts ENRAGE "Black Nebula" threat: Dangerous aggro: Sight + 7390: vuln: canStun: true @@ -1496,9 +1752,11 @@ canSleep: canBind: isUndead: + name: heavenly tenma mobNotes: Rapid double autos and untelegraphed line AoE "Quasar" threat: Dangerous aggro: Sight + 7391: vuln: canStun: @@ -1507,9 +1765,11 @@ canSleep: canBind: isUndead: + name: heavenly dodo mobNotes: Double autos, cone AoE inflicts Sleep threat: Caution aggro: Sight + 7584: vuln: canStun: false @@ -1518,6 +1778,7 @@ canSleep: canBind: isUndead: + name: heavenly jinba mobNotes: >- Permanent stacking damage buff @@ -1526,6 +1787,7 @@ Gaze attack threat: Dangerous aggro: Sight + # -------------------------- # HoH bosses and misc. # -------------------------- @@ -1537,6 +1799,7 @@ canSleep: false canBind: isUndead: + name: quivering coffer mobNotes: >- Floors 1-30: Bronze chests only @@ -1547,6 +1810,7 @@ interject threat: Caution aggro: Proximity + 7393: vuln: canStun: true @@ -1555,6 +1819,7 @@ canSleep: canBind: isUndead: + name: quivering coffer mobNotes: >- Floors 31-60: Silver chests only @@ -1563,6 +1828,7 @@ "Malice" can be interrupted with silence/stun/interject threat: Caution aggro: Proximity + 7394: vuln: canStun: false @@ -1571,6 +1837,7 @@ canSleep: canBind: isUndead: + name: quivering coffer mobNotes: >- Floors 61+: Gold chests only @@ -1581,6 +1848,7 @@ CANNOT STUN threat: Caution aggro: Proximity + 7478: vuln: canStun: false @@ -1589,6 +1857,7 @@ canSleep: false canBind: false isUndead: + name: Hiruko mobNotes: >- Summons lightning clouds that inflict stacking vuln up when they explode @@ -1599,6 +1868,7 @@ Half-roomwide AoE threat: Caution aggro: Boss + 7480: vuln: canStun: false @@ -1607,12 +1877,14 @@ canSleep: false canBind: false isUndead: + name: Mojabune mobNotes: >- Goes to center of arena and casts knockback to wall (cannot be knockback invulned) Follows immediately with a half-roomwide AoE threat: Caution aggro: Boss + 7481: vuln: canStun: false @@ -1621,6 +1893,7 @@ canSleep: false canBind: false isUndead: + name: Beccho mobNotes: >- Summons butterflies on edges of arena @@ -1629,6 +1902,7 @@ Butterflies explode untelegraphed threat: Caution aggro: Boss + 7483: vuln: canStun: false @@ -1637,6 +1911,7 @@ canSleep: false canBind: false isUndead: + name: Bhima mobNotes: >- Summons clouds on edge of arena @@ -1645,6 +1920,7 @@ Follows immediately with targeted line AoE threat: Caution aggro: Boss + 7485: vuln: canStun: false @@ -1653,6 +1929,7 @@ canSleep: false canBind: false isUndead: + name: Gozu mobNotes: >- 1) Untelegraphed swipe @@ -1665,6 +1942,7 @@ 5) Repeats after bombs explode for the last time threat: Caution aggro: Boss + 7487: vuln: canStun: false @@ -1673,6 +1951,7 @@ canSleep: false canBind: false isUndead: + name: Suikazura mobNotes: >- Summons staffs that do various AoEs @@ -1681,6 +1960,7 @@ Roomwide AoE threat: Caution aggro: Boss + 7489: vuln: canStun: false @@ -1689,6 +1969,7 @@ canSleep: false canBind: false isUndead: + name: Kenko mobNotes: >- 1) Untelegraphed frontal cleave @@ -1701,6 +1982,7 @@ 5) Repeat threat: Caution aggro: Boss + 7490: vuln: canStun: false @@ -1709,6 +1991,7 @@ canSleep: false canBind: false isUndead: + name: Kajigakaka mobNotes: >- 1) Summons balls of ice @@ -1721,6 +2004,7 @@ 5) Boss jumps to random player, instantly killing if player is frozen (light damage otherwise) threat: Caution aggro: Boss + 7493: vuln: canStun: false @@ -1729,6 +2013,7 @@ canSleep: false canBind: false isUndead: + name: Onra mobNotes: >- 1) Heavy roomwide damage "Ancient Quaga" @@ -1745,6 +2030,7 @@ 7) Repeat threat: Caution aggro: Boss + 7610: vuln: canStun: false @@ -1753,10 +2039,10 @@ canSleep: canBind: isUndead: + name: korrigan mobNotes: Does not interact, wide stun and immediately dies when attacked threat: Easy aggro: Proximity - # -------------------------- # PotD @@ -1774,9 +2060,11 @@ canSleep: true canBind: true isUndead: false + name: palace deathmouse mobNotes: Casts Haste on itself threat: Easy aggro: Sight + 4976: vuln: canStun: true @@ -1785,9 +2073,11 @@ canSleep: true canBind: true isUndead: false + name: palace antelope mobNotes: '' threat: Easy aggro: Sight + 4977: vuln: canStun: true @@ -1796,9 +2086,11 @@ canSleep: false canBind: false isUndead: false + name: palace bat mobNotes: '' threat: Easy aggro: Sound + 4978: vuln: canStun: true @@ -1807,9 +2099,11 @@ canSleep: false canBind: true isUndead: false + name: palace coblyn mobNotes: '' threat: Easy aggro: Sight + 4979: vuln: canStun: true @@ -1818,9 +2112,11 @@ canSleep: true canBind: true isUndead: false + name: palace hippocerf mobNotes: '' threat: Easy aggro: Proximity + 4980: vuln: canStun: true @@ -1829,9 +2125,11 @@ canSleep: false canBind: true isUndead: false + name: palace beetle mobNotes: Inflicts Poison threat: Easy aggro: Sight + 4981: vuln: canStun: true @@ -1840,9 +2138,11 @@ canSleep: false canBind: false isUndead: false + name: palace hornet mobNotes: High damage "Final Sting" threat: Caution aggro: Proximity + 4982: vuln: canStun: true @@ -1851,9 +2151,11 @@ canSleep: true canBind: false isUndead: false + name: palace yarzon mobNotes: Inflicts vulnerability up threat: Easy aggro: Sound + 4983: vuln: canStun: true @@ -1862,9 +2164,11 @@ canSleep: false canBind: true isUndead: false + name: palace ziz mobNotes: '' threat: Easy aggro: Sight + 4984: vuln: canStun: true @@ -1873,9 +2177,11 @@ canSleep: true canBind: true isUndead: false + name: lost goblin mobNotes: '' threat: Easy aggro: Sight + 4985: vuln: canStun: true @@ -1884,9 +2190,11 @@ canSleep: false canBind: true isUndead: false + name: palace dung beetle mobNotes: Mini buster "Rhino Charge" threat: Easy aggro: Proximity + 4986: vuln: canStun: false @@ -1895,6 +2203,7 @@ canSleep: false canBind: false isUndead: false + name: palace deathgaze mobNotes: >- 1) "Whipcrack" - light tankbuster @@ -1907,6 +2216,7 @@ 5) "Aeroblast" - roomwide AOE inflicts Bleed threat: Caution aggro: Boss + # -------------------------- # PotD 11-20 # -------------------------- @@ -1918,9 +2228,11 @@ canSleep: false canBind: true isUndead: false + name: living whelk mobNotes: '' threat: Easy aggro: Sight + 4988: vuln: canStun: true @@ -1929,9 +2241,11 @@ canSleep: false canBind: false isUndead: false + name: palace uragnite mobNotes: Inflicts poison threat: Easy aggro: Sight + 4989: vuln: canStun: true @@ -1940,9 +2254,11 @@ canSleep: false canBind: false isUndead: false + name: palace toad mobNotes: '"Sticky Tongue" does not stun if facing towards' threat: Easy aggro: Sight + 4990: vuln: canStun: true @@ -1951,9 +2267,11 @@ canSleep: false canBind: false isUndead: false + name: palace slime mobNotes: Eventual ENRAGE threat: Caution aggro: Sound + 4991: vuln: canStun: true @@ -1962,9 +2280,11 @@ canSleep: true canBind: true isUndead: false + name: palace ninki nanka mobNotes: '' threat: Easy aggro: Sound + 4992: vuln: canStun: true @@ -1973,9 +2293,11 @@ canSleep: true canBind: true isUndead: false + name: palace nanka mobNotes: '' threat: Easy aggro: Sound + 4993: vuln: canStun: true @@ -1984,9 +2306,11 @@ canSleep: false canBind: true isUndead: false + name: palace ochu mobNotes: Area of effect Slow threat: Easy aggro: Proximity + 4994: vuln: canStun: true @@ -1995,9 +2319,11 @@ canSleep: true canBind: true isUndead: false + name: palace seedling mobNotes: '' threat: Easy aggro: Proximity + 4995: vuln: canStun: true @@ -2006,9 +2332,11 @@ canSleep: false canBind: false isUndead: false + name: palace morbol mobNotes: '' threat: Easy aggro: Proximity + 4996: vuln: canStun: true @@ -2017,9 +2345,11 @@ canSleep: false canBind: false isUndead: false + name: palace pudding mobNotes: Buffs own damage threat: Easy aggro: Proximity + 4997: vuln: canStun: true @@ -2028,9 +2358,11 @@ canSleep: true canBind: false isUndead: false + name: palace cobra mobNotes: Gaze attack inflicts Petrify, "Devour" instantly kills players inflicted with Toad threat: Dangerous aggro: Sight + 4998: vuln: canStun: false @@ -2039,9 +2371,11 @@ canSleep: false canBind: true isUndead: false + name: palace biloko mobNotes: '' threat: Easy aggro: Sight + 4999: vuln: canStun: false @@ -2050,6 +2384,7 @@ canSleep: false canBind: false isUndead: false + name: Spurge mobNotes: >- 1) "Bloody Caress" - high damage cleave @@ -2060,6 +2395,7 @@ 4) "Rotten Stench" - high damage line AOE threat: Caution aggro: Boss + # -------------------------- # PotD 21-30 # -------------------------- @@ -2071,9 +2407,11 @@ canSleep: true canBind: true isUndead: false + name: palace puk mobNotes: '' threat: Easy aggro: Sight + 5001: vuln: canStun: true @@ -2082,9 +2420,11 @@ canSleep: true canBind: true isUndead: false + name: palace drake mobNotes: '' threat: Easy aggro: Sight + 5002: vuln: canStun: false @@ -2093,9 +2433,11 @@ canSleep: true canBind: true isUndead: false + name: palace adamantoise mobNotes: '' threat: Easy aggro: Sight + 5003: vuln: canStun: true @@ -2104,9 +2446,11 @@ canSleep: true canBind: false isUndead: false + name: palace peiste mobNotes: '' threat: Easy aggro: Sight + 5004: vuln: canStun: true @@ -2115,9 +2459,11 @@ canSleep: true canBind: false isUndead: false + name: palace wivre mobNotes: '' threat: Easy aggro: Proximity + 5005: vuln: canStun: true @@ -2126,9 +2472,11 @@ canSleep: true canBind: true isUndead: false + name: palace spriggan mobNotes: '' threat: Easy aggro: Sight + 5006: vuln: canStun: true @@ -2137,9 +2485,11 @@ canSleep: true canBind: true isUndead: false + name: palace centaur mobNotes: '' threat: Easy aggro: Proximity + 5007: vuln: canStun: false @@ -2148,9 +2498,11 @@ canSleep: false canBind: false isUndead: false + name: palace effigy mobNotes: '' threat: Easy aggro: Sight + 5008: vuln: canStun: true @@ -2159,9 +2511,11 @@ canSleep: false canBind: false isUndead: false + name: palace marolith mobNotes: '' threat: Easy aggro: Proximity + 5009: vuln: canStun: true @@ -2170,9 +2524,11 @@ canSleep: false canBind: true isUndead: false + name: palace dullahan mobNotes: '' threat: Easy aggro: Sound + 5010: vuln: canStun: true @@ -2181,9 +2537,11 @@ canSleep: true canBind: false isUndead: false + name: palace minotaur mobNotes: Untelegraphed AOE does moderate damage and knockback threat: Caution aggro: Sight + 5011: vuln: canStun: true @@ -2192,9 +2550,11 @@ canSleep: true canBind: true isUndead: false + name: palace skatene mobNotes: '"Chirp" inflicts Sleep for 15s' threat: Caution aggro: Sound + 5012: vuln: canStun: false @@ -2203,12 +2563,14 @@ canSleep: false canBind: false isUndead: false + name: Ningishzida mobNotes: >- 1) Spread out fire and ice AOEs and don't drop them in center because: 2) Get inside boss's hitbox for "Fear Itself" - will inflict high damage and Terror if not avoided threat: Caution aggro: Boss + # -------------------------- # PotD 31-40 # -------------------------- @@ -2220,9 +2582,11 @@ canSleep: false canBind: false isUndead: false + name: nightmare bogy mobNotes: '' threat: Easy aggro: Proximity + 5014: vuln: canStun: true @@ -2231,9 +2595,11 @@ canSleep: false canBind: false isUndead: false + name: nightmare hecteyes mobNotes: '' threat: Easy aggro: Sound + 5015: vuln: canStun: true @@ -2242,9 +2608,11 @@ canSleep: true canBind: true isUndead: false + name: nightmare ogre mobNotes: '' threat: Easy aggro: Sight + 5016: vuln: canStun: false @@ -2253,9 +2621,11 @@ canSleep: false canBind: isUndead: true + name: nightmare mummy mobNotes: '' threat: Easy aggro: Proximity + 5017: vuln: canStun: true @@ -2264,9 +2634,11 @@ canSleep: false canBind: isUndead: false + name: nightmare eye mobNotes: '' threat: Easy aggro: Sight + 5018: vuln: canStun: true @@ -2275,9 +2647,11 @@ canSleep: true canBind: isUndead: false + name: nightmare dahak mobNotes: '' threat: Easy aggro: Sight + 5019: vuln: canStun: true @@ -2286,9 +2660,11 @@ canSleep: false canBind: false isUndead: false + name: nightmare monk mobNotes: '' threat: Easy aggro: Proximity + 5020: vuln: canStun: true @@ -2297,9 +2673,11 @@ canSleep: true canBind: isUndead: false + name: nightmare troubadour mobNotes: '' threat: Easy aggro: Proximity + 5021: vuln: canStun: true @@ -2308,9 +2686,11 @@ canSleep: true canBind: isUndead: false + name: nightmare haagenti mobNotes: '' threat: Easy aggro: Sight + 5022: vuln: canStun: true @@ -2319,9 +2699,11 @@ canSleep: false canBind: false isUndead: false + name: nightmare succubus mobNotes: '"Dark Mist" inflicts Terror' threat: Caution aggro: Sight + 5023: vuln: canStun: true @@ -2330,9 +2712,11 @@ canSleep: false canBind: isUndead: false + name: nightmare catoblepas mobNotes: '' threat: Easy aggro: Sight + 5024: vuln: canStun: true @@ -2341,9 +2725,11 @@ canSleep: true canBind: isUndead: true + name: nightmare gourmand mobNotes: '' threat: Easy aggro: Proximity + 5025: vuln: canStun: false @@ -2352,26 +2738,30 @@ canSleep: false canBind: false isUndead: true + name: Ixtab mobNotes: >- 1) Summons four lingering AoEs 2) Summons two adds -- they must be killed before boss casts "Scream", adds will target player with high damage AoEs if not dead threat: Easy aggro: Boss + # -------------------------- # PotD 41-50 # -------------------------- 5026: vuln: canStun: true - canHeavy: + canHeavy: false canSlow: canSleep: false - canBind: + canBind: false isUndead: false + name: nightmare gnat mobNotes: '' threat: Easy aggro: Sight + 5027: vuln: canStun: true @@ -2380,20 +2770,24 @@ canSleep: false canBind: isUndead: false + name: nightmare demon mobNotes: '' threat: Easy aggro: Sight + 5028: vuln: canStun: true - canHeavy: + canHeavy: false canSlow: canSleep: false canBind: isUndead: false + name: nightmare gargoyle mobNotes: '' threat: Easy aggro: Sight + 5029: vuln: canStun: true @@ -2402,20 +2796,24 @@ canSleep: false canBind: isUndead: false + name: nightmare knight mobNotes: '' threat: Easy aggro: Proximity + 5030: vuln: canStun: true canHeavy: canSlow: canSleep: true - canBind: + canBind: false isUndead: false + name: nightmare bhoot mobNotes: Inflicts Paralysis threat: Caution aggro: Sound + 5031: vuln: canStun: true @@ -2424,20 +2822,24 @@ canSleep: false canBind: false isUndead: false + name: nightmare hellhound mobNotes: '' threat: Easy aggro: Sight + 5032: vuln: canStun: true - canHeavy: + canHeavy: false canSlow: canSleep: false - canBind: + canBind: false isUndead: false + name: nightmare persona mobNotes: Inflicts Paralysis threat: Caution aggro: Proximity + 5033: vuln: canStun: false @@ -2446,20 +2848,24 @@ canSleep: false canBind: false isUndead: false + name: nightmare bloodguard mobNotes: '' threat: Easy aggro: Sight + 5034: vuln: canStun: false - canHeavy: + canHeavy: false canSlow: canSleep: false - canBind: + canBind: false isUndead: false + name: nightmare dragon mobNotes: '' threat: Easy aggro: Sight + 5035: vuln: canStun: true @@ -2468,20 +2874,24 @@ canSleep: false canBind: isUndead: false + name: nightmare manticore mobNotes: '' threat: Easy aggro: Sight + 5036: vuln: canStun: true - canHeavy: + canHeavy: false canSlow: canSleep: false canBind: isUndead: false + name: nightmare wraith mobNotes: '' threat: Easy aggro: Proximity + 5037: vuln: canStun: false @@ -2490,9 +2900,11 @@ canSleep: false canBind: true isUndead: true + name: nightmare gravekeeper mobNotes: '' threat: Easy aggro: Sound + 5038: vuln: canStun: false @@ -2501,6 +2913,7 @@ canSleep: false canBind: false isUndead: false + name: Edda Blackbosom mobNotes: >- FOLLOW MECHANICS -- failed mechanics power up an unavoidable room AoE @@ -2511,6 +2924,7 @@ 2) "Cold Feet" -- Gaze threat: Caution aggro: Boss + # -------------------------- # PotD special NPCs and misc. # -------------------------- @@ -2522,9 +2936,11 @@ canSleep: canBind: isUndead: + name: gargoyle steward mobNotes: '' threat: Easy aggro: Sight + 5040: vuln: canStun: @@ -2533,9 +2949,11 @@ canSleep: canBind: isUndead: + name: demon butler mobNotes: '' threat: Easy aggro: Sight + 5041: vuln: canStun: false @@ -2544,9 +2962,11 @@ canSleep: canBind: isUndead: + name: pygmaioi mobNotes: Does not interact, wide stun and immediately dies when attacked threat: Easy aggro: Proximity + 5046: vuln: canStun: @@ -2555,9 +2975,11 @@ canSleep: canBind: isUndead: + name: Duskwight lancer mobNotes: Immune to Pomander of Witching threat: Caution aggro: Sight + 5047: vuln: canStun: @@ -2566,9 +2988,11 @@ canSleep: canBind: isUndead: + name: sword-swinging adventurer mobNotes: Immune to Pomander of Witching threat: Caution aggro: Sight + 5048: vuln: canStun: false @@ -2577,9 +3001,11 @@ canSleep: canBind: isUndead: + name: staff-spinning adventurer mobNotes: Immune to Pomander of Witching threat: Caution aggro: Sight + 5049: vuln: canStun: @@ -2588,9 +3014,11 @@ canSleep: canBind: isUndead: + name: spear-shaking adventurer mobNotes: Immune to Pomander of Witching threat: Caution aggro: Sight + 5050: vuln: canStun: @@ -2599,9 +3027,11 @@ canSleep: canBind: isUndead: + name: Ishgardian pikeman mobNotes: Immune to Pomander of Witching threat: Caution aggro: Sight + 5051: vuln: canStun: @@ -2610,9 +3040,11 @@ canSleep: canBind: isUndead: + name: roughspun ruffian mobNotes: Immune to Pomander of Witching threat: Caution aggro: Sight + 5052: vuln: canStun: @@ -2621,9 +3053,11 @@ canSleep: canBind: isUndead: + name: frenzied freebooter mobNotes: Immune to Pomander of Witching threat: Caution aggro: Sight + 5053: vuln: canStun: @@ -2632,9 +3066,11 @@ canSleep: canBind: isUndead: + name: Immortal Flame mobNotes: Immune to Pomander of Witching threat: Caution aggro: Sight + 5283: vuln: canStun: @@ -2643,9 +3079,11 @@ canSleep: canBind: isUndead: + name: mortifying magnate mobNotes: Immune to Pomander of Witching threat: Caution aggro: Sight + 5284: vuln: canStun: @@ -2654,9 +3092,11 @@ canSleep: canBind: isUndead: + name: corrupted centurion mobNotes: Immune to Pomander of Witching threat: Caution aggro: Sight + 5285: vuln: canStun: @@ -2665,9 +3105,11 @@ canSleep: canBind: isUndead: + name: gangrenous gigant mobNotes: Immune to Pomander of Witching threat: Caution aggro: Sight + 5286: vuln: canStun: @@ -2676,9 +3118,11 @@ canSleep: canBind: isUndead: + name: half-cracked captain mobNotes: Immune to Pomander of Witching threat: Caution aggro: Sight + 5287: vuln: canStun: @@ -2687,9 +3131,11 @@ canSleep: canBind: isUndead: + name: sunken captain mobNotes: Immune to Pomander of Witching threat: Caution aggro: Sight + 5288: vuln: canStun: @@ -2698,9 +3144,11 @@ canSleep: canBind: isUndead: + name: flyblown praefectus mobNotes: Immune to Pomander of Witching threat: Caution aggro: Sight + 5289: vuln: canStun: @@ -2709,9 +3157,11 @@ canSleep: canBind: isUndead: + name: jaundiced tribunus mobNotes: Immune to Pomander of Witching threat: Caution aggro: Sight + 5290: vuln: canStun: @@ -2720,9 +3170,11 @@ canSleep: canBind: isUndead: + name: moldering merchant mobNotes: Immune to Pomander of Witching threat: Caution aggro: Sight + 5291: vuln: canStun: @@ -2731,9 +3183,11 @@ canSleep: canBind: isUndead: + name: blackening marketeer mobNotes: Immune to Pomander of Witching threat: Caution aggro: Sight + 5292: vuln: canStun: @@ -2742,9 +3196,11 @@ canSleep: canBind: isUndead: + name: bloated conjurer mobNotes: Immune to Pomander of Witching threat: Caution aggro: Sight + 5293: vuln: canStun: @@ -2753,9 +3209,11 @@ canSleep: canBind: isUndead: + name: bloated archer mobNotes: Immune to Pomander of Witching threat: Caution aggro: Sight + 5294: vuln: canStun: @@ -2764,9 +3222,11 @@ canSleep: canBind: isUndead: + name: bloated pugilist mobNotes: Immune to Pomander of Witching threat: Caution aggro: Sight + 5295: vuln: canStun: @@ -2775,9 +3235,11 @@ canSleep: canBind: isUndead: + name: emaciated engineer mobNotes: Immune to Pomander of Witching threat: Caution aggro: Sight + 5296: vuln: canStun: @@ -2786,9 +3248,11 @@ canSleep: canBind: isUndead: + name: putrid plutocrat mobNotes: Immune to Pomander of Witching threat: Caution aggro: Sight + 5297: vuln: canStun: @@ -2797,9 +3261,11 @@ canSleep: canBind: isUndead: + name: insentient inquisitor mobNotes: Immune to Pomander of Witching threat: Caution aggro: Sight + 5298: vuln: canStun: @@ -2808,9 +3274,11 @@ canSleep: canBind: isUndead: + name: necrose knight mobNotes: Immune to Pomander of Witching threat: Caution aggro: Sight + # -------------------------- # PotD 51-60 # -------------------------- @@ -2822,9 +3290,11 @@ canSleep: true canBind: isUndead: false + name: palace deepeye mobNotes: Gaze inflicts Paralysis threat: Easy aggro: Sight + 5300: vuln: canStun: true @@ -2833,9 +3303,11 @@ canSleep: false canBind: false isUndead: false + name: palace gremlin mobNotes: '' threat: Easy aggro: Sight + 5301: vuln: canStun: true @@ -2844,9 +3316,11 @@ canSleep: true canBind: isUndead: true + name: palace imp mobNotes: '' threat: Easy aggro: Sight + 5302: vuln: canStun: true @@ -2855,20 +3329,24 @@ canSleep: canBind: isUndead: false + name: palace Anubys mobNotes: '' threat: Easy aggro: Sight + 5303: vuln: canStun: true - canHeavy: + canHeavy: true canSlow: canSleep: false - canBind: + canBind: true isUndead: false + name: palace soulflayer mobNotes: '' threat: Easy aggro: Sight + 5304: vuln: canStun: true @@ -2877,9 +3355,11 @@ canSleep: true canBind: isUndead: false + name: palace taurus mobNotes: '' threat: Easy aggro: Sight + 5305: vuln: canStun: true @@ -2888,9 +3368,11 @@ canSleep: false canBind: isUndead: false + name: palace arch demon mobNotes: '' threat: Easy aggro: Proximity + 5306: vuln: canStun: true @@ -2899,9 +3381,11 @@ canSleep: false canBind: isUndead: false + name: palace vodoriga mobNotes: '' threat: Easy aggro: Sight + 5307: vuln: canStun: true @@ -2910,9 +3394,11 @@ canSleep: false canBind: isUndead: false + name: palace idol mobNotes: '' threat: Easy aggro: Proximity + 5308: vuln: canStun: true @@ -2921,9 +3407,11 @@ canSleep: false canBind: isUndead: false + name: palace pot mobNotes: Gaze inflicts Blind and does high damage threat: Easy aggro: Proximity + 5309: vuln: canStun: false @@ -2932,12 +3420,14 @@ canSleep: false canBind: false isUndead: false + name: the Black Rider mobNotes: >- Drops large puddle AoEs that inflict Bleed if stood in "Valfodr" -- targeted unavoidable line AoE centered on player that causes strong knockback, avoid AoEs surrounding outer edge threat: Caution aggro: Boss + # -------------------------- # PotD 61-70 # -------------------------- @@ -2949,9 +3439,11 @@ canSleep: true canBind: isUndead: false + name: palace raptor mobNotes: '' threat: Easy aggro: Sight + 5312: vuln: canStun: true @@ -2960,9 +3452,11 @@ canSleep: true canBind: isUndead: false + name: palace tyrannosaur mobNotes: '' threat: Easy aggro: Sight + 5313: vuln: canStun: true @@ -2971,9 +3465,11 @@ canSleep: false canBind: true isUndead: false + name: palace diplocaulus mobNotes: '' threat: Easy aggro: Proximity + 5314: vuln: canStun: true @@ -2982,9 +3478,11 @@ canSleep: true canBind: isUndead: false + name: palace triceratops mobNotes: '' threat: Easy aggro: Proximity + 5315: vuln: canStun: true @@ -2993,9 +3491,11 @@ canSleep: true canBind: isUndead: false + name: palace croc mobNotes: '' threat: Easy aggro: Sight + 5316: vuln: canStun: true @@ -3004,9 +3504,11 @@ canSleep: canBind: isUndead: false + name: palace mylodon mobNotes: '' threat: Easy aggro: Sight + 5317: vuln: canStun: true @@ -3015,9 +3517,11 @@ canSleep: false canBind: isUndead: false + name: palace elbst mobNotes: '' threat: Easy aggro: Sight + 5318: vuln: canStun: true @@ -3026,9 +3530,11 @@ canSleep: true canBind: isUndead: false + name: palace sarcosuchus mobNotes: '' threat: Easy aggro: Sight + 5319: vuln: canStun: true @@ -3037,20 +3543,24 @@ canSleep: false canBind: isUndead: false + name: palace blade mobNotes: '' threat: Easy aggro: Sight + 5320: vuln: canStun: true - canHeavy: + canHeavy: true canSlow: canSleep: true - canBind: + canBind: true isUndead: false + name: palace pteranodon mobNotes: '' threat: Easy aggro: Proximity + 5321: vuln: canStun: false @@ -3059,12 +3569,14 @@ canSleep: false canBind: false isUndead: false + name: Yaquaru mobNotes: >- "Douse" -- lingering ground AoE that inflicts Bleed if stood in and buffs boss with Haste if left in it Occasionally casts targeted ground AoEs threat: Caution aggro: Boss + # -------------------------- # PotD 71-80 # -------------------------- @@ -3076,9 +3588,11 @@ canSleep: true canBind: isUndead: false + name: palace bandersnatch mobNotes: '' threat: Easy aggro: Sight + 5323: vuln: canStun: false @@ -3087,9 +3601,11 @@ canSleep: true canBind: isUndead: false + name: palace aurochs mobNotes: '' threat: Easy aggro: Sight + 5324: vuln: canStun: false @@ -3098,9 +3614,11 @@ canSleep: false canBind: isUndead: false + name: bird of the palace mobNotes: '' threat: Easy aggro: Proximity + 5325: vuln: canStun: true @@ -3109,9 +3627,11 @@ canSleep: true canBind: false isUndead: false + name: palace cyclops mobNotes: '' threat: Easy aggro: Sight + 5326: vuln: canStun: true @@ -3120,9 +3640,11 @@ canSleep: true canBind: isUndead: false + name: palace sasquatch mobNotes: '' threat: Easy aggro: Proximity + 5327: vuln: canStun: true @@ -3131,9 +3653,11 @@ canSleep: true canBind: true isUndead: false + name: palace bear mobNotes: '' threat: Easy aggro: Sight + 5328: vuln: canStun: true @@ -3142,9 +3666,11 @@ canSleep: true canBind: isUndead: false + name: palace coeurl mobNotes: '' threat: Easy aggro: Sight + 5329: vuln: canStun: true @@ -3153,9 +3679,11 @@ canSleep: true canBind: isUndead: false + name: palace dhalmel mobNotes: '' threat: Easy aggro: Proximity + 5330: vuln: canStun: true @@ -3164,9 +3692,11 @@ canSleep: true canBind: isUndead: false + name: palace lion mobNotes: '' threat: Easy aggro: Sight + 5331: vuln: canStun: true @@ -3175,9 +3705,11 @@ canSleep: false canBind: false isUndead: false + name: palace anzu mobNotes: '' threat: Easy aggro: Sight + 5332: vuln: canStun: true @@ -3186,9 +3718,11 @@ canSleep: true canBind: isUndead: false + name: palace wolf mobNotes: '' threat: Easy aggro: Sight + 5333: vuln: canStun: false @@ -3197,6 +3731,7 @@ canSleep: false canBind: false isUndead: false + name: Gudanna mobNotes: >- "Charybdis" -- lingering ground tornadoes that cause high damage if sucked into @@ -3205,6 +3740,7 @@ At 17%% casts "Ecliptic Meteor" - HIGH DAMAGE roomwide with long cast that deals 80%% of total health damage threat: Caution aggro: Boss + # -------------------------- # PotD 81-90 # -------------------------- @@ -3216,9 +3752,11 @@ canSleep: true canBind: isUndead: false + name: palace bomb mobNotes: Casts wide "Self Destruct" if not killed in time threat: Caution aggro: Sight + 5335: vuln: canStun: true @@ -3227,9 +3765,11 @@ canSleep: false canBind: true isUndead: false + name: palace wamouracampa mobNotes: '' threat: Easy aggro: Sound + 5336: vuln: canStun: true @@ -3238,9 +3778,11 @@ canSleep: true canBind: isUndead: false + name: palace vinegaroon mobNotes: '' threat: Easy aggro: Sight + 5337: vuln: canStun: false @@ -3249,9 +3791,11 @@ canSleep: false canBind: isUndead: false + name: flame dragon mobNotes: '' threat: Easy aggro: Sight + 5338: vuln: canStun: true @@ -3260,9 +3804,11 @@ canSleep: false canBind: isUndead: false + name: palace worm mobNotes: '' threat: Easy aggro: Sound + 5339: vuln: canStun: true @@ -3271,20 +3817,24 @@ canSleep: false canBind: true isUndead: false + name: palace claw mobNotes: '' threat: Easy aggro: Sight + 5340: vuln: canStun: true - canHeavy: + canHeavy: true canSlow: canSleep: false - canBind: + canBind: true isUndead: false + name: palace eruca mobNotes: '' threat: Easy aggro: Sound + 5341: vuln: canStun: true @@ -3293,9 +3843,11 @@ canSleep: true canBind: isUndead: false + name: palace gallimimus mobNotes: '' threat: Easy aggro: Sight + 5342: vuln: canStun: false @@ -3304,9 +3856,11 @@ canSleep: true canBind: isUndead: false + name: palace hapalit mobNotes: '' threat: Easy aggro: Proximity + 5343: vuln: canStun: true @@ -3315,20 +3869,24 @@ canSleep: false canBind: isUndead: false + name: palace wamoura mobNotes: '' threat: Easy aggro: Sight + 5344: vuln: canStun: false - canHeavy: + canHeavy: false canSlow: canSleep: false - canBind: + canBind: false isUndead: false + name: palace chimera mobNotes: '' threat: Easy aggro: Proximity + 5345: vuln: canStun: false @@ -3337,6 +3895,7 @@ canSleep: false canBind: false isUndead: false + name: the Godmother mobNotes: >- Casts large AoEs @@ -3345,20 +3904,23 @@ Begins long cast "Massive Burst" and summons "Giddy Bomb" that must be knocked towards the boss to interrupt cast threat: Caution aggro: Boss + # -------------------------- # PotD 91-100 # -------------------------- 5346: vuln: canStun: true - canHeavy: + canHeavy: true canSlow: canSleep: - canBind: + canBind: true isUndead: true + name: palace mummy mobNotes: '' threat: Easy aggro: Proximity + 5347: vuln: canStun: false @@ -3367,31 +3929,37 @@ canSleep: false canBind: false isUndead: true + name: palace corse mobNotes: '' threat: Easy aggro: Proximity + 5348: vuln: canStun: false - canHeavy: - canSlow: + canHeavy: false + canSlow: true canSleep: - canBind: + canBind: false isUndead: false + name: dark dragon mobNotes: '' threat: Easy aggro: Sight + 5349: vuln: canStun: true - canHeavy: + canHeavy: true canSlow: canSleep: false canBind: isUndead: false + name: palace knight mobNotes: '' threat: Easy aggro: Proximity + 5350: vuln: canStun: @@ -3400,9 +3968,11 @@ canSleep: false canBind: isUndead: false + name: palace roselet mobNotes: '' threat: Easy aggro: Sound + 5351: vuln: canStun: true @@ -3411,20 +3981,24 @@ canSleep: false canBind: isUndead: false + name: palace swarm mobNotes: '' threat: Easy aggro: Sound + 5352: vuln: canStun: true - canHeavy: + canHeavy: true canSlow: canSleep: false canBind: isUndead: true + name: palace gourmand mobNotes: '' threat: Caution aggro: Proximity + 5353: vuln: canStun: @@ -3433,20 +4007,24 @@ canSleep: canBind: isUndead: true + name: palace iron corse mobNotes: '' threat: Easy aggro: Proximity + 5354: vuln: canStun: true - canHeavy: + canHeavy: false canSlow: canSleep: false canBind: - isUndead: false + isUndead: true + name: palace wraith mobNotes: '' threat: Easy aggro: Proximity + 5355: vuln: canStun: false @@ -3455,9 +4033,11 @@ canSleep: false canBind: true isUndead: true + name: palace gravekeeper mobNotes: '' threat: Easy aggro: Sound + 5356: vuln: canStun: false @@ -3466,34 +4046,40 @@ canSleep: false canBind: false isUndead: false + name: Nybeth Obdilord mobNotes: Summons adds and does large targeted AoEs -- adds are vulnerable to Pomander of Resolution's attacks threat: Caution aggro: Boss + # -------------------------- # PotD 101-110 # -------------------------- 5360: vuln: canStun: true - canHeavy: + canHeavy: true canSlow: canSleep: true canBind: isUndead: false + name: deep palace squirrel mobNotes: '' threat: Easy aggro: Sight + 5361: vuln: canStun: true - canHeavy: - canSlow: + canHeavy: true + canSlow: true canSleep: true canBind: isUndead: false + name: deep palace stag mobNotes: '' threat: Easy aggro: Sight + 5362: vuln: canStun: @@ -3502,28 +4088,33 @@ canSleep: false canBind: isUndead: false + name: deep palace gaelicat mobNotes: '' threat: Easy aggro: Proximity + 5363: vuln: canStun: true - canHeavy: + canHeavy: true canSlow: canSleep: true canBind: isUndead: false + name: deep palace doblyn mobNotes: '' threat: Easy aggro: Sight + 5364: vuln: canStun: true canHeavy: - canSlow: + canSlow: true canSleep: true canBind: isUndead: false + name: deep palace hippogryph mobNotes: >- Floors 101-110: @@ -3534,6 +4125,7 @@ Double autos threat: Caution aggro: Proximity + 5365: vuln: canStun: true @@ -3542,9 +4134,11 @@ canSleep: false canBind: isUndead: false + name: deep palace ladybug mobNotes: Inflicts Poison threat: Easy aggro: Sight + 5366: vuln: canStun: true @@ -3553,20 +4147,24 @@ canSleep: false canBind: false isUndead: false + name: deep palace hornet mobNotes: High damage "Final Sting" threat: Caution aggro: Proximity + 5367: vuln: canStun: true - canHeavy: + canHeavy: true canSlow: canSleep: false - canBind: + canBind: true isUndead: false + name: deep palace yarzon mobNotes: Inflicts vulnerability up threat: Easy aggro: Sound + 5368: vuln: canStun: true @@ -3575,20 +4173,24 @@ canSleep: false canBind: isUndead: false + name: deep palace ziz mobNotes: '' threat: Easy aggro: Sight + 5369: vuln: canStun: true - canHeavy: + canHeavy: true canSlow: canSleep: false canBind: isUndead: false + name: goblin adventurer mobNotes: '' threat: Easy aggro: Sight + 5370: vuln: canStun: true @@ -3597,9 +4199,11 @@ canSleep: false canBind: isUndead: false + name: deep palace dung beetle mobNotes: Mini buster "Rhino Charge" threat: Easy aggro: Sight + 5371: vuln: canStun: false @@ -3608,6 +4212,7 @@ canSleep: false canBind: false isUndead: false + name: Alicanto mobNotes: >- 1) "Whipcrack" - light tankbuster @@ -3620,6 +4225,7 @@ 5) "Aeroblast" - roomwide AOE inflicts Bleed threat: Caution aggro: Boss + # -------------------------- # PotD 111-120 # -------------------------- @@ -3631,20 +4237,24 @@ canSleep: canBind: true isUndead: false + name: deep palace leech mobNotes: '' threat: Easy aggro: Sight + 5373: vuln: canStun: true - canHeavy: + canHeavy: false canSlow: canSleep: - canBind: + canBind: false isUndead: false + name: deep palace bifericeras mobNotes: '' threat: Easy aggro: Sight + 5374: vuln: canStun: true @@ -3653,9 +4263,11 @@ canSleep: true canBind: isUndead: false + name: deep palace gigantoad mobNotes: '"Sticky Tongue" draw-in and stun attack if not facing, followed by "Labored Leap" AoE centered on enemy' threat: Caution aggro: Sight + 5375: vuln: canStun: true @@ -3664,9 +4276,11 @@ canSleep: false canBind: isUndead: false + name: deep palace slime mobNotes: Eventual ENRAGE threat: Caution aggro: Sound + 5376: vuln: canStun: true @@ -3675,20 +4289,24 @@ canSleep: true canBind: true isUndead: false + name: deep palace nanka mobNotes: '' threat: Easy aggro: Sight + 5377: vuln: canStun: - canHeavy: + canHeavy: true canSlow: canSleep: true - canBind: + canBind: true isUndead: false + name: deep palace salamander mobNotes: Casts invuln buff on itself threat: Easy aggro: Sound + 5378: vuln: canStun: true @@ -3697,9 +4315,11 @@ canSleep: false canBind: true isUndead: false + name: deep palace ochu mobNotes: Area of effect Slow threat: Easy aggro: Proximity + 5379: vuln: canStun: true @@ -3708,9 +4328,11 @@ canSleep: true canBind: isUndead: false + name: deep palace seedling mobNotes: '' threat: Easy aggro: Sound + 5380: vuln: canStun: true @@ -3719,20 +4341,24 @@ canSleep: canBind: false isUndead: false + name: deep palace morbol mobNotes: Will inflict Sleep before casting "Bad Breath" threat: Caution aggro: Proximity + 5381: vuln: canStun: true - canHeavy: - canSlow: + canHeavy: false + canSlow: true canSleep: false - canBind: + canBind: false isUndead: false + name: deep palace pudding mobNotes: Buffs own damage threat: Easy aggro: Proximity + 5382: vuln: canStun: true @@ -3741,23 +4367,27 @@ canSleep: canBind: isUndead: false + name: deep palace cobra mobNotes: >- Gaze attack inflicts Petrify, "Regorge" infllicts Poison Will one-shot kill anyone inflicted with Toad threat: Dangerous aggro: Sight + 5383: vuln: canStun: false - canHeavy: + canHeavy: true canSlow: canSleep: canBind: isUndead: false + name: deep palace biloko mobNotes: '' threat: Easy aggro: Sight + 5384: vuln: canStun: false @@ -3766,6 +4396,7 @@ canSleep: false canBind: false isUndead: false + name: Kirtimukha mobNotes: >- 1) "Bloody Caress" - high damage cleave @@ -3776,20 +4407,23 @@ 4) "Rotten Stench" - high damage line AOE threat: Caution aggro: Boss + # -------------------------- # PotD 121-130 # -------------------------- 5385: vuln: canStun: true - canHeavy: + canHeavy: true canSlow: canSleep: true - canBind: + canBind: true isUndead: false + name: deep palace pteroc mobNotes: '' threat: Easy aggro: Sight + 5386: vuln: canStun: true @@ -3798,9 +4432,11 @@ canSleep: true canBind: true isUndead: false + name: deep palace biast mobNotes: '' threat: Easy aggro: Sight + 5387: vuln: canStun: false @@ -3809,31 +4445,37 @@ canSleep: true canBind: isUndead: false + name: deep palace adamantoise mobNotes: '' threat: Easy aggro: Sight + 5388: vuln: canStun: true - canHeavy: + canHeavy: true canSlow: canSleep: canBind: isUndead: false + name: deep palace basilisk mobNotes: '' threat: Easy aggro: Sight + 5389: vuln: canStun: true - canHeavy: + canHeavy: true canSlow: canSleep: true canBind: isUndead: false + name: deep palace wivre mobNotes: Double autos threat: Caution aggro: Proximity + 5390: vuln: canStun: true @@ -3842,9 +4484,11 @@ canSleep: true canBind: true isUndead: false + name: deep palace spriggan mobNotes: '' threat: Easy aggro: Sight + 5391: vuln: canStun: @@ -3853,20 +4497,24 @@ canSleep: true canBind: isUndead: false + name: deep palace centaur mobNotes: '' threat: Easy aggro: Proximity + 5392: vuln: canStun: false - canHeavy: + canHeavy: true canSlow: canSleep: false canBind: isUndead: false + name: deep palace effigy mobNotes: '' threat: Easy aggro: Sight + 5393: vuln: canStun: true @@ -3875,9 +4523,11 @@ canSleep: false canBind: isUndead: false + name: deep palace urolith mobNotes: '' threat: Easy aggro: Proximity + 5394: vuln: canStun: true @@ -3886,9 +4536,11 @@ canSleep: false canBind: true isUndead: false + name: deep palace dullahan mobNotes: '' threat: Easy aggro: Sound + 5395: vuln: canStun: true @@ -3897,9 +4549,11 @@ canSleep: true canBind: isUndead: false + name: deep palace minotaur mobNotes: '"11-Tonze Swing" - point-blank untelegraphed AoE that does high damage and knockback' threat: Caution aggro: Sight + 5396: vuln: canStun: true @@ -3908,9 +4562,11 @@ canSleep: false canBind: isUndead: false + name: deep palace skatene mobNotes: '"Chirp" inflicts Sleep for 15s' threat: Caution aggro: Sound + 5397: vuln: canStun: false @@ -3919,12 +4575,14 @@ canSleep: false canBind: false isUndead: false + name: Alfard mobNotes: >- 1) Spread out fire and ice AOEs and don't drop them in center because: 2) Get inside boss's hitbox for fast cast "Fear Itself" - will inflict high damage and Terror if not avoided threat: Caution aggro: Boss + # -------------------------- # PotD 131-140 # -------------------------- @@ -3936,9 +4594,11 @@ canSleep: false canBind: isUndead: false + name: deep palace soul mobNotes: '' threat: Easy aggro: Sound + 5399: vuln: canStun: true @@ -3947,9 +4607,11 @@ canSleep: false canBind: isUndead: false + name: deep palace hecteyes mobNotes: '' threat: Easy aggro: Sound + 5400: vuln: canStun: false @@ -3958,20 +4620,24 @@ canSleep: false canBind: isUndead: false + name: deep palace ogre mobNotes: '' threat: Easy aggro: Sight + 5401: vuln: canStun: true - canHeavy: + canHeavy: true canSlow: canSleep: false - canBind: + canBind: true isUndead: true + name: deep palace mummy mobNotes: '' threat: Easy aggro: Proximity + 5402: vuln: canStun: true @@ -3980,20 +4646,24 @@ canSleep: false canBind: isUndead: false + name: deep palace ahriman mobNotes: Untelegraphed conal AoE "Level 5 Petrify" inflicts Petrify threat: Caution aggro: Sight + 5403: vuln: canStun: true - canHeavy: + canHeavy: true canSlow: canSleep: true canBind: isUndead: false + name: deep palace dahak mobNotes: '' threat: Easy aggro: Sight + 5404: vuln: canStun: true @@ -4002,9 +4672,11 @@ canSleep: false canBind: isUndead: false + name: deep palace monk mobNotes: '' threat: Easy aggro: Proximity + 5405: vuln: canStun: true @@ -4013,9 +4685,11 @@ canSleep: true canBind: isUndead: false + name: deep palace troubador mobNotes: '' threat: Easy aggro: Proximity + 5406: vuln: canStun: true @@ -4024,20 +4698,24 @@ canSleep: true canBind: true isUndead: false + name: deep palace taurus mobNotes: Casts targeted AoE that inflicts Bleed threat: Easy aggro: Sight + 5407: vuln: canStun: false - canHeavy: + canHeavy: false canSlow: canSleep: false - canBind: + canBind: false isUndead: false + name: deep palace guard mobNotes: '' threat: Easy aggro: Sight + 5408: vuln: canStun: true @@ -4046,17 +4724,20 @@ canSleep: false canBind: isUndead: false + name: deep palace catoblepas mobNotes: '' threat: Easy aggro: Sight + 5409: vuln: canStun: true - canHeavy: + canHeavy: true canSlow: canSleep: true canBind: isUndead: true + name: deep palace gourmand mobNotes: >- Floors 131-140: @@ -4067,6 +4748,7 @@ Double autos threat: Caution aggro: Proximity + 5410: vuln: canStun: false @@ -4075,12 +4757,14 @@ canSleep: false canBind: false isUndead: true + name: Ah Puch mobNotes: >- 1) Summons four lingering AoEs 2) Summons two adds -- they must be killed before boss casts "Scream", adds will target player with high damage AoEs if not dead threat: Caution aggro: Boss + # -------------------------- # PotD 141-150 # -------------------------- @@ -4092,9 +4776,11 @@ canSleep: canBind: isUndead: false + name: deep palace follower mobNotes: '' threat: Easy aggro: Sight + 5412: vuln: canStun: @@ -4103,9 +4789,11 @@ canSleep: canBind: isUndead: false + name: deep palace ked mobNotes: '' threat: Easy aggro: Sight + 5413: vuln: canStun: true @@ -4114,9 +4802,11 @@ canSleep: canBind: isUndead: false + name: deep palace demon mobNotes: '"Charybdis" - semi-enrage that drops party health to 1%%' threat: Caution aggro: Sight + 5414: vuln: canStun: true @@ -4125,17 +4815,20 @@ canSleep: canBind: isUndead: false + name: deep palace gargoyle mobNotes: Very high damage, inflicts Poison threat: Dangerous aggro: Sight + 5415: vuln: canStun: true - canHeavy: + canHeavy: true canSlow: canSleep: canBind: - isUndead: true + isUndead: false + name: deep palace knight mobNotes: >- Floors 141-150: @@ -4148,6 +4841,7 @@ Has soft enrage of a strong damage buff threat: Dangerous aggro: Proximity + 5416: vuln: canStun: true @@ -4156,9 +4850,11 @@ canSleep: canBind: false isUndead: false + name: deep palace bhoot mobNotes: '' threat: Easy aggro: Sound + 5417: vuln: canStun: true @@ -4167,9 +4863,11 @@ canSleep: canBind: isUndead: false + name: deep palace hellhound mobNotes: '' threat: Easy aggro: Sight + 5418: vuln: canStun: true @@ -4178,20 +4876,24 @@ canSleep: canBind: isUndead: false + name: deep palace persona mobNotes: '' threat: Easy aggro: Proximity + 5419: vuln: canStun: true - canHeavy: + canHeavy: false canSlow: canSleep: canBind: isUndead: false + name: deep palace succubus mobNotes: '' threat: Easy aggro: Sight + 5420: vuln: canStun: false @@ -4200,31 +4902,37 @@ canSleep: canBind: isUndead: true + name: onyx dragon mobNotes: Casts Gaze "Evil Eye" threat: Easy aggro: Proximity + 5421: vuln: canStun: - canHeavy: + canHeavy: true canSlow: canSleep: canBind: isUndead: false + name: deep palace manticore mobNotes: Buffs own damage, untelegraphed high damage "Ripper Claw" - can be avoided by walking behind threat: Easy aggro: Sight + 5422: vuln: canStun: true canHeavy: false - canSlow: + canSlow: true canSleep: canBind: false isUndead: true + name: deep palace wraith mobNotes: High health and very large AoE "Scream" threat: Caution aggro: Proximity + 5423: vuln: canStun: false @@ -4233,9 +4941,11 @@ canSleep: canBind: isUndead: true + name: deep palace keeper mobNotes: Very high damage for the floors it appears on threat: Dangerous aggro: Sound + 5424: vuln: canStun: false @@ -4244,6 +4954,7 @@ canSleep: false canBind: false isUndead: false + name: Tisiphone mobNotes: >- Summons adds @@ -4252,6 +4963,7 @@ "Fanatic Succubus" will heal boss if it reaches it threat: Caution aggro: Boss + # -------------------------- # PotD 151-160 # -------------------------- @@ -4263,23 +4975,27 @@ canSleep: true canBind: true isUndead: false + name: deep palace deepeye mobNotes: >- Double autos Gaze inflicts Paralysis threat: Caution aggro: Sight + 5430: vuln: canStun: true canHeavy: false - canSlow: + canSlow: true canSleep: false canBind: false isUndead: false + name: deep palace gremlin mobNotes: Inflicts Vuln Up debuff threat: Easy aggro: Sight + 5431: vuln: canStun: true @@ -4288,12 +5004,14 @@ canSleep: false canBind: false isUndead: false + name: deep palace devilet mobNotes: >- "Ice Spikes" reflects damage "Void Blizzard" inflicts Slow threat: Easy aggro: Sight + 5432: vuln: canStun: true @@ -4302,9 +5020,11 @@ canSleep: false canBind: false isUndead: false + name: deep palace shabti mobNotes: '' threat: Easy aggro: Sight + 5433: vuln: canStun: true @@ -4313,20 +5033,24 @@ canSleep: false canBind: true isUndead: false + name: deep palace soulflayer mobNotes: Double autos that lifesteal threat: Easy aggro: Sight + 5434: vuln: canStun: true canHeavy: false - canSlow: + canSlow: true canSleep: false canBind: false isUndead: false + name: deep palace arch demon mobNotes: '' threat: Easy aggro: Proximity + 5435: vuln: canStun: true @@ -4335,9 +5059,11 @@ canSleep: false canBind: false isUndead: false + name: deep palace abaia mobNotes: '' threat: Easy aggro: Sight + 5436: vuln: canStun: true @@ -4346,9 +5072,11 @@ canSleep: false canBind: false isUndead: false + name: deep palace marolith mobNotes: Double autos threat: Easy aggro: Proximity + 5437: vuln: canStun: true @@ -4357,12 +5085,14 @@ canSleep: false canBind: true isUndead: false + name: deep palace pot mobNotes: >- Double autos Gaze inflicts heavy damage and Blind threat: Caution aggro: Proximity + 5438: vuln: canStun: false @@ -4371,12 +5101,14 @@ canSleep: false canBind: false isUndead: false + name: Todesritter mobNotes: >- Drops lingering AoEs that cause heavy Bleed if stood in "Valfodr" -- targeted unavoidable line AoE centered on player that causes strong knockback, avoid AoEs surrounding outer edge threat: Caution aggro: Boss + # -------------------------- # PotD 161-170 # -------------------------- @@ -4388,9 +5120,11 @@ canSleep: true canBind: true isUndead: false + name: deep palace lindwurm mobNotes: '' threat: Easy aggro: Sight + 5440: vuln: canStun: true @@ -4399,9 +5133,11 @@ canSleep: true canBind: false isUndead: false + name: deep palace archaeosaur mobNotes: '' threat: Easy aggro: Sight + 5441: vuln: canStun: true @@ -4410,9 +5146,11 @@ canSleep: true canBind: true isUndead: false + name: deep palace diplocaulus mobNotes: '' threat: Caution aggro: Proximity + 5442: vuln: canStun: true @@ -4421,20 +5159,24 @@ canSleep: true canBind: false isUndead: false + name: deep palace triceratops mobNotes: Double autos threat: Caution aggro: Proximity + 5443: vuln: canStun: true canHeavy: true - canSlow: + canSlow: true canSleep: true canBind: true isUndead: false + name: deep palace croc mobNotes: Double autos threat: Caution aggro: Sight + 5444: vuln: canStun: true @@ -4443,31 +5185,37 @@ canSleep: false canBind: false isUndead: false + name: deep palace mylodon mobNotes: '' threat: Easy aggro: Sight + 5445: vuln: canStun: true canHeavy: false - canSlow: + canSlow: true canSleep: false canBind: false isUndead: false + name: deep palace tursus mobNotes: '' threat: Easy aggro: Sight + 5446: vuln: canStun: true canHeavy: true - canSlow: + canSlow: true canSleep: true canBind: true isUndead: false + name: deep palace sarcosuchus mobNotes: '' threat: Easy aggro: Sight + 5447: vuln: canStun: true @@ -4476,20 +5224,24 @@ canSleep: false canBind: false isUndead: false + name: deep palace vinegaroon mobNotes: '' threat: Easy aggro: Sight + 5448: vuln: canStun: true canHeavy: true - canSlow: + canSlow: true canSleep: true canBind: true isUndead: false + name: deep palace pteranodon mobNotes: '' threat: Caution aggro: Proximity + 5449: vuln: canStun: false @@ -4498,9 +5250,11 @@ canSleep: false canBind: false isUndead: false + name: Yulunggu mobNotes: "\"Douse\" -- lingering ground AoE that inflicts Bleed if stood in and buffs boss with Haste and Damage Up if left in it\nOccasionally inflicts Heavy and casts targeted ground AoEs " threat: Easy aggro: Boss + # -------------------------- # PotD 171-180 # -------------------------- @@ -4512,9 +5266,11 @@ canSleep: true canBind: true isUndead: false + name: deep palace bandersnatch mobNotes: Double autos threat: Caution aggro: Sight + 5451: vuln: canStun: false @@ -4523,9 +5279,11 @@ canSleep: true canBind: false isUndead: false + name: deep palace wisent mobNotes: Has semi-enrage around 30s in combat threat: Caution aggro: Sight + 5452: vuln: canStun: false @@ -4534,12 +5292,14 @@ canSleep: false canBind: false isUndead: false + name: bird of the deep palace mobNotes: >- "Revelation" inflicts Confusion "Tropical Wind" gives enemy a large Haste and damage buff threat: Easy aggro: Proximity + 5453: vuln: canStun: true @@ -4548,12 +5308,14 @@ canSleep: true canBind: false isUndead: false + name: deep palace snowclops mobNotes: >- "Glower" - untelegraphed line AoE "100-Tonze Swing" - untelegraphed point-blank AoE threat: Caution aggro: Sight + 5454: vuln: canStun: true @@ -4562,9 +5324,11 @@ canSleep: true canBind: false isUndead: false + name: deep palace sasquatch mobNotes: Buffs own damage and inflicts Physical Vuln Up with AoE damage out of combat threat: Caution aggro: Proximity + 5455: vuln: canStun: true @@ -4573,9 +5337,11 @@ canSleep: true canBind: true isUndead: false + name: deep palace bear mobNotes: '' threat: Easy aggro: Sight + 5456: vuln: canStun: true @@ -4584,9 +5350,11 @@ canSleep: true canBind: true isUndead: false + name: deep palace black coeurl mobNotes: '' threat: Easy aggro: Sight + 5457: vuln: canStun: true @@ -4595,9 +5363,11 @@ canSleep: true canBind: true isUndead: false + name: deep palace dhalmel mobNotes: '' threat: Easy aggro: Proximity + 5458: vuln: canStun: true @@ -4606,9 +5376,11 @@ canSleep: true canBind: true isUndead: false + name: deep palace lion mobNotes: Double autos threat: Caution aggro: Sight + 5459: vuln: canStun: true @@ -4617,12 +5389,14 @@ canSleep: false canBind: false isUndead: false + name: deep palace anzu mobNotes: >- Cleave inflicts Bleed "Flying Frenzy" targets a player and does heavy damage, Vuln Down, and stuns threat: Vicious aggro: Sight + 5460: vuln: canStun: true @@ -4631,9 +5405,11 @@ canSleep: true canBind: true isUndead: false + name: deep palace wolf mobNotes: Cleave does heavy damage and inflicts potent Bleed threat: Dangerous aggro: Sight + 5461: vuln: canStun: false @@ -4642,6 +5418,7 @@ canSleep: false canBind: false isUndead: false + name: Dendainsonne mobNotes: >- "Charybdis" -- lingering ground tornadoes cast twice in a row that cause high damage if sucked into @@ -4650,6 +5427,7 @@ At 15%% casts FAST CAST "Ecliptic Meteor" - HIGH DAMAGE roomwide with long cast that deals 80%% of total health damage every 9 seconds threat: Dangerous aggro: Boss + # -------------------------- # PotD 181-190 # -------------------------- @@ -4661,9 +5439,11 @@ canSleep: true canBind: true isUndead: false + name: deep palace grenade mobNotes: '' threat: Easy aggro: Sight + 5463: vuln: canStun: true @@ -4672,9 +5452,11 @@ canSleep: false canBind: true isUndead: false + name: deep palace wamouracampa mobNotes: Double autos threat: Caution aggro: Sound + 5464: vuln: canStun: false @@ -4683,9 +5465,11 @@ canSleep: false canBind: true isUndead: false + name: flood dragon mobNotes: Instant AoE that inflicts heavy Bleed threat: Vicious aggro: Sight + 5465: vuln: canStun: false @@ -4694,12 +5478,14 @@ canSleep: false canBind: true isUndead: false + name: deep palace worm mobNotes: >- Instant AoE on pull, double autos At 30 seconds will cast semi-enrage threat: Dangerous aggro: Sound + 5466: vuln: canStun: false @@ -4708,12 +5494,14 @@ canSleep: false canBind: true isUndead: false + name: deep palace claw mobNotes: >- Sucks in player and does heavy damage "Tail Screw" does damage and inflicts Slow threat: Caution aggro: Sight + 5467: vuln: canStun: true @@ -4722,12 +5510,14 @@ canSleep: false canBind: true isUndead: false + name: deep palace crawler mobNotes: >- Instant AoE burst does heavy damage and inflicts Slow Instant cone inflicts Poison threat: Dangerous aggro: Sound + 5468: vuln: canStun: false @@ -4736,9 +5526,11 @@ canSleep: false canBind: true isUndead: false + name: deep palace vindthurs mobNotes: '' threat: Easy aggro: Proximity + 5469: vuln: canStun: true @@ -4747,9 +5539,11 @@ canSleep: false canBind: true isUndead: false + name: deep palace wamoura mobNotes: '' threat: Easy aggro: Sight + 5470: vuln: canStun: false @@ -4758,6 +5552,7 @@ canSleep: true canBind: true isUndead: false + name: deep palace garm mobNotes: >- If familiar with chimera mechanics can be engaged @@ -4766,6 +5561,7 @@ "The Ram's Voice" - be outside of melee range threat: Vicious aggro: Proximity + 5471: vuln: canStun: false @@ -4774,6 +5570,7 @@ canSleep: false canBind: false isUndead: false + name: the Godfather mobNotes: >- Kill blue bomb when it appears @@ -4782,6 +5579,7 @@ Boss has cleave that does heavy damage threat: Dangerous aggro: Boss + # -------------------------- # PotD 191-200 # -------------------------- @@ -4793,9 +5591,11 @@ canSleep: false canBind: false isUndead: false + name: deep palace trap mobNotes: '' threat: Easy aggro: Sound + 5473: vuln: canStun: false @@ -4804,9 +5604,11 @@ canSleep: false canBind: false isUndead: false + name: deep palace fachan mobNotes: Casts untelegraphed cone "Level 5 Death" threat: Dangerous aggro: Sight + 5474: vuln: canStun: false @@ -4815,9 +5617,11 @@ canSleep: false canBind: false isUndead: true + name: deep palace bicephalus mobNotes: '' threat: Easy aggro: Proximity + 5475: vuln: canStun: true @@ -4826,9 +5630,11 @@ canSleep: false canBind: false isUndead: true + name: deep palace iron corse mobNotes: Double auto threat: Caution aggro: Proximity + # -------------------------- # PotD misc. # -------------------------- @@ -4840,9 +5646,11 @@ canSleep: false canBind: false isUndead: false + name: palace sprite mobNotes: '' threat: Easy aggro: Sight + 5480: vuln: canStun: true @@ -4851,9 +5659,11 @@ canSleep: false canBind: false isUndead: false + name: deep palace sprite mobNotes: '' threat: Easy aggro: Sight + 2566: vuln: canStun: false @@ -4862,8 +5672,11 @@ canSleep: canBind: false isUndead: + name: mimic mobNotes: >- High damage autos and instant kill AoE + "Infatuation" can only be interrupted with interject threat: Caution aggro: Proximity + From 4255333de997d35d4ed4c087a3354cdea135130c Mon Sep 17 00:00:00 2001 From: AkiniKites Date: Fri, 13 Jan 2023 16:20:56 -0500 Subject: [PATCH 21/32] Update mobs --- DeepDungeonDex/mob-data.yml | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/DeepDungeonDex/mob-data.yml b/DeepDungeonDex/mob-data.yml index 3f923a9..2d9f225 100644 --- a/DeepDungeonDex/mob-data.yml +++ b/DeepDungeonDex/mob-data.yml @@ -5262,7 +5262,7 @@ vuln: canStun: true canHeavy: true - canSlow: + canSlow: true canSleep: true canBind: true isUndead: false @@ -5275,7 +5275,7 @@ vuln: canStun: false canHeavy: false - canSlow: + canSlow: true canSleep: true canBind: false isUndead: false @@ -5288,7 +5288,7 @@ vuln: canStun: false canHeavy: false - canSlow: + canSlow: true canSleep: false canBind: false isUndead: false @@ -5304,7 +5304,7 @@ vuln: canStun: true canHeavy: true - canSlow: + canSlow: true canSleep: true canBind: false isUndead: false @@ -5333,7 +5333,7 @@ vuln: canStun: true canHeavy: true - canSlow: + canSlow: true canSleep: true canBind: true isUndead: false @@ -5346,7 +5346,7 @@ vuln: canStun: true canHeavy: true - canSlow: + canSlow: true canSleep: true canBind: true isUndead: false @@ -5359,7 +5359,7 @@ vuln: canStun: true canHeavy: true - canSlow: + canSlow: true canSleep: true canBind: true isUndead: false @@ -5372,7 +5372,7 @@ vuln: canStun: true canHeavy: true - canSlow: + canSlow: true canSleep: true canBind: true isUndead: false @@ -5385,7 +5385,7 @@ vuln: canStun: true canHeavy: false - canSlow: + canSlow: true canSleep: false canBind: false isUndead: false @@ -5401,7 +5401,7 @@ vuln: canStun: true canHeavy: true - canSlow: + canSlow: true canSleep: true canBind: true isUndead: false @@ -5435,7 +5435,7 @@ vuln: canStun: true canHeavy: true - canSlow: + canSlow: true canSleep: true canBind: true isUndead: false @@ -5448,7 +5448,7 @@ vuln: canStun: true canHeavy: true - canSlow: + canSlow: true canSleep: false canBind: true isUndead: false From 5e968b812b9642598da766a50776f41937c8718a Mon Sep 17 00:00:00 2001 From: AkiniKites Date: Fri, 13 Jan 2023 16:22:25 -0500 Subject: [PATCH 22/32] Update to net 7 --- DeepDungeonDex/DeepDungeonDex.csproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DeepDungeonDex/DeepDungeonDex.csproj b/DeepDungeonDex/DeepDungeonDex.csproj index eed2722..f6af7e4 100644 --- a/DeepDungeonDex/DeepDungeonDex.csproj +++ b/DeepDungeonDex/DeepDungeonDex.csproj @@ -1,7 +1,7 @@  - net6.0-windows + net7.0-windows 2.0.0.0 2.0.0.0 From 36ee28a0fe45009116205ee306a2b044869343b3 Mon Sep 17 00:00:00 2001 From: AkiniKites Date: Fri, 13 Jan 2023 17:52:43 -0500 Subject: [PATCH 23/32] Update nuget --- DeepDungeonDex/DeepDungeonDex.csproj | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/DeepDungeonDex/DeepDungeonDex.csproj b/DeepDungeonDex/DeepDungeonDex.csproj index f6af7e4..1bfdbde 100644 --- a/DeepDungeonDex/DeepDungeonDex.csproj +++ b/DeepDungeonDex/DeepDungeonDex.csproj @@ -57,8 +57,8 @@ - - + + From c2f719ca7abb881b23e2cdbf06c9faca0c611b55 Mon Sep 17 00:00:00 2001 From: AkiniKites Date: Thu, 5 Oct 2023 02:18:57 -0400 Subject: [PATCH 24/32] Update for 6.5 --- DeepDungeonDex/DeepDungeonDex.csproj | 6 +++--- DeepDungeonDex/DeepDungeonDex.json | 2 +- DeepDungeonDex/Plugin.cs | 13 +++++++------ 3 files changed, 11 insertions(+), 10 deletions(-) diff --git a/DeepDungeonDex/DeepDungeonDex.csproj b/DeepDungeonDex/DeepDungeonDex.csproj index 1bfdbde..2264452 100644 --- a/DeepDungeonDex/DeepDungeonDex.csproj +++ b/DeepDungeonDex/DeepDungeonDex.csproj @@ -3,8 +3,8 @@ net7.0-windows - 2.0.0.0 - 2.0.0.0 + 3.0.0.0 + 3.0.0.0 true false @@ -57,7 +57,7 @@ - + diff --git a/DeepDungeonDex/DeepDungeonDex.json b/DeepDungeonDex/DeepDungeonDex.json index f6ccb49..ef38e6f 100644 --- a/DeepDungeonDex/DeepDungeonDex.json +++ b/DeepDungeonDex/DeepDungeonDex.json @@ -1,6 +1,6 @@ { "Author": "Akini", - "Name": "DeepDungeonDex", + "Name": "DeepDungeonDex Aki", "Punchline": "Live monster data for Deep Dungeons.", "Description": "A live bestiary for Deep Dungeon. Shows target mob aggro type, a subjective threat level, status vulnerabilities, and a general overview of notable mechanics. Threat level is meant to be taken with a grain of salt, is aimed towards solo players, and assumes a general familiarity with deep dungeon mechanics and the class being played. Information is accurate to the best of my knowledge based on crowdsourced information, but I could use your help! Please open an issue on the GitHub if you'd like to correct inaccurate or untested data.", "Tags": [ "deep dungeon", "achievements", "battle" ], diff --git a/DeepDungeonDex/Plugin.cs b/DeepDungeonDex/Plugin.cs index daf25bd..c2b6fe9 100644 --- a/DeepDungeonDex/Plugin.cs +++ b/DeepDungeonDex/Plugin.cs @@ -10,6 +10,7 @@ using Dalamud.Logging; using DeepDungeonDex.Data; using DeepDungeonDex.UI; +using Dalamud.Plugin.Services; namespace DeepDungeonDex { @@ -24,11 +25,11 @@ public class Plugin : IDalamudPlugin public static DataRepo JobRepo { get; private set; } [PluginService] internal static DalamudPluginInterface PluginInterface { get; private set; } = null!; - [PluginService] internal static ClientState ClientState { get; private set; } = null!; - [PluginService] internal static CommandManager CommandManager { get; private set; } = null!; - [PluginService] internal static Condition Condition { get; private set; } = null!; - [PluginService] internal static Framework Framework { get; private set; } = null!; - [PluginService] internal static TargetManager Targets { get; private set; } = null!; + [PluginService] internal static IClientState ClientState { get; private set; } = null!; + [PluginService] internal static ICommandManager CommandManager { get; private set; } = null!; + [PluginService] internal static ICondition Condition { get; private set; } = null!; + [PluginService] internal static IFramework Framework { get; private set; } = null!; + [PluginService] internal static ITargetManager Targets { get; private set; } = null!; public string Name => "DeepDungeonDex"; @@ -77,7 +78,7 @@ public void MergeData() } } - public void GetData(Framework framework) + public void GetData(IFramework framework) { if (!Condition[ConditionFlag.InDeepDungeon]) { From 1a6180ff91988d2a5400db86ca26ddf84feafd2d Mon Sep 17 00:00:00 2001 From: AkiniKites Date: Fri, 22 Mar 2024 17:16:26 -0400 Subject: [PATCH 25/32] Update to net 8 --- DeepDungeonDex/DeepDungeonDex.csproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DeepDungeonDex/DeepDungeonDex.csproj b/DeepDungeonDex/DeepDungeonDex.csproj index 2264452..848fcac 100644 --- a/DeepDungeonDex/DeepDungeonDex.csproj +++ b/DeepDungeonDex/DeepDungeonDex.csproj @@ -1,7 +1,7 @@  - net7.0-windows + net8.0-windows7.0 3.0.0.0 3.0.0.0 From 7717852ca1542e22be64b71cf95a49946851d58e Mon Sep 17 00:00:00 2001 From: AkiniKites Date: Wed, 29 May 2024 12:01:20 -0400 Subject: [PATCH 26/32] Updated to new plugin log --- DeepDungeonDex/Data/DataRepo.cs | 6 +++--- DeepDungeonDex/Data/YamlMerge.cs | 6 +++--- DeepDungeonDex/DeepDungeonDex.csproj | 1 + DeepDungeonDex/Plugin.cs | 1 + 4 files changed, 8 insertions(+), 6 deletions(-) diff --git a/DeepDungeonDex/Data/DataRepo.cs b/DeepDungeonDex/Data/DataRepo.cs index 06ee484..7e936fa 100644 --- a/DeepDungeonDex/Data/DataRepo.cs +++ b/DeepDungeonDex/Data/DataRepo.cs @@ -95,12 +95,12 @@ public DataRepo Load() else _overrideData = new Dictionary(); - PluginLog.Information($"Loaded data: mobs={_data.Count}, overrides={_overrideData.Count}"); + Plugin.Log.Information($"Loaded data: mobs={_data.Count}, overrides={_overrideData.Count}"); _dataLoaded = true; } catch(Exception ex) { - PluginLog.Error($"Error loading database ({Name}): {ex}"); + Plugin.Log.Error($"Error loading database ({Name}): {ex}"); } }); @@ -125,7 +125,7 @@ private void Save() } catch (Exception ex) { - PluginLog.Error($"Error saving database ({Name}): " + ex); + Plugin.Log.Error($"Error saving database ({Name}): " + ex); } }); } diff --git a/DeepDungeonDex/Data/YamlMerge.cs b/DeepDungeonDex/Data/YamlMerge.cs index 4067b00..e477372 100644 --- a/DeepDungeonDex/Data/YamlMerge.cs +++ b/DeepDungeonDex/Data/YamlMerge.cs @@ -29,7 +29,7 @@ private static bool MergeYamlChanges(List data, out List newData var m = Regex.Match(data[0], @"\d+"); if (!m.Success) { - PluginLog.Error("Invalid object pattern: " + data[0]); + Plugin.Log.Error("Invalid object pattern: " + data[0]); return false; } @@ -39,7 +39,7 @@ private static bool MergeYamlChanges(List data, out List newData if (!isOverride) return false; - PluginLog.Information("Merging override for: " + id); + Plugin.Log.Information("Merging override for: " + id); var serializer = new SerializerBuilder() .WithNamingConvention(CamelCaseNamingConvention.Instance) @@ -56,7 +56,7 @@ private static bool MergeYamlChanges(List data, out List newData //sketchy yaml merge public static void MergeCustomChanges() { - PluginLog.Information("Merging mob overrides"); + Plugin.Log.Information("Merging mob overrides"); var dbData = File.ReadAllLines(Plugin.MobRepo.DbPath).ToList(); diff --git a/DeepDungeonDex/DeepDungeonDex.csproj b/DeepDungeonDex/DeepDungeonDex.csproj index 848fcac..3899e55 100644 --- a/DeepDungeonDex/DeepDungeonDex.csproj +++ b/DeepDungeonDex/DeepDungeonDex.csproj @@ -12,6 +12,7 @@ true false $(AppData)\XIVLauncher\devPlugins\DeepDungeonDex\ + x64 diff --git a/DeepDungeonDex/Plugin.cs b/DeepDungeonDex/Plugin.cs index c2b6fe9..6f0729c 100644 --- a/DeepDungeonDex/Plugin.cs +++ b/DeepDungeonDex/Plugin.cs @@ -30,6 +30,7 @@ public class Plugin : IDalamudPlugin [PluginService] internal static ICondition Condition { get; private set; } = null!; [PluginService] internal static IFramework Framework { get; private set; } = null!; [PluginService] internal static ITargetManager Targets { get; private set; } = null!; + [PluginService] internal static IPluginLog Log { get; private set; } = null!; public string Name => "DeepDungeonDex"; From 1b883599c2b50512d98c79e426aeae444c02309e Mon Sep 17 00:00:00 2001 From: AkiniKites Date: Sat, 29 Jun 2024 17:49:49 -0400 Subject: [PATCH 27/32] Update for dalamud 10 --- DeepDungeonDex/Data/DataRepo.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DeepDungeonDex/Data/DataRepo.cs b/DeepDungeonDex/Data/DataRepo.cs index 7e936fa..bc537db 100644 --- a/DeepDungeonDex/Data/DataRepo.cs +++ b/DeepDungeonDex/Data/DataRepo.cs @@ -21,7 +21,7 @@ public class DataRepo where T : class, IRepoData public string DbPath { get; init; } public string OverrideDbPath { get; init; } - public static DataRepo Create(DalamudPluginInterface plugin, string name) + public static DataRepo Create(IDalamudPluginInterface plugin, string name) { var dir = plugin.AssemblyLocation.Directory.FullName; var repo = new DataRepo() From ce21d782056345246215f213ed3d667232019d25 Mon Sep 17 00:00:00 2001 From: "CIMCORP5\\asim" Date: Thu, 11 Jul 2024 13:38:52 -0400 Subject: [PATCH 28/32] Update to 7.0 --- DeepDungeonDex/Configuration.cs | 4 ++-- DeepDungeonDex/Plugin.cs | 6 +++--- DeepDungeonDex/TargetData.cs | 4 ++-- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/DeepDungeonDex/Configuration.cs b/DeepDungeonDex/Configuration.cs index e041f69..bd97a20 100644 --- a/DeepDungeonDex/Configuration.cs +++ b/DeepDungeonDex/Configuration.cs @@ -13,9 +13,9 @@ public class Configuration : IPluginConfiguration public bool HideBasedOnJob { get; set; } = false; // Add any other properties or methods here. - [JsonIgnore] private DalamudPluginInterface pluginInterface; + [JsonIgnore] private IDalamudPluginInterface pluginInterface; - public void Initialize(DalamudPluginInterface pluginInterface) + public void Initialize(IDalamudPluginInterface pluginInterface) { this.pluginInterface = pluginInterface; } diff --git a/DeepDungeonDex/Plugin.cs b/DeepDungeonDex/Plugin.cs index 6f0729c..06add28 100644 --- a/DeepDungeonDex/Plugin.cs +++ b/DeepDungeonDex/Plugin.cs @@ -24,7 +24,7 @@ public class Plugin : IDalamudPlugin public static DataRepo MobRepo { get; private set; } public static DataRepo JobRepo { get; private set; } - [PluginService] internal static DalamudPluginInterface PluginInterface { get; private set; } = null!; + [PluginService] internal static IDalamudPluginInterface PluginInterface { get; private set; } = null!; [PluginService] internal static IClientState ClientState { get; private set; } = null!; [PluginService] internal static ICommandManager CommandManager { get; private set; } = null!; [PluginService] internal static ICondition Condition { get; private set; } = null!; @@ -71,11 +71,11 @@ public void MergeData() try { YamlMerge.MergeCustomChanges(); - PluginLog.Information("Yaml merge ok."); + Plugin.Log.Information("Yaml merge ok."); } catch(Exception ex) { - PluginLog.Error(ex, "Failed to merge changes"); + Plugin.Log.Error(ex, "Failed to merge changes"); } } diff --git a/DeepDungeonDex/TargetData.cs b/DeepDungeonDex/TargetData.cs index 7c198b9..45fc95d 100644 --- a/DeepDungeonDex/TargetData.cs +++ b/DeepDungeonDex/TargetData.cs @@ -9,9 +9,9 @@ public class TargetData public static uint NameID { get; set; } public static SeString Name { get; set; } - public static void UpdateTargetData(GameObject target, out bool isValid) + public static void UpdateTargetData(IGameObject target, out bool isValid) { - if (target is BattleNpc bnpc) + if (target is IBattleNpc bnpc) { Name = bnpc.Name; NameID = bnpc.NameId; From 18169f475ed017811ac8af67a854d95e9ae855cf Mon Sep 17 00:00:00 2001 From: AkiniKites Date: Mon, 9 Sep 2024 16:20:37 -0400 Subject: [PATCH 29/32] Update to 7.0 --- DeepDungeonDex/DeepDungeonDex.csproj | 2 +- DeepDungeonDex/mob-data.yml | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/DeepDungeonDex/DeepDungeonDex.csproj b/DeepDungeonDex/DeepDungeonDex.csproj index 3899e55..770eee8 100644 --- a/DeepDungeonDex/DeepDungeonDex.csproj +++ b/DeepDungeonDex/DeepDungeonDex.csproj @@ -58,7 +58,7 @@ - + diff --git a/DeepDungeonDex/mob-data.yml b/DeepDungeonDex/mob-data.yml index 2d9f225..b21426b 100644 --- a/DeepDungeonDex/mob-data.yml +++ b/DeepDungeonDex/mob-data.yml @@ -4292,7 +4292,7 @@ name: deep palace nanka mobNotes: '' threat: Easy - aggro: Sight + aggro: Sound 5377: vuln: @@ -5649,7 +5649,7 @@ name: palace sprite mobNotes: '' threat: Easy - aggro: Sight + aggro: Sound 5480: vuln: @@ -5662,7 +5662,7 @@ name: deep palace sprite mobNotes: '' threat: Easy - aggro: Sight + aggro: Sound 2566: vuln: From 105c3a6bba76b6eda592e40144d385adedb1f16e Mon Sep 17 00:00:00 2001 From: AkiniKites Date: Sat, 23 Nov 2024 20:40:44 -0500 Subject: [PATCH 30/32] Fix some mobs --- DeepDungeonDex/mob-data.yml | 62 ++++++++++++++++++------------------- 1 file changed, 31 insertions(+), 31 deletions(-) diff --git a/DeepDungeonDex/mob-data.yml b/DeepDungeonDex/mob-data.yml index b21426b..9c31b5f 100644 --- a/DeepDungeonDex/mob-data.yml +++ b/DeepDungeonDex/mob-data.yml @@ -4001,11 +4001,11 @@ 5353: vuln: - canStun: + canStun: false canHeavy: false - canSlow: - canSleep: - canBind: + canSlow: true + canSleep: false + canBind: false isUndead: true name: palace iron corse mobNotes: '' @@ -4109,10 +4109,10 @@ 5364: vuln: canStun: true - canHeavy: + canHeavy: true canSlow: true canSleep: true - canBind: + canBind: true isUndead: false name: deep palace hippogryph mobNotes: >- @@ -4629,7 +4629,7 @@ vuln: canStun: true canHeavy: true - canSlow: + canSlow: true canSleep: false canBind: true isUndead: true @@ -4733,9 +4733,9 @@ vuln: canStun: true canHeavy: true - canSlow: + canSlow: true canSleep: true - canBind: + canBind: false isUndead: true name: deep palace gourmand mobNotes: >- @@ -4822,11 +4822,11 @@ 5415: vuln: - canStun: true + canStun: false canHeavy: true - canSlow: - canSleep: - canBind: + canSlow: true + canSleep: false + canBind: true isUndead: false name: deep palace knight mobNotes: >- @@ -4897,10 +4897,10 @@ 5420: vuln: canStun: false - canHeavy: - canSlow: - canSleep: - canBind: + canHeavy: false + canSlow: false + canSleep: false + canBind: false isUndead: true name: onyx dragon mobNotes: Casts Gaze "Evil Eye" @@ -4925,7 +4925,7 @@ canStun: true canHeavy: false canSlow: true - canSleep: + canSleep: false canBind: false isUndead: true name: deep palace wraith @@ -4936,10 +4936,10 @@ 5423: vuln: canStun: false - canHeavy: - canSlow: - canSleep: - canBind: + canHeavy: true + canSlow: true + canSleep: false + canBind: true isUndead: true name: deep palace keeper mobNotes: Very high damage for the floors it appears on @@ -5587,7 +5587,7 @@ vuln: canStun: false canHeavy: false - canSlow: + canSlow: true canSleep: false canBind: false isUndead: false @@ -5598,9 +5598,9 @@ 5473: vuln: - canStun: false + canStun: true canHeavy: false - canSlow: + canSlow: true canSleep: false canBind: false isUndead: false @@ -5613,20 +5613,20 @@ vuln: canStun: false canHeavy: true - canSlow: + canSlow: true canSleep: false canBind: false isUndead: true name: deep palace bicephalus - mobNotes: '' - threat: Easy + mobNotes: Steel recommended. Tank buster hurts + threat: Caution aggro: Proximity 5475: vuln: canStun: true canHeavy: false - canSlow: + canSlow: true canSleep: false canBind: false isUndead: true @@ -5649,7 +5649,7 @@ name: palace sprite mobNotes: '' threat: Easy - aggro: Sound + aggro: Sight 5480: vuln: @@ -5662,7 +5662,7 @@ name: deep palace sprite mobNotes: '' threat: Easy - aggro: Sound + aggro: Sight 2566: vuln: From 9d6de05096b9234b97aa30a375e329cdbf91817b Mon Sep 17 00:00:00 2001 From: AkiniKites Date: Sun, 24 Nov 2024 21:21:51 -0500 Subject: [PATCH 31/32] Fixes for 7.1 --- DeepDungeonDex/DeepDungeonDex.csproj | 2 +- DeepDungeonDex/UI/PluginUI.cs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DeepDungeonDex/DeepDungeonDex.csproj b/DeepDungeonDex/DeepDungeonDex.csproj index 770eee8..a43787f 100644 --- a/DeepDungeonDex/DeepDungeonDex.csproj +++ b/DeepDungeonDex/DeepDungeonDex.csproj @@ -58,7 +58,7 @@ - + diff --git a/DeepDungeonDex/UI/PluginUI.cs b/DeepDungeonDex/UI/PluginUI.cs index b244868..62b69a1 100644 --- a/DeepDungeonDex/UI/PluginUI.cs +++ b/DeepDungeonDex/UI/PluginUI.cs @@ -64,7 +64,7 @@ public void Draw() var mobData = Plugin.MobRepo.Get(TargetData.NameID, out var isOverride); if (mobData == null) return; - var cjid = Plugin.ClientState.LocalPlayer?.ClassJob.GameData?.RowId ?? 0; + var cjid = Plugin.ClientState.LocalPlayer?.ClassJob.RowId ?? 0; var jobData = Plugin.JobRepo.Get(cjid); var flags = ImGuiWindowFlags.NoResize | ImGuiWindowFlags.AlwaysAutoResize | ImGuiWindowFlags.NoTitleBar; From fe61b3af33caa9c5dafea68b3b86d5db06eb10dc Mon Sep 17 00:00:00 2001 From: AkiniKites Date: Thu, 28 Nov 2024 21:53:33 -0500 Subject: [PATCH 32/32] Fix mob data --- DeepDungeonDex/mob-data.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DeepDungeonDex/mob-data.yml b/DeepDungeonDex/mob-data.yml index 9c31b5f..3aab7cd 100644 --- a/DeepDungeonDex/mob-data.yml +++ b/DeepDungeonDex/mob-data.yml @@ -2115,7 +2115,7 @@ name: palace hippocerf mobNotes: '' threat: Easy - aggro: Proximity + aggro: Sight 4980: vuln: