--[[ Instance handling code Dungeon Difficulty ids: 1: Normal 2: Heroic 23: Mythic 8: Mythic Keystone Raid Difficulty ids: 17: Flex LFR 14: Flex Normal 15: Flex Heroic 16: Mythic ]] local _,Internal = ... local L = Internal.L or {} local format = string.format local select = select local pairs = pairs local GetAffixInfo = C_ChallengeMode.GetAffixInfo local GetInstanceInfo = GetInstanceInfo local GetAreaInfo = C_Map.GetAreaInfo local IsEncounterComplete = C_EncounterJournal.IsEncounterComplete local dungeonNonMythicPlus = {1,2,23}; local dungeonDifficultiesAll = {1,2,23,8}; local raidDifficultiesAll = {17,14,15,16}; -- local raidDifficultiesAll = {3,4,5,6,79,14,15,16,17,33}; local instanceDifficulties = { -- Classic [ 48] = { 1}, -- Blackfathom Deeps [ 230] = { 1, 19}, -- Blackrock Depths [ 229] = { 1}, -- Lower Blackrock Spire [ 429] = { 1}, -- Dire Maul [ 90] = { 1}, -- Gnomeregan [ 349] = { 1}, -- Maraudon [ 389] = { 1}, -- Ragefire Chasm [ 129] = { 1}, -- Razorfen Downs [ 47] = { 1}, -- Razorfen Kraul [ 329] = { 1}, -- Stratholme [ 109] = { 1}, -- The Temple of Atal'hakkar [ 34] = { 1}, -- The Stockade [ 70] = { 1}, -- Uldaman [ 43] = { 1}, -- Wailing Caverns [ 209] = { 1}, -- Zul'Farrak [1001] = { 1, 2, 8}, -- Scarlet Halls [1004] = { 1, 2, 8, 19}, -- Scarlet Monastery [1007] = { 1, 2, 8}, -- Scholomance [ 36] = { 1, 2}, -- Deadmines [ 33] = { 1, 2, 19}, -- Shadowfang Keep [ 409] = { 9, 18}, -- Molten Core [ 469] = { 9, 18}, -- Blackwing Lair [ 509] = { 3}, -- Ruins of Ahn'Qiraj [ 531] = { 9, 18}, -- Temple of Ahn'Qiraj -- The Burning Crusade [ 558] = { 1, 2}, -- Auchenai Crypts [ 543] = { 1, 2}, -- Hellfire Ramparts [ 585] = { 1, 2}, -- Magisters' Terrace [ 557] = { 1, 2}, -- Mana-Tombs [ 560] = { 1, 2}, -- Old Hillsbrad Foothills [ 556] = { 1, 2}, -- Sethekk Halls [ 555] = { 1, 2}, -- Shadow Labyrinth [ 552] = { 1, 2}, -- The Arcatraz [ 269] = { 1, 2}, -- The Black Morass [ 542] = { 1, 2}, -- The Blood Furnace [ 553] = { 1, 2}, -- The Botanica [ 554] = { 1, 2}, -- The Mechanar [ 540] = { 1, 2}, -- The Shattered Halls [ 547] = { 1, 2, 19}, -- The Slave Pens [ 545] = { 1, 2}, -- The Steamvault [ 546] = { 1, 2}, -- The Underbog [ 532] = { 3}, -- Karazhan [ 565] = { 4}, -- Gruul's Lair [ 544] = { 4}, -- Magtheridon's Lair [ 548] = { 4}, -- Serpentshrine Cavern [ 550] = { 4}, -- The Eye [ 534] = { 4}, -- The Battle for Mount Hyjal [ 564] = {14, 33}, -- Black Temple [ 580] = { 4}, -- Sunwell Plateau -- Wrath of the Lich King [ 619] = { 1, 2}, -- Ahn'kahet: The Old Kingdom [ 601] = { 1, 2}, -- Azjol-Nerub [ 600] = { 1, 2}, -- Drak'Tharon Keep [ 604] = { 1, 2}, -- Gundrak [ 602] = { 1, 2}, -- Halls of Lightning [ 668] = { 1, 2}, -- Halls of Reflection [ 599] = { 1, 2}, -- Halls of Stone [ 658] = { 1, 2}, -- Pit of Saron [ 595] = { 1, 2}, -- The Culling of Stratholme [ 632] = { 1, 2}, -- The Forge of Souls [ 576] = { 1, 2}, -- The Nexus [ 578] = { 1, 2}, -- The Oculus [ 608] = { 1, 2}, -- The Violet Hold [ 650] = { 1, 2}, -- Trial of the Champion [ 574] = { 1, 2}, -- Utgarde Keep [ 575] = { 1, 2}, -- Utgarde Pinnacle [ 624] = { 3, 4}, -- Vault of Archavon [ 533] = { 3, 4}, -- Naxxramas [ 615] = { 3, 4}, -- The Obsidian Sanctum [ 616] = { 3, 4}, -- The Eye of Eternity [ 649] = { 3, 4, 5, 6}, -- Trial of the Crusader [ 631] = { 3, 4, 5, 6}, -- Icecrown Citadel [ 603] = {14, 33}, -- Ulduar [ 249] = { 3, 4}, -- Onyxia's Lair [ 724] = { 3, 4, 5, 6}, -- The Ruby Sanctum -- Cataclysm [ 645] = { 1, 2}, -- Blackrock Caverns [ 36] = { 1, 2}, -- Deadmines [ 644] = { 1, 2}, -- Halls of Origination [ 755] = { 1, 2}, -- Lost City of the Tol'vir [ 33] = { 1, 2, 19}, -- Shadowfang Keep [ 725] = { 1, 2}, -- The Stonecore [ 657] = { 1, 2}, -- The Vortex Pinnacle [ 643] = { 1, 2}, -- Throne of the Tides [ 568] = { 1, 2}, -- Zul'Aman [ 859] = { 1, 2}, -- Zul'Gurub [ 670] = { 1, 2}, -- Grim Batol [ 938] = { 2}, -- End Time [ 939] = { 2}, -- Well of Eternity [ 940] = { 2}, -- Hour of Twilight [ 671] = { 3, 4, 5, 6}, -- The Bastion of Twilight [ 669] = { 3, 4, 5, 6}, -- Blackwing Descent [ 967] = { 3, 4, 5, 6, 7}, -- Dragon Soul [ 720] = {14, 15, 33}, -- Firelands [ 754] = { 3, 4, 5, 6}, -- Throne of the Four Winds -- Mists of Pandaria [ 961] = { 1, 2, 8}, -- Stormstout Brewery [ 960] = { 1, 2, 8}, -- Temple of the Jade Serpent [ 994] = { 1, 2, 8}, -- Mogu'shan Palace [ 962] = { 1, 2, 8}, -- Gate of the Setting Sun [1011] = { 1, 2, 8}, -- Siege of Niuzao Temple [ 959] = { 1, 2, 8}, -- Shado-Pan Monastery [1007] = { 1, 2, 8}, -- Scholomance [1001] = { 1, 2, 8}, -- Scarlet Halls [1004] = { 1, 2, 8, 19}, -- Scarlet Monastery [1008] = { 3, 4, 5, 6, 7}, -- Mogu'shan Vaults [1009] = { 3, 4, 5, 6, 7}, -- Heart of Fear [ 996] = { 3, 4, 5, 6, 7}, -- Terrace of Endless Spring [1098] = { 3, 4, 5, 6, 7}, -- Throne of Thunder [1136] = raidDifficultiesAll, -- Siege of Orgrimmar -- Warlords of Draenor [1175] = dungeonDifficultiesAll, -- Bloodmaul Slag Mines [1209] = dungeonDifficultiesAll, -- Skyreach [1208] = dungeonDifficultiesAll, -- Grimrail Depot [1176] = dungeonDifficultiesAll, -- Shadowmoon Burial Grounds [1182] = dungeonDifficultiesAll, -- Auchindoun [1279] = dungeonDifficultiesAll, -- The Everbloom [1358] = { 1, 2, 8, 19, 23}, -- Upper Blackrock Spire [1195] = dungeonDifficultiesAll, -- Iron Docks [1205] = raidDifficultiesAll, -- Blackrock Foundry [1228] = raidDifficultiesAll, -- Highmaul [1228] = raidDifficultiesAll, -- Draenor [1448] = raidDifficultiesAll, -- Hellfire Citadel -- Legion [1493] = dungeonDifficultiesAll, -- Vault of the Wardens [1456] = dungeonDifficultiesAll, -- Eye of Azshara [1477] = dungeonDifficultiesAll, -- Halls of Valor [1492] = dungeonDifficultiesAll, -- Maw of Souls [1516] = { 2, 8, 23}, -- The Arcway [1501] = dungeonDifficultiesAll, -- Black Rook Hold [1466] = dungeonDifficultiesAll, -- Darkheart Thicket [1458] = dungeonDifficultiesAll, -- Neltharion's Lair [1544] = { 1, 2, 23}, -- Assault on Violet Hold [1571] = { 2, 8, 23}, -- Court of Stars [1651] = { 2, 8, 23}, -- Return to Karazhan [1677] = { 2, 8, 23}, -- Cathedral of Eternal Night [1753] = { 2, 8, 23}, -- Seat of the Triumvirate [1520] = raidDifficultiesAll, -- The Emerald Nightmare [1530] = raidDifficultiesAll, -- The Nighthold [1648] = raidDifficultiesAll, -- Trial of Valor [1676] = raidDifficultiesAll, -- Tomb of Sargeras [1712] = raidDifficultiesAll, -- Antorus, the Burning Throne -- Battle for Azeroth [1763] = dungeonDifficultiesAll, -- Atal'Dazar [1754] = dungeonDifficultiesAll, -- Freehold [1594] = dungeonDifficultiesAll, -- The MOTHERLODE!! [1771] = dungeonDifficultiesAll, -- Tol Dagor [1862] = dungeonDifficultiesAll, -- Waycrest Manor [1841] = dungeonDifficultiesAll, -- The Underrot [1822] = { 2, 8, 23}, -- Siege of Boralus [1877] = dungeonDifficultiesAll, -- Temple of Sethraliss [1864] = dungeonDifficultiesAll, -- Shrine of the Storm [1762] = { 2, 8, 23}, -- Kings' Rest [2097] = { 2, 8, 23}, -- Operation: Mechagon [1861] = raidDifficultiesAll, -- Uldir [2070] = raidDifficultiesAll, -- Battle of Dazar'alor [2096] = raidDifficultiesAll, -- Crucible of Storms [2164] = raidDifficultiesAll, -- The Eternal Palace [2217] = raidDifficultiesAll, -- Ny'alotha, the Waking City -- Shadowlands [2286] = dungeonDifficultiesAll, -- The Necrotic Wake [2289] = dungeonDifficultiesAll, -- Plaguefall [2290] = dungeonDifficultiesAll, -- Mists of Tirna Scithe [2287] = dungeonDifficultiesAll, -- Halls of Atonement [2285] = dungeonDifficultiesAll, -- Spires of Ascension [2293] = dungeonDifficultiesAll, -- Theater of Pain [2291] = dungeonDifficultiesAll, -- De Other Side [2284] = dungeonDifficultiesAll, -- Sanguine Depths [2441] = {23}, -- Tazavesh, the Veiled Market [2296] = raidDifficultiesAll, -- Castle Nathria [2450] = raidDifficultiesAll, -- Sanctum of Domination } if Internal.IsEternitysEndPatch then instanceDifficulties[2441] = { 2, 8, 23} -- Tazavesh, the Veiled Market instanceDifficulties[2481] = raidDifficultiesAll -- Sepulcher of the First Ones end if Internal.IsDragonflightPatch then instanceDifficulties[2522] = raidDifficultiesAll -- Vault of the Incarnates if Internal.IsDragonflightSeason1 then instanceDifficulties[2519] = dungeonNonMythicPlus -- Neltharus instanceDifficulties[2520] = dungeonNonMythicPlus -- Brackenhide Hollow instanceDifficulties[2527] = dungeonNonMythicPlus -- Halls of Infusion instanceDifficulties[2451] = dungeonNonMythicPlus -- Uldaman: Legacy of Tyr instanceDifficulties[2515] = dungeonDifficultiesAll -- The Azure Vault instanceDifficulties[2516] = dungeonDifficultiesAll -- The Nokhud Offensive instanceDifficulties[2521] = dungeonDifficultiesAll -- Ruby Life Pools instanceDifficulties[2526] = dungeonDifficultiesAll -- Algeth'ar Academy -- Season 1 M+ instanceDifficulties[ 960] = { 8 } -- Temple of the Jade Serpent instanceDifficulties[1176] = { 8 } -- Shadowmoon Burial Grounds instanceDifficulties[1477] = { 8 } -- Halls of Valor instanceDifficulties[1571] = { 8 } -- Court of Stars else instanceDifficulties[2569] = raidDifficultiesAll -- Aberrus, the Shadowed Crucible instanceDifficulties[2519] = dungeonDifficultiesAll -- Neltharus instanceDifficulties[2520] = dungeonDifficultiesAll -- Brackenhide Hollow instanceDifficulties[2527] = dungeonDifficultiesAll -- Halls of Infusion instanceDifficulties[2451] = dungeonDifficultiesAll -- Uldaman: Legacy of Tyr instanceDifficulties[2515] = dungeonNonMythicPlus -- The Azure Vault instanceDifficulties[2516] = dungeonNonMythicPlus -- The Nokhud Offensive instanceDifficulties[2521] = dungeonNonMythicPlus -- Ruby Life Pools instanceDifficulties[2526] = dungeonNonMythicPlus -- Algeth'ar Academy -- Season 2 M+ instanceDifficulties[ 657] = { 8 } -- The Vortex Pinnacle instanceDifficulties[1458] = { 8 } -- Neltharion's Lair instanceDifficulties[1754] = { 8 } -- Freehold instanceDifficulties[1841] = { 8 } -- The Underrot end end Internal.dungeonDifficultiesAll = dungeonDifficultiesAll; Internal.raidDifficultiesAll = raidDifficultiesAll; local dungeonInfo = { { name = L["Classic"], instances = { 48, -- Blackfathom Deeps 230, -- Blackrock Depths 229, -- Lower Blackrock Spire 429, -- Dire Maul 90, -- Gnomeregan 349, -- Maraudon 389, -- Ragefire Chasm 129, -- Razorfen Downs 47, -- Razorfen Kraul 329, -- Stratholme 109, -- The Temple of Atal'hakkar 34, -- The Stockade 70, -- Uldaman 43, -- Wailing Caverns 209, -- Zul'Farrak 1001, -- Scarlet Halls 1004, -- Scarlet Monastery 1007, -- Scholomance 36, -- Deadmines 33, -- Shadowfang Keep } }, { name = L["The Burning Crusade"], instances = { 558, -- Auchenai Crypts 543, -- Hellfire Ramparts 585, -- Magisters' Terrace 557, -- Mana-Tombs 560, -- Old Hillsbrad Foothills 556, -- Sethekk Halls 555, -- Shadow Labyrinth 552, -- The Arcatraz 269, -- The Black Morass 542, -- The Blood Furnace 553, -- The Botanica 554, -- The Mechanar 540, -- The Shattered Halls 547, -- The Slave Pens 545, -- The Steamvault 546, -- The Underbog } }, { name = L["Wrath of the Lich King"], instances = { 619, -- Ahn'kahet: The Old Kingdom 601, -- Azjol-Nerub 600, -- Drak'Tharon Keep 604, -- Gundrak 602, -- Halls of Lightning 668, -- Halls of Reflection 599, -- Halls of Stone 658, -- Pit of Saron 595, -- The Culling of Stratholme 632, -- The Forge of Souls 576, -- The Nexus 578, -- The Oculus 608, -- The Violet Hold 650, -- Trial of the Champion 574, -- Utgarde Keep 575, -- Utgarde Pinnacle } }, { name = L["Cataclysm"], instances = { 645, -- Blackrock Caverns 36, -- Deadmines 644, -- Halls of Origination 755, -- Lost City of the Tol'vir 33, -- Shadowfang Keep 725, -- The Stonecore 657, -- The Vortex Pinnacle 643, -- Throne of the Tides 568, -- Zul'Aman 859, -- Zul'Gurub 670, -- Grim Batol 938, -- End Time 939, -- Well of Eternity 940, -- Hour of Twilight } }, { name = L["Mists of Pandaria"], instances = { 961, -- Stormstout Brewery 960, -- Temple of the Jade Serpent 994, -- Mogu'shan Palace 962, -- Gate of the Setting Sun 1011, -- Siege of Niuzao Temple 959, -- Shado-Pan Monastery 1007, -- Scholomance 1001, -- Scarlet Halls 1004, -- Scarlet Monastery } }, { name = L["Warlords of Draenor"], instances = { 1175, -- Bloodmaul Slag Mines 1209, -- Skyreach 1208, -- Grimrail Depot 1176, -- Shadowmoon Burial Grounds 1182, -- Auchindoun 1279, -- The Everbloom 1358, -- Upper Blackrock Spire 1195, -- Iron Docks } }, { name = L["Legion"], instances = { 1493, -- Vault of the Wardens 1456, -- Eye of Azshara 1477, -- Halls of Valor 1492, -- Maw of Souls 1516, -- The Arcway 1501, -- Black Rook Hold 1466, -- Darkheart Thicket 1458, -- Neltharion's Lair 1544, -- Assault on Violet Hold 1571, -- Court of Stars 1651, -- Return to Karazhan 1677, -- Cathedral of Eternal Night 1753, -- Seat of the Triumvirate } }, { name = L["Battle for Azeroth"], instances = { 1763, -- Atal'Dazar 1754, -- Freehold 1594, -- The MOTHERLODE!! 1771, -- Tol Dagor 1862, -- Waycrest Manor 1841, -- The Underrot 1822, -- Siege of Boralus 1877, -- Temple of Sethraliss 1864, -- Shrine of the Storm 1762, -- Kings' Rest 2097, -- Operation: Mechagon } }, { name = L["Shadowlands"], instances = { 2286, -- The Necrotic Wake 2289, -- Plaguefall 2290, -- Mists of Tirna Scithe 2287, -- Halls of Atonement 2285, -- Spires of Ascension 2293, -- Theater of Pain 2291, -- De Other Side 2284, -- Sanguine Depths 2441, -- Tazavesh, the Veiled Market } }, } if Internal.IsDragonflightPatch then if Internal.IsDragonflightSeason1 then dungeonInfo[#dungeonInfo+1] = { name = L["Dragonflight"], instances = { 2519, -- Neltharus 2520, -- Brackenhide Hollow 2527, -- Halls of Infusion 2451, -- Uldaman: Legacy of Tyr -- M+ 2515, -- The Azure Vault 2516, -- The Nokhud Offensive 2521, -- Ruby Life Pools 2526, -- Algeth'ar Academy -- Season 1 M+ 960, -- Temple of the Jade Serpent 1176, -- Shadowmoon Burial Grounds 1477, -- Halls of Valor 1571, -- Court of Stars } } else dungeonInfo[#dungeonInfo+1] = { name = L["Dragonflight"], instances = { 2515, -- The Azure Vault 2516, -- The Nokhud Offensive 2521, -- Ruby Life Pools 2526, -- Algeth'ar Academy -- M+ 2519, -- Neltharus 2520, -- Brackenhide Hollow 2527, -- Halls of Infusion 2451, -- Uldaman: Legacy of Tyr -- Season 2 M+ 657, -- The Vortex Pinnacle 1458, -- Neltharion's Lair 1754, -- Freehold 1841, -- The Underrot } } end end local raidInfo = { { name = L["Classic"], instances = { 409, -- Molten Core 469, -- Blackwing Lair 509, -- Ruins of Ahn'Qiraj 531, -- Temple of Ahn'Qiraj } }, { name = L["The Burning Crusade"], instances = { 532, -- Karazhan 565, -- Gruul's Lair 544, -- Magtheridon's Lair 548, -- Serpentshrine Cavern 550, -- The Eye 534, -- The Battle for Mount Hyjal 564, -- Black Temple 580, -- Sunwell Plateau } }, { name = L["Wrath of the Lich King"], instances = { 624, -- Vault of Archavon 533, -- Naxxramas 615, -- The Obsidian Sanctum 616, -- The Eye of Eternity 649, -- Trial of the Crusader 631, -- Icecrown Citadel 603, -- Ulduar 249, -- Onyxia's Lair 724, -- The Ruby Sanctum } }, { name = L["Cataclysm"], instances = { 671, -- The Bastion of Twilight 669, -- Blackwing Descent 967, -- Dragon Soul 720, -- Firelands 754, -- Throne of the Four Winds } }, { name = L["Mists of Pandaria"], instances = { 1008, -- Mogu'shan Vaults 1009, -- Heart of Fear 996, -- Terrace of Endless Spring 1098, -- Throne of Thunder 1136, -- Siege of Orgrimmar } }, { name = L["Warlords of Draenor"], instances = { 1205, -- Blackrock Foundry 1228, -- Highmaul 1228, -- Draenor 1448, -- Hellfire Citadel } }, { name = L["Legion"], instances = { 1520, -- The Emerald Nightmare 1530, -- The Nighthold 1648, -- Trial of Valor 1676, -- Tomb of Sargeras 1712, -- Antorus, the Burning Throne } }, { name = L["Battle for Azeroth"], instances = { 1861, -- Uldir 2070, -- Battle of Dazar'alor 2096, -- Crucible of Storms 2164, -- The Eternal Palace 2217, -- Ny'alotha, the Waking City } }, { name = L["Shadowlands"], instances = { 2296, -- Castle Nathria 2450, -- Sanctum of Domination } }, } if Internal.IsEternitysEndPatch then tinsert(raidInfo[9].instances, 2481) -- Sepulcher of the First Ones end if Internal.IsDragonflightPatch then raidInfo[#raidInfo+1] = { name = L["Dragonflight"], instances = { 2522, -- Vault of the Incarnates } } if not Internal.IsDragonflightSeason1 then tinsert(raidInfo[10].instances, 2569) -- Aberrus, the Shadowed Crucible end end local scenarioInfo = { { name = L["Classic"], instances = { }, }, { name = L["TBC"], instances = { }, }, { name = L["Wrath"], instances = { }, }, { name = L["Cata"], instances = { }, }, { name = L["Panda"], instances = { }, }, { name = L["WoD"], instances = { }, }, { name = L["Legion"], instances = { }, }, { name = L["Battle for Azeroth"], instances = { {nil, 38, (function () return string.format("%s %s", GetDifficultyInfo(38), L["Island Expedition"]) end)()}, -- Normal Island {nil, 39, (function () return string.format("%s %s", GetDifficultyInfo(39), L["Island Expedition"]) end)()}, -- Heroic Island {nil, 40, (function () return string.format("%s %s", GetDifficultyInfo(40), L["Island Expedition"]) end)()}, -- Mythic Island {nil, 45, (function () return string.format("%s %s", GetDifficultyInfo(45), L["Island Expedition"]) end)()}, -- PvP Island {nil, 147, (function () return string.format("%s %s", GetDifficultyInfo(147), L["Warfront"]) end)()}, -- Normal Warfront {nil, 149, (function () return string.format("%s %s", GetDifficultyInfo(149), L["Warfront"]) end)()}, -- Heroic Warfront {nil, 152, (function () return GetDifficultyInfo(152) end)()}, -- Vision of N'Zoth {nil, 153, (function () return GetDifficultyInfo(153) end)()}, -- Teeming Island }, }, { name = L["Shadowlands"], instances = { {nil, 167, (function () return GetDifficultyInfo(167) end)()}, -- Torghast }, } }; if Internal.IsDragonflightPatch then scenarioInfo[#scenarioInfo+1] = { name = L["Dragonflight"], instances = { } } end local battlegroundInfo = { { name = L["Classic"], instances = { }, }, { name = L["TBC"], instances = { }, }, { name = L["Wrath"], instances = { }, }, { name = L["Cata"], instances = { }, }, { name = L["Panda"], instances = { }, }, { name = L["WoD"], instances = { }, }, { name = L["Legion"], instances = { }, }, { name = L["Battle for Azeroth"], instances = { }, }, { name = L["Shadowlands"], instances = { 2106, -- Warsong Gulch 2107, -- Arathi Basin 30, -- Alterac Valley 566, -- Eye of the Storm 968, -- Rated Eye of the Storm 628, -- Isle of Conquest 761, -- The Battle for Gilneas 2118, -- Battle for Wintergrasp 1191, -- Ashran 726, -- Twin Peaks 727, -- Silvershard Mines 998, -- Temple of Kotmogu 1803, -- Seething Shore 2245, -- Deepwind Gorge }, }, { name = L["Dragonflight"], instances = { 2106, -- Warsong Gulch 2107, -- Arathi Basin 30, -- Alterac Valley 566, -- Eye of the Storm 968, -- Rated Eye of the Storm 628, -- Isle of Conquest 761, -- The Battle for Gilneas 2118, -- Battle for Wintergrasp 1191, -- Ashran 726, -- Twin Peaks 727, -- Silvershard Mines 998, -- Temple of Kotmogu 1803, -- Seething Shore 2245, -- Deepwind Gorge }, } }; -- List of bosses within an instance -- InstanceID to JournalInstanceID[] local instanceBosses = { -- Classic [ 48] = { -- Blackfathom Deeps 368, -- Ghamoo-Ra 436, -- Domina 426, -- Subjugator Kor'ul 1145, -- Thruk 447, -- Guardian of the Deep 1144, -- Executioner Gore 437, -- Twilight Lord Bathiel 444, -- Aku'mai }, [ 230] = { -- Blackrock Depths 369, -- High Interrogator Gerstahn 370, -- Lord Roccor 371, -- Houndmaster Grebmar 372, -- Ring of Law 373, -- Pyromancer Loregrain 374, -- Lord Incendius 375, -- Warder Stilgiss 376, -- Fineous Darkvire 377, -- Bael'Gar 378, -- General Angerforge 379, -- Golem Lord Argelmach 380, -- Hurley Blackbreath 381, -- Phalanx 383, -- Plugger Spazzring 384, -- Ambassador Flamelash 385, -- The Seven 386, -- Magmus 387, -- Emperor Dagran Thaurissan }, [ 229] = { -- Lower Blackrock Spire 388, -- Highlord Omokk 389, -- Shadow Hunter Vosh'gajin 390, -- War Master Voone 391, -- Mother Smolderweb 392, -- Urok Doomhowl 393, -- Quartermaster Zigris 394, -- Halycon 395, -- Gizrul the Slavener 396, -- Overlord Wyrmthalak }, [ 429] = { -- Dire Maul 402, -- Zevrim Thornhoof 403, -- Hydrospawn 404, -- Lethtendris 405, -- Alzzin the Wildshaper 406, -- Tendris Warpwood 407, -- Illyanna Ravenoak 408, -- Magister Kalendris 409, -- Immol'thar 410, -- Prince Tortheldrin 411, -- Guard Mol'dar 412, -- Stomper Kreeg 413, -- Guard Fengus 414, -- Guard Slip'kik 415, -- Captain Kromcrush 416, -- Cho'Rush the Observer 417, -- King Gordok }, [ 90] = { -- Gnomeregan 419, -- Grubbis 420, -- Viscous Fallout 421, -- Electrocutioner 6000 418, -- Crowd Pummeler 9-60 422, -- Mekgineer Thermaplugg }, [ 349] = { -- Maraudon 423, -- Noxxion 424, -- Razorlash 425, -- Tinkerer Gizlock 427, -- Lord Vyletongue 428, -- Celebras the Cursed 429, -- Landslide 430, -- Rotgrip 431, -- Princess Theradras }, [ 389] = { -- Ragefire Chasm 694, -- Adarogg 695, -- Dark Shaman Koranthal 696, -- Slagmaw 697, -- Lava Guard Gordoth }, [ 129] = { -- Razorfen Downs 1142, -- Aarux 433, -- Mordresh Fire Eye 1143, -- Mushlump 1146, -- Death Speaker Blackthorn 1141, -- Amnennar the Coldbringer }, [ 47] = { -- Razorfen Kraul 896, -- Hunter Bonetusk 895, -- Roogug 899, -- Warlord Ramtusk 900, -- Groyat, the Blind Hunter 901, -- Charlga Razorflank }, [ 329] = { -- Stratholme 443, -- Hearthsinger Forresten 445, -- Timmy the Cruel 749, -- Commander Malor 446, -- Willey Hopebreaker 448, -- Instructor Galford 449, -- Balnazzar 450, -- The Unforgiven 451, -- Baroness Anastari 452, -- Nerub'enkan 453, -- Maleki the Pallid 454, -- Magistrate Barthilas 455, -- Ramstein the Gorger 456, -- Lord Aurius Rivendare }, [ 109] = { -- The Temple of Atal'hakkar 457, -- Avatar of Hakkar 458, -- Jammal'an the Prophet 459, -- Wardens of the Dream 463, -- Shade of Eranikus }, [ 34] = { -- The Stockade 464, -- Hogger 465, -- Lord Overheat 466, -- Randolph Moloch }, [ 70] = { -- Uldaman 467, -- Revelosh 468, -- The Lost Dwarves 469, -- Ironaya 748, -- Obsidian Sentinel 470, -- Ancient Stone Keeper 471, -- Galgann Firehammer 472, -- Grimlok 473, -- Archaedas }, [ 43] = { -- Wailing Caverns 474, -- Lady Anacondra 476, -- Lord Pythas 475, -- Lord Cobrahn 477, -- Kresh 478, -- Skum 479, -- Lord Serpentis 480, -- Verdan the Everliving 481, -- Mutanus the Devourer }, [ 209] = { -- Zul'Farrak 483, -- Gahz'rilla 484, -- Antu'sul 485, -- Theka the Martyr 486, -- Witch Doctor Zum'rah 487, -- Nekrum & Sezz'ziz 489, -- Chief Ukorz Sandscalp }, [1001] = { -- Scarlet Halls 660, -- Houndmaster Braun 656, -- Flameweaver Koegler 654, -- Armsmaster Harlan }, [1004] = { -- Scarlet Monastery 688, -- Thalnos the Soulrender 671, -- Brother Korloff 674, -- High Inquisitor Whitemane }, [1007] = { -- Scholomance 659, -- Instructor Chillheart 663, -- Jandice Barov 665, -- Rattlegore 666, -- Lilian Voss 684, -- Darkmaster Gandling }, [ 36] = { -- Deadmines 89, -- Glubtok 90, -- Helix Gearbreaker 91, -- Foe Reaper 5000 92, -- Admiral Ripsnarl 93, -- "Captain" Cookie 95, -- Vanessa VanCleef }, [ 33] = { -- Shadowfang Keep 96, -- Baron Ashbury 97, -- Baron Silverlaine 98, -- Commander Springvale 99, -- Lord Walden 100, -- Lord Godfrey }, [ 409] = { -- Molten Core 1519, -- Lucifron 1520, -- Magmadar 1521, -- Gehennas 1522, -- Garr 1523, -- Shazzrah 1524, -- Baron Geddon 1525, -- Sulfuron Harbinger 1526, -- Golemagg the Incinerator 1527, -- Majordomo Executus 1528, -- Ragnaros }, [ 469] = { -- Blackwing Lair 1529, -- Razorgore the Untamed 1530, -- Vaelastrasz the Corrupt 1531, -- Broodlord Lashlayer 1532, -- Firemaw 1533, -- Ebonroc 1534, -- Flamegor 1535, -- Chromaggus 1536, -- Nefarian }, [ 509] = { -- Ruins of Ahn'Qiraj 1537, -- Kurinnaxx 1538, -- General Rajaxx 1539, -- Moam 1540, -- Buru the Gorger 1541, -- Ayamiss the Hunter 1542, -- Ossirian the Unscarred }, [ 531] = { -- Temple of Ahn'Qiraj 1543, -- The Prophet Skeram 1547, -- Silithid Royalty 1544, -- Battleguard Sartura 1545, -- Fankriss the Unyielding 1548, -- Viscidus 1546, -- Princess Huhuran 1549, -- The Twin Emperors 1550, -- Ouro 1551, -- C'Thun }, -- The Burning Crusade [ 558] = { -- Auchenai Crypts 523, -- Shirrak the Dead Watcher 524, -- Exarch Maladaar }, [ 543] = { -- Hellfire Ramparts 527, -- Watchkeeper Gargolmar 528, -- Omor the Unscarred 529, -- Vazruden the Herald }, [ 585] = { -- Magisters' Terrace 530, -- Selin Fireheart 531, -- Vexallus 532, -- Priestess Delrissa 533, -- Kael'thas Sunstrider }, [ 557] = { -- Mana-Tombs 534, -- Pandemonius 535, -- Tavarok 536, -- Yor 537, -- Nexus-Prince Shaffar }, [ 560] = { -- Old Hillsbrad Foothills 538, -- Lieutenant Drake 539, -- Captain Skarloc 540, -- Epoch Hunter }, [ 556] = { -- Sethekk Halls 541, -- Darkweaver Syth 542, -- Anzu 543, -- Talon King Ikiss }, [ 555] = { -- Shadow Labyrinth 544, -- Ambassador Hellmaw 545, -- Blackheart the Inciter 546, -- Grandmaster Vorpil 547, -- Murmur }, [ 552] = { -- The Arcatraz 548, -- Zereketh the Unbound 549, -- Dalliah the Doomsayer 550, -- Wrath-Scryer Soccothrates 551, -- Harbinger Skyriss }, [ 269] = { -- The Black Morass 552, -- Chrono Lord Deja 553, -- Temporus 554, -- Aeonus }, [ 542] = { -- The Blood Furnace 555, -- The Maker 556, -- Broggok 557, -- Keli'dan the Breaker }, [ 553] = { -- The Botanica 558, -- Commander Sarannis 559, -- High Botanist Freywinn 560, -- Thorngrin the Tender 561, -- Laj 562, -- Warp Splinter }, [ 554] = { -- The Mechanar 563, -- Mechano-Lord Capacitus 564, -- Nethermancer Sepethrea 565, -- Pathaleon the Calculator }, [ 540] = { -- The Shattered Halls 566, -- Grand Warlock Nethekurse 728, -- Blood Guard Porung 568, -- Warbringer O'mrogg 569, -- Warchief Kargath Bladefist }, [ 547] = { -- The Slave Pens 570, -- Mennu the Betrayer 571, -- Rokmar the Crackler 572, -- Quagmirran }, [ 545] = { -- The Steamvault 573, -- Hydromancer Thespia 574, -- Mekgineer Steamrigger 575, -- Warlord Kalithresh }, [ 546] = { -- The Underbog 576, -- Hungarfen 577, -- Ghaz'an 578, -- Swamplord Musel'ek 579, -- The Black Stalker }, [ 532] = { -- Karazhan 1552, -- Servant's Quarters 1553, -- Attumen the Huntsman 1554, -- Moroes 1555, -- Maiden of Virtue 1556, -- Opera Hall 1557, -- The Curator 1559, -- Shade of Aran 1560, -- Terestian Illhoof 1561, -- Netherspite 1562, -- Chess Event 1764, -- Chess Event 1563, -- Prince Malchezaar }, [ 565] = { -- Gruul's Lair 1564, -- High King Maulgar 1565, -- Gruul the Dragonkiller }, [ 544] = { -- Magtheridon's Lair 1566, -- Magtheridon }, [ 548] = { -- Serpentshrine Cavern 1567, -- Hydross the Unstable 1568, -- The Lurker Below 1569, -- Leotheras the Blind 1570, -- Fathom-Lord Karathress 1571, -- Morogrim Tidewalker 1572, -- Lady Vashj }, [ 550] = { -- The Eye 1573, -- Al'ar 1574, -- Void Reaver 1575, -- High Astromancer Solarian 1576, -- Kael'thas Sunstrider }, [ 534] = { -- The Battle for Mount Hyjal 1577, -- Rage Winterchill 1578, -- Anetheron 1579, -- Kaz'rogal 1580, -- Azgalor 1581, -- Archimonde }, [ 564] = { -- Black Temple 1582, -- High Warlord Naj'entus 1583, -- Supremus 1584, -- Shade of Akama 1585, -- Teron Gorefiend 1586, -- Gurtogg Bloodboil 1587, -- Reliquary of Souls 1588, -- Mother Shahraz 1589, -- The Illidari Council 1590, -- Illidan Stormrage }, [ 580] = { -- Sunwell Plateau 1591, -- Kalecgos 1592, -- Brutallus 1593, -- Felmyst 1594, -- The Eredar Twins 1595, -- M'uru 1596, -- Kil'jaeden }, -- Wrath of the Lich King [ 619] = { -- Ahn'kahet: The Old Kingdom 580, -- Elder Nadox 581, -- Prince Taldaram 582, -- Jedoga Shadowseeker 583, -- Amanitar 584, -- Herald Volazj }, [ 601] = { -- Azjol-Nerub 585, -- Krik'thir the Gatewatcher 586, -- Hadronox 587, -- Anub'arak }, [ 600] = { -- Drak'Tharon Keep 588, -- Trollgore 589, -- Novos the Summoner 590, -- King Dred 591, -- The Prophet Tharon'ja }, [ 604] = { -- Gundrak 592, -- Slad'ran 593, -- Drakkari Colossus 594, -- Moorabi 595, -- Eck the Ferocious 596, -- Gal'darah }, [ 602] = { -- Halls of Lightning 597, -- General Bjarngrim 598, -- Volkhan 599, -- Ionar 600, -- Loken }, [ 668] = { -- Halls of Reflection 601, -- Falric 602, -- Marwyn 603, -- Escape from Arthas }, [ 599] = { -- Halls of Stone 604, -- Krystallus 605, -- Maiden of Grief 606, -- Tribunal of Ages 607, -- Sjonnir the Ironshaper }, [ 658] = { -- Pit of Saron 608, -- Forgemaster Garfrost 609, -- Ick & Krick 610, -- Scourgelord Tyrannus }, [ 595] = { -- The Culling of Stratholme 611, -- Meathook 612, -- Salramm the Fleshcrafter 613, -- Chrono-Lord Epoch 614, -- Mal'Ganis }, [ 632] = { -- The Forge of Souls 615, -- Bronjahm 616, -- Devourer of Souls }, [ 576] = { -- The Nexus 617, -- Commander Stoutbeard 833, -- Commander Kolurg 618, -- Grand Magus Telestra 619, -- Anomalus 620, -- Ormorok the Tree-Shaper 621, -- Keristrasza }, [ 578] = { -- The Oculus 622, -- Drakos the Interrogator 623, -- Varos Cloudstrider 624, -- Mage-Lord Urom 625, -- Ley-Guardian Eregos }, [ 608] = { -- The Violet Hold 626, -- Erekem 627, -- Moragg 628, -- Ichoron 629, -- Xevozz 630, -- Lavanthor 631, -- Zuramat the Obliterator 632, -- Cyanigosa }, [ 650] = { -- Trial of the Champion 634, -- Grand Champions 834, -- Grand Champions 635, -- Eadric the Pure 636, -- Argent Confessor Paletress 637, -- The Black Knight }, [ 574] = { -- Utgarde Keep 638, -- Prince Keleseth 639, -- Skarvald & Dalronn 640, -- Ingvar the Plunderer }, [ 575] = { -- Utgarde Pinnacle 641, -- Svala Sorrowgrave 642, -- Gortok Palehoof 643, -- Skadi the Ruthless 644, -- King Ymiron }, [ 624] = { -- Vault of Archavon 1597, -- Archavon the Stone Watcher 1598, -- Emalon the Storm Watcher 1599, -- Koralon the Flame Watcher 1600, -- Toravon the Ice Watcher }, [ 533] = { -- Naxxramas 1601, -- Anub'Rekhan 1602, -- Grand Widow Faerlina 1603, -- Maexxna 1604, -- Noth the Plaguebringer 1605, -- Heigan the Unclean 1606, -- Loatheb 1607, -- Instructor Razuvious 1608, -- Gothik the Harvester 1609, -- The Four Horsemen 1610, -- Patchwerk 1611, -- Grobbulus 1612, -- Gluth 1613, -- Thaddius 1614, -- Sapphiron 1615, -- Kel'Thuzad }, [ 615] = { -- The Obsidian Sanctum 1616, -- Sartharion }, [ 616] = { -- The Eye of Eternity 1617, -- Malygos }, [ 649] = { -- Trial of the Crusader 1618, -- The Northrend Beasts 1619, -- Lord Jaraxxus 1621, -- Champions of the Horde 1620, -- Champions of the Alliance 1622, -- Twin Val'kyr 1623, -- Anub'arak }, [ 631] = { -- Icecrown Citadel 1624, -- Lord Marrowgar 1625, -- Lady Deathwhisper 1627, -- Icecrown Gunship Battle 1626, -- Icecrown Gunship Battle 1628, -- Deathbringer Saurfang 1629, -- Festergut 1630, -- Rotface 1631, -- Professor Putricide 1632, -- Blood Prince Council 1633, -- Blood-Queen Lana'thel 1634, -- Valithria Dreamwalker 1635, -- Sindragosa 1636, -- The Lich King }, [ 603] = { -- Ulduar 1637, -- Flame Leviathan 1638, -- Ignis the Furnace Master 1639, -- Razorscale 1640, -- XT-002 Deconstructor 1641, -- The Assembly of Iron 1642, -- Kologarn 1643, -- Auriaya 1644, -- Hodir 1645, -- Thorim 1646, -- Freya 1647, -- Mimiron 1648, -- General Vezax 1649, -- Yogg-Saron 1650, -- Algalon the Observer }, [ 249] = { -- Onyxia's Lair 1651, -- Onyxia }, [ 724] = { -- The Ruby Sanctum 1652, -- Halion }, -- Cataclysm [ 645] = { -- Blackrock Caverns 105, -- Rom'ogg Bonecrusher 106, -- Corla, Herald of Twilight 107, -- Karsh Steelbender 108, -- Beauty 109, -- Ascendant Lord Obsidius }, [ 36] = { -- Deadmines 89, -- Glubtok 90, -- Helix Gearbreaker 91, -- Foe Reaper 5000 92, -- Admiral Ripsnarl 93, -- "Captain" Cookie 95, -- Vanessa VanCleef }, [ 644] = { -- Halls of Origination 124, -- Temple Guardian Anhuur 125, -- Earthrager Ptah 126, -- Anraphet 127, -- Isiset, Construct of Magic 128, -- Ammunae, Construct of Life 129, -- Setesh, Construct of Destruction 130, -- Rajh, Construct of Sun }, [ 755] = { -- Lost City of the Tol'vir 117, -- General Husam 118, -- Lockmaw 119, -- High Prophet Barim 122, -- Siamat }, [ 33] = { -- Shadowfang Keep 96, -- Baron Ashbury 97, -- Baron Silverlaine 98, -- Commander Springvale 99, -- Lord Walden 100, -- Lord Godfrey }, [ 725] = { -- The Stonecore 110, -- Corborus 111, -- Slabhide 112, -- Ozruk 113, -- High Priestess Azil }, [ 657] = { -- The Vortex Pinnacle 114, -- Grand Vizier Ertan 115, -- Altairus 116, -- Asaad, Caliph of Zephyrs }, [ 643] = { -- Throne of the Tides 101, -- Lady Naz'jar 102, -- Commander Ulthok, the Festering Prince 103, -- Mindbender Ghur'sha 104, -- Ozumat }, [ 568] = { -- Zul'Aman 186, -- Akil'zon 187, -- Nalorakk 188, -- Jan'alai 189, -- Halazzi 190, -- Hex Lord Malacrass 191, -- Daakara }, [ 859] = { -- Zul'Gurub 175, -- High Priest Venoxis 176, -- Bloodlord Mandokir 177, -- Cache of Madness - Gri'lek 178, -- Cache of Madness - Hazza'rah 179, -- Cache of Madness - Renataki 180, -- Cache of Madness - Wushoolay 181, -- High Priestess Kilnara 184, -- Zanzil 185, -- Jin'do the Godbreaker }, [ 670] = { -- Grim Batol 131, -- General Umbriss 132, -- Forgemaster Throngus 133, -- Drahga Shadowburner 134, -- Erudax, the Duke of Below }, [ 938] = { -- End Time 340, -- Echo of Baine 285, -- Echo of Jaina 323, -- Echo of Sylvanas 283, -- Echo of Tyrande 289, -- Murozond }, [ 939] = { -- Well of Eternity 290, -- Peroth'arn 291, -- Queen Azshara 292, -- Mannoroth and Varo'then }, [ 940] = { -- Hour of Twilight 322, -- Arcurion 342, -- Asira Dawnslayer 341, -- Archbishop Benedictus }, [ 671] = { -- The Bastion of Twilight 156, -- Halfus Wyrmbreaker 157, -- Theralion and Valiona 158, -- Ascendant Council 167, -- Cho'gall 168, -- Sinestra }, [ 669] = { -- Blackwing Descent 169, -- Omnotron Defense System 170, -- Magmaw 171, -- Atramedes 172, -- Chimaeron 173, -- Maloriak 174, -- Nefarian's End }, [ 967] = { -- Dragon Soul 311, -- Morchok 324, -- Warlord Zon'ozz 325, -- Yor'sahj the Unsleeping 317, -- Hagara the Stormbinder 331, -- Ultraxion 332, -- Warmaster Blackhorn 318, -- Spine of Deathwing 333, -- Madness of Deathwing }, [ 720] = { -- Firelands 192, -- Beth'tilac 193, -- Lord Rhyolith 194, -- Alysrazor 195, -- Shannox 196, -- Baleroc, the Gatekeeper 197, -- Majordomo Staghelm 198, -- Ragnaros }, [ 754] = { -- Throne of the Four Winds 154, -- The Conclave of Wind 155, -- Al'Akir }, -- Mists of Pandaria [ 961] = { -- Stormstout Brewery 668, -- Ook-Ook 669, -- Hoptallus 670, -- Yan-Zhu the Uncasked }, [ 960] = { -- Temple of the Jade Serpent 672, -- Wise Mari 664, -- Lorewalker Stonestep 658, -- Liu Flameheart 335, -- Sha of Doubt }, [ 994] = { -- Mogu'shan Palace 708, -- Trial of the King 690, -- Gekkan 698, -- Xin the Weaponmaster }, [ 962] = { -- Gate of the Setting Sun 655, -- Saboteur Kip'tilak 675, -- Striker Ga'dok 676, -- Commander Ri'mok 649, -- Raigonn }, [1011] = { -- Siege of Niuzao Temple 693, -- Vizier Jin'bak 738, -- Commander Vo'jak 692, -- General Pa'valak 727, -- Wing Leader Ner'onok }, [ 959] = { -- Shado-Pan Monastery 673, -- Gu Cloudstrike 657, -- Master Snowdrift 685, -- Sha of Violence 686, -- Taran Zhu }, [1007] = { -- Scholomance 659, -- Instructor Chillheart 663, -- Jandice Barov 665, -- Rattlegore 666, -- Lilian Voss 684, -- Darkmaster Gandling }, [1001] = { -- Scarlet Halls 660, -- Houndmaster Braun 656, -- Flameweaver Koegler 654, -- Armsmaster Harlan }, [1004] = { -- Scarlet Monastery 688, -- Thalnos the Soulrender 671, -- Brother Korloff 674, -- High Inquisitor Whitemane }, [1008] = { -- Mogu'shan Vaults 679, -- The Stone Guard 689, -- Feng the Accursed 682, -- Gara'jal the Spiritbinder 687, -- The Spirit Kings 726, -- Elegon 677, -- Will of the Emperor }, [1009] = { -- Heart of Fear 745, -- Imperial Vizier Zor'lok 744, -- Blade Lord Ta'yak 713, -- Garalon 741, -- Wind Lord Mel'jarak 737, -- Amber-Shaper Un'sok 743, -- Grand Empress Shek'zeer }, [ 996] = { -- Terrace of Endless Spring 683, -- Protectors of the Endless 742, -- Tsulong 729, -- Lei Shi 709, -- Sha of Fear }, [1098] = { -- Throne of Thunder 827, -- Jin'rokh the Breaker 819, -- Horridon 816, -- Council of Elders 825, -- Tortos 821, -- Megaera 828, -- Ji-Kun 818, -- Durumu the Forgotten 820, -- Primordius 824, -- Dark Animus 817, -- Iron Qon 829, -- Twin Empyreans 832, -- Lei Shen 831, -- Ra-den }, [1136] = { -- Siege of Orgrimmar 852, -- Immerseus 849, -- The Fallen Protectors 866, -- Norushen 867, -- Sha of Pride 868, -- Galakras 881, -- Galakras 864, -- Iron Juggernaut 856, -- Kor'kron Dark Shaman 850, -- General Nazgrim 846, -- Malkorok 870, -- Spoils of Pandaria 851, -- Thok the Bloodthirsty 865, -- Siegecrafter Blackfuse 853, -- Paragons of the Klaxxi 869, -- Garrosh Hellscream }, -- Warlords of Draenor [1175] = { -- Bloodmaul Slag Mines 893, -- Magmolatus 888, -- Slave Watcher Crushto 887, -- Roltall 889, -- Gug'rokk }, [1209] = { -- Skyreach 965, -- Ranjit 966, -- Araknath 967, -- Rukhran 968, -- High Sage Viryx }, [1208] = { -- Grimrail Depot 1138, -- Rocketspark and Borka 1163, -- Nitrogg Thundertower 1133, -- Skylord Tovra }, [1176] = { -- Shadowmoon Burial Grounds 1139, -- Sadana Bloodfury 1168, -- Nhallish 1140, -- Bonemaw 1160, -- Ner'zhul }, [1182] = { -- Auchindoun 1185, -- Vigilant Kaathar 1186, -- Soulbinder Nyami 1216, -- Azzakel 1225, -- Teron'gor }, [1279] = { -- The Everbloom 1214, -- Witherbark 1207, -- Ancient Protectors 1208, -- Archmage Sol 1209, -- Xeri'tac 1210, -- Yalnu }, [1358] = { -- Upper Blackrock Spire 1226, -- Orebender Gor'ashan 1227, -- Kyrak 1228, -- Commander Tharbek 1229, -- Ragewing the Untamed 1234, -- Warlord Zaela }, [1195] = { -- Iron Docks 1235, -- Fleshrender Nok'gar 1236, -- Grimrail Enforcers 1237, -- Oshir 1238, -- Skulloc }, [1205] = { -- Blackrock Foundry 1202, -- Oregorger 1155, -- Hans'gar and Franzok 1122, -- Beastlord Darmac 1161, -- Gruul 1123, -- Flamebender Ka'graz 1147, -- Operator Thogar 1154, -- The Blast Furnace 1162, -- Kromog 1203, -- The Iron Maidens 959, -- Blackhand }, [1228] = { -- Highmaul 1128, -- Kargath Bladefist 971, -- The Butcher 1195, -- Tectus 1196, -- Brackenspore 1148, -- Twin Ogron 1153, -- Ko'ragh 1197, -- Imperator Mar'gok }, [1228] = { -- Draenor 1291, -- Drov the Ruiner 1211, -- Tarlna the Ageless 1262, -- Rukhmar 1452, -- Supreme Lord Kazzak }, [1448] = { -- Hellfire Citadel 1426, -- Hellfire Assault 1425, -- Iron Reaver 1392, -- Kormrok 1432, -- Hellfire High Council 1396, -- Kilrogg Deadeye 1372, -- Gorefiend 1433, -- Shadow-Lord Iskar 1427, -- Socrethar the Eternal 1391, -- Fel Lord Zakuun 1447, -- Xhul'horac 1394, -- Tyrant Velhari 1395, -- Mannoroth 1438, -- Archimonde }, -- Legion [1493] = { -- Vault of the Wardens 1467, -- Tirathon Saltheril 1695, -- Inquisitor Tormentorum 1468, -- Ash'golm 1469, -- Glazer 1470, -- Cordana Felsong }, [1456] = { -- Eye of Azshara 1480, -- Warlord Parjesh 1490, -- Lady Hatecoil 1491, -- King Deepbeard 1479, -- Serpentrix 1492, -- Wrath of Azshara }, [1477] = { -- Halls of Valor 1485, -- Hymdall 1486, -- Hyrja 1487, -- Fenryr 1488, -- God-King Skovald 1489, -- Odyn }, [1492] = { -- Maw of Souls 1502, -- Ymiron, the Fallen King 1512, -- Harbaron 1663, -- Helya }, [1516] = { -- The Arcway 1497, -- Ivanyr 1498, -- Corstilax 1499, -- General Xakal 1500, -- Nal'tira 1501, -- Advisor Vandros }, [1501] = { -- Black Rook Hold 1518, -- The Amalgam of Souls 1653, -- Illysanna Ravencrest 1664, -- Smashspite the Hateful 1672, -- Lord Kur'talos Ravencrest }, [1466] = { -- Darkheart Thicket 1654, -- Archdruid Glaidalis 1655, -- Oakheart 1656, -- Dresaron 1657, -- Shade of Xavius }, [1458] = { -- Neltharion's Lair 1662, -- Rokmora 1665, -- Ularogg Cragshaper 1673, -- Naraxas 1687, -- Dargrul the Underking }, [1544] = { -- Assault on Violet Hold 1694, -- Shivermaw 1693, -- Festerface 1702, -- Blood-Princess Thal'ena 1696, -- Anub'esset 1686, -- Mindflayer Kaahrj 1688, -- Millificent Manastorm 1697, -- Sael'orn 1711, -- Fel Lord Betrug }, [1571] = { -- Court of Stars 1718, -- Patrol Captain Gerdo 1719, -- Talixae Flamewreath 1720, -- Advisor Melandrus }, [1651] = { -- Return to Karazhan 1820, -- Opera Hall: Wikket 1826, -- Opera Hall: Westfall Story 1827, -- Opera Hall: Beautiful Beast 1825, -- Maiden of Virtue 1837, -- Moroes 1835, -- Attumen the Huntsman 1836, -- The Curator 1817, -- Shade of Medivh 1818, -- Mana Devourer 1838, -- Viz'aduum the Watcher }, [1677] = { -- Cathedral of Eternal Night 1905, -- Agronox 1906, -- Thrashbite the Scornful 1904, -- Domatrax 1878, -- Mephistroth }, [1753] = { -- Seat of the Triumvirate 1979, -- Zuraal the Ascended 1980, -- Saprish 1981, -- Viceroy Nezhar 1982, -- L'ura }, [1520] = { -- The Emerald Nightmare 1703, -- Nythendra 1738, -- Il'gynoth, Heart of Corruption 1744, -- Elerethe Renferal 1667, -- Ursoc 1704, -- Dragons of Nightmare 1750, -- Cenarius 1726, -- Xavius }, [1530] = { -- The Nighthold 1706, -- Skorpyron 1725, -- Chronomatic Anomaly 1731, -- Trilliax 1751, -- Spellblade Aluriel 1762, -- Tichondrius 1713, -- Krosus 1761, -- High Botanist Tel'arn 1732, -- Star Augur Etraeus 1872, -- Grand Magistrix Elisande 1743, -- Grand Magistrix Elisande 1737, -- Gul'dan }, [1648] = { -- Trial of Valor 1819, -- Odyn 1830, -- Guarm 1829, -- Helya }, [1676] = { -- Tomb of Sargeras 1862, -- Goroth 1867, -- Demonic Inquisition 1856, -- Harjatan 1903, -- Sisters of the Moon 1861, -- Mistress Sassz'ine 1896, -- The Desolate Host 1897, -- Maiden of Vigilance 1873, -- Fallen Avatar 1898, -- Kil'jaeden }, [1712] = { -- Antorus, the Burning Throne 1992, -- Garothi Worldbreaker 1987, -- Felhounds of Sargeras 1997, -- Antoran High Command 1985, -- Portal Keeper Hasabel 2025, -- Eonar the Life-Binder 2009, -- Imonar the Soulhunter 2004, -- Kin'garoth 1983, -- Varimathras 1986, -- The Coven of Shivarra 1984, -- Aggramar 2031, -- Argus the Unmaker }, -- Battle for Azeroth [1763] = { -- Atal'Dazar 2082, -- Priestess Alun'za 2036, -- Vol'kaal 2083, -- Rezan 2030, -- Yazma }, [1754] = { -- Freehold 2102, -- Skycap'n Kragg 2093, -- Council o' Captains 2094, -- Ring of Booty 2095, -- Harlan Sweete }, [1594] = { -- The MOTHERLODE!! 2109, -- Coin-Operated Crowd Pummeler 2114, -- Azerokk 2115, -- Rixxa Fluxflame 2116, -- Mogul Razdunk }, [1771] = { -- Tol Dagor 2097, -- The Sand Queen 2098, -- Jes Howlis 2099, -- Knight Captain Valyri 2096, -- Overseer Korgus }, [1862] = { -- Waycrest Manor 2125, -- Heartsbane Triad 2126, -- Soulbound Goliath 2127, -- Raal the Gluttonous 2128, -- Lord and Lady Waycrest 2129, -- Gorak Tul }, [1841] = { -- The Underrot 2157, -- Elder Leaxa 2131, -- Cragmaw the Infested 2130, -- Sporecaller Zancha 2158, -- Unbound Abomination }, [1822] = { -- Siege of Boralus 2132, -- Chopper Redhook 2133, -- Sergeant Bainbridge 2173, -- Dread Captain Lockwood 2134, -- Hadal Darkfathom 2140, -- Viq'Goth }, [1877] = { -- Temple of Sethraliss 2142, -- Adderis and Aspix 2143, -- Merektha 2144, -- Galvazzt 2145, -- Avatar of Sethraliss }, [1864] = { -- Shrine of the Storm 2153, -- Aqu'sirr 2154, -- Tidesage Council 2155, -- Lord Stormsong 2156, -- Vol'zith the Whisperer }, [1762] = { -- Kings' Rest 2165, -- The Golden Serpent 2171, -- Mchimba the Embalmer 2170, -- The Council of Tribes 2172, -- Dazar, The First King }, [2097] = { -- Operation: Mechagon 2357, -- King Gobbamak 2358, -- Gunker 2360, -- Trixie & Naeno 2355, -- HK-8 Aerial Oppression Unit 2336, -- Tussle Tonks 2339, -- K.U.-J.0. 2348, -- Machinist's Garden 2331, -- King Mechagon }, [1861] = { -- Uldir 2168, -- Taloc 2167, -- MOTHER 2169, -- Zek'voz, Herald of N'Zoth 2146, -- Fetid Devourer 2166, -- Vectis 2195, -- Zul, Reborn 2194, -- Mythrax the Unraveler 2147, -- G'huun }, [2070] = { -- Battle of Dazar'alor 2344, -- Champion of the Light 2333, -- Champion of the Light 2340, -- Grong, the Revenant 2323, -- Jadefire Masters 2325, -- Grong, the Jungle Lord 2341, -- Jadefire Masters 2342, -- Opulence 2330, -- Conclave of the Chosen 2335, -- King Rastakhan 2334, -- High Tinker Mekkatorque 2337, -- Stormwall Blockade 2343, -- Lady Jaina Proudmoore }, [2096] = { -- Crucible of Storms 2328, -- The Restless Cabal 2332, -- Uu'nat, Harbinger of the Void }, [2164] = { -- The Eternal Palace 2352, -- Abyssal Commander Sivara 2347, -- Blackwater Behemoth 2353, -- Radiance of Azshara 2354, -- Lady Ashvane 2351, -- Orgozoa 2359, -- The Queen's Court 2349, -- Za'qul, Harbinger of Ny'alotha 2361, -- Queen Azshara }, [2217] = { -- Ny'alotha, the Waking City 2368, -- Wrathion, the Black Emperor 2365, -- Maut 2369, -- The Prophet Skitra 2377, -- Dark Inquisitor Xanesh 2372, -- The Hivemind 2367, -- Shad'har the Insatiable 2373, -- Drest'agath 2374, -- Il'gynoth, Corruption Reborn 2370, -- Vexiona 2364, -- Ra-den the Despoiled 2366, -- Carapace of N'Zoth 2375, -- N'Zoth the Corruptor }, -- Shadowlands [2286] = { -- The Necrotic Wake 2395, -- Blightbone 2391, -- Amarth, The Harvester 2392, -- Surgeon Stitchflesh 2396, -- Nalthor the Rimebinder }, [2289] = { -- Plaguefall 2419, -- Globgrog 2403, -- Doctor Ickus 2423, -- Domina Venomblade 2404, -- Margrave Stradama }, [2290] = { -- Mists of Tirna Scithe 2400, -- Ingra Maloch 2402, -- Mistcaller 2405, -- Tred'ova }, [2287] = { -- Halls of Atonement 2406, -- Halkias, the Sin-Stained Goliath 2387, -- Echelon 2411, -- High Adjudicator Aleez 2413, -- Lord Chamberlain }, [2285] = { -- Spires of Ascension 2399, -- Kin-Tara 2416, -- Ventunax 2414, -- Oryphrion 2412, -- Devos, Paragon of Doubt }, [2293] = { -- Theater of Pain 2397, -- An Affront of Challengers 2401, -- Gorechop 2390, -- Xav the Unfallen 2389, -- Kul'tharok 2417, -- Mordretha, the Endless Empress }, [2291] = { -- De Other Side 2408, -- Hakkar the Soulflayer 2409, -- The Manastorms 2398, -- Dealer Xy'exa 2410, -- Mueh'zala }, [2284] = { -- Sanguine Depths 2388, -- Kryxis the Voracious 2415, -- Executor Tarvold 2421, -- Grand Proctor Beryllia 2407, -- General Kaal }, [2441] = { -- Tazavesh, the Veiled Market 2437, -- Zo'phex the Sentinel 2454, -- The Grand Menagerie 2436, -- Mailroom Mayhem 2452, -- Myza's Oasis 2451, -- So'azmi 2448, -- Hylbrande 2449, -- Timecap'n Hooktail 2455, -- So'leah }, [2296] = { -- Castle Nathria 2393, -- Shriekwing 2429, -- Huntsman Altimor 2422, -- Sun King's Salvation 2418, -- Artificer Xy'mox 2428, -- Hungering Destroyer 2420, -- Lady Inerva Darkvein 2426, -- The Council of Blood 2394, -- Sludgefist 2425, -- Stone Legion Generals 2424, -- Sire Denathrius }, [2450] = { -- Sanctum of Domination 2435, -- The Tarragrue 2442, -- The Eye of the Jailer 2439, -- The Nine 2444, -- Remnant of Ner'zhul 2445, -- Soulrender Dormazain 2443, -- Painsmith Raznal 2446, -- Guardian of the First Ones 2447, -- Fatescribe Roh-Kalo 2440, -- Kel'Thuzad 2441, -- Sylvanas Windrunner }, [2481] = { -- Sepulcher of the First Ones 2458, -- Vigilant Guardian 2465, -- Skolex, the Insatiable Ravener 2470, -- Artificer Xy'mox 2459, -- Dausegne, the Fallen Oracle 2460, -- Prototype Pantheon 2461, -- Lihuvim, Principal Architect 2463, -- Halondrus the Reclaimer 2469, -- Anduin Wrynn 2457, -- Lords of Dread 2467, -- Rygelon 2464, -- The Jailer, Zovaal }, -- Dragonflight [2520] = { -- Brackenhide Hollow 2471, -- Hackclaw's War-Band 2473, -- Treemouth 2472, -- Gutshot 2474, -- Decatriarch Wratheye }, [2451] = { -- Uldaman: Legacy of Tyr 2475, -- The Lost Dwarves 2487, -- Bromach 2484, -- Sentinel Talondras 2476, -- Emberon 2479, -- Chrono-Lord Deios }, [2516] = { -- The Nokhud Offensive 2498, -- Granyth 2497, -- The Raging Tempest 2478, -- Teera and Maruuk 2477, -- Balakar Khan }, [2519] = { -- Neltharus 2490, -- Chargath, Bane of Scales 2489, -- Forgemaster Gorek 2494, -- Magmatusk 2501, -- Warlord Sargha }, [2526] = { -- Algeth'ar Academy 2509, -- Vexamus 2512, -- Overgrown Ancient 2495, -- Crawth 2514, -- Echo of Doragosa }, [2515] = { -- The Azure Vault 2492, -- Leymor 2505, -- Azureblade 2483, -- Telash Greywing 2508, -- Umbrelskul }, [2521] = { -- Ruby Life Pools 2488, -- Melidrussa Chillworn 2485, -- Kokia Blazehoof 2503, -- Kyrakka and Erkhart Stormvein }, [2527] = { -- Halls of Infusion 2504, -- Watcher Irideus 2507, -- Gulping Goliath 2510, -- Khajin the Unyielding 2511, -- Primal Tsunami }, [2522] = { -- Vault of the Incarnates 2480, -- Eranog 2500, -- Terros 2486, -- The Primal Council 2482, -- Sennarth, the Cold Breath 2502, -- Dathea, Ascended 2491, -- Kurog Grimtotem 2493, -- Broodkeeper Diurna 2499, -- Raszageth the Storm-Eater }, [2569] = { -- Aberrus, the Shadowed Crucible 2522, -- Kazzara, the Hellforged 2529, -- The Amalgamation Chamber 2530, -- The Forgotten Experiments 2524, -- Assault of the Zaqali 2525, -- Rashok, the Elder 2532, -- The Vigilant Steward, Zskarn 2527, -- Magmorax 2523, -- Echo of Neltharion 2520, -- Scalecommander Sarkareth }, } -- A map of npc ids to JournalInstanceID, this might not be the bosses npc id, -- just something that signifies the boss local npcIDToBossID = { -- Shrine of the Storm [134056] = 2153, -- Aqu'sirr [134063] = 2154, -- Tidesage Council [134058] = 2154, -- Tidesage Council [134060] = 2155, -- Lord Stormsong [134069] = 2156, -- Vol'zith the Whisperer -- The Eternal Palace [155899] = 2353, -- Radiance of Azshara [155900] = 2353, -- Radiance of Azshara [155859] = 2353, -- Radiance of Azshara [152364] = 2353, -- Radiance of Azshara [152236] = 2354, -- Lady Ashvane -- Sanguine Depths [162100] = 2388, -- Kryxis the Voracious [162103] = 2415, -- Executor Tarvold [162102] = 2421, -- Grand Proctor Beryllia [162099] = 2407, -- General Kaal -- Halls of Atonement [165408] = 2406, -- Halkias, the Sin-Stained Goliath [164185] = 2387, -- Echelon -- Castle Nathria [172145] = 2393, -- Shriekwing [165066] = 2429, -- Huntsman Altimor [164261] = 2428, -- Hungering Destroyer [174733] = 2394, -- Sludgefist [165318] = 2425, -- Stone Legion Generals [167406] = 2424, -- Sire Denathrius -- Sanctum of Domination [152253] = 2435, -- The Tarragrue [175611] = 2435, -- The Tarragrue [175725] = 2442, -- The Eye of the Jailer [180018] = 2442, -- The Eye of the Jailer [177094] = 2439, -- The Nine [178738] = 2439, -- The Nine [175726] = 2439, -- The Nine [175729] = 2444, -- Remnant of Ner'zhul [175727] = 2445, -- Soulrender Dormazain [176523] = 2443, -- Painsmith Raznal [175731] = 2446, -- Guardian of the First Ones [175730] = 2447, -- Fatescribe Roh-Kalo [179390] = 2447, -- Fatescribe Roh-Kalo [175559] = 2440, -- Kel'Thuzad [175732] = 2441, -- Sylvanas Windrunner [180828] = 2441, -- Sylvanas Windrunner -- Sepulcher of the First Ones [184522] = 2458, -- Vigilant Guardian (Vigilant Custodian) [181395] = 2465, -- Skolex, the Insatiable Ravener [183501] = 2470, -- Artificer Xy'mox [181224] = 2459, -- Dausegne, the Fallen Oracle [181546] = 2460, -- Prototype Pantheon [181548] = 2460, -- Prototype Pantheon [181549] = 2460, -- Prototype Pantheon [181551] = 2460, -- Prototype Pantheon [182169] = 2461, -- Lihuvim, Principal Architect [180906] = 2463, -- Halondrus the Reclaimer [181954] = 2469, -- Anduin Wrynn [181398] = 2457, -- Lords of Dread [181399] = 2457, -- Lords of Dread [182777] = 2467, -- Rygelon [180990] = 2464, -- The Jailer, Zovaal --Dragonflight -- Vault of the Incarnates [184972] = 2480, -- Eranog [190496] = 2500, -- Terros [187768] = 2486, -- The Primal Council [187767] = 2486, -- The Primal Council [187771] = 2486, -- The Primal Council [187772] = 2486, -- The Primal Council [187967] = 2482, -- Sennarth, The Cold Breath [189813] = 2502, -- Dathea, Ascended [184986] = 2491, -- Kurog Grimtotem [190245] = 2493, -- Broodkeeper Diurna [189492] = 2499, -- Raszageth the Storm-Eater -- Aberrus, the Shadowed Crucible [201261] = 2522, -- Kazzara, the Hellforged [200912] = 2530, -- The Forgotten Experiments [200918] = 2530, -- The Forgotten Experiments [200913] = 2530, -- The Forgotten Experiments [201320] = 2525, -- Rashok, the Elder [202375] = 2532, -- The Vigilant Steward, Zskarn [201579] = 2527, -- Magmorax }; -- Although area ids are unique we map them with instance ids so we can translate -- area names by instance. We translate them because we cant get the area id where -- the player is so we map area names to area ids and compare with the minimap text local InstanceAreaIDToBossID = { [1822] = { [9984] = 2132, }, [2097] = { -- Operation: Mechagon [11389] = 2358, -- Gunker [11388] = 2357, -- King Gobbamak [11387] = 2360, -- Trixie & Naeno [11390] = 2355, -- HK-8 Aerial Oppression Unit [10497] = 2336, -- Tussle Tonks -- [] = 2339, -- K.U.-J.0. -- [] = 2348, -- Machinist's Garden -- [] = 2331, -- King Mechagon }, [1754] = { -- Freehold [9640] = 2102, -- Skycap'n Kragg [10039] = 2093, -- Council o' Captains [9639] = 2094, -- Ring of Booty [10040] = 2095, -- Harlan Sweete }, [2217] = { -- Ny'alotha [12879] = 2365, -- Maut [12880] = 2369, -- The Prophet Skitra [12895] = 2366, -- Carapace of N'Zoth [12896] = 2375, -- N'Zoth the Corruptor }, [2286] = { -- The Necrotic Wake [13471] = 2395, -- Blightbone [13473] = 2391, -- Amarth, The Harvester }, [2289] = { -- Plaguefall [13423] = 2419, -- Globgrog [13421] = 2403, -- Doctor Ickus [13422] = 2423, -- Domina Venomblade }, [2287] = { -- Halls of Atonement }, [2284] = { -- Sanguine Depths }, [2285] = { -- Spires of Ascension [13511] = 2399, -- Kin-Tara [13513] = 2416, -- Ventunax }, [2293] = { -- Theater of Pain }, [2290] = { -- Mists of Tirna Scithe [13429] = 2400, -- Ingra Maloch [13430] = 2402, -- Mistcaller [13431] = 2405, -- Tred'ova }, [2296] = { -- Castle Nathria [13435] = 2424, -- Sire Denathrius }, [2481] = { -- Sepulcher of the First Ones [13957] = 2458, -- Vigilant Guardian [13962] = 2465, -- Skolex, the Insatiable Ravener [13963] = 2470, -- Artificer Xy'mox [13958] = 2459, -- Dausegne, the Fallen Oracle [13959] = 2460, -- Prototype Pantheon [13960] = 2461, -- Lihuvim, Principal Architect [13964] = 2463, -- Halondrus the Reclaimer [13965] = 2469, -- Anduin Wrynn -- [] = 2457, -- Lords of Dread -- [] = 2467, -- Rygelon -- [] = 2464, -- The Jailer, Zovaal }, }; -- This is for bosses that have their own unique world map local uiMapIDToBossID = { -- Classic -- Blackfathom Deeps [ 223] = 447, -- Guardian of the Deep -- Lower Blackrock Spire [ 252] = 388, -- Highlord Omokk [ 250] = 390, -- War Master Voone [ 253] = 392, -- Urok Doomhowl [ 255] = 396, -- Overlord Wyrmthalak -- Dire Maul [ 239] = 404, -- Lethtendris [ 237] = 408, -- Magister Kalendris -- Gnomeregan [ 226] = 419, -- Grubbis [ 228] = 418, -- Crowd Pummeler 9-60 [ 229] = 422, -- Mekgineer Thermaplugg -- Uldaman [ 231] = 473, -- Archaedas -- Temple of Ahn'Qiraj [ 320] = 1543, -- The Prophet Skeram [ 321] = 1551, -- C'Thun -- The Burning Crusade -- Sethekk Halls [ 258] = 541, -- Darkweaver Syth -- The Arcatraz [ 269] = 548, -- Zereketh the Unbound [ 271] = 551, -- Harbinger Skyriss -- The Mechanar [ 267] = 563, -- Mechano-Lord Capacitus -- Karazhan [ 352] = 1554, -- Moroes [ 358] = 1557, -- The Curator [ 359] = 1559, -- Shade of Aran [ 360] = 1560, -- Terestian Illhoof [ 362] = 1561, -- Netherspite [ 366] = 1563, -- Prince Malchezaar -- Magtheridon's Lair [ 331] = 1566, -- Magtheridon -- Black Temple [ 340] = 1582, -- High Warlord Naj'entus [ 339] = 1583, -- Supremus [ 341] = 1584, -- Shade of Akama [ 343] = 1585, -- Teron Gorefiend [ 344] = 1588, -- Mother Shahraz [ 345] = 1589, -- The Illidari Council [ 346] = 1590, -- Illidan Stormrage -- Wrath of the Lich King -- Azjol-Nerub [ 159] = 585, -- Krik'thir the Gatewatcher [ 158] = 586, -- Hadronox [ 157] = 587, -- Anub'arak -- Drak'Tharon Keep [ 161] = 591, -- The Prophet Tharon'ja -- Halls of Lightning [ 138] = 597, -- General Bjarngrim -- The Oculus [ 143] = 622, -- Drakos the Interrogator [ 144] = 623, -- Varos Cloudstrider [ 145] = 624, -- Mage-Lord Urom [ 146] = 625, -- Ley-Guardian Eregos -- Utgarde Keep [ 133] = 638, -- Prince Keleseth [ 134] = 639, -- Skarvald & Dalronn [ 135] = 640, -- Ingvar the Plunderer -- Utgarde Pinnacle [ 136] = 641, -- Svala Sorrowgrave -- The Obsidian Sanctum [ 155] = 1616, -- Sartharion -- The Eye of Eternity [ 141] = 1617, -- Malygos -- Trial of the Crusader [ 173] = 1623, -- Anub'arak -- Icecrown Citadel [ 188] = 1628, -- Deathbringer Saurfang [ 191] = 1633, -- Blood-Queen Lana'thel [ 189] = 1635, -- Sindragosa [ 192] = 1636, -- The Lich King -- Ulduar [ 151] = 1647, -- Mimiron -- Onyxia's Lair [ 248] = 1651, -- Onyxia -- The Ruby Sanctum [ 200] = 1652, -- Halion -- Cataclysm -- Blackrock Caverns [ 283] = 105, -- Rom'ogg Bonecrusher -- Halls of Origination [ 298] = 125, -- Earthrager Ptah -- End Time [ 404] = 340, -- Echo of Baine [ 402] = 285, -- Echo of Jaina [ 403] = 323, -- Echo of Sylvanas [ 405] = 283, -- Echo of Tyrande [ 406] = 289, -- Murozond -- Hour of Twilight [ 400] = 341, -- Archbishop Benedictus -- The Bastion of Twilight [ 296] = 168, -- Sinestra -- Dragon Soul [ 410] = 324, -- Warlord Zon'ozz [ 411] = 325, -- Yor'sahj the Unsleeping [ 412] = 317, -- Hagara the Stormbinder [ 413] = 332, -- Warmaster Blackhorn [ 414] = 318, -- Spine of Deathwing [ 415] = 333, -- Madness of Deathwing -- Mists of Pandaria -- Stormstout Brewery [ 440] = 668, -- Ook-Ook [ 441] = 669, -- Hoptallus [ 442] = 670, -- Yan-Zhu the Uncasked -- Mogu'shan Palace [ 453] = 708, -- Trial of the King [ 454] = 690, -- Gekkan [ 455] = 698, -- Xin the Weaponmaster -- Gate of the Setting Sun [ 438] = 675, -- Striker Ga'dok -- Siege of Niuzao Temple [ 458] = 693, -- Vizier Jin'bak -- Throne of Thunder [ 508] = 827, -- Jin'rokh the Breaker [ 511] = 828, -- Ji-Kun [ 514] = 832, -- Lei Shen [ 515] = 831, -- Ra-den -- Siege of Orgrimmar [ 557] = 852, -- Immerseus [ 556] = 849, -- The Fallen Protectors [ 560] = 856, -- Kor'kron Dark Shaman [ 562] = 850, -- General Nazgrim [ 563] = 846, -- Malkorok [ 565] = 865, -- Siegecrafter Blackfuse [ 566] = 853, -- Paragons of the Klaxxi [ 567] = 869, -- Garrosh Hellscream -- Warlords of Draenor -- Skyreach [ 602] = 968, -- High Sage Viryx -- Grimrail Depot [ 606] = 1138, -- Rocketspark and Borka -- Shadowmoon Burial Grounds [ 575] = 1140, -- Bonemaw [ 576] = 1160, -- Ner'zhul -- The Everbloom [ 621] = 1210, -- Yalnu -- Blackrock Foundry [ 600] = 959, -- Blackhand -- Highmaul [ 612] = 1128, -- Kargath Bladefist [ 615] = 1197, -- Imperator Mar'gok -- Draenor [ 542] = 1262, -- Rukhmar [ 534] = 1452, -- Supreme Lord Kazzak -- Hellfire Citadel [ 664] = 1392, -- Kormrok [ 662] = 1372, -- Gorefiend [ 667] = 1447, -- Xhul'horac [ 669] = 1395, -- Mannoroth [ 670] = 1438, -- Archimonde -- Legion -- Vault of the Wardens [ 710] = 1467, -- Tirathon Saltheril [ 712] = 1470, -- Cordana Felsong -- Halls of Valor [ 703] = 1487, -- Fenryr -- Maw of Souls [ 706] = 1502, -- Ymiron, the Fallen King -- Black Rook Hold [ 751] = 1518, -- The Amalgam of Souls [ 752] = 1653, -- Illysanna Ravencrest [ 754] = 1664, -- Smashspite the Hateful [ 756] = 1672, -- Lord Kur'talos Ravencrest -- Court of Stars [ 763] = 1720, -- Advisor Melandrus -- Return to Karazhan [ 811] = 1837, -- Moroes [ 809] = 1835, -- Attumen the Huntsman [ 817] = 1836, -- The Curator [ 818] = 1817, -- Shade of Medivh [ 819] = 1818, -- Mana Devourer [ 822] = 1838, -- Viz'aduum the Watcher -- Cathedral of Eternal Night [ 846] = 1905, -- Agronox [ 847] = 1906, -- Thrashbite the Scornful -- The Emerald Nightmare [ 777] = 1703, -- Nythendra [ 780] = 1738, -- Il'gynoth, Heart of Corruption [ 779] = 1744, -- Elerethe Renferal [ 786] = 1667, -- Ursoc [ 781] = 1704, -- Dragons of Nightmare [ 787] = 1750, -- Cenarius [ 788] = 1726, -- Xavius -- The Nighthold [ 768] = 1762, -- Tichondrius [ 767] = 1761, -- High Botanist Tel'arn [ 769] = 1732, -- Star Augur Etraeus [ 772] = 1737, -- Gul'dan -- Trial of Valor [ 807] = 1819, -- Odyn -- Tomb of Sargeras [ 853] = 1897, -- Maiden of Vigilance [ 854] = 1873, -- Fallen Avatar [ 856] = 1898, -- Kil'jaeden -- Antorus, the Burning Throne [ 910] = 1997, -- Antoran High Command [ 911] = 1985, -- Portal Keeper Hasabel [ 913] = 2025, -- Eonar the Life-Binder [ 916] = 1983, -- Varimathras [ 915] = 1986, -- The Coven of Shivarra [ 917] = 1984, -- Aggramar [ 918] = 2031, -- Argus the Unmaker -- Battle for Azeroth -- Atal'Dazar [ 935] = 2083, -- Rezan -- Tol Dagor [ 974] = 2097, -- The Sand Queen [ 977] = 2098, -- Jes Howlis [ 979] = 2099, -- Knight Captain Valyri [ 980] = 2096, -- Overseer Korgus -- Waycrest Manor [1018] = 2128, -- Lord and Lady Waycrest [1029] = 2129, -- Gorak Tul -- The Underrot [1042] = 2158, -- Unbound Abomination -- Temple of Sethraliss [1043] = 2145, -- Avatar of Sethraliss -- Operation: Mechagon [1491] = 2336, -- Tussle Tonks [1494] = 2339, -- K.U.-J.0. -- Uldir [1148] = 2168, -- Taloc [1149] = 2167, -- MOTHER [1151] = 2169, -- Zek'voz, Herald of N'Zoth [1153] = 2146, -- Fetid Devourer [1152] = 2166, -- Vectis [1154] = 2195, -- Zul, Reborn -- Battle of Dazar'alor [1353] = 2342, -- Opulence [1354] = 2330, -- Conclave of the Chosen [1357] = 2335, -- King Rastakhan [1364] = 2343, -- Lady Jaina Proudmoore -- Crucible of Storms [1345] = 2328, -- The Restless Cabal [1346] = 2332, -- Uu'nat, Harbinger of the Void -- The Eternal Palace [1512] = 2352, -- Abyssal Commander Sivara [1514] = 2347, -- Blackwater Behemoth [1517] = 2351, -- Orgozoa [1518] = 2359, -- The Queen's Court [1519] = 2349, -- Za'qul, Harbinger of Ny'alotha [1520] = 2361, -- Queen Azshara -- Ny'alotha, the Waking City [1580] = 2368, -- Wrathion, the Black Emperor [1592] = 2377, -- Dark Inquisitor Xanesh [1590] = 2372, -- The Hivemind [1594] = 2367, -- Shad'har the Insatiable [1595] = 2373, -- Drest'agath [1596] = 2374, -- Il'gynoth, Corruption Reborn [1593] = 2370, -- Vexiona [1591] = 2364, -- Ra-den the Despoiled -- Shadowlands -- The Necrotic Wake [1667] = 2392, -- Surgeon Stitchflesh [1668] = 2396, -- Nalthor the Rimebinder -- Plaguefall [1697] = 2404, -- Margrave Stradama -- Halls of Atonement [1664] = 2411, -- High Adjudicator Aleez [1665] = 2413, -- Lord Chamberlain -- Spires of Ascension [1694] = 2414, -- Oryphrion [1695] = 2412, -- Devos, Paragon of Doubt -- Theater of Pain [1683] = {2397, 2417}, -- An Affront of Challengers, and Mordretha, the Endless Empress [1687] = 2401, -- Gorechop [1684] = 2390, -- Xav the Unfallen [1685] = 2389, -- Kul'tharok -- De Other Side [1679] = 2408, -- Hakkar the Soulflayer [1678] = 2409, -- The Manastorms [1677] = 2398, -- Dealer Xy'exa [1680] = 2410, -- Mueh'zala -- Tazavesh, the Veiled Market [1990] = 2454, -- The Grand Menagerie [1991] = 2436, -- Mailroom Mayhem [1992] = 2452, -- Myza's Oasis [1997] = 2448, -- Hylbrande [1995] = 2448, -- Hylbrande [1996] = 2449, -- Timecap'n Hooktail [1993] = 2455, -- So'leah -- Castle Nathria [1746] = 2422, -- Sun King's Salvation [1745] = 2418, -- Artificer Xy'mox [1744] = 2420, -- Lady Inerva Darkvein [1750] = 2426, -- The Council of Blood [1748] = 2424, -- Sire Denathrius -- Sanctum of Domination [1998] = 2435, -- The Tarragrue [2002] = 2441, -- Sylvanas Windrunner -- Sepulcher of the First Ones [2047] = 2458, -- Vigilant Guardian [2048] = 2459, -- Dausegne, the Fallen Oracle [2050] = 2469, -- Anduin Wrynn [2051] = 2464, -- The Jailer -- Dragonflight -- Brackenhide Hollow [2106] = 2474, -- Decatriarch Wratheye -- Uldaman: Legacy of Tyr [2072] = 2479, -- Chrono-Lord Deios -- Neltharus [2081] = 2489, -- Forgemaster Gorek -- Algeth'ar Academy [2098] = 2495, -- Crawth [2099] = 2514, -- Echo of Doragosa -- The Azure Vault [2073] = 2492, -- Leymor [2075] = 2505, -- Azureblade [2076] = 2483, -- Telash Greywing [2077] = 2508, -- Umbrelskul -- Ruby Life Pools [2095] = 2488, -- Melidrussa Chillworn -- Halls of Infusion [2082] = 2504, -- Watcher Irideus -- Vault of the Incarnates [2119] = 2480, -- Eranog [2120] = 2486, -- The Primal Council [2121] = 2502, -- Dathea, Ascended [2122] = {2500, 2482}, -- Terros, Sennarth, the Cold Breath [2124] = 2491, -- Kurog Grimtotem [2126] = 2493, -- Broodkeeper Diurna [2125] = 2499, -- Raszageth the Storm-Eater -- Aberrus, the Shadowed Crucible [2167] = 2529, -- The Amalgamation Chamber [2168] = 2524, -- Assault of the Zaqali [2169] = 2523, -- Echo of Neltharion [2170] = 2520, -- Scalecommander Sarkareth } Internal.instanceDifficulties = instanceDifficulties; Internal.dungeonInfo = dungeonInfo; Internal.raidInfo = raidInfo; Internal.scenarioInfo = scenarioInfo; Internal.battlegroundInfo = battlegroundInfo; Internal.instanceBosses = instanceBosses; Internal.npcIDToBossID = npcIDToBossID; Internal.InstanceAreaIDToBossID = InstanceAreaIDToBossID; Internal.uiMapIDToBossID = uiMapIDToBossID; -- AffixesID type: bit shifted and or'd affix ids -- (level 2 affix) | (level 4 affix << 8) | (level 7 affix << 16) | (level 10 affix << 24) -- This will be fine aslong as Blizz keeps ids below 255, right now seasonal affixes (except infested) -- are 117+, infested is 16, everything else is below -- Affixes are also handled as masks, this ignores the 4th (seasonal) affix and bit shifts 1 by id -- This might end up falling apart if blizzard goes beyond 32 affixes local affixLevels = {2, 4, 7, 10} function Internal.AffixesLevels() return ipairs(affixLevels) end local affixesByLevel if Internal.IsDragonflight then if Internal.IsDragonflightSeason1 then affixesByLevel = { [2] = {10, 9}, [4] = {7, 11, 6, 8, 123}, [7] = {13, 12, 14, 124, 3}, [10] = {132}, } else affixesByLevel = { [2] = {10, 9}, [4] = {7, 11, 6, 8, 123}, [7] = {135, 136, 134, 124, 3}, [10] = {}, } end elseif Internal.IsShadowlands then if Internal.IsShadowlandsSeason4 then affixesByLevel = { [2] = {10, 9}, [4] = {11, 8, 122, 6, 123, 7}, [7] = {124, 12, 13, 14, 3, 4}, [10] = {131}, } elseif Internal.IsShadowlandsSeason3 then affixesByLevel = { [2] = {10, 9}, [4] = {11, 8, 122, 6, 123, 7}, [7] = {124, 12, 13, 14, 3, 4}, [10] = {130}, } elseif Internal.IsShadowlandsSeason2 then affixesByLevel = { [2] = {10, 9}, [4] = {11, 8, 122, 6, 123, 7}, [7] = {124, 12, 13, 14, 3, 4}, [10] = {128}, } else affixesByLevel = { [2] = {10, 9}, [4] = {11, 8, 122, 6, 123, 7}, [7] = {124, 12, 13, 14, 3, 4}, [10] = {121}, } end else affixesByLevel = { [2] = {10, 9}, [4] = {7, 6, 8, 5, 11}, [7] = {12, 13, 3, 2, 4, 14}, [10] = {120}, } end function Internal.Affixes(level) level = tonumber(level) if level >= 10 then return ipairs(affixesByLevel[10]) elseif level >= 7 then return ipairs(affixesByLevel[7]) elseif level >= 4 then return ipairs(affixesByLevel[4]) elseif level >= 2 then return ipairs(affixesByLevel[2]) end end -- A list of affixesIDs along with the mask of available affixes for other levels excludes seasonal affixes, -- built from affixRotation later local affixesMask = {}; local function AffixBOR(r, value) if value >= 96 then r[4] = bit.bor(r[4] or 0, bit.lshift(1, value)) elseif value >= 64 then r[3] = bit.bor(r[3] or 0, bit.lshift(1, value)) elseif value >= 32 then r[2] = bit.bor(r[2] or 0, bit.lshift(1, value)) else r[1] = bit.bor(r[1] or 0, bit.lshift(1, value)) end end local function PushAffixMask(a, b) affixesMask[a] = affixesMask[a] or {} for i=1,4 do affixesMask[a][i] = bit.bor(affixesMask[a][i] or 0, b[i] or 0) end end function Internal.GetExclusiveAffixes(affixesID) affixesID = bit.band(affixesID or 0, 0xffffff) if affixesID == 0 or GetExpansionLevel() == 8 then return {0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff} end return affixesMask[affixesID]; end function Internal.CompareAffixMasks(a, b) return bit.band(a[1] or 0, b[1] or 0) == (a[1] or 0) and bit.band(a[2] or 0, b[2] or 0) == (a[2] or 0) and bit.band(a[3] or 0, b[3] or 0) == (a[3] or 0) and bit.band(a[4] or 0, b[4] or 0) == (a[4] or 0) end function Internal.GetAffixesName(affixesID) local names = {}; local icons = {}; local id = affixesID local mask = {} local i = 1 while affixesID > 0 do local affixID = bit.band(affixesID, 0xFF); affixesID = bit.rshift(affixesID, 8); if affixID ~= 0 then local name, _, icon = GetAffixInfo(affixID); if not name then error(format("Unknown affix %d", affixID)) end names[#names+1] = name; icons[#icons+1] = format("|T%d:18:18:0:0|t %s", icon, name); if affixID ~= 121 then -- Prideful AffixBOR(mask, affixID) end end i = i + 1 end return id, table.concat(names, " "), table.concat(icons, ", "), mask end local function GetAffixesInfo(...) local id = 0; local mask = {}; local names = {}; local icons = {}; for i=1,select('#', ...) do local affixID = select(i, ...); local name, _, icon = GetAffixInfo(affixID); if i < 4 then AffixBOR(mask, affixID) end id = bit.bor(bit.rshift(id, 8), bit.lshift(affixID, 24)); names[#names+1] = name; icons[#icons+1] = format("|T%d:18:18:0:0|t %s", icon, name); end return { id = id, mask = mask, name = table.concat(names, ", "), fullName = table.concat(icons, ", "), }; end Internal.GetAffixesInfo = GetAffixesInfo; local function GetAffixesForID(id) return bit.band(id, 0xff), bit.band(bit.rshift(id, 8), 0xff), bit.band(bit.rshift(id, 16), 0xff), bit.band(bit.rshift(id, 24), 0xff) end Internal.GetAffixesForID = GetAffixesForID local affixRotation if Internal.IsDragonflight then affixRotation = {} elseif Internal.IsShadowlands then affixRotation = { GetAffixesInfo(10, 11, 124, 121), -- Fortified, Bursting, Storming, Prideful GetAffixesInfo(9, 8, 12, 121), -- Tyrannical, Sanguine, Grievous, Prideful GetAffixesInfo(10, 122, 13, 121), -- Fortified, Inspiring, Explosive, Prideful GetAffixesInfo(9, 6, 14, 121), -- Tyrannical, Raging, Quaking, Prideful GetAffixesInfo(10, 11, 3, 121), -- Fortified, Bursting, Grievous, Prideful GetAffixesInfo(9, 123, 12, 121), -- Tyrannical, Spiteful, Quaking, Prideful GetAffixesInfo(10, 7, 124, 121), -- Fortified, Bolstering, Storming, Prideful GetAffixesInfo(9, 122, 4, 121), -- Tyrannical, Inspiring, Necrotic, Prideful GetAffixesInfo(10, 8, 14, 121), -- Fortified, Sanguine, Quaking, Prideful GetAffixesInfo(9, 6, 13, 121), -- Tyrannical, Raging, Explosive, Prideful GetAffixesInfo(10, 123, 3, 121), -- Fortified, Spiteful, Volcanic, Prideful GetAffixesInfo(9, 7, 4, 121), -- Tyrannical, Bolstering, Necrotic, Prideful }; else affixRotation = { GetAffixesInfo(10, 7, 12, 120), -- Fortified, Bolstering, Grievous, Awakened GetAffixesInfo(9, 6, 13, 120), -- Tyrannical, Raging, Explosive, Awakened GetAffixesInfo(10, 8, 12, 120), -- Fortified, Sanguine, Grievous, Awakened GetAffixesInfo(9, 5, 3, 120), -- Tyrannical, Teeming, Volcanic, Awakened GetAffixesInfo(10, 7, 2, 120), -- Fortified, Bolstering, Skittish, Awakened GetAffixesInfo(9, 11, 4, 120), -- Tyrannical, Bursting, Necrotic, Awakened GetAffixesInfo(10, 8, 14, 120), -- Fortified, Sanguine, Quaking, Awakened GetAffixesInfo(9, 7, 13, 120), -- Tyrannical, Bolstering, Explosive, Awakened GetAffixesInfo(10, 11, 3, 120), -- Fortified, Bursting, Volcanic, Awakened GetAffixesInfo(9, 6, 4, 120), -- Tyrannical, Raging, Necrotic, Awakened GetAffixesInfo(10, 5, 14, 120), -- Fortified, Teeming, Quaking, Awakened GetAffixesInfo(9, 11, 2, 120), -- Tyrannical, Bursting, Skittish, Awakened }; end function Internal.AffixRotation() return ipairs(affixRotation) end -- Fill affixes mask based on Affix Rotation for _,affixes in Internal.AffixRotation() do local ma, mb, mc = bit.band(affixes.id, 0xff), bit.band(affixes.id, 0xff00), bit.band(affixes.id, 0xff0000) local a, b, c = ma, bit.rshift(mb, 8), bit.rshift(mc, 16) local r = {} AffixBOR(r, a) AffixBOR(r, b) AffixBOR(r, c) PushAffixMask(ma, r) PushAffixMask(mb, r) PushAffixMask(mc, r) PushAffixMask(bit.bor(ma, mb), r) PushAffixMask(bit.bor(mb, mc), r) PushAffixMask(bit.bor(ma, mc), r) PushAffixMask(bit.band(affixes.id, 0xffffff), r) end local areaNameToIDMap = {}; Internal.areaNameToIDMap = areaNameToIDMap; -- Updates areaNameToIDMap with localized area name to area id function Internal.UpdateAreaMap() local instanceID = select(8, GetInstanceInfo()); if instanceID and InstanceAreaIDToBossID[instanceID] then areaNameToIDMap[instanceID] = areaNameToIDMap[instanceID] or {}; local map = areaNameToIDMap[instanceID]; for areaID in pairs(InstanceAreaIDToBossID[instanceID]) do local areaName = GetAreaInfo(areaID); if areaName then map[areaName] = areaID; end end end end -- This is only useful when you can go to the bosses room but cant pull it -- until other bosses are dead, see Lady Ashvane in The Eternal Palace -- Which bosses have to be dead for the other boss to be available -- JournalInstanceID to JournalInstanceID[] local bossRequirements = { [2354] = {2347, 2353}, -- Lady Ashvane, requires Blackwater Behemoth and Radiance of Azshara [2370] = {2377}, -- Vexiona, requires Dark Inquisitor Xanesh [2364] = {2372}, -- Ra-den the Despoiled, requires The Hivemind [2417] = {2401, 2390, 2389}, -- Mordretha, the Endless Empress, requires Gorechop, Xav the Unfallen, Kul'tharok [2410] = {2408, 2409, 2398}, -- Mueh'zala, requires Hakkar the Soulflayer, The Manastorms, and Dealer Xy'exa [2482] = {2639}, -- Sennarth, the Cold Breath, requires Terros [2491] = {2500, 2482}, -- Kurog Grimtotem, requires Terros and Sennarth, the Cold Breath } function Internal.BossAvailable(bossID) if IsEncounterComplete(bossID) then return false end local requiredBossIDs = bossRequirements[bossID] if requiredBossIDs then for _,requiredBossID in ipairs(requiredBossIDs) do if not IsEncounterComplete(requiredBossID) then return false end end end return true end function Internal.GetCurrentBoss(unitId) local bossID = nil local _, instanceType, difficultyID, _, _, _, _, instanceID = GetInstanceInfo(); if instanceType == "party" or instanceType == "raid" then local uiMapID = C_Map.GetBestMapForUnit("player"); if uiMapID then if type(uiMapIDToBossID[uiMapID]) == "table" then for _,mapBossID in ipairs(uiMapIDToBossID[uiMapID]) do if Internal.BossAvailable(mapBossID) then bossID = mapBossID or bossID; break end end else bossID = uiMapIDToBossID[uiMapID] or bossID; end end local areaID = instanceID and areaNameToIDMap[instanceID] and areaNameToIDMap[instanceID][GetSubZoneText()] or nil; if areaID then bossID = InstanceAreaIDToBossID[instanceID][areaID] or bossID; end if unitId then local unitGUID = UnitGUID(unitId); if unitGUID and not UnitIsDead(unitId) then local type, zero, serverId, instanceId, zone_uid, npcId, spawn_uid = strsplit("-", unitGUID); if (type == "Creature" or type == "Vehicle") and tonumber(npcId) then bossID = npcIDToBossID[tonumber(npcId)] or bossID; end end end end return bossID end