--- /dev/null
+-- Gtfo.lua
+local _;
+local print, tonumber, pairs = print, tonumber, pairs;
+local format = string.format;
+local strsplit = strsplit;
+local UnitGUID = UnitGUID;
+local UnitExists, UnitIsUnit = UnitExists, UnitIsUnit;
+local UnitBuff, UnitDebuff = UnitBuff, UnitDebuff;
+local UnitGroupRolesAssigned = UnitGroupRolesAssigned;
+local PlaySoundFile = PlaySoundFile;
+local playerGuid, guids;
+local playerTank;
+local printAll = false;
+local frame = CreateFrame("Frame");
+frame:Hide();
+
+local sounds = {
+ "Interface\\Addons\\OmaGtfo\\sounds\\alarmbuzzer.ogg",
+ "Interface\\Addons\\OmaGtfo\\sounds\\alarmbeep.ogg",
+ "Interface\\Addons\\OmaGtfo\\sounds\\alarmdouble.ogg",
+ "Interface\\Addons\\OmaGtfo\\sounds\\alarmbuzz.ogg",
+};
+local taken = OmaGTFO.DmgTaken;
+local caused = OmaGTFO.DmgDone;
+local environs = {
+ ["Drowning"] = sounds[1],
+ ["Fatigue"] = sounds[1],
+ ["Lava"] = sounds[2],
+ ["Fire"] = sounds[2],
+ ["Slime"] = sounds[2],
+};
+
+local function mobId(guid)
+ local mob, _, _, _, _, id = strsplit("-", guid);
+ if mob and (mob == "Creature" or mob == "Vehicle" or mob == "Pet") then
+ return tonumber(id);
+ end
+ return nil;
+end
+
+-- negatingIgnoreTime-like functionality not implemented
+local events = {
+ ["SPELL_DAMAGE"] = function(event, source, spellid, spellname, _, arg1, arg2)
+ if (event == "SPELL_AURA_APPLIED" or event == "SPELL_AURA_APPLIED_DOSE" or
+ event == "SPELL_AURA_REFRESH") and arg1 ~= "DEBUFF" then
+ return;
+ elseif taken[spellid] then
+ -- TODO uncomment checks when they're in use
+ local spell = taken[spellid];
+ local sound = spell.sound;
+ if spell.eventType and spell.eventType ~= event then return end
+ --if (event == "SPELL_MISSED" or event == "SPELL_PERIODIC_MISSED") and not spell.always then return end
+ if spell.negatingDebuff and UnitDebuff("player", spell.negatingDebuff) then return end
+ --if spell.negatingBuff and UnitBuff("player", spell.negatingBuff) then return end
+ --if spell.affirmingDebuff and not UnitDebuff("player", spell.affirmingDebuff) then return end
+ --if spell.mobs and source and not spell.mobs[mobId(source)] then return end
+ --if spell.ignoreSelf and source == playerGuid then return end
+ if spell.tankMechanic and playerTank then
+ if spell.tankMechanic == true then return end
+ sound = spell.tankMechanic;
+ end
+ if spell.applicationOnly then
+ if event ~= "SPELL_AURA_APPLIED" and event ~= "SPELL_AURA_APPLIED_DOSE" and
+ event ~= "SPELL_AURA_REFRESH" then
+ return;
+ elseif spell.minStacks and (event ~= "SPELL_AURA_APPLIED_DOSE" or
+ not arg2 or arg2 <= spell.minStacks) then
+ return;
+ end
+ end
+ if spell.minDamage then
+ local damage = tonumber(arg1) or 0;
+ if damage < spell.minDamage then return end
+ end
+ if spell.multipleHitsTime then -- only alarm if multiple hits within a certain time
+ local now, prevHit = GetTime(), spell.prevHit;
+ spell.prevHit = now;
+ if prevHit then
+ if now - prevHit > spell.multipleHitsTime then
+ return;
+ end
+ else
+ return;
+ end
+ end
+
+ return PlaySoundFile(sounds[sound], "SFX");
+ --elseif printAll then -- TODO uncomment when wanting to print all non-tracked events
+ -- return print(event, spellid, spellname);
+ end
+ end,
+ ["ENVIRONMENTAL_DAMAGE"] = function(_, _, env)
+ if environs[env] then return PlaySoundFile(environs[env], "SFX") end
+ end,
+};
+events["SPELL_MISSED"] = events["SPELL_DAMAGE"];
+events["SPELL_PERIODIC_DAMAGE"] = events["SPELL_DAMAGE"];
+events["SPELL_PERIODIC_MISSED"] = events["SPELL_DAMAGE"];
+events["SPELL_ENERGIZE"] = events["SPELL_DAMAGE"];
+events["SPELL_INSTAKILL"] = events["SPELL_DAMAGE"];
+events["SPELL_AURA_APPLIED"] = events["SPELL_DAMAGE"];
+events["SPELL_AURA_APPLIED_DOSE"] = events["SPELL_DAMAGE"];
+events["SPELL_AURA_REFRESH"] = events["SPELL_DAMAGE"];
+
+local function clog(_, event, _, sourceGuid, _, _, _, destGuid, _, _, _, ...)
+ -- TODO vehicle support?
+ if destGuid == playerGuid then
+ if events[event] then return events[event](event, sourceGuid, ...) end
+ elseif sourceGuid == playerGuid and event == "SPELL_DAMAGE" then
+ local spellid = ...;
+ if guids[destGuid] and caused[spellid] then
+ return PlaySoundFile(sounds[caused[spellid]], "SFX");
+ end
+ end
+end
+
+local function updateGuids()
+ guids = {};
+ if IsInGroup() then
+ if IsInRaid() then
+ for i = 1,40 do
+ local unit = format("raid%i", i);
+ if not UnitExists(unit) then break end
+ if not UnitIsUnit(unit, "player") then
+ guids[UnitGUID(unit)] = true;
+ end
+ end
+ else
+ for i = 1,4 do
+ local unit = format("party%i", i);
+ if not UnitExists(unit) then break end
+ guids[UnitGUID(unit)] = true;
+ end
+ end
+ end
+end
+
+local function updateRole()
+ playerTank = UnitGroupRolesAssigned("player") == "TANK";
+end
+
+local realEvents = {
+ ["COMBAT_LOG_EVENT_UNFILTERED"] = clog,
+ ["GROUP_ROSTER_UPDATE"] = updateGuids,
+ ["PLAYER_ROLES_ASSIGNED"] = updateRole,
+ ["MIRROR_TIMER_START"] = function(timer, _, _, scale)
+ if (timer == "EXHAUSTION" and scale < 0) then
+ return PlaySoundFile(sounds[1], "SFX");
+ end
+ end,
+};
+local function handleEvent(frame, event, ...)
+ realEvents[event](...);
+end
+
+frame:SetScript("OnEvent", function()
+ frame:UnregisterAllEvents();
+ playerGuid = UnitGUID("player");
+ updateGuids();
+ updateRole();
+ frame:SetScript("OnEvent", handleEvent);
+ frame:RegisterEvent("COMBAT_LOG_EVENT_UNFILTERED");
+ frame:RegisterEvent("GROUP_ROSTER_UPDATE");
+ frame:RegisterEvent("PLAYER_ROLES_ASSIGNED");
+ frame:RegisterEvent("MIRROR_TIMER_START");
+end);
+frame:RegisterEvent("PLAYER_LOGIN");
+
+SLASH_OMAGTFO1 = "/omag";
+function SlashCmdList.OMAGTFO(msg, editBox)
+ printAll = not printAll;
+ print("printAll", printAll)
+end
--- /dev/null
+-- GtfoSpells.lua
+OmaGTFO = {};
+OmaGTFO.DmgTaken = {
+ -- LEGION --
+ -- Vault of the Wardens
+ [199645] = { sound = 3 }, -- Face Kick (Crusher)
+ [192519] = { sound = 3, applicationOnly = true }, -- Lava (Ash'golm)
+ [214893] = { sound = 3 }, -- Pulse (Glazer)
+ [199828] = { sound = 3 }, -- Chaos Nova (Immolanth)
+ [199773] = { sound = 3 }, -- Burning Fel (Immolanth)
+ [201041] = { sound = 3 }, -- Madness (Inquisitor)
+ [193610] = { sound = 3 }, -- Fel Detonation (Glayvianna Soulrender)
+ [191684] = { sound = 3 }, -- Burning Pitch (Viletongue Belcher)
+ [194037] = { sound = 3 }, -- Mortar (Foul Mother)
+ [199918] = { sound = 3, applicationOnly = true }, -- Shadow Crash (Faceless Voidcaster)
+ [200202] = { sound = 3, applicationOnly = true }, -- Chilled to the Bone (Ash'golm)
+ [197334] = { sound = 3 }, -- Fel Glaive (Cordana Felsong)
+ [201037] = { sound = 1 }, -- Seeping Shadows (Kelthrazor)
+ [214625] = { sound = 1 }, -- Fel Chain (Tirathon Saltheril)
+ [191853] = { sound = 1 }, -- Furious Flames (Tirathon Saltheril)
+ [196502] = { sound = 2 }, -- Lingering Gaze (Glazer)
+ [216319] = { sound = 1 }, -- A Mother's Love (Grimoira)
+ [222631] = { sound = 1 }, -- Chaos Pyre (Lysanis Shadesoul)
+ [199229] = { sound = 1 }, -- Fel Fire Wall
+ [211834] = { sound = 1 }, -- Hellfire
+ [238691] = { sound = 1 }, -- Spear of Vengeance
+ -- The Violet Hold
+ [205101] = { sound = 3 }, -- Soul Eruption (Eredar Shadow Mender)
+ [204498] = { sound = 3 }, -- Soul Explosion (Portal Guardian)
+ [202037] = { sound = 3, applicationOnly = true }, -- Frozen (Shivermaw)
+ [201355] = { sound = 3 }, -- Wing Buffet (Shivermaw)
+ [201852] = { sound = 3 }, -- Relentless Storm (Shivermaw)
+ [201598] = { sound = 3 }, -- Congealing Vomit (Festerface)
+ [202364] = { sound = 1 }, -- Execution (Fel Lord Betrug)
+ [205014] = { sound = 1 }, -- Seeping Shadows (Lord Malgath)
+ [201380] = { sound = 1, applicationOnly = true, tankMechanic = true }, -- Frost Breath (Shivermaw)
+ [201957] = { sound = 1 }, -- Frostbite (Shivermaw)
+ [204762] = { sound = 1 }, -- Violent Fel Energy (Portal Keeper)
+ [202266] = { sound = 1 }, -- Icky Goo (Festerface)
+ -- Darkheart Thicket
+ [204402] = { sound = 3 }, -- Star Shower (Dreadsoul Ruiner)
+ [201123] = { sound = 3 }, -- Root Burst (Vilethorn Blossom)
+ [199063] = { sound = 3, applicationOnly = true }, -- Strangling Roots (Oakheart)
+ [201273] = { sound = 3 }, -- Blood Bomb (Bloodtainted Fury)
+ [201400] = { sound = 3 }, -- Dread Inferno (Dreadfire Imp)
+ [200111] = { sound = 3 }, -- Apocalyptic Fire (Shade of Xavius)
+ [198916] = { sound = 3 }, -- Vile Burst (Vile Mushroom)
+ [198408] = { sound = 1 }, -- Nightfall (Archdruid Glaidalis)
+ [218759] = { sound = 1 }, -- Corruption Pool (Festerhide Grizzly)
+ [199460] = { sound = 1 }, -- Falling Rocks (Dresaron)
+ [204976] = { sound = 1 }, -- Noxious Spit (Kudzilla)
+ -- Eye of Azshara
+ [195217] = { sound = 3 }, -- Aqua Spout (Hatecoil Arcanist)
+ [193597] = { sound = 3 }, -- Static Nova (Lady Hatecoil)
+ [196610] = { sound = 3, applicationOnly = true }, -- Monsoon (Lady Hatecoil)
+ [191847] = { sound = 3 }, -- Poison Spit (Serpentrix)
+ [196299] = { sound = 3 }, -- Roiling Storm (Stormwake Hydra)
+ [196294] = { sound = 3 }, -- Chaotic Tempest (Stormwake Hydra)
+ [196293] = { sound = 3 }, -- Chaotic Tempest (Stormwake Hydra)
+ [193088] = { sound = 3 }, -- Ground Slam (King Deepbeard)
+ [192794] = { sound = 3 }, -- Lightning Strike (Wrath of Azshara)
+ [192675] = { sound = 3 }, -- Mystic Tornado (Wrath of Azshara)
+ [192619] = { sound = 3 }, -- Massive Deluge (Wrath of Azshara)
+ [192801] = { sound = 3 }, -- Tidal Wave (Wrath of Azshara)
+ [192708] = { sound = 3 }, -- Arcane Bomb (Wrath of Azshara)
+ [196871] = { sound = 1 }, -- Storm (Hatecoil Stormweaver)
+ [192053] = { sound = 1 }, -- Quicksand (Warlord Parjesh)
+ [199948] = { sound = 1 }, -- Tempest (Channeler Varisz)
+ [195473] = { sound = 1, applicationOnly = true }, -- Abrasive Slime (Gritslime Snail)
+ [191858] = { sound = 1 }, -- Toxic Puddle (Sepentrix)
+ [193055] = { sound = 1, negatingDebuff = "Gaseous Bubbles" }, -- Call of the Seas
+ -- Neltharion's Lair
+ [202089] = { sound = 3 }, -- Scorch (Burning Geode)
+ [200338] = { sound = 3 }, -- Crystal Wall (Dargrul)
+ [198475] = { sound = 3 }, -- Strike of the Mountain (Ularogg Cragshaper)
+ [226406] = { sound = 3, tankMechanic = true }, -- Ember Swipe (Emberhusk Dominator)
+ [183407] = { sound = 1, multipleHitsTime = 1 }, -- Acid Splatter
+ [192800] = { sound = 1, minDamage = 1 }, -- Choking Dust (Rokmora)
+ [183566] = { sound = 1 }, -- Rancid Pool (Tarspitter Lurker)
+ [188494] = { sound = 1 }, -- Rancid Maw (Naraxas)
+ [188493] = { sound = 1 }, -- Rancid Maw (Naraxas)
+ [226388] = { sound = 1 }, -- Rancid Ooze
+ [210166] = { sound = 1 }, -- Toxic Wretch (Naraxas)
+ [217090] = { sound = 1 }, -- Magma Wave (Dargrul)
+ -- Halls of Valor
+ [198605] = { sound = 3 }, -- Thunderstrike (Valarjar Thundercaller) TODO
+ [198412] = { sound = 3 }, -- Feedback (Odyn)
+ [193260] = { sound = 3 }, -- Static Field (Hymdall)
+ [192206] = { sound = 3 }, -- Sanctify (Olmyr the Enlightened)
+ [198088] = { sound = 3, applicationOnly = true }, -- Glowing Fragment (Odyn)
+ [198903] = { sound = 1 }, -- Crackling Storm (Storm Drake)
+ [193234] = { sound = 1 }, -- Dancing Blade (Hymdall)
+ [199818] = { sound = 1 }, -- Crackle (Valarjar Thundercaller)
+ [200682] = { sound = 1, negatingDebuff = "Eye of the Storm" }, -- Eye of the Storm (Solsten)
+ [193702] = { sound = 1 }, -- Infernal Flames (God-King Skovald)
+ [193827] = { sound = 1 }, -- Ragnarok (God-King Skovald)
+ -- The Arcway
+ [197788] = { sound = 3 }, -- Bombardment (General Xakal)
+ [197579] = { sound = 3 }, -- Fel Eruption (General Xakal)
+ [194006] = { sound = 1 }, -- Ooze Puddle (Unstable Amalgamation)
+ [200040] = { sound = 1 }, -- Nether Venom (Nal'tira)
+ [199812] = { sound = 1 }, -- Blink Strikes (Nal'tira)
+ [210750] = { sound = 1 }, -- Collapsing Rift (Withered Manawraith)
+ [220500] = { sound = 1 }, -- Destabilized Orb (Corstillax)
+ [211209] = { sound = 1 }, -- Arcane Slicer (Arcane Anomaly)
+ [196824] = { sound = 1 }, -- Nether Link (Ivanyr)
+ [220597] = { sound = 1 }, -- Charged Bolt (Ivanyr)
+ [211745] = { sound = 1 }, -- Fel Strike (Wrathguard Felblade)
+ [220443] = { sound = 1 }, -- Wake of Shadows (General Xakal)
+ -- Maw of Souls
+ [195038] = { sound = 3 }, -- Defiant Strike - finish (Seacursed Soulkeeper)
+ [193513] = { sound = 3 }, -- Bane (Ymiron, the Fallen King)
+ [193364] = { sound = 3, applicationOnly = true }, -- Screams of the Dead (Ymiron, the Fallen King)
+ [194099] = { sound = 3, applicationOnly = true }, -- Bile Breath (The Grimewalker)
+ [194218] = { sound = 3 }, -- Cosmic Scythe (Harbaron)
+ [197117] = { sound = 3 }, -- Piercing Tentacle (Helya)
+ [195309] = { sound = 3 }, -- Swirling Water (Helya)
+ [197858] = { sound = 3 }, -- Turbulent Waters (Helya)
+ [202472] = { sound = 3 }, -- Tainted Essence (Helya)
+ [216107] = { sound = 1 }, -- Convulsive Shadows (Shroudseeker)
+ [194102] = { sound = 1 }, -- Poisonous Sludge (The Grimewalker)
+ [195035] = { sound = 1 }, -- Defiant Strike (Seacursed Soulkeeper)
+ [194235] = { sound = 1 }, -- Nether Rip (Harbaron)
+ [227234] = { sound = 1 }, -- Corrupted Bellow (Helya)
+ -- Court of Stars
+ [209027] = { sound = 3 }, -- Quelling Strike (Duskwatch Guard)
+ [209477] = { sound = 3 }, -- Wild Detonation (Mana Wyrm)
+ [209404] = { sound = 3 }, -- Seal Magic (Duskwatch Arcanist)
+ [206574] = { sound = 3 }, -- Resonant Slash (Patrol Guard Gerdo)
+ [219498] = { sound = 3 }, -- Streetsweeper (Patrol Guard Gerdo)
+ [209378] = { sound = 3, applicationOnly = true }, -- Whirling Blades (Imacu'tya)
+ [207979] = { sound = 3 }, -- Shockwave (Jazshariu)
+ [207887] = { sound = 3 }, -- Infernal Eruption (Talixae Flamewreath)
+ [211457] = { sound = 3 }, -- Infernal Eruption (Talixae Flamewreath)
+ [224333] = { sound = 3 }, -- Enveloping Winds (Advisor Melandrus)
+ -- TODO Arcane Lockdown ?
+ [209027] = { sound = 1 }, -- Disrupting Energy (Guardian Construct)
+ [211391] = { sound = 1 }, -- Felblaze Puddle (Legion Hound)
+ -- Black Rook Hold
+ [196517] = { sound = 3 }, -- Shirling Scythe (Amalgam of Souls)
+ [194956] = { sound = 3 }, -- Reap Soul (Amalgam of Souls)
+ [194960] = { sound = 3 }, -- Soul Echoes (Amalgam of Souls)
+ [200256] = { sound = 3 }, -- Phased Explosion (Arcane Minion)
+ [200261] = { sound = 3 }, -- Bonebreaking Strike (Soul-torn Champion)
+ [222397] = { sound = 3 }, -- Boulder Crush
+ [222417] = { sound = 3, applicationOnly = true }, -- Boulder Crush
+ [214002] = { sound = 3 }, -- Raven's Dive (Risen Lancer)
+ [199567] = { sound = 3 }, -- Dark Obliteration (Latosius)
+ [198820] = { sound = 3 }, -- Dark Blast (Latosius)
+ [199097] = { sound = 3, applicationOnly = true }, -- Cloud of Hypnosis (Latosius)
+ [211688] = { sound = 3 }, -- Overwhelming Detonation (Braxas the Fleshcarver)
+ [224188] = { sound = 3, applicationOnly = true, minStacks = 1 }, -- Hateful Charge (Smashspite the Hateful)
+ [221838] = { sound = 3, applicationOnly = true }, -- Disorienting Gas (Kelorn Nightblade)
+ [198781] = { sound = 3 }, -- Whirling Blade (Kur'talos Ravencrest)
+ [200914] = { sound = 3, tankMechanic = true }, -- Indigestion (Wyrmtongue Scavenger)
+ [200344] = { sound = 1 }, -- Arrow Barrage (Risen Archer)
+ [221131] = { sound = 1, negatingDebuff = "Arcane Overcharge" }, -- Arcane Overcharge (Archmage Galeorn)
+ [220922] = { sound = 1 }, -- Overwhelming Release (Archmage Galeorn)
+ [197521] = { sound = 1 }, -- Blazing Trail (Illysanna Ravencrest)
+ [197821] = { sound = 1 }, -- Felblazed Ground (Illysanna Ravencrest)
+ [198501] = { sound = 1 }, -- Fel Vomitus (Smashspite the Hateful)
+ [221680] = { sound = 1 }, -- Fel Residue (Braxas the Fleshcarver)
+ [221866] = { sound = 1, tankMechanic = true }, -- Blade Barrage (Kelorn Nightblade)
+ [198245] = { sound = 1 }, -- Brutal Haymaker (Smashspite the Hateful)
+ -- Return to Karazhan
+ [227416] = { sound = 3 }, -- Wondrous Radiance (Galindre)
+ [227776] = { sound = 3 }, -- Magic Magnificent (Galindre)
+ [227917] = { sound = 3 }, -- Poetry Slam (Ghostly Understudy)
+ [227925] = { sound = 3 }, -- Final Curtain (Ghostly Understudy)
+ [227977] = { sound = 3, applicationOnly = true }, -- Flashlight (Skeletal Usher)
+ [227339] = { sound = 3 }, -- Mezair (Midnight)
+ [227645] = { sound = 3 }, -- Spectral Charge (Midnight)
+ [227532] = { sound = 3 }, -- Unstable Energy (Damaged Golem)
+ [230044] = { sound = 3, tankMechanic = true }, -- Cleave (Wrathguard Flamebringer)
+ [229988] = { sound = 3 }, -- Burning Tile
+ [229597] = { sound = 3 }, -- Fel Mortar (Fel Bat)
+ [229696] = { sound = 3 }, -- Stampede (Rat)
+ [227620] = { sound = 3 }, -- Arcane Bomb (Mana Devourer)
+ [229384] = { sound = 3 }, -- Queen Move
+ [229563] = { sound = 3 }, -- Knight Move
+ [229427] = { sound = 3 }, -- Royal Slash (King)
+ [229545] = { sound = 3 }, -- Bishop Move
+ [229559] = { sound = 3 }, -- Bishop Move
+ [229285] = { sound = 3 }, -- Bombardment (Viz'aduum the Watcher)
+ [229161] = { sound = 3 }, -- Explosive Shadows (Viz'aduum the Watcher)
+ [229151] = { sound = 3 }, -- Disintegrate (Viz'aduum the Watcher)
+ [227465] = { sound = 1 }, -- Power Discharge (Curator)
+ [228808] = { sound = 1, negatingDebuff = "Ignite Soul" }, -- Charred Earth (Nightbane)
+ [228001] = { sound = 1 }, -- Pennies From Heaven (Ghostly Philathropist)
+ [227848] = { sound = 1, minStacks = 1, applicationOnly = true }, -- Sacred Ground (Maiden of Virtue)
+ [227473] = { sound = 1 }, -- Whirling Edge (Lord Robin Daris)
+ [229682] = { sound = 1 }, -- Gleeful Immolation (Gleeful Immolator)
+ [229677] = { sound = 1 }, -- Fel Bomb (Infused Pyromancer)
+ [227806] = { sound = 1, minStacks = 2, applicationOnly = true }, -- Ceaseless Winter (Shade of Medivh)
+ [229905] = { sound = 1 }, -- Soul Harvest (Viz'aduum the Watcher)
+ [230431] = { sound = 1 }, -- Seeping Fel Power (Viz'aduum the Watcher)
+ [229250] = { sound = 1 }, -- Fel Flames (Viz'aduum the Watcher)
+ [229248] = { sound = 1, minDamage = 1 }, -- Fel Flames (Viz'aduum the Watcher)
+ [228993] = { sound = 1 }, -- Caustic Pool (Coldmist Stalker)
+ -- Cathedral of Eternal Night
+ [239558] = { sound = 3, tankMechanic = true }, -- Shadow Swipe (Dreadwing)
+ [237599] = { sound = 3, tankMechanic = true }, -- Devastating Swipe (Helblaze Felbringer)
+ [239201] = { sound = 3 }, -- Fel Glare (Gazerax)
+ [239217] = { sound = 3 }, -- Blinding Glare (Gazerax)
+ [237276] = { sound = 3, minDamage = 1500000 }, -- Pulverizing Cudgel (Thrashbite the Scornful)
+ [238469] = { sound = 3 }, -- Scornful Charge (Thrashbite the Scornful)
+ [236543] = { sound = 3 }, -- Felsoul Cleave (Domatrax)
+ [238583] = { sound = 3, applicationOnly = true }, -- Devour Magic (Felblight Stalker)
+ [238656] = { sound = 1 }, -- Shadow Wave (Dul'zak)
+ [237325] = { sound = 1, applicationOnly = true }, -- Toxic Pollen (Felborne Botanist)
+ [240951] = { sound = 1, tankMechanic = true }, -- Destructive Rampage (Thrashbite the Scornful)
+ [233177] = { sound = 1 }, -- Carrion Swarm (Mephistroth)
+ [237583] = { sound = 1 }, -- Burning Celerity
+ [240295] = { sound = 1 }, -- Searing Rend
+ -- Seat of the Triumvirate
+ [248130] = { sound = 3 }, -- Darkened Remnant (Rift Warden)
+ [246026] = { sound = 3, applicationOnly = true }, -- Void Trap (Saprish)
+ [250188] = { sound = 3 }, -- Void Fragment
+ [248067] = { sound = 3, tankMechanic = true }, -- Grand Swing (Umbral War-Adept)
+ [246900] = { sound = 3, applicationOnly = true }, -- Dark Outbreak (Void Discharge)
+ [244588] = { sound = 1 }, -- Void Sludge (Zuraal the Ascended)
+ [244906] = { sound = 1 }, -- Collapsing Void (Viceroy Nezhar)
+ [250820] = { sound = 1, applicationOnly = true }, -- Growing Pressure
+ -- Antorus
+ [245861] = { sound = 1 }, -- Searing Rend
+ [244590] = { sound = 1 }, -- Molten Hot Fel
+ [249297] = { sound = 4, eventType = "SPELL_AURA_REFRESH" }, -- Flames of Reorigination
+ [244532] = { sound = 3 }, -- Fel Bombardment (Garothi Worldbreaker)
+ [254760] = { sound = 3, tankMechanic = true }, -- Corrupting Maw (Felhounds of Sargeras)
+ [244163] = { sound = 3 }, -- Molten Flare (Felhounds of Sargeras)
+ [244071] = { sound = 3, applicationOnly = true }, -- Weight of Darkness (Felhounds of Sargeras)
+ [244131] = { sound = 1 }, -- Consuming Sphere (Felhounds of Sargeras)
+ [254403] = { sound = 1 }, -- Consuming Sphere (Felhounds of Sargeras)
+ [245121] = { sound = 3 }, -- Entropic Blast (Antoran High Command)
+ [244892] = { sound = 3, tankMechanic = true }, -- Exploit Weakness (Antoran High Command)
+ [253039] = { sound = 1, tankMechanic = 2 }, -- Bladestorm (Antoran High Command)
+ [243984] = { sound = 3, multipleHitsTime = 1 }, -- Collapsing World (Portal Keeper Hasabel)
+ [244001] = { sound = 3 }, -- Felstorm Barrage (Portal Keeper Hasabel)
+ [244601] = { sound = 3 }, -- Supernova (Portal Keeper Hasabel)
+ [250701] = { sound = 3, tankMechanic = true }, -- Fel Swipe (Eonar the Life-Binder)
+ [248795] = { sound = 1 }, -- Fel Wake (Eonar the Life-Binder)
+ [247388] = { sound = 3 }, -- Pulse Grenade (Imonar the Soulhunter)
+ [247681] = { sound = 3 }, -- Pulse Grenade (Imonar the Soulhunter)
+ [247641] = { sound = 3, applicationOnly = true }, -- Stasis Trap (Imonar the Soulhunter)
+ [247962] = { sound = 3 }, -- Blastwire (Imonar the Soulhunter)
+ [248321] = { sound = 3, applicationOnly = true }, -- Conflagration (Imonar the Soulhunter)
+ [247932] = { sound = 3, applicationOnly = true }, -- Shrapnel Blast (Imonar the Soulhunter)
+ [254919] = { sound = 3, tankMechanic = true }, -- Forging Strike (Kin'garoth)
+ [246634] = { sound = 3 }, -- Apocalypse Blast (Kin'garoth)
+ [258021] = { sound = 1 }, -- Purging Protocol (Kin'garoth)
+ [246840] = { sound = 1 }, -- Ruiner (Kin'garoth)
+ [257644] = { sound = 3, tankMechanic = true }, -- Shadow Strike (Varimathras)
+ [244006] = { sound = 3 }, -- Dark Eruption (Varimathras)
+ [243963] = { sound = 1 }, -- Alone in the Darkness (Varimathras)
+ [246374] = { sound = 3 }, -- Shadow Blades (The Coven of Shivarra)
+ [253020] = { sound = 1 }, -- Storm of Darkness (The Coven of Shivarra)
+ [245674] = { sound = 1 }, -- Flames of Khaz'goroth (The Coven of Shivarra)
+ [245921] = { sound = 1 }, -- Spectral Army of Norgannon (The Coven of Shivarra)
+ [245634] = { sound = 1 }, -- Whirling Saber (The Coven of Shivarra)
+ [254022] = { sound = 3 }, -- Corrupt Aegis (Aggramar)
+ [246014] = { sound = 3, applicationOnly = true }, -- Searing Tempest (Aggramar)
+ [244291] = { sound = 3, tankMechanic = true }, -- Foe Breaker (Aggramar)
+ [244736] = { sound = 3, applicationOnly = true }, -- Wake of Flame (Aggramar)
+ [245391] = { sound = 3 }, -- Flare (Aggramar)
+ [244686] = { sound = 3 }, -- Meteor Swarm (Aggramar)
+ [248499] = { sound = 3, tankMechanic = true }, -- Sweeping Scythe (Argus the Unmaker)
+ [251815] = { sound = 3 }, -- Edge of Obliteration (Argus the Unmaker)
+ [257299] = { sound = 3, applicationOnly = true }, -- Ember of Rage (Argus the Unmaker)
+ [248167] = { sound = 1 }, -- Death Fog (Argus the Unmaker)
+ [255646] = { sound = 1 }, -- Golganneth's Wrath (Argus the Unmaker)
+
+
+ -- BATTLE FOR AZEROTH --
+};
+
+OmaGTFO.DmgDone = {
+ -- LEGION --
+ -- Emerald Nightmare
+ [203097] = 1, -- Rot (Nythendra)
+ [203788] = 1, -- Volatile Infection (Emeriss)
+ -- Nighthold
+ [208501] = 1, -- Sterilize (Trilliax)
+ -- Antorus
+ [249297] = 1, -- Flames of Reorigination
+
+
+ -- BATTLE FOR AZEROTH --
+};