From 20f8c5a874b5813a9cc639babb497c048e556e66 Mon Sep 17 00:00:00 2001 From: Aleksi Blinnikka Date: Tue, 24 Apr 2018 23:15:53 +0300 Subject: [PATCH] Add a GTFO implementation --- OmaGtfo/Gtfo.lua | 173 ++++++++++++++++++++ OmaGtfo/GtfoSpells.lua | 288 +++++++++++++++++++++++++++++++++ OmaGtfo/OmaGtfo.toc | 8 + OmaGtfo/sounds/alarmbeep.ogg | Bin 0 -> 4399 bytes OmaGtfo/sounds/alarmbuzz.ogg | Bin 0 -> 10827 bytes OmaGtfo/sounds/alarmbuzzer.ogg | Bin 0 -> 11524 bytes OmaGtfo/sounds/alarmdouble.ogg | Bin 0 -> 4713 bytes 7 files changed, 469 insertions(+) create mode 100644 OmaGtfo/Gtfo.lua create mode 100644 OmaGtfo/GtfoSpells.lua create mode 100644 OmaGtfo/OmaGtfo.toc create mode 100644 OmaGtfo/sounds/alarmbeep.ogg create mode 100644 OmaGtfo/sounds/alarmbuzz.ogg create mode 100644 OmaGtfo/sounds/alarmbuzzer.ogg create mode 100644 OmaGtfo/sounds/alarmdouble.ogg diff --git a/OmaGtfo/Gtfo.lua b/OmaGtfo/Gtfo.lua new file mode 100644 index 0000000..539673a --- /dev/null +++ b/OmaGtfo/Gtfo.lua @@ -0,0 +1,173 @@ +-- 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 diff --git a/OmaGtfo/GtfoSpells.lua b/OmaGtfo/GtfoSpells.lua new file mode 100644 index 0000000..ffbea64 --- /dev/null +++ b/OmaGtfo/GtfoSpells.lua @@ -0,0 +1,288 @@ +-- 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 -- +}; diff --git a/OmaGtfo/OmaGtfo.toc b/OmaGtfo/OmaGtfo.toc new file mode 100644 index 0000000..86ddffc --- /dev/null +++ b/OmaGtfo/OmaGtfo.toc @@ -0,0 +1,8 @@ +## Interface: 70300 +## Title: Oma GTFO +## Version: 1.0 +## Author: schyrio +## Notes: My GTFO + +GtfoSpells.lua +Gtfo.lua diff --git a/OmaGtfo/sounds/alarmbeep.ogg b/OmaGtfo/sounds/alarmbeep.ogg new file mode 100644 index 0000000000000000000000000000000000000000..6186d6b7e749dbb55bdba86783ffba528ffc0792 GIT binary patch literal 4399 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 literal 0 HcmV?d00001 diff --git a/OmaGtfo/sounds/alarmbuzz.ogg b/OmaGtfo/sounds/alarmbuzz.ogg new file mode 100644 index 0000000000000000000000000000000000000000..ae1d5a8d02df27eb02f89beeb64e6b5394cafb72 GIT binary patch literal 10827 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 literal 0 HcmV?d00001 diff --git a/OmaGtfo/sounds/alarmbuzzer.ogg b/OmaGtfo/sounds/alarmbuzzer.ogg new file mode 100644 index 0000000000000000000000000000000000000000..b26884f166644e7c18970d2167d3b1dc2bdd227b GIT binary patch literal 11524 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 KMCLE7Uj1JUrZb=b literal 0 HcmV?d00001 diff --git a/OmaGtfo/sounds/alarmdouble.ogg b/OmaGtfo/sounds/alarmdouble.ogg new file mode 100644 index 0000000000000000000000000000000000000000..ec31a5564dd120862688cc85cb72ddc96e4f6d2a GIT binary patch literal 4713 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