diff --git a/BuffsDebuffs.lua b/BuffsDebuffs.lua index c15c183..56a4d9d 100644 --- a/BuffsDebuffs.lua +++ b/BuffsDebuffs.lua @@ -577,3 +577,25 @@ sunspire.flame_split = 119485 sunspire.agony_totem = 118411 RaidNotifier.BuffsDebuffs[RAID_SUNSPIRE] = sunspire + +-- ------------------------------------------------------ +-- -- Kyne's Aegis--------------------------------------- +-- -- --------------------------------------------------- +local kynes_aegis = {} + +-- Half-Giant Tidebreaker's Crashing Wall +kynes_aegis.tidebreaker_crashing_wall = 134196 +-- Bitter Knight's Sanguine Prison +kynes_aegis.bitter_knight_sanguine_prison = 132473 +-- Bloodknight's Blood Fountain +kynes_aegis.bloodknight_blood_fountain = 140294 +-- Dragon Totem spawn at Yandir the Butcher boss +kynes_aegis.yandir_dragon_totem_spawn = 133264 +-- Harpy Totem spawn at Yandir the Butcher boss +kynes_aegis.yandir_harpy_totem_spawn = 133511 +-- Gargoyle Totem spawn at Yandir the Butcher boss +kynes_aegis.yandir_gargoyle_totem_spawn = 133514 +-- Chaurus Totem spawn at Yandir the Butcher boss +kynes_aegis.yandir_chaurus_totem_spawn = 133516 + +RaidNotifier.BuffsDebuffs[RAID_KYNES_AEGIS] = kynes_aegis diff --git a/RaidNotifier.lua b/RaidNotifier.lua index 28564a6..632c8f0 100644 --- a/RaidNotifier.lua +++ b/RaidNotifier.lua @@ -22,6 +22,7 @@ RAID_ASYLUM_SANCTORIUM = 8 RAID_CLOUDREST = 9 RAID_BLACKROSE_PRISON = 10 RAID_SUNSPIRE = 11 +RAID_KYNES_AEGIS = 12 -- Debugging local function p() end @@ -578,6 +579,7 @@ do ---------------------- [RAID_CLOUDREST] = 1051, [RAID_BLACKROSE_PRISON] = 1082, [RAID_SUNSPIRE] = 1121, + [RAID_KYNES_AEGIS] = 1196, } local RaidZones = {} @@ -904,8 +906,9 @@ do --------------------------- RaidNotifier.AS = RaidNotifier.AS or {} RaidNotifier.CR = RaidNotifier.CR or {} RaidNotifier.SS = RaidNotifier.SS or {} - - RaidNotifier.Trial = + RaidNotifier.KA = RaidNotifier.KA or {} + + RaidNotifier.Trial = { [RAID_AETHERIAN_ARCHIVE] = RaidNotifier.AA, [RAID_HEL_RA_CITADEL] = RaidNotifier.HRC, @@ -917,6 +920,7 @@ do --------------------------- [RAID_ASYLUM_SANCTORIUM] = RaidNotifier.AS, [RAID_CLOUDREST] = RaidNotifier.CR, [RAID_SUNSPIRE] = RaidNotifier.SS, + [RAID_KYNES_AEGIS] = RaidNotifier.KA, } ------------------- diff --git a/RaidNotifier.txt b/RaidNotifier.txt index 29f5111..9076f2a 100644 --- a/RaidNotifier.txt +++ b/RaidNotifier.txt @@ -28,6 +28,7 @@ TrialMawOfLorkhaj.lua TrialSanctumOphidia.lua TrialCloudrest.lua TrialSunspire.lua +TrialKynesAegis.lua Notifications.lua RaidNotifier.lua diff --git a/Settings.lua b/Settings.lua index a4ea39f..41196eb 100644 --- a/Settings.lua +++ b/Settings.lua @@ -18,6 +18,7 @@ RAID_ASYLUM_SANCTORIUM = 8 RAID_CLOUDREST = 9 RAID_BLACKROSE_PRISON = 10 RAID_SUNSPIRE = 11 +RAID_KYNES_AEGIS = 12 -- ------------------ -- DEFAULT SETTINGS @@ -293,6 +294,12 @@ do ------------------ negate_field = 1, -- "Self" shock_bolt = true, }, + kynesAegis = { + tidebreaker_crashing_wall = false, + bitter_knight_sanguine_prison = false, + bloodknight_blood_fountain = false, + yandir_totem_spawn = 0, -- "Off" + }, dbg = { enable = false, notify = false, @@ -525,7 +532,14 @@ function RaidNotifier:CreateSettingsMenu() negate_field = { L.Settings_General_Choices_Off, L.Settings_General_Choices_Self, - } + } + }, + kynesAegis = { + yandir_totem_spawn = { + L.Settings_General_Choices_Off, + L.Settings_General_Choices_OnlyChaurusTotem, + L.Settings_General_Choices_All, + }, }, } @@ -1562,6 +1576,31 @@ function RaidNotifier:CreateSettingsMenu() }, "sunspire", "negate_field") subTable = nil + -- Kyne's Aegis + MakeSubmenu(L.Settings_KynesAegis_Header, RaidNotifier:GetRaidDescription(RAID_KYNES_AEGIS)) + MakeControlEntry({ + type = "checkbox", + name = L.Settings_KynesAegis_Crashing_Wall, + tooltip = L.Settings_KynesAegis_Crashing_Wall_TT, + }, "kynesAegis", "tidebreaker_crashing_wall") + MakeControlEntry({ + type = "checkbox", + name = L.Settings_KynesAegis_Sanguine_Prison, + tooltip = L.Settings_KynesAegis_Sanguine_Prison_TT, + }, "kynesAegis", "bitter_knight_sanguine_prison") + MakeControlEntry({ + type = "checkbox", + name = L.Settings_KynesAegis_Blood_Fountain, + tooltip = L.Settings_KynesAegis_Blood_Fountain_TT, + }, "kynesAegis", "bloodknight_blood_fountain") + MakeControlEntry({ + type = "dropdown", + name = L.Settings_KynesAegis_Totem, + tooltip = L.Settings_KynesAegis_Totem_TT, + choices = choices.kynesAegis.yandir_totem_spawn, + }, "kynesAegis", "yandir_totem_spawn") + subTable = nil --end submenu + MakeControlEntry({ type = "header", name = L.Settings_Debug_Header, diff --git a/TrialKynesAegis.lua b/TrialKynesAegis.lua new file mode 100644 index 0000000..abea43c --- /dev/null +++ b/TrialKynesAegis.lua @@ -0,0 +1,75 @@ +RaidNotifier = RaidNotifier or {} +RaidNotifier.KA = {} + +local RaidNotifier = RaidNotifier + +local function p() end +local function dbg() end + +local data = {} + +function RaidNotifier.KA.Initialize() + p = RaidNotifier.p + dbg = RaidNotifier.dbg + + data = {} +end + +function RaidNotifier.KA.OnCombatEvent(_, result, isError, aName, aGraphic, aActionSlotType, sName, sType, tName, tType, hitValue, pType, dType, log, sUnitId, tUnitId, abilityId) + local raidId = RaidNotifier.raidId + local self = RaidNotifier + local buffsDebuffs, settings = self.BuffsDebuffs[raidId], self.Vars.kynesAegis + + if (tName == nil or tName == "") then + tName = self.UnitIdToString(tUnitId) + end + + if (result == ACTION_RESULT_BEGIN) then + -- Half-Giant Tidebreaker's Crashing Wall + if (abilityId == buffsDebuffs.tidebreaker_crashing_wall) then + if (settings.tidebreaker_crashing_wall == true) then + self:StartCountdown(hitValue, GetString(RAIDNOTIFIER_ALERTS_KYNESAEGIS_CRASHING_WALL), "kynesAegis", "tidebreaker_crashing_wall", false) + end + end + -- Bloodknight's Blood Fountain + if (abilityId == buffsDebuffs.bloodknight_blood_fountain) then + if (settings.bloodknight_blood_fountain == true) then + self:StartCountdown(hitValue, GetString(RAIDNOTIFIER_ALERTS_KYNESAEGIS_BLOOD_FOUNTAIN), "kynesAegis", "bloodknight_blood_fountain", false) + end + end + elseif (result == ACTION_RESULT_EFFECT_GAINED) then + -- Bitter Knight's Sanguine Prison + if (abilityId == buffsDebuffs.bitter_knight_sanguine_prison) then + if (settings.bitter_knight_sanguine_prison == true) then + if (tType ~= COMBAT_UNIT_TYPE_PLAYER and tName ~= "") then + self:AddAnnouncement(zo_strformat(GetString(RAIDNOTIFIER_ALERTS_KYNESAEGIS_SANGUINE_PRISON_OTHER), tName), "kynesAegis", "bitter_knight_sanguine_prison") + end + end + end + -- Dragon Totems spawn at Yandir the Butcher boss + if (abilityId == buffsDebuffs.yandir_dragon_totem_spawn) then + if (settings.yandir_totem_spawn == 2) then + -- Since two totems spawns at once we want to avoid extra announcements, so we're adding 2 sec alert suppression + self:AddAnnouncement(GetString(RAIDNOTIFIER_ALERTS_KYNESAEGIS_DRAGON_TOTEM), "kynesAegis", "yandir_totem_spawn", 2) + end + end + -- Harpy Totem spawn at Yandir the Butcher boss + if (abilityId == buffsDebuffs.yandir_harpy_totem_spawn) then + if (settings.yandir_totem_spawn == 2) then + self:AddAnnouncement(GetString(RAIDNOTIFIER_ALERTS_KYNESAEGIS_HARPY_TOTEM), "kynesAegis", "yandir_totem_spawn") + end + end + -- Gargoyle Totem spawn at Yandir the Butcher boss + if (abilityId == buffsDebuffs.yandir_gargoyle_totem_spawn) then + if (settings.yandir_totem_spawn == 2) then + self:AddAnnouncement(GetString(RAIDNOTIFIER_ALERTS_KYNESAEGIS_GARGOYLE_TOTEM), "kynesAegis", "yandir_totem_spawn") + end + end + -- Chaurus Totem spawn at Yandir the Butcher boss + if (abilityId == buffsDebuffs.yandir_chaurus_totem_spawn) then + if (settings.yandir_totem_spawn >= 1) then + self:AddAnnouncement(GetString(RAIDNOTIFIER_ALERTS_KYNESAEGIS_CHAURUS_TOTEM), "kynesAegis", "yandir_totem_spawn") + end + end + end +end diff --git a/lang/en.lua b/lang/en.lua index acf745d..4cbaad2 100644 --- a/lang/en.lua +++ b/lang/en.lua @@ -45,6 +45,7 @@ L.Settings_General_Choices_500ms = "0.5s" L.Settings_General_Choices_200ms = "0.2s" L.Settings_General_Choices_Custom = "Custom" L.Settings_General_Choices_Custom_Announcement = "Custom (movable)" +L.Settings_General_Choices_OnlyChaurusTotem = "Only Chaurus" -- Specific for Kyne's Aegis -- Alerts L.Alerts_General_No_Bufffood = "You have no bufffood!" L.Alerts_General_Bufffood_Minutes = "Your '<<1>>' bufffood runs out in |cbd0000<<2>>|r minutes!" @@ -546,6 +547,31 @@ L.Alerts_Sunspire_Shock_Bolt = "Incoming |c00ddffShock Bolt|r! Stac L.Alerts_Sunspire_Apocalypse = "Incoming |cffff00Translation Apocalypse|r! Bash in" L.Alerts_Sunspire_Apocalypse_Ends = "|cffff00Translation Apocalypse|r ends in" + +-------------------------------- +------ KYNE'S AEGIS ----- +-------------------------------- +L.Settings_KynesAegis_Header = "Kyne's Aegis" +-- Settings +L.Settings_KynesAegis_Crashing_Wall = "General: Crashing Wall" +L.Settings_KynesAegis_Crashing_Wall_TT = "Alerts you when the Half-Giant Tidebreaker starts his Crashing Wall attack, counting down until it is unleashed. Block or roll dodge it." +L.Settings_KynesAegis_Sanguine_Prison = "General: Sanguine Prison" +L.Settings_KynesAegis_Sanguine_Prison_TT = "Alerts you when your ally is trapped in Sanguine Prison casted by Bitter Knight. You need to free your ally by focusing down his prison." +L.Settings_KynesAegis_Blood_Fountain = "General: Blood Fountain" +L.Settings_KynesAegis_Blood_Fountain_TT = "Alerts you when Bloodknight starts his Blood Fountain attack, counting down until it is unleashed. It looks like cross-shaped AoE, and need to be avoided as it deals heavy damage." +L.Settings_KynesAegis_Totem = "Yandir: Totems spawn" +L.Settings_KynesAegis_Totem_TT = "Alerts you when certain totem appeared during the battle with Yandir the Butcher boss.\n\nDragon Totems: always two appears at the same time; each one blows out fire along a straight line in two opposite directions.\nHarpy Totem: spawns a lightning aura that will radiate out.\nGargoyle totem: encases random players into stone.\nChaurus Totem: poisons several people, and this poison should not be spread to others, that's why you should not stack at this phase." + +-- Alerts +L.Alerts_KynesAegis_Crashing_Wall = "|cd2a100Crashing Wall|r in" +L.Alerts_KynesAegis_Sanguine_Prison_Other = "|cff0000<>|r trapped in |cb00000Sanguine Prison|r. Free him!" +L.Alerts_KynesAegis_Blood_Fountain = "|cb00000Blood Fountain|r in" +L.Alerts_KynesAegis_Dragon_Totem = "Two |cffa500Dragon Totems|r spawned. Avoid the fire!" +L.Alerts_KynesAegis_Harpy_Totem = "|c00bfffHarpy Totem|r spawned." +L.Alerts_KynesAegis_Gargoyle_Totem = "|cf5f5dcGargoyle Totem|r spawned." +L.Alerts_KynesAegis_Chaurus_Totem = "|c39942eChaurus Totem|r spawned. Don't stack!" + + -------------------------------- ---- Debugging ---- --------------------------------