diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index 37e3bdf..1f99f6d 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -3,9 +3,9 @@ name: Lint on: push: branches: [master] - paths: ['**.lua', '**.xml', '*.toc', '.luacheckrc', '.github/workflows/lint.yml'] + paths: ['**.lua', '**.xml', '*.toc', '.luacheckrc', 'Makefile', '.github/workflows/lint.yml'] pull_request: - paths: ['**.lua', '**.xml', '*.toc', '.luacheckrc', '.github/workflows/lint.yml'] + paths: ['**.lua', '**.xml', '*.toc', '.luacheckrc', 'Makefile', '.github/workflows/lint.yml'] jobs: check: @@ -24,3 +24,19 @@ jobs: - name: TOC check uses: lua-wow/toc-check@v1 + + test: + runs-on: ubuntu-latest + permissions: + contents: read + steps: + - name: Checkout + uses: actions/checkout@v7 + with: + persist-credentials: false + + - name: Install Lua 5.1 + run: sudo apt-get update && sudo apt-get install -y lua5.1 + + - name: Tests + run: make test LUA=lua5.1 diff --git a/.luacheckrc b/.luacheckrc index a330cb7..a3fd1e1 100644 --- a/.luacheckrc +++ b/.luacheckrc @@ -24,10 +24,6 @@ ignore = { '631', -- line is too long } --- data files keep the full expansion ladder for authoring entries -files['data/shared/blacklist.lua'] = { ignore = { '211/LE_EXPANSION_.*' } } -files['data/shared/cooldowns.lua'] = { ignore = { '211/LE_EXPANSION_.*' } } - -- globals Filger is allowed to set or mutate globals = { -- slash commands @@ -48,6 +44,19 @@ read_globals = { 'C_UnitAuras', -- constants + 'LE_EXPANSION_BATTLE_FOR_AZEROTH', + 'LE_EXPANSION_BURNING_CRUSADE', + 'LE_EXPANSION_CATACLYSM', + 'LE_EXPANSION_CLASSIC', + 'LE_EXPANSION_DRAGONFLIGHT', + 'LE_EXPANSION_LEGION', + 'LE_EXPANSION_LEVEL_CURRENT', + 'LE_EXPANSION_MIDNIGHT', + 'LE_EXPANSION_MISTS_OF_PANDARIA', + 'LE_EXPANSION_SHADOWLANDS', + 'LE_EXPANSION_WAR_WITHIN', + 'LE_EXPANSION_WARLORDS_OF_DRAENOR', + 'LE_EXPANSION_WRATH_OF_THE_LICH_KING', 'WOW_PROJECT_BURNING_CRUSADE_CLASSIC', 'WOW_PROJECT_CAMELOT', 'WOW_PROJECT_CATACLYSM_CLASSIC', diff --git a/CLAUDE.md b/CLAUDE.md index 20f49c9..45fd7d9 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -12,7 +12,7 @@ APIs and by secret values. Don't assume existing code is correct. **No configuration.** No options UI, slash-command configuration (`/filger` is help/dev only), profiles, per-character or per-client settings, and no SavedVariables added just to make something configurable. Decisions are made in code and constants (`config.lua`, `data/`). -The declared SavedVariable (`FilgerData`) is currently unused. If a feature genuinely needs new persistent state, explain +There are no SavedVariables. If a feature genuinely needs persistent state, explain why before adding it. **Minimalism.** No frameworks, abstractions, compatibility layers, helper systems or @@ -51,6 +51,8 @@ architecture win when they conflict. - Blizzard `wow-ui-source` (local clone in `../refs`, read-only) is the API authority. Use targeted searches, not broad exploration. Map: [docs/references.md](docs/references.md). +- `../spellbook` (separate tool) caches per-client spell DB2 tables and checks `data/` spell IDs. + Use it to verify IDs instead of memory: [docs/references.md](docs/references.md#spellbook-spell-db2-data-and-checks). ## Git & GitHub diff --git a/Filger.lua b/Filger.lua index 41a10aa..ba3a599 100644 --- a/Filger.lua +++ b/Filger.lua @@ -19,14 +19,9 @@ end) function Filger:ADDON_LOADED(addon) if (addon ~= "Filger") then return end - -- order matters: config reads the validated data, the backdrop API reads the config + -- order matters: config reads the validated data ns.data.Finalize() ns.BuildConfig() - - -- Filger standalone - if ns.MergeAPI then - ns.MergeAPI() - end end function Filger:PLAYER_LOGIN() diff --git a/Filger.toc b/Filger.toc index 5cfe4ba..d87fed4 100644 --- a/Filger.toc +++ b/Filger.toc @@ -4,7 +4,6 @@ ## Credits: Nils Ruesch, Shestak, Affli, Garagar, hidekki, FourOne, Tukz ## OptionalDeps: Tainted, Tukui, ElvUI -## SavedVariables: FilgerData ## Notes: Minimal buff/debuff tracker ## Title: |cffff8000Filger|r @@ -19,12 +18,12 @@ libs\LibDispel\LibDispel.xml [AllowLoadGameType classic] core\compat.lua core\util.lua core\data.lua +core\init.xml data\[Game]\blacklist.lua data\[Game]\cooldowns.lua data\[Game]\spells.lua data\shared\blacklist.lua data\shared\cooldowns.lua -core\init.xml config.lua elements\cooldowns.lua elements\[Family]\auras.lua diff --git a/Makefile b/Makefile index 7266cfd..352f41d 100644 --- a/Makefile +++ b/Makefile @@ -4,6 +4,7 @@ SHELL := bash .SHELLFLAGS := -eu -o pipefail -c LUACHECK ?= luacheck +LUA ?= lua # -- help --------------------- @@ -17,3 +18,9 @@ help: ## Show available commands .PHONY: check check: ## Run static analysis (see .luacheckrc) @$(LUACHECK) . + +# -- tests -------------------- + +.PHONY: test +test: ## Run unit tests (tests/run.lua) + @$(LUA) tests/run.lua diff --git a/README.md b/README.md index ae8d4f0..98e9712 100644 --- a/README.md +++ b/README.md @@ -49,6 +49,7 @@ Spells shown or hidden per client are listed in [data/](./data). - `/filger help` - List all available commands. - `/filger auras ` - List your auras on a unit with their spell IDs. Out of combat only on Retail, while auras are secret. +- `/filger validate` - List configured spell IDs that don't exist on this client. ## Configuration diff --git a/config.lua b/config.lua index a672947..c621d83 100644 --- a/config.lua +++ b/config.lua @@ -14,7 +14,7 @@ ns.config = { ["size"] = 1 }, ["gametooltip"] = true, -- enabled tooltips - ["dev"] = false, -- enables dev/development.lua commands + ["dev"] = true, -- enables dev/development.lua commands } } diff --git a/core/api.lua b/core/api.lua index b2819b3..ef9f658 100644 --- a/core/api.lua +++ b/core/api.lua @@ -13,16 +13,12 @@ function ns.SetBorderColor(backdrop, color) end end --- skip it if a UI with its own CreateBackdrop is loaded -if IsAddOnLoaded("Tainted") or IsAddOnLoaded("Tukui") or IsAddOnLoaded("ElvUI") then - return -end +-- these UIs add their own CreateBackdrop to every frame; OptionalDeps loads them first +local hasUIBackdrop = IsAddOnLoaded("Tainted") or IsAddOnLoaded("Tukui") or IsAddOnLoaded("ElvUI") --------------------------------------------------- -- API --------------------------------------------------- -local API = {} - local Scale = function(size) -- Ensure 'size' is a valid number, default to 1 if not size = tonumber(size) or 1 @@ -41,8 +37,10 @@ local Scale = function(size) return mult * math.floor(size / mult + 0.5) end -API.CreateBackdrop = function(self, template) - if not self.Backdrop then +function ns.CreateBackdrop(frame, template) + if hasUIBackdrop and frame.CreateBackdrop then + frame:CreateBackdrop(template) + elseif not frame.Backdrop then local backdropTexture = textures.blank local backdropColor = ns.config.general.backdrop.color local backdropAlpha = (template == "transparent") and 0.70 or 1 @@ -61,46 +59,14 @@ API.CreateBackdrop = function(self, template) backdrop.insets = { top = inset, left = inset, bottom = inset, right = inset } end - local level = self:GetFrameLevel() or 1 - - self.Backdrop = CreateFrame("Frame", nil, self, "BackdropTemplate") - self.Backdrop:SetPoint("TOPLEFT", -inset, inset) - self.Backdrop:SetPoint("BOTTOMRIGHT", inset, -inset) - self.Backdrop:SetFrameLevel(level - 1) - self.Backdrop:SetBackdrop(backdrop) - self.Backdrop:SetBackdropColor(backdropColor.r, backdropColor.g, backdropColor.b, backdropAlpha) - self.Backdrop:SetBackdropBorderColor(borderColor.r, borderColor.g, borderColor.b) + local level = frame:GetFrameLevel() or 1 + + frame.Backdrop = CreateFrame("Frame", nil, frame, "BackdropTemplate") + frame.Backdrop:SetPoint("TOPLEFT", -inset, inset) + frame.Backdrop:SetPoint("BOTTOMRIGHT", inset, -inset) + frame.Backdrop:SetFrameLevel(level - 1) + frame.Backdrop:SetBackdrop(backdrop) + frame.Backdrop:SetBackdropColor(backdropColor.r, backdropColor.g, backdropColor.b, backdropAlpha) + frame.Backdrop:SetBackdropBorderColor(borderColor.r, borderColor.g, borderColor.b) end end - --------------------------------------------------- --- Merge Filger API with WoW API --------------------------------------------------- -function ns.MergeAPI() - local AddAPI = function(obj) - local mt = getmetatable(obj).__index - for name, func in pairs(API) do - if (not obj[name]) then mt[name] = func end - end - end - - local Handled = { - ["Frame"] = true - } - - local Object = CreateFrame("Frame") - AddAPI(Object) - AddAPI(Object:CreateTexture()) - AddAPI(Object:CreateFontString()) - - Object = EnumerateFrames() - - while (Object) do - local t = Object:GetObjectType() - if (not Object:IsForbidden() and not Handled[t]) then - AddAPI(Object) - Handled[t] = true - end - Object = EnumerateFrames(Object) - end -end diff --git a/core/button.lua b/core/button.lua index 0d452f6..7cadeb0 100644 --- a/core/button.lua +++ b/core/button.lua @@ -108,7 +108,7 @@ do -- aura container buttons are unnamed; "$parent" would create globals like "Icon" local name = button:GetName() - button:CreateBackdrop() + ns.CreateBackdrop(button) -- ElvUI stores its backdrop as `backdrop` button.Backdrop = button.Backdrop or button.backdrop diff --git a/core/commands.lua b/core/commands.lua index dc6ece3..30e0e4e 100644 --- a/core/commands.lua +++ b/core/commands.lua @@ -68,3 +68,28 @@ local auras = function(arg) end ns.AddCommand("auras", auras, "list your auras on a unit with their spell IDs (/filger auras player buffs)") + +-- lists configured IDs that don't resolve on this client +local validate = function() + local groups, keys = {}, {} + for _, entry in ipairs(ns.data.invalid) do + local key = entry.kind .. (entry.class and ("/" .. entry.class) or "") + if not groups[key] then + groups[key] = {} + table.insert(keys, key) + end + table.insert(groups[key], entry.id) + end + + if #keys == 0 then + print(Filger.title, "all configured IDs are valid.") + return + end + + table.sort(keys) + for _, key in ipairs(keys) do + print(Filger.title, "|cffff8000" .. key .. "|r", table.concat(groups[key], ", ")) + end +end + +ns.AddCommand("validate", validate, "list configured IDs that don't exist on this client") diff --git a/core/data.lua b/core/data.lua index 74d3076..c782cce 100644 --- a/core/data.lua +++ b/core/data.lua @@ -3,8 +3,10 @@ local _, ns = ... ------------------------------------------------------------ -- Data ------------------------------------------------------------ --- Loaded before core\init.xml: data files only collect tables here. --- Validation runs in Finalize() at ADDON_LOADED; it fills data.blacklist/spells/cooldowns. +-- Loaded before the data files, which only collect tables here. +-- Validation runs in Finalize() at ADDON_LOADED; it fills data.blacklist/spells/cooldowns, +-- and records unresolved or duplicated IDs in data.invalid as { kind, class, id }. +-- A blacklist value of "name" also blacklists the spell's localized name (Classic filters only). local data = {} -- Compat @@ -48,6 +50,13 @@ function data.CreateSlotCooldown(slotId, enabled) return { slotId = slotId, enabled = enabled } end +-- true when the client's expansion is within from..to (inclusive; `to` optional); +-- reads ns.client at call time, since core\init.xml loads after this file +function data.In(from, to) + local expansion = ns.client.expansion + return expansion >= from and (to == nil or expansion <= to) +end + function data.AddBlacklist(source) table.insert(blacklistSources, source) end @@ -60,15 +69,19 @@ function data.AddCooldowns(source) table.insert(cooldownSources, source) end -local buildBlacklist = function() +local buildBlacklist = function(invalid) local blacklist = {} for _, source in ipairs(blacklistSources) do for spellId, enabled in next, source do if enabled then - if type(spellId) == "string" or GetSpellInfo(spellId) then + local info = GetSpellInfo(spellId) + if info then blacklist[spellId] = true + if enabled == "name" then + blacklist[info.name] = true + end else - warn("Blacklist", "Spell " .. spellId .. " do not exists.") + table.insert(invalid, { kind = "blacklist", id = spellId }) end end end @@ -76,7 +89,7 @@ local buildBlacklist = function() return blacklist end -local buildSpells = function() +local buildSpells = function(invalid) local spells = {} for _, source in ipairs(spellSources) do for class, list in next, source do @@ -88,7 +101,7 @@ local buildSpells = function() if GetSpellInfo(spellId) then spells[class][spellId] = info else - warn("SPELLS", "Spell " .. spellId .. " do not exists.") + table.insert(invalid, { kind = "spell", class = class, id = spellId }) end end end @@ -96,35 +109,60 @@ local buildSpells = function() return spells end --- player class rows first, then "ALL" rows (racials, gear), each in source order -local buildCooldowns = function() +-- validates the enabled rows of `class`; appends the valid ones to `out` when given +local collectCooldowns = function(class, seen, out, invalid) + for _, source in ipairs(cooldownSources) do + for _, row in ipairs(source[class] or {}) do + if row.spellId and seen[row.spellId] then + table.insert(invalid, { kind = "duplicate", class = class, id = row.spellId }) + elseif row.enabled then + if row.spellId then seen[row.spellId] = true end + if row.slotId or GetSpellInfo(row.spellId) then + if out then table.insert(out, row) end + else + table.insert(invalid, { kind = "cooldown", class = class, id = row.spellId }) + end + end + end + end +end + +-- player class rows first, then "ALL" rows (racials, gear), each in source order; +-- other classes are only validated +local buildCooldowns = function(invalid) local cooldowns = {} local seen = {} - for _, key in ipairs({ ns.player.class, "ALL" }) do - for _, source in ipairs(cooldownSources) do - for _, row in ipairs(source[key] or {}) do - if row.spellId and seen[row.spellId] then - warn("COOLDOWN", "Spell " .. row.spellId .. " is duplicated.") - elseif row.enabled then - if row.spellId then seen[row.spellId] = true end - if row.slotId or GetSpellInfo(row.spellId) then - table.insert(cooldowns, row) - else - warn("COOLDOWN", "Spell " .. row.spellId .. " do not exists.") - end - end + collectCooldowns(ns.player.class, seen, cooldowns, invalid) + collectCooldowns("ALL", seen, cooldowns, invalid) + + local others = {} + for _, source in ipairs(cooldownSources) do + for class in next, source do + if class ~= ns.player.class and class ~= "ALL" then + others[class] = true end end end + for class in next, others do + collectCooldowns(class, {}, nil, invalid) + end return cooldowns end function data.Finalize() - data.blacklist = buildBlacklist() - data.spells = buildSpells() - data.cooldowns = buildCooldowns() + local invalid = {} + data.blacklist = buildBlacklist(invalid) + data.spells = buildSpells(invalid) + data.cooldowns = buildCooldowns(invalid) + data.invalid = invalid blacklistSources, spellSources, cooldownSources = nil, nil, nil + + if ns.config.general.dev then + for _, entry in ipairs(invalid) do + warn(entry.kind .. (entry.class and ("/" .. entry.class) or ""), entry.id) + end + end end ns.data = data diff --git a/core/init.lua b/core/init.lua index 2368b59..1fa7822 100644 --- a/core/init.lua +++ b/core/init.lua @@ -29,7 +29,29 @@ client.isCamelot = (WOW_PROJECT_ID == WOW_PROJECT_CAMELOT) client.isClassic = (client.isVanilla or client.isTBC or client.isWrath or client.isCata or client.isMists) client.isMainline = not client.isClassic +client.interface = select(4, GetBuildInfo()) + +-- expansion levels for gating shared data +-- reference: https://warcraft.wiki.gg/wiki/LE_EXPANSION +local expansions = { + Classic = LE_EXPANSION_CLASSIC, + BurningCrusade = LE_EXPANSION_BURNING_CRUSADE, + Wrath = LE_EXPANSION_WRATH_OF_THE_LICH_KING, + Cataclysm = LE_EXPANSION_CATACLYSM, + Mists = LE_EXPANSION_MISTS_OF_PANDARIA, + Warlords = LE_EXPANSION_WARLORDS_OF_DRAENOR, + Legion = LE_EXPANSION_LEGION, + BattleForAzeroth = LE_EXPANSION_BATTLE_FOR_AZEROTH, + Shadowlands = LE_EXPANSION_SHADOWLANDS, + Dragonflight = LE_EXPANSION_DRAGONFLIGHT, + WarWithin = LE_EXPANSION_WAR_WITHIN, + Midnight = LE_EXPANSION_MIDNIGHT, +} + +client.expansion = LE_EXPANSION_LEVEL_CURRENT + ns.client = client +ns.expansions = expansions -- player ns.player = { diff --git a/data/Camelot/blacklist.lua b/data/Camelot/blacklist.lua index 4075ca1..69fa827 100644 --- a/data/Camelot/blacklist.lua +++ b/data/Camelot/blacklist.lua @@ -5,13 +5,7 @@ local AddBlacklist = ns.data.AddBlacklist -------------------------------------------------- -- Classic Forever -------------------------------------------------- -do - local data = { - -------------------------------------------------- - -- Season of Discovery - -------------------------------------------------- - [349981] = true, -- Supercharged Chronoboon Displacer - } +local data = { +} - AddBlacklist(data) -end +AddBlacklist(data) diff --git a/data/Camelot/cooldowns.lua b/data/Camelot/cooldowns.lua index e9c8b89..2f48447 100644 --- a/data/Camelot/cooldowns.lua +++ b/data/Camelot/cooldowns.lua @@ -1,3 +1,85 @@ +local _, ns = ... + +local CreateSpellCooldown = ns.data.CreateSpellCooldown +local AddCooldowns = ns.data.AddCooldowns + -------------------------------------------------- -- Classic Forever -------------------------------------------------- +local data = { + ["DRUID"] = { + CreateSpellCooldown(417141), -- Berserk + CreateSpellCooldown(17116), -- Nature's Swiftness + CreateSpellCooldown(439748), -- Starfall + CreateSpellCooldown(408024), -- Survival Instincts + }, + ["HUNTER"] = { + CreateSpellCooldown(19574), -- Bestial Wrath + CreateSpellCooldown(19263), -- Deterrence + CreateSpellCooldown(19577), -- Intimidation + CreateSpellCooldown(409379), -- Kill Command + CreateSpellCooldown(23989), -- Readiness + }, + ["MAGE"] = { + CreateSpellCooldown(12042), -- Arcane Power + CreateSpellCooldown(425124), -- Arcane Surge + CreateSpellCooldown(11113), -- Blast Wave + CreateSpellCooldown(12472), -- Cold Snap + CreateSpellCooldown(11129), -- Combustion + CreateSpellCooldown(440802), -- Frozen Orb + CreateSpellCooldown(11958), -- Ice Block + CreateSpellCooldown(425121), -- Icy Veins + CreateSpellCooldown(12043), -- Presence of Mind + }, + ["PALADIN"] = { + CreateSpellCooldown(409324), -- Ancestral Guidance + CreateSpellCooldown(407788), -- Avenging Wrath + CreateSpellCooldown(20216), -- Divine Favor + CreateSpellCooldown(407804), -- Divine Sacrifice + CreateSpellCooldown(20066), -- Repentance + CreateSpellCooldown(1310994), -- Swift Judgement + CreateSpellCooldown(1311015), -- Templar's Bulwark + CreateSpellCooldown(1310897), -- Voice of Truth + }, + ["PRIEST"] = { + CreateSpellCooldown(425294), -- Dispersion + CreateSpellCooldown(402789), -- Eye of the Void + CreateSpellCooldown(402799), -- Homunculi + CreateSpellCooldown(14751), -- Inner Focus + CreateSpellCooldown(402004), -- Pain Suppression + CreateSpellCooldown(10060), -- Power Infusion + CreateSpellCooldown(425207), -- Power Word: Barrier + CreateSpellCooldown(15487), -- Silence + }, + ["ROGUE"] = { + CreateSpellCooldown(13750), -- Adrenaline Rush + CreateSpellCooldown(13877), -- Blade Flurry + CreateSpellCooldown(14177), -- Cold Blood + CreateSpellCooldown(14183), -- Premeditation + CreateSpellCooldown(14185), -- Preparation + }, + ["SHAMAN"] = { + CreateSpellCooldown(16166), -- Elemental Mastery + CreateSpellCooldown(16190), -- Mana Tide Totem + CreateSpellCooldown(16188), -- Nature's Swiftness + CreateSpellCooldown(425336), -- Rage of the Farseer + CreateSpellCooldown(17364), -- Stormstrike + }, + ["WARLOCK"] = { + CreateSpellCooldown(18288), -- Amplify Curse + CreateSpellCooldown(412789), -- Demonic Howl + CreateSpellCooldown(18708), -- Fel Domination + CreateSpellCooldown(426195), -- Vengeance + }, + ["WARRIOR"] = { + CreateSpellCooldown(12809), -- Concussion Blow + CreateSpellCooldown(12328), -- Death Wish + CreateSpellCooldown(402913), -- Enraged Regeneration + CreateSpellCooldown(12975), -- Last Stand + CreateSpellCooldown(403228), -- Meathook + CreateSpellCooldown(426490), -- Rallying Cry + CreateSpellCooldown(12292), -- Sweeping Strikes + } +} + +AddCooldowns(data) diff --git a/data/Cata/blacklist.lua b/data/Cata/blacklist.lua index 208dd6b..9b7f4a2 100644 --- a/data/Cata/blacklist.lua +++ b/data/Cata/blacklist.lua @@ -5,51 +5,64 @@ local AddBlacklist = ns.data.AddBlacklist -------------------------------------------------- -- Cataclysm Classic -------------------------------------------------- -do - local data = { - -- WARLOCK - [687] = true, -- Demon Skin (Rank 1) - - [6307] = true, -- Blood Pact (Rank 1) - - -- Consumables - [17629] = true, -- Flask of Chromatic Resistance - - -------------------------------------------------- - -- Season of Discovery - -------------------------------------------------- - [349981] = true, -- Supercharged Chronoboon Displacer - } - - AddBlacklist(data) -end - -do - local data = { - -- DEATHKNIGHT - [55610] = true, -- Improved Icy Talons - - -- HUNTER - [77769] = true, -- Trap Launcher - - -- MAGE - [61316] = true, -- Dalaran Brilliance - - -- PALADIN - [79102] = true, -- Blessing of Might - [20165] = true, -- Seal of Insight - - -- PRIEST - [588] = true, -- Inner Fire - [49868] = true, -- Mind Quickening - [79107] = true, -- Shadow Protection - [73413] = true, -- Inner Will - - -- SHAMAN - [30809] = true, -- Unleashed Rage - [51470] = true, -- Elemental Oath - [77747] = true, -- Totemic Wrath - } - - AddBlacklist(data) -end +local data = { + -- DEATHKNIGHT + [55610] = true, -- Improved Icy Talons + [48265] = true, -- Unholy Presence + [57330] = "name", -- Horn of Winter + + -- DRUID + [783] = true, -- Travel Form + [1066] = true, -- Aquatic Form + [33943] = true, -- Flight Form + [40120] = true, -- Swift Flight Form + + -- HUNTER + [77769] = true, -- Trap Launcher + [13165] = "name", -- Aspect of the Hawk + + -- MAGE + [61316] = true, -- Dalaran Brilliance + [6117] = "name", -- Mage Armor + [30482] = "name", -- Molten Armor + + -- PALADIN + [79102] = true, -- Blessing of Might + [20165] = true, -- Seal of Insight + [465] = "name", -- Devotion Aura + [25780] = true, -- Righteous Fury + [20217] = true, -- Blessing of Kings + + -- PRIEST + [588] = true, -- Inner Fire + [49868] = true, -- Mind Quickening + [79107] = true, -- Shadow Protection + [73413] = true, -- Inner Will + [15473] = true, -- Shadowform + + -- SHAMAN + [30809] = true, -- Unleashed Rage + [51470] = true, -- Elemental Oath + [77747] = true, -- Totemic Wrath + [324] = "name", -- Lightning Shield + + -- WARLOCK + [687] = true, -- Demon Skin (Rank 1) + + [6307] = true, -- Blood Pact (Rank 1) + + [28176] = "name", -- Fel Armor + + -- WARRIOR + [2457] = true, -- Battle Stance + [71] = true, -- Defensive Stance + [2458] = true, -- Berserker Stance + + [469] = "name", -- Commanding Shout + [6673] = "name", -- Battle Shout + + -- Consumables + [17629] = true, -- Flask of Chromatic Resistance +} + +AddBlacklist(data) diff --git a/data/Cata/cooldowns.lua b/data/Cata/cooldowns.lua index 56938d6..4cad85c 100644 --- a/data/Cata/cooldowns.lua +++ b/data/Cata/cooldowns.lua @@ -9,68 +9,144 @@ local AddCooldowns = ns.data.AddCooldowns local data = { ["DEATHKNIGHT"] = { -- All - CreateSpellCooldown(45529), -- Blood Tap - CreateSpellCooldown(47568), -- Empower Rune Weapon - CreateSpellCooldown(48707), -- Anti-Magic Shell - CreateSpellCooldown(48743), -- Death Pact - CreateSpellCooldown(48792), -- Icebound Fortitude - CreateSpellCooldown(49039), -- Lichborne - CreateSpellCooldown(61999), -- Raise Ally + CreateSpellCooldown(45529), -- Blood Tap + CreateSpellCooldown(47568), -- Empower Rune Weapon + CreateSpellCooldown(48707), -- Anti-Magic Shell + CreateSpellCooldown(48743), -- Death Pact + CreateSpellCooldown(48792), -- Icebound Fortitude + CreateSpellCooldown(49039), -- Lichborne + CreateSpellCooldown(61999), -- Raise Ally -- Blood - CreateSpellCooldown(55233), -- Vampiric Blood - CreateSpellCooldown(48982), -- Rune Tap + CreateSpellCooldown(55233), -- Vampiric Blood + CreateSpellCooldown(48982), -- Rune Tap + CreateSpellCooldown(49028), -- Dancing Rune Weapon -- Frost + CreateSpellCooldown(49203), -- Hungering Cold -- Unholy - CreateSpellCooldown(49206), -- Summon Gargoyle + CreateSpellCooldown(49206), -- Summon Gargoyle + CreateSpellCooldown(49016), -- Unholy Frenzy + CreateSpellCooldown(51052), -- Anti-Magic Zone + }, + ["DRUID"] = { + CreateSpellCooldown(17116), -- Nature's Swiftness + CreateSpellCooldown(33831), -- Force of Nature + CreateSpellCooldown(48505), -- Starfall + CreateSpellCooldown(50334), -- Berserk + CreateSpellCooldown(61336), -- Survival Instincts + }, + ["HUNTER"] = { + CreateSpellCooldown(19386), -- Wyvern Sting + CreateSpellCooldown(19574), -- Bestial Wrath + CreateSpellCooldown(19577), -- Intimidation + CreateSpellCooldown(23989), -- Readiness + CreateSpellCooldown(34490), -- Silencing Shot + + -- Pet + CreateSpellCooldown(23145), -- Dive + CreateSpellCooldown(53401), -- Rabid + CreateSpellCooldown(53426), -- Lick Your Wounds + CreateSpellCooldown(53434), -- Call of the Wild + CreateSpellCooldown(53477), -- Taunt + CreateSpellCooldown(53478), -- Last Stand + CreateSpellCooldown(53480), -- Roar of Sacrifice + CreateSpellCooldown(53490), -- Bullheaded + CreateSpellCooldown(53517), -- Roar of Recovery + CreateSpellCooldown(55709), -- Heart of the Phoenix + CreateSpellCooldown(61684), -- Dash + }, + ["MAGE"] = { + CreateSpellCooldown(11129), -- Combustion + CreateSpellCooldown(11958), -- Cold Snap + CreateSpellCooldown(12042), -- Arcane Power + CreateSpellCooldown(12043), -- Presence of Mind + CreateSpellCooldown(12472), -- Icy Veins + CreateSpellCooldown(31687), -- Summon Water Elemental + CreateSpellCooldown(44572), -- Deep Freeze }, ["PALADIN"] = { -- All - CreateSpellCooldown(1022), -- Hand of Protection - CreateSpellCooldown(1044), -- Hand of Freedom - CreateSpellCooldown(6940), -- Hand of Sacrifice + CreateSpellCooldown(1022), -- Hand of Protection + CreateSpellCooldown(1044), -- Hand of Freedom + CreateSpellCooldown(6940), -- Hand of Sacrifice -- Holy - CreateSpellCooldown(31821), -- Aura Mastery - CreateSpellCooldown(31842), -- Divine Favor - CreateSpellCooldown(54428), -- Divine Plea - + CreateSpellCooldown(31821), -- Aura Mastery + CreateSpellCooldown(31842), -- Divine Favor + CreateSpellCooldown(54428), -- Divine Plea + -- Protection - CreateSpellCooldown(498), -- Divine Protection - CreateSpellCooldown(642), -- Divine Shield - CreateSpellCooldown(20925), -- Holy Shield - CreateSpellCooldown(31850), -- Ardent Defender - CreateSpellCooldown(70940), -- Divine Guardian - CreateSpellCooldown(86669), -- Guardian of Ancient Kings - + CreateSpellCooldown(498), -- Divine Protection + CreateSpellCooldown(642), -- Divine Shield + CreateSpellCooldown(20925), -- Holy Shield + CreateSpellCooldown(31850), -- Ardent Defender + CreateSpellCooldown(70940), -- Divine Guardian + CreateSpellCooldown(86669), -- Guardian of Ancient Kings + CreateSpellCooldown(64205), -- Divine Sacrifice + -- Retribution - CreateSpellCooldown(31884), -- Avenging Wrath + CreateSpellCooldown(31884), -- Avenging Wrath + CreateSpellCooldown(20066), -- Repentance }, ["PRIEST"] = { -- All - CreateSpellCooldown(586), -- Fade - CreateSpellCooldown(6346), -- Fear Ward - CreateSpellCooldown(8122), -- Psychic Scream - CreateSpellCooldown(34433), -- Shadowfiend - CreateSpellCooldown(64901), -- Hymn of Hope - CreateSpellCooldown(73325), -- Leap of Faith - + CreateSpellCooldown(586), -- Fade + CreateSpellCooldown(6346), -- Fear Ward + CreateSpellCooldown(8122), -- Psychic Scream + CreateSpellCooldown(34433), -- Shadowfiend + CreateSpellCooldown(64901), -- Hymn of Hope + CreateSpellCooldown(73325), -- Leap of Faith + CreateSpellCooldown(19236), -- Desperate Prayer + -- Discipline - CreateSpellCooldown(10060), -- Power Infusion - CreateSpellCooldown(33206), -- Pain Suppression - CreateSpellCooldown(87151), -- Archangel - CreateSpellCooldown(89485), -- Inner Focus + CreateSpellCooldown(10060), -- Power Infusion + CreateSpellCooldown(33206), -- Pain Suppression + CreateSpellCooldown(87151), -- Archangel + CreateSpellCooldown(89485), -- Inner Focus -- Holy - CreateSpellCooldown(47788), -- Guardian Spirit - CreateSpellCooldown(64843), -- Divine Hymn + CreateSpellCooldown(47788), -- Guardian Spirit + CreateSpellCooldown(64843), -- Divine Hymn + CreateSpellCooldown(724), -- Lightwell -- Shadow - CreateSpellCooldown(15286), -- Vampiric Embrace - CreateSpellCooldown(15487), -- Silence - CreateSpellCooldown(47585), -- Dispersion + CreateSpellCooldown(15286), -- Vampiric Embrace + CreateSpellCooldown(15487), -- Silence + CreateSpellCooldown(47585), -- Dispersion + CreateSpellCooldown(64044), -- Psychic Horror + }, + ["ROGUE"] = { + CreateSpellCooldown(13750), -- Adrenaline Rush + CreateSpellCooldown(13877), -- Blade Flurry + CreateSpellCooldown(14177), -- Cold Blood + CreateSpellCooldown(14183), -- Premeditation + CreateSpellCooldown(14185), -- Preparation + CreateSpellCooldown(36554), -- Shadowstep + CreateSpellCooldown(51690), -- Killing Spree + CreateSpellCooldown(51713), -- Shadow Dance + }, + ["SHAMAN"] = { + CreateSpellCooldown(16166), -- Elemental Mastery + CreateSpellCooldown(16188), -- Nature's Swiftness + CreateSpellCooldown(16190), -- Mana Tide Totem + CreateSpellCooldown(30823), -- Shamanistic Rage + CreateSpellCooldown(51490), -- Thunderstorm + CreateSpellCooldown(51533), -- Feral Spirit + CreateSpellCooldown(55198), -- Tidal Force + }, + ["WARLOCK"] = { + CreateSpellCooldown(18708), -- Fel Domination + CreateSpellCooldown(47193), -- Demonic Empowerment + }, + ["WARRIOR"] = { + CreateSpellCooldown(12292), -- Death Wish + CreateSpellCooldown(12328), -- Sweeping Strikes + CreateSpellCooldown(12809), -- Concussion Blow + CreateSpellCooldown(12975), -- Last Stand + CreateSpellCooldown(46924), -- Bladestorm + CreateSpellCooldown(46968), -- Shockwave } } diff --git a/data/Cata/spells.lua b/data/Cata/spells.lua index 5d073f0..ecab3bf 100644 --- a/data/Cata/spells.lua +++ b/data/Cata/spells.lua @@ -9,23 +9,23 @@ local AddSpells = ns.data.AddSpells local data = { ["DEATHKNIGHT"] = { -- Blood - [49222] = CreateSpellPriority(8), -- Bone Shield + [49222] = CreateSpellPriority(8), -- Bone Shield }, ["PALADIN"] = { -- Holy - [82327] = CreateSpellPriority(5), -- Holy Radiance - [86273] = CreateSpellPriority(5), -- Illuminated Healing - + [82327] = CreateSpellPriority(5), -- Holy Radiance + [86273] = CreateSpellPriority(5), -- Illuminated Healing + -- Protection - [20925] = CreateSpellPriority(7), -- Holy Shield + [20925] = CreateSpellPriority(7), -- Holy Shield }, ["PRIEST"] = { -- Discipline - [81660] = CreateSpellPriority(8), -- Evangelism (Rank 1) - [81661] = CreateSpellPriority(8), -- Evangelism (Rank 2) - [59887] = CreateSpellPriority(7), -- Borrowed Time (Rank 1) - [59888] = CreateSpellPriority(7), -- Borrowed Time (Rank 2) - [59889] = CreateSpellPriority(7), -- Borrowed Time (Rank 3) + [81660] = CreateSpellPriority(8), -- Evangelism (Rank 1) + [81661] = CreateSpellPriority(8), -- Evangelism (Rank 2) + [59887] = CreateSpellPriority(7), -- Borrowed Time (Rank 1) + [59888] = CreateSpellPriority(7), -- Borrowed Time (Rank 2) + [59889] = CreateSpellPriority(7), -- Borrowed Time (Rank 3) } } diff --git a/data/Mists/blacklist.lua b/data/Mists/blacklist.lua index dd8f8de..fc88728 100644 --- a/data/Mists/blacklist.lua +++ b/data/Mists/blacklist.lua @@ -5,48 +5,43 @@ local AddBlacklist = ns.data.AddBlacklist -------------------------------------------------- -- Mists of Pandaria Classic -------------------------------------------------- -do - local data = { - -------------------------------------------------- - -- Season of Discovery - -------------------------------------------------- - [349981] = true, -- Supercharged Chronoboon Displacer - } - - AddBlacklist(data) -end - -do - local data = { - -- DEATHKNIGHT - [55610] = true, -- Unholy Aura - - -- HUNTER - [77769] = true, -- Trap Launcher - - -- MAGE - [61316] = true, -- Dalaran Brilliance - - -- MONK - [117666] = true, -- Legacy of the Emperor - [116781] = true, -- Legacy of the White Tiger - - -- PRIEST - [49868] = true, -- Mind Quickening - - -- ROGUE - [113742] = true, -- Swiftblade's Cunning - [112942] = true, -- Shadow Focus - - - -- SHAMAN - [30809] = true, -- Unleashed Rage - [51470] = true, -- Elemental Oath - [77747] = true, -- Burning Wrath - [116956] = true, -- Grace of Air - - -- WARLOCK - [109773] = true, -- Dark Intent - } - AddBlacklist(data) -end +local data = { + [128943] = true, -- Cyclonic Inspiration + [81744] = true, -- Horde + + -- HUNTER + [77769] = true, -- Trap Launcher + + -- MONK + [117666] = true, -- Legacy of the Emperor + [116781] = true, -- Legacy of the White Tiger + [103985] = true, -- Stance of the Fierce Tiger + [115069] = true, -- Stance of the Sturdy Ox + [115070] = true, -- Stance of the Wise Serpent + + -- PALADIN + [20165] = true, -- Seal of Insight + [20154] = true, -- Seal of Righteousness + [31801] = true, -- Seal of Truth + [20164] = true, -- Seal of Justice + + -- PRIEST + [49868] = true, -- Mind Quickening + [73413] = true, -- Inner Will + + -- ROGUE + [113742] = true, -- Swiftblade's Cunning + [112942] = true, -- Shadow Focus + [108211] = true, -- Leeching Poison + [108215] = true, -- Paralytic Poison + + -- SHAMAN + [77747] = true, -- Burning Wrath + [116956] = true, -- Grace of Air + + -- WARLOCK + [109773] = true, -- Dark Intent + [108446] = true, -- Soul Link +} + +AddBlacklist(data) diff --git a/data/Mists/cooldowns.lua b/data/Mists/cooldowns.lua index 8fceedf..eff9346 100644 --- a/data/Mists/cooldowns.lua +++ b/data/Mists/cooldowns.lua @@ -9,51 +9,213 @@ local AddCooldowns = ns.data.AddCooldowns local data = { ["DRUID"] = { -- General - CreateSpellCooldown(740), -- Tranquility - CreateSpellCooldown(20484), -- Rebirth - CreateSpellCooldown(22812), -- Barkskin - CreateSpellCooldown(29166), -- Innervate + CreateSpellCooldown(740), -- Tranquility + CreateSpellCooldown(20484), -- Rebirth + CreateSpellCooldown(22812), -- Barkskin + CreateSpellCooldown(29166), -- Innervate + CreateSpellCooldown(106898), -- Stampeding Roar + + -- Talents + CreateSpellCooldown(102351), -- Cenarion Ward + CreateSpellCooldown(108238), -- Renewal + CreateSpellCooldown(132158), -- Nature's Swiftness + CreateSpellCooldown(99), -- Disorienting Roar + CreateSpellCooldown(102359), -- Mass Entanglement + CreateSpellCooldown(102793), -- Ursol's Vortex + CreateSpellCooldown(132469), -- Typhoon + CreateSpellCooldown(124974), -- Nature's Vigil + + -- Balance + CreateSpellCooldown(78675), -- Solar Beam + CreateSpellCooldown(112071), -- Celestial Alignment + CreateSpellCooldown(102560), -- Incarnation: Chosen of Elune + CreateSpellCooldown(48505), -- Starfall -- Guardian / Feral - CreateSpellCooldown(61336), -- Survival Instincts + CreateSpellCooldown(61336), -- Survival Instincts + CreateSpellCooldown(22842), -- Frenzied Regeneration CreateSpellCooldown(102795), -- Bear Hug CreateSpellCooldown(106922), -- Might of Ursoc CreateSpellCooldown(106952), -- Berkserk + CreateSpellCooldown(106839), -- Skull Bash + CreateSpellCooldown(5217), -- Tiger's Fury + CreateSpellCooldown(102543), -- Incarnation: King of the Jungle + CreateSpellCooldown(102558), -- Incarnation: Son of Ursoc -- Restoration - CreateSpellCooldown(102342), -- Ironbark + CreateSpellCooldown(102342), -- Ironbark + CreateSpellCooldown(33891), -- Incarnation: Tree of Life + + CreateSpellCooldown(1850), -- Dash + CreateSpellCooldown(5229), -- Enrage + CreateSpellCooldown(108288), -- Heart of the Wild + CreateSpellCooldown(106731), -- Incarnation + CreateSpellCooldown(5211), -- Mighty Bash + CreateSpellCooldown(16689), -- Nature's Grasp }, ["DEATHKNIGHT"] = { - CreateSpellCooldown(57330), -- Horn of Winter - CreateSpellCooldown(48792), -- Icebound Fortitude - CreateSpellCooldown(48707), -- Anti-Magic Shell - CreateSpellCooldown(49028), -- Dancing Rune Weapon - CreateSpellCooldown(49039), -- Lichborne - CreateSpellCooldown(55233), -- Vampiric Blood - CreateSpellCooldown(42650), -- Army of the Dead - CreateSpellCooldown(108200), -- Remorseless Winter + CreateSpellCooldown(57330), -- Horn of Winter + CreateSpellCooldown(48792), -- Icebound Fortitude + CreateSpellCooldown(48707), -- Anti-Magic Shell + CreateSpellCooldown(49028), -- Dancing Rune Weapon + CreateSpellCooldown(48982), -- Rune Tap + CreateSpellCooldown(49039), -- Lichborne + CreateSpellCooldown(55233), -- Vampiric Blood + CreateSpellCooldown(42650), -- Army of the Dead + CreateSpellCooldown(108200), -- Remorseless Winter + CreateSpellCooldown(47528), -- Mind Freeze + CreateSpellCooldown(49576), -- Death Grip + CreateSpellCooldown(47476), -- Strangulate + CreateSpellCooldown(61999), -- Raise Ally + CreateSpellCooldown(47568), -- Empower Rune Weapon + CreateSpellCooldown(48743), -- Death Pact + CreateSpellCooldown(51052), -- Anti-Magic Zone + CreateSpellCooldown(108199), -- Gorefiend's Grasp + CreateSpellCooldown(96268), -- Death's Advance + CreateSpellCooldown(49222), -- Bone Shield + CreateSpellCooldown(51271), -- Pillar of Frost + CreateSpellCooldown(49206), -- Summon Gargoyle + CreateSpellCooldown(77575), -- Outbreak + + CreateSpellCooldown(50034), -- Blood Rites + CreateSpellCooldown(77606), -- Dark Simulacrum + CreateSpellCooldown(50977), -- Death Gate + CreateSpellCooldown(108201), -- Desecrated Ground + CreateSpellCooldown(47481), -- Gnaw + CreateSpellCooldown(91800), -- Gnaw + CreateSpellCooldown(91797), -- Monstrous Blow + CreateSpellCooldown(46584), -- Raise Dead + CreateSpellCooldown(115989), -- Unholy Blight + CreateSpellCooldown(49016), -- Unholy Frenzy + }, + ["HUNTER"] = { + CreateSpellCooldown(19263), -- Deterrence + CreateSpellCooldown(5384), -- Feign Death + CreateSpellCooldown(1499), -- Freezing Trap + CreateSpellCooldown(34477), -- Misdirection + CreateSpellCooldown(147362), -- Counter Shot + CreateSpellCooldown(3045), -- Rapid Fire + CreateSpellCooldown(19574), -- Bestial Wrath + CreateSpellCooldown(34026), -- Kill Command + + -- Talents + CreateSpellCooldown(34490), -- Silencing Shot + CreateSpellCooldown(19386), -- Wyvern Sting + CreateSpellCooldown(109248), -- Binding Shot + CreateSpellCooldown(120679), -- Dire Beast + CreateSpellCooldown(131894), -- A Murder of Crows + CreateSpellCooldown(121818), -- Stampede + + CreateSpellCooldown(1742), -- Cower + CreateSpellCooldown(4167), -- Web + CreateSpellCooldown(19577), -- Intimidation + CreateSpellCooldown(24604), -- Furious Howl + CreateSpellCooldown(26064), -- Shell Shield + CreateSpellCooldown(50245), -- Pin + CreateSpellCooldown(50285), -- Dust Cloud + CreateSpellCooldown(50318), -- Serenity Dust + CreateSpellCooldown(50479), -- Nether Shock + CreateSpellCooldown(50518), -- Ravage + CreateSpellCooldown(50519), -- Sonic Blast + CreateSpellCooldown(50541), -- Clench + CreateSpellCooldown(51753), -- Camouflage + CreateSpellCooldown(53271), -- Master's Call + CreateSpellCooldown(53401), -- Rabid + CreateSpellCooldown(53478), -- Last Stand + CreateSpellCooldown(53480), -- Roar of Sacrifice + CreateSpellCooldown(53490), -- Bullheaded + CreateSpellCooldown(54706), -- Venom Web Spray + CreateSpellCooldown(55709), -- Heart of the Phoenix + CreateSpellCooldown(56626), -- Sting + CreateSpellCooldown(61684), -- Dash + CreateSpellCooldown(90309), -- Terrifying Roar + CreateSpellCooldown(90327), -- Lock Jaw + CreateSpellCooldown(90337), -- Bad Manner + CreateSpellCooldown(90339), -- Harden Carapace + CreateSpellCooldown(90355), -- Primal Rage + CreateSpellCooldown(91644), -- Snatch + CreateSpellCooldown(93434), -- Horn Toss + CreateSpellCooldown(93435), -- Roar of Courage + CreateSpellCooldown(96201), -- Web Wrap + CreateSpellCooldown(97229), -- Bellowing Roar + CreateSpellCooldown(109259), -- Powershot + CreateSpellCooldown(109304), -- Exhilaration + CreateSpellCooldown(120697), -- Lynx Rush + CreateSpellCooldown(126246), -- Lullaby + CreateSpellCooldown(126355), -- Paralyzing Quill + CreateSpellCooldown(126373), -- Fearless Roar + CreateSpellCooldown(126393), -- Eternal Guardian + CreateSpellCooldown(126423), -- Petrifying Gaze + CreateSpellCooldown(128997), -- Spirit Beast Blessing + }, + ["MAGE"] = { + CreateSpellCooldown(2139), -- Counterspell + CreateSpellCooldown(45438), -- Ice Block + CreateSpellCooldown(55342), -- Mirror Image + CreateSpellCooldown(66), -- Invisibility + CreateSpellCooldown(80353), -- Time Warp + CreateSpellCooldown(12051), -- Evocation + CreateSpellCooldown(108978), -- Alter Time + + -- Talents + CreateSpellCooldown(12043), -- Presence of Mind + CreateSpellCooldown(11958), -- Cold Snap + CreateSpellCooldown(110959), -- Greater Invisibility + CreateSpellCooldown(113724), -- Ring of Frost + + -- Arcane + CreateSpellCooldown(12042), -- Arcane Power + + -- Fire + CreateSpellCooldown(11129), -- Combustion + CreateSpellCooldown(31661), -- Dragon's Breath + + -- Frost + CreateSpellCooldown(12472), -- Icy Veins + CreateSpellCooldown(44572), -- Deep Freeze + CreateSpellCooldown(84714), -- Frozen Orb + CreateSpellCooldown(31687), -- Summon Water Elemental + -- CreateSpellCooldown(43987), -- Conjure Refreshment Table + + -- CreateSpellCooldown(120146), -- Ancient Portal: Dalaran + -- CreateSpellCooldown(53142), -- Portal: Dalaran + -- CreateSpellCooldown(11419), -- Portal: Darnassus + -- CreateSpellCooldown(32266), -- Portal: Exodar + -- CreateSpellCooldown(11416), -- Portal: Ironforge + -- CreateSpellCooldown(11417), -- Portal: Orgrimmar + -- CreateSpellCooldown(33691), -- Portal: Shattrath + -- CreateSpellCooldown(35717), -- Portal: Shattrath + -- CreateSpellCooldown(32267), -- Portal: Silvermoon + -- CreateSpellCooldown(49361), -- Portal: Stonard + -- CreateSpellCooldown(10059), -- Portal: Stormwind + -- CreateSpellCooldown(49360), -- Portal: Theramore + -- CreateSpellCooldown(11420), -- Portal: Thunder Bluff + -- CreateSpellCooldown(88345), -- Portal: Tol Barad + -- CreateSpellCooldown(88346), -- Portal: Tol Barad + -- CreateSpellCooldown(11418), -- Portal: Undercity + -- CreateSpellCooldown(132620), -- Portal: Vale of Eternal Blossoms + -- CreateSpellCooldown(132626), -- Portal: Vale of Eternal Blossoms }, - ["HUNTER"] = {}, - ["MAGE"] = {}, ["MONK"] = { -- General CreateSpellCooldown(115078), -- Paralysis CreateSpellCooldown(115176), -- Zen Meditation CreateSpellCooldown(117368), -- Grapple Weapon CreateSpellCooldown(137562), -- Nimble Brew + CreateSpellCooldown(116705), -- Spear Hand Strike + CreateSpellCooldown(115080), -- Touch of Death -- Talents CreateSpellCooldown(116844), -- Ring of Peace CreateSpellCooldown(119392), -- Charging Ox Wave CreateSpellCooldown(119381), -- Leg Sweep CreateSpellCooldown(122278), -- Dampen Harm - CreateSpellCooldown(122283), -- Diffuse Magic + CreateSpellCooldown(122783), -- Diffuse Magic CreateSpellCooldown(123904), -- Invoke Xuen, the White Tiger -- Brewmaster CreateSpellCooldown(115203), -- Fortifying Brew CreateSpellCooldown(115213), -- Avert Harm - CreateSpellCooldown(115308), -- Elusive Brew CreateSpellCooldown(115315), -- Summon Black Ox Statue CreateSpellCooldown(115399), -- Chi Brew CreateSpellCooldown(122057), -- Clash @@ -63,88 +225,231 @@ local data = { CreateSpellCooldown(115310), -- Revival CreateSpellCooldown(116849), -- Life Cocoon CreateSpellCooldown(116680), -- Thunder Focus Tea - + -- Windwaker CreateSpellCooldown(122470), -- Touch of Karma + CreateSpellCooldown(115288), -- Energizing Brew + + CreateSpellCooldown(101643), -- Transcendence + CreateSpellCooldown(126892), -- Zen Pilgrimage }, ["PALADIN"] = { -- General - CreateSpellCooldown(498), -- Divine Protection - CreateSpellCooldown(642), -- Divine Shield - CreateSpellCooldown(633), -- Lay on Hands - CreateSpellCooldown(1022), -- Blessing of Protection - CreateSpellCooldown(1044), -- Blessing of Freedom - CreateSpellCooldown(6940), -- Blessing of Sacrifice + CreateSpellCooldown(498), -- Divine Protection + CreateSpellCooldown(642), -- Divine Shield + CreateSpellCooldown(633), -- Lay on Hands + CreateSpellCooldown(853), -- Hammer of Justice + CreateSpellCooldown(1022), -- Blessing of Protection + CreateSpellCooldown(1044), -- Blessing of Freedom + CreateSpellCooldown(6940), -- Blessing of Sacrifice -- Talents - CreateSpellCooldown(31821), -- Aura Mastery - CreateSpellCooldown(31842), -- Divine Favor - CreateSpellCooldown(31850), -- Ardent Defender - CreateSpellCooldown(31884), -- Avenging Wrath (Holy) + CreateSpellCooldown(31821), -- Devotion Mastery + CreateSpellCooldown(31842), -- Divine Favor + CreateSpellCooldown(31850), -- Ardent Defender + CreateSpellCooldown(31884), -- Avenging Wrath (Holy) + CreateSpellCooldown(86659), -- Guardian of Ancient Kings + CreateSpellCooldown(54428), -- Divine Plea + CreateSpellCooldown(20066), -- Repentance + CreateSpellCooldown(115750), -- Blinding Light + CreateSpellCooldown(85499), -- Speed of Light + CreateSpellCooldown(114039), -- Hand of Purity + CreateSpellCooldown(105809), -- Holy Avenger + CreateSpellCooldown(114158), -- Light's Hammer + CreateSpellCooldown(114157), -- Execution Sentence + + -- Retribution + CreateSpellCooldown(96231), -- Rebuke + + CreateSpellCooldown(1038), -- Hand of Salvation }, ["PRIEST"] = { -- General - CreateSpellCooldown(586), -- Fade - CreateSpellCooldown(6346), -- Fear Ward - CreateSpellCooldown(8122), -- Psychic Scream - CreateSpellCooldown(34433), -- Shadowfiend - CreateSpellCooldown(73325), -- Leap of Faith - CreateSpellCooldown(64901), -- Hymn of Hope + CreateSpellCooldown(586), -- Fade + CreateSpellCooldown(6346), -- Fear Ward + CreateSpellCooldown(8122), -- Psychic Scream + CreateSpellCooldown(34433), -- Shadowfiend + CreateSpellCooldown(73325), -- Leap of Faith + CreateSpellCooldown(64901), -- Hymn of Hope -- Talents - CreateSpellCooldown(10060), -- Power Infusion + CreateSpellCooldown(10060), -- Power Infusion + CreateSpellCooldown(19236), -- Desperate Prayer + CreateSpellCooldown(108920), -- Void Tendrils + CreateSpellCooldown(112833), -- Spectral Guise + CreateSpellCooldown(121135), -- Cascade + CreateSpellCooldown(120517), -- Halo + CreateSpellCooldown(32375), -- Mass Dispel + CreateSpellCooldown(108968), -- Void Shift -- Discipline - CreateSpellCooldown(33206), -- Pain Suppression - CreateSpellCooldown(62618), -- Power Word: Barrier - CreateSpellCooldown(81700), -- Archangel - CreateSpellCooldown(89485), -- Inner Focus + CreateSpellCooldown(33206), -- Pain Suppression + CreateSpellCooldown(62618), -- Power Word: Barrier + CreateSpellCooldown(81700), -- Archangel + CreateSpellCooldown(89485), -- Inner Focus CreateSpellCooldown(109964), -- Spirit Shell - + -- Holy - CreateSpellCooldown(64843), -- Divine Hymn - CreateSpellCooldown(47788), -- Guardian Spirit - + CreateSpellCooldown(64843), -- Divine Hymn + CreateSpellCooldown(47788), -- Guardian Spirit + CreateSpellCooldown(724), -- Lightwell + CreateSpellCooldown(88625), -- Holy Word: Chastise + -- Shadow - CreateSpellCooldown(15487), -- Silence - CreateSpellCooldown(15286), -- Vampiric Embrace - CreateSpellCooldown(47585), -- Dispersion - CreateSpellCooldown(64044), -- Psychic Horror + CreateSpellCooldown(15487), -- Silence + CreateSpellCooldown(15286), -- Vampiric Embrace + CreateSpellCooldown(47585), -- Dispersion + CreateSpellCooldown(64044), -- Psychic Horror CreateSpellCooldown(123040), -- Mind Bender + + CreateSpellCooldown(121093), -- Gift of the Naaru + CreateSpellCooldown(108921), -- Psyfiend + }, + ["ROGUE"] = { + -- General + CreateSpellCooldown(1766), -- Kick + CreateSpellCooldown(31224), -- Cloak of Shadows + CreateSpellCooldown(5277), -- Evasion + CreateSpellCooldown(1856), -- Vanish + CreateSpellCooldown(2094), -- Blind + CreateSpellCooldown(2983), -- Sprint + CreateSpellCooldown(74001), -- Combat Readiness + CreateSpellCooldown(76577), -- Smoke Bomb + CreateSpellCooldown(121471), -- Shadow Blades + CreateSpellCooldown(114018), -- Shroud of Concealment + CreateSpellCooldown(57934), -- Tricks of the Trade + CreateSpellCooldown(14183), -- Premeditation + + -- Talents + CreateSpellCooldown(14185), -- Preparation + CreateSpellCooldown(36554), -- Shadowstep + + -- Assassination + CreateSpellCooldown(79140), -- Vendetta + + -- Combat + CreateSpellCooldown(13750), -- Adrenaline Rush + CreateSpellCooldown(13877), -- Blade Flurry + CreateSpellCooldown(51690), -- Killing Spree + + -- Subtlety + CreateSpellCooldown(51713), -- Shadow Dance + + CreateSpellCooldown(51722), -- Dismantle + CreateSpellCooldown(137619), -- Marked for Death + CreateSpellCooldown(107079), -- Quaking Palm + CreateSpellCooldown(73981), -- Redirect + CreateSpellCooldown(114842), -- Shadow Walk }, ["SHAMAN"] = { -- General - CreateSpellCooldown(8143), -- Tremor Totem - CreateSpellCooldown(32182), -- Heroism - CreateSpellCooldown(79206), -- Spiritwalker's Grace + CreateSpellCooldown(8143), -- Tremor Totem + CreateSpellCooldown(8177), -- Grounding Totem + CreateSpellCooldown(32182), -- Heroism + CreateSpellCooldown(79206), -- Spiritwalker's Grace CreateSpellCooldown(108269), -- Capacitor Totem CreateSpellCooldown(108280), -- Healing Tide Totem CreateSpellCooldown(114049), -- Ascendance CreateSpellCooldown(120668), -- Stormlash Totem + CreateSpellCooldown(57994), -- Wind Shear + CreateSpellCooldown(51514), -- Hex + CreateSpellCooldown(2825), -- Bloodlust + CreateSpellCooldown(2062), -- Earth Elemental Totem + CreateSpellCooldown(2894), -- Fire Elemental Totem + + -- Talents + CreateSpellCooldown(108271), -- Astral Shift + CreateSpellCooldown(108270), -- Stone Bulwark Totem + CreateSpellCooldown(108273), -- Windwalk Totem + CreateSpellCooldown(108285), -- Call of the Elements + CreateSpellCooldown(16166), -- Elemental Mastery + CreateSpellCooldown(16188), -- Ancestral Swiftness + CreateSpellCooldown(108281), -- Ancestral Guidance + + -- Elemental + CreateSpellCooldown(51490), -- Thunderstorm + + -- Enhancement + CreateSpellCooldown(30823), -- Shamanistic Rage + CreateSpellCooldown(51533), -- Feral Spirit + + -- Restoration + CreateSpellCooldown(98008), -- Spirit Link Totem + CreateSpellCooldown(16190), -- Mana Tide Totem + + CreateSpellCooldown(556), -- Astral Recall + CreateSpellCooldown(20608), -- Reincarnation + CreateSpellCooldown(58875), -- Spirit Walk + }, + ["WARLOCK"] = { + -- General + CreateSpellCooldown(104773), -- Unending Resolve + CreateSpellCooldown(48020), -- Demonic Circle: Teleport + CreateSpellCooldown(20707), -- Soulstone + CreateSpellCooldown(1122), -- Summon Infernal + CreateSpellCooldown(18540), -- Summon Doomguard + + -- Talents + CreateSpellCooldown(108359), -- Dark Regeneration + CreateSpellCooldown(5484), -- Howl of Terror + CreateSpellCooldown(6789), -- Mortal Coil + CreateSpellCooldown(30283), -- Shadowfury + CreateSpellCooldown(108416), -- Sacrificial Pact + CreateSpellCooldown(110913), -- Dark Bargain + CreateSpellCooldown(108482), -- Unbound Will + + -- Specializations + CreateSpellCooldown(113860), -- Dark Soul: Misery + CreateSpellCooldown(113861), -- Dark Soul: Knowledge + CreateSpellCooldown(113858), -- Dark Soul: Instability + + CreateSpellCooldown(29893), -- Create Soulwell + CreateSpellCooldown(120451), -- Flames of Xoroth + CreateSpellCooldown(108501), -- Grimoire of Service + CreateSpellCooldown(108508), -- Mannoroth's Fury + CreateSpellCooldown(698), -- Ritual of Summoning + CreateSpellCooldown(87385), -- Seed of Corruption + CreateSpellCooldown(29858), -- Soulshatter }, ["WARRIOR"] = { -- General - CreateSpellCooldown(871), -- Shield Wall - CreateSpellCooldown(1719), -- Recklessness - CreateSpellCooldown(3411), -- Intervene - CreateSpellCooldown(5246), -- Intimidating Shout - CreateSpellCooldown(23920), -- Spell Reflection - CreateSpellCooldown(64382), -- Shattering Throw - CreateSpellCooldown(97462), -- Rallying Cry + CreateSpellCooldown(871), -- Shield Wall + CreateSpellCooldown(1719), -- Recklessness + CreateSpellCooldown(3411), -- Intervene + CreateSpellCooldown(5246), -- Intimidating Shout + CreateSpellCooldown(23920), -- Spell Reflection + CreateSpellCooldown(64382), -- Shattering Throw + CreateSpellCooldown(97462), -- Rallying Cry CreateSpellCooldown(114192), -- Mocking Banner CreateSpellCooldown(114203), -- Demoralizing Banner CreateSpellCooldown(114207), -- Skull Banner + CreateSpellCooldown(6552), -- Pummel + CreateSpellCooldown(102060), -- Disrupting Shout + CreateSpellCooldown(12975), -- Last Stand + CreateSpellCooldown(118038), -- Die by the Sword + CreateSpellCooldown(18499), -- Berserker Rage + CreateSpellCooldown(6544), -- Heroic Leap + CreateSpellCooldown(1160), -- Demoralizing Shout + CreateSpellCooldown(676), -- Disarm + CreateSpellCooldown(2565), -- Shield Block + CreateSpellCooldown(12328), -- Sweeping Strikes + CreateSpellCooldown(57755), -- Heroic Throw -- Talents - CreateSpellCooldown(12292), -- Bloodbath - CreateSpellCooldown(46924), -- Bladestorm - CreateSpellCooldown(46968), -- Shockwave - CreateSpellCooldown(55694), -- Enraged Regeneration + CreateSpellCooldown(12292), -- Bloodbath + CreateSpellCooldown(46924), -- Bladestorm + CreateSpellCooldown(46968), -- Shockwave + CreateSpellCooldown(55694), -- Enraged Regeneration CreateSpellCooldown(107570), -- Storm Bolt CreateSpellCooldown(107574), -- Avatar CreateSpellCooldown(114028), -- Mass Spell Reflection CreateSpellCooldown(114030), -- Vigilance CreateSpellCooldown(118000), -- Dragon Roar + CreateSpellCooldown(112873), -- War Banner + + CreateSpellCooldown(6673), -- Battle Shout + CreateSpellCooldown(469), -- Commanding Shout + CreateSpellCooldown(107566), -- Staggering Shout } } diff --git a/data/Mists/spells.lua b/data/Mists/spells.lua index ba35444..dc58d68 100644 --- a/data/Mists/spells.lua +++ b/data/Mists/spells.lua @@ -7,20 +7,27 @@ local AddSpells = ns.data.AddSpells -- Mists of Pandaria Classic -------------------------------------------------- local data = { + ["PALADIN"] = { + -- Holy + [82327] = CreateSpellPriority(5), -- Holy Radiance + [86273] = CreateSpellPriority(5), -- Illuminated Healing + }, ["PRIEST"] = { - + -- Discipline + [81661] = CreateSpellPriority(8), -- Evangelism + [59889] = CreateSpellPriority(7), -- Borrowed Time }, ["MONK"] = { - [129914] = CreateSpellPriority(false), -- Power Strike + [115080] = CreateSpellPriority(false), -- Touch of Death [117666] = CreateSpellPriority(false), -- Legacy of the Emperor - [121125] = CreateSpellPriority(false), -- Touch of Death + [129914] = CreateSpellPriority(false), -- Power Strike -- Brewmaster - [123402] = CreateSpellPriority(9), -- Guard - [125359] = CreateSpellPriority(8), -- Tiger Power - [128636] = CreateSpellPriority(8), -- Power Guard - [128939] = CreateSpellPriority(9), -- Elusive Brew - [132365] = CreateSpellPriority(10), -- Vengeance + [118636] = CreateSpellPriority(8), -- Power Guard + [123402] = CreateSpellPriority(9), -- Guard + [125359] = CreateSpellPriority(8), -- Tiger Power + [128939] = CreateSpellPriority(9), -- Elusive Brew + [132365] = CreateSpellPriority(10), -- Vengeance } } diff --git a/data/Standard/blacklist.lua b/data/Standard/blacklist.lua index 690904c..6ecb7c9 100644 --- a/data/Standard/blacklist.lua +++ b/data/Standard/blacklist.lua @@ -5,228 +5,236 @@ local AddBlacklist = ns.data.AddBlacklist -------------------------------------------------- -- Retail -------------------------------------------------- -do - local data = { - -- Classes - -- DEMONHUNTER - [452550] = true, -- Monster Rising - [453314] = true, -- Enduring Torment - [1214887] = true, -- Cycle of Hatred - - -- EVOKER - [369459] = true, -- Source of Magic - [381753] = true, -- Blessing of the Bronze - [372014] = true, -- Visage - - -- DRUID - [400734] = true, -- After the Wildfire - - -- MAGE - [1217242] = true, -- Enlightened - - -- MONK - [383733] = true, -- Training of Niuzao - [450552] = true, -- Jade Walk - [450572] = true, -- Flow of Chi - [450574] = true, -- Flow of Chi - [443574] = true, -- Ox Stance - [443575] = true, -- Tiger Stance - [166646] = true, -- Windwalking - [129914] = true, -- Combat Wisdom - [450380] = true, -- Chi Wave - [451021] = true, -- Flurry Charge - [454494] = true, -- August Blessing - - -- PRIEST - [21562] = true, -- Power Word: Fortitude - - -- SHAMAN - [462854] = true, -- Skyfury - - -- WARRIOR - [386196] = true, -- Berserker Stance - - -- Mount - [404464] = true, -- Flight Style: Skyriding - [404468] = true, -- Flight Style: Steady - [456820] = true, -- Ride Along - - -- Mythic+ - [206150] = true, -- Challenger's Might - - -- Items - [447962] = true, -- Stance - Surekian Flourish - [447978] = true, -- Stance - Surekian Decimation - [448036] = true, -- Stance - Surekian Barrage - [448433] = true, -- Surekian Grace - [450696] = true, -- "The 50 Verses of Radiance" (Tome of Light's Devotion) - [450699] = true, -- "The 50 Verses of Radiance" (Tome of Light's Devotion) - [450706] = false, -- Inner Radiance (Tome of Light's Devotion) - [450720] = true, -- Inner Radiance (Tome of Light's Devotion) - [452226] = true, -- Spiderling (Ara-Kara Sacbrood) - [457925] = true, -- Venomous Potential (Seal of the Poisoned Pact) - [451369] = true, -- Empowering Darkness - - -- Costumes - [452533] = true, -- Magical Mischief - - -- Warband - [430191] = true, -- Warband Mentored Leveling - - -- Professions - [442981] = true, -- Weaver's Tutelage - [462810] = true, -- Weaver's Prodigy - - -- Factions - [442983] = true, -- Vizier's Savvy - [462806] = true, -- Vizier's Supremacy - [440645] = true, -- Fire Flies - [443248] = true, -- Azj-Kahet Pheromones - [462821] = true, -- General's Bulwark - - -- Consumables - ["Well Fed"] = true, - ["Hearty Well Fed"] = true, - [454188] = true, -- Hearty Well Fed - [462180] = true, -- Hearty Well Fed - [462181] = true, -- Hearty Well Fed - [462182] = true, -- Hearty Well Fed - [462183] = true, -- Hearty Well Fed - [462184] = true, -- Hearty Well Fed - [462185] = true, -- Hearty Well Fed - [462186] = true, -- Hearty Well Fed - [462187] = true, -- Hearty Well Fed - [462188] = true, -- Hearty Well Fed - [462189] = true, -- Hearty Well Fed - [462190] = true, -- Hearty Well Fed - [462191] = true, -- Hearty Well Fed - [462192] = true, -- Hearty Well Fed - [462193] = true, -- Hearty Well Fed - [462194] = true, -- Hearty Well Fed - [462195] = true, -- Hearty Well Fed - [462196] = true, -- Hearty Well Fed - [462197] = true, -- Hearty Well Fed - [462198] = true, -- Hearty Well Fed - [462199] = true, -- Hearty Well Fed - [462200] = true, -- Hearty Well Fed - [462201] = true, -- Hearty Well Fed - [462202] = true, -- Hearty Well Fed - [462203] = true, -- Hearty Well Fed - [462204] = true, -- Hearty Well Fed - [462205] = true, -- Hearty Well Fed - [462206] = true, -- Hearty Well Fed - [462207] = true, -- Hearty Well Fed - [462208] = true, -- Hearty Well Fed - [462209] = true, -- Hearty Well Fed - [462210] = true, -- Hearty Well Fed - - [431971] = true, -- Flask of Tempered Aggression - [431972] = true, -- Flask of Tempered Swiftness - [431973] = true, -- Flask of Tempered Versatility - [431974] = true, -- Flask of Tempered Mastery - - -------------------------------------------------- - -- Patch 11.0.0 - -------------------------------------------------- - -- Delves - [423852] = true, -- Dormouse Ecila - [448868] = true, -- Lucky Cursed Potion - [459058] = true, -- Miniature - [459059] = true, -- Massive - [459254] = true, -- Loader Signal - - -- Professions - [457674] = true, -- Duskthread Lining - [457666] = true, -- Dawnthread Lining - - -------------------------------------------------- - -- Patch 11.0.2 - -------------------------------------------------- - -- World Buffs - [471521] = true, -- Sign of the Explorer - - -------------------------------------------------- - -- Patch 11.0.5 - -------------------------------------------------- - -- World Buffs - [452307] = true, -- Sign of the Past - [455020] = true, -- WoW's Anniversary - - -- Events - [455050] = true, -- Blessing of the Brozen Drgonflight - - -- Items - [465642] = true, -- Blizzard Bling - - -------------------------------------------------- - -- Patch 11.0.7 - -------------------------------------------------- - -- Items - [1215495] = true, -- Cyrce's Circlet - - -------------------------------------------------- - -- Patch 11.1.5 - -------------------------------------------------- - -- World Buffs - [1214848] = true, -- Winds of Mysterious Fortune - [1227124] = true, -- Sacred Flame's Ward - - -- Horric Visions - [472265] = true, -- Vision Hunter - [472266] = true, -- Vision Hunter - [472267] = true, -- Vision Hunter - [472261] = true, -- Experimental Destabilization - [472263] = true, -- Experimental Destabilization - [472264] = true, -- Experimental Destabilization - [1215082] = true, -- Experimental Destabilization - [471497] = true, -- Singular Sanitation Expertise - [472160] = true, -- Singular Sanitation Expertise - [472152] = true, -- Singular Sanitation Expertise - [472238] = true, -- Clear Sight - [472248] = true, -- Clear Sight - [472246] = true, -- Clear Sight - [472241] = true, -- Elite Extermination - [1215782] = true, -- Elite Extermination - [1215783] = true, -- Elite Extermination - [471317] = true, -- Steeled Mind - [471318] = true, -- Steeled Mind - [471320] = true, -- Steeled Mind - [471321] = true, -- Steeled Mind - [471322] = true, -- Steeled Mind - [1216153] = true, -- Steeled Mind - [1221899] = true, -- Tattered Wold Rider Gear - - -------------------------------------------------- - -- Patch 11.1.7 - -------------------------------------------------- - -- World Buffs - [1223878] = true, -- Sign of Azeroth - - [1250683] = true, -- Collector's Bounty - [1250685] = true, -- Greedy Emisarry - - [1229050] = true, -- Mastery of Timeways - [1220736] = true, -- Mysterious Revivification - [1218497] = true, -- Mysterious Tenacity - [1218388] = true, -- Mysterious Celerity - [1218454] = true, -- Mysterious Swiftstrike - - -------------------------------------------------- - -- Patch 11.2.0 - -------------------------------------------------- - [1244018] = true, -- Tazavesh, the Vailed Market, Hard Mode - [1246366] = true, -- Stree Smart - - -------------------------------------------------- - -- Legion Remix - -------------------------------------------------- - [1232454] = true, -- Initife Power - [1238465] = true, -- Heroic World Tier - [1213439] = true, -- WoW Remix: Legion - - [440361] = true, -- Timeless Scroll of the Wild - - } - - AddBlacklist(data) -end +local data = { + -- Classes + -- DEMONHUNTER + [452550] = true, -- Monster Rising + [453314] = true, -- Enduring Torment + [1214887] = true, -- Cycle of Hatred + + -- EVOKER + [369459] = true, -- Source of Magic + [381753] = true, -- Blessing of the Bronze + [372014] = true, -- Visage + + -- DRUID + [400734] = true, -- After the Wildfire + [210053] = true, -- Mount Form + + -- MAGE + [1217242] = true, -- Enlightened + + -- MONK + [383733] = true, -- Training of Niuzao + [450552] = true, -- Jade Walk + [450572] = true, -- Flow of Chi + [450574] = true, -- Flow of Chi + [443574] = true, -- Ox Stance + [443575] = true, -- Tiger Stance + [166646] = true, -- Windwalking + [129914] = true, -- Combat Wisdom + [450380] = true, -- Chi Wave + [451021] = true, -- Flurry Charge + [454494] = true, -- August Blessing + + -- PALADIN + [53563] = true, -- Beacon of Light + [156910] = true, -- Beacon of Faith + [317920] = true, -- Concentration Aura + + -- PRIEST + [194384] = true, -- Atonement + + -- ROGUE + [315584] = true, -- Instant Poison + [381637] = true, -- Atrophic Poison + [381664] = true, -- Amplifying Poison + + -- SHAMAN + [462854] = true, -- Skyfury + + -- WARRIOR + [386196] = true, -- Berserker Stance + [386164] = true, -- Battle Stance + [386208] = true, -- Defensive Stance + + -- Mount + [404464] = true, -- Flight Style: Skyriding + [404468] = true, -- Flight Style: Steady + [456820] = true, -- Ride Along + + -- Mythic+ + [206150] = true, -- Challenger's Might + + -- Items + [447962] = true, -- Stance - Surekian Flourish + [447978] = true, -- Stance - Surekian Decimation + [448036] = true, -- Stance - Surekian Barrage + [448433] = true, -- Surekian Grace + [450696] = true, -- "The 50 Verses of Radiance" (Tome of Light's Devotion) + [450699] = true, -- "The 50 Verses of Radiance" (Tome of Light's Devotion) + [450706] = false, -- Inner Radiance (Tome of Light's Devotion) + [450720] = true, -- Inner Radiance (Tome of Light's Devotion) + [452226] = true, -- Spiderling (Ara-Kara Sacbrood) + [457925] = true, -- Venomous Potential (Seal of the Poisoned Pact) + [451369] = true, -- Empowering Darkness + + -- Costumes + [452533] = true, -- Magical Mischief + + -- Warband + [430191] = true, -- Warband Mentored Leveling + + -- Professions + [442981] = true, -- Weaver's Tutelage + [462810] = true, -- Weaver's Prodigy + + -- Factions + [442983] = true, -- Vizier's Savvy + [462806] = true, -- Vizier's Supremacy + [440645] = true, -- Fire Flies + [443248] = true, -- Azj-Kahet Pheromones + [462821] = true, -- General's Bulwark + + -- Consumables + [454188] = true, -- Hearty Well Fed + [462180] = true, -- Hearty Well Fed + [462181] = true, -- Hearty Well Fed + [462182] = true, -- Hearty Well Fed + [462183] = true, -- Hearty Well Fed + [462184] = true, -- Hearty Well Fed + [462185] = true, -- Hearty Well Fed + [462186] = true, -- Hearty Well Fed + [462187] = true, -- Hearty Well Fed + [462188] = true, -- Hearty Well Fed + [462189] = true, -- Hearty Well Fed + [462190] = true, -- Hearty Well Fed + [462191] = true, -- Hearty Well Fed + [462192] = true, -- Hearty Well Fed + [462193] = true, -- Hearty Well Fed + [462194] = true, -- Hearty Well Fed + [462195] = true, -- Hearty Well Fed + [462196] = true, -- Hearty Well Fed + [462197] = true, -- Hearty Well Fed + [462198] = true, -- Hearty Well Fed + [462199] = true, -- Hearty Well Fed + [462200] = true, -- Hearty Well Fed + [462201] = true, -- Hearty Well Fed + [462202] = true, -- Hearty Well Fed + [462203] = true, -- Hearty Well Fed + [462204] = true, -- Hearty Well Fed + [462205] = true, -- Hearty Well Fed + [462206] = true, -- Hearty Well Fed + [462207] = true, -- Hearty Well Fed + [462208] = true, -- Hearty Well Fed + [462209] = true, -- Hearty Well Fed + [462210] = true, -- Hearty Well Fed + + [431971] = true, -- Flask of Tempered Aggression + [431972] = true, -- Flask of Tempered Swiftness + [431973] = true, -- Flask of Tempered Versatility + [431974] = true, -- Flask of Tempered Mastery + + -------------------------------------------------- + -- Patch 11.0.0 + -------------------------------------------------- + -- Delves + [423852] = true, -- Dormouse Ecila + [448868] = true, -- Lucky Cursed Potion + [459058] = true, -- Miniature + [459059] = true, -- Massive + [459254] = true, -- Loader Signal + + -- Professions + [457674] = true, -- Duskthread Lining + [457666] = true, -- Dawnthread Lining + + -------------------------------------------------- + -- Patch 11.0.2 + -------------------------------------------------- + -- World Buffs + [471521] = true, -- Sign of the Explorer + + -------------------------------------------------- + -- Patch 11.0.5 + -------------------------------------------------- + -- World Buffs + [452307] = true, -- Sign of the Past + [455020] = true, -- WoW's Anniversary + + -- Events + [455050] = true, -- Blessing of the Brozen Drgonflight + + -- Items + [465642] = true, -- Blizzard Bling + + -------------------------------------------------- + -- Patch 11.0.7 + -------------------------------------------------- + -- Items + [1215495] = true, -- Cyrce's Circlet + + -------------------------------------------------- + -- Patch 11.1.5 + -------------------------------------------------- + -- World Buffs + [1214848] = true, -- Winds of Mysterious Fortune + [1227124] = true, -- Sacred Flame's Ward + + -- Horric Visions + [472265] = true, -- Vision Hunter + [472266] = true, -- Vision Hunter + [472267] = true, -- Vision Hunter + [472261] = true, -- Experimental Destabilization + [472263] = true, -- Experimental Destabilization + [472264] = true, -- Experimental Destabilization + [1215082] = true, -- Experimental Destabilization + [471497] = true, -- Singular Sanitation Expertise + [472160] = true, -- Singular Sanitation Expertise + [472152] = true, -- Singular Sanitation Expertise + [472238] = true, -- Clear Sight + [472248] = true, -- Clear Sight + [472246] = true, -- Clear Sight + [472241] = true, -- Elite Extermination + [1215782] = true, -- Elite Extermination + [1215783] = true, -- Elite Extermination + [471317] = true, -- Steeled Mind + [471318] = true, -- Steeled Mind + [471320] = true, -- Steeled Mind + [471321] = true, -- Steeled Mind + [471322] = true, -- Steeled Mind + [1216153] = true, -- Steeled Mind + [1221899] = true, -- Tattered Wold Rider Gear + + -------------------------------------------------- + -- Patch 11.1.7 + -------------------------------------------------- + -- World Buffs + [1223878] = true, -- Sign of Azeroth + + [1250683] = true, -- Collector's Bounty + [1250685] = true, -- Greedy Emisarry + + [1229050] = true, -- Mastery of Timeways + [1220736] = true, -- Mysterious Revivification + [1218497] = true, -- Mysterious Tenacity + [1218388] = true, -- Mysterious Celerity + [1218454] = true, -- Mysterious Swiftstrike + + -------------------------------------------------- + -- Patch 11.2.0 + -------------------------------------------------- + [1244018] = true, -- Tazavesh, the Vailed Market, Hard Mode + [1246366] = true, -- Stree Smart + + -------------------------------------------------- + -- Legion Remix + -------------------------------------------------- + [1232454] = true, -- Initife Power + [1238465] = true, -- Heroic World Tier + [1213439] = true, -- WoW Remix: Legion + + [440361] = true, -- Timeless Scroll of the Wild +} + +AddBlacklist(data) diff --git a/data/Standard/cooldowns.lua b/data/Standard/cooldowns.lua index 13449c9..dc1ac4e 100644 --- a/data/Standard/cooldowns.lua +++ b/data/Standard/cooldowns.lua @@ -15,12 +15,16 @@ local data = { CreateSpellCooldown(207684), -- Sigil of Misery CreateSpellCooldown(370965), -- The Hunt CreateSpellCooldown(390163), -- Sigil of Spite + CreateSpellCooldown(183752), -- Disrupt + CreateSpellCooldown(179057), -- Chaos Nova + CreateSpellCooldown(217832), -- Imprison -- Havoc - CreateSpellCooldown(196555), -- Netherwalk CreateSpellCooldown(198589), -- Blur CreateSpellCooldown(258925), -- Fel Barrage - + CreateSpellCooldown(191427), -- Metamorphosis (Havoc) + CreateSpellCooldown(198013), -- Eye Beam + -- Vengeance CreateSpellCooldown(202137), -- Sigil of Silence CreateSpellCooldown(202138), -- Sigil of Chains @@ -28,46 +32,77 @@ local data = { CreateSpellCooldown(207407), -- Soul Carver CreateSpellCooldown(263648), -- Soul Barrier CreateSpellCooldown(320341), -- Bulk Extraction + CreateSpellCooldown(212084), -- Fel Devastation + + CreateSpellCooldown(258860), -- Essence Break + CreateSpellCooldown(1234441), -- Power Siphon + CreateSpellCooldown(1241937), -- Soul Immolation + CreateSpellCooldown(1226339), -- Spinning Death + CreateSpellCooldown(1235552), -- Sunder + CreateSpellCooldown(1234195), -- Void Nova }, ["DEATHKNIGHT"] = { -- General CreateSpellCooldown(48707), -- Anti-Magic Shell CreateSpellCooldown(61999), -- Raise Ally + CreateSpellCooldown(47528), -- Mind Freeze + CreateSpellCooldown(49576), -- Death Grip + CreateSpellCooldown(48265), -- Death's Advance + CreateSpellCooldown(49039), -- Lichborne -- Talents CreateSpellCooldown(51052), -- Anti-Magic Zone - + CreateSpellCooldown(108199), -- Gorefiend's Grasp + CreateSpellCooldown(221562), -- Asphyxiate + -- Blood CreateSpellCooldown(48743), -- Death Pact CreateSpellCooldown(48792), -- Icebound Fortitude CreateSpellCooldown(49028), -- Dancing Rune Weapon CreateSpellCooldown(55233), -- Vampiric Blood CreateSpellCooldown(219809), -- Tombstone - CreateSpellCooldown(383269), -- Abomination Limb - + CreateSpellCooldown(1263569), -- Abomination Limb + -- Frost CreateSpellCooldown(47568), -- Empower Rune Weapon CreateSpellCooldown(51271), -- Pillar of Frost CreateSpellCooldown(152279), -- Breath of Sindragosa CreateSpellCooldown(196770), -- Remorseless Winter CreateSpellCooldown(279302), -- Forstwyrm's Fury - + -- Unholy CreateSpellCooldown(42650), -- Army of the Dead - CreateSpellCooldown(49206), -- Summon Gargoyle - CreateSpellCooldown(455395), -- Rise Abomination + CreateSpellCooldown(207289), -- Unholy Assault + CreateSpellCooldown(275699), -- Apocalypse + CreateSpellCooldown(1233448), -- Dark Transformation + -- CreateSpellCooldown(455395), -- Rise Abomination + + CreateSpellCooldown(207167), -- Blinding Sleet + CreateSpellCooldown(205223), -- Consumption + CreateSpellCooldown(1263824), -- Consumption + CreateSpellCooldown(50977), -- Death Gate + CreateSpellCooldown(46585), -- Raise Dead + CreateSpellCooldown(439843), -- Reaper's Mark + CreateSpellCooldown(327574), -- Sacrificial Pact + CreateSpellCooldown(190778), -- Sindragosa's Fury + CreateSpellCooldown(390279), -- Vile Contagion + CreateSpellCooldown(212552), -- Wraith Walk }, ["DRUID"] = { -- General CreateSpellCooldown(20484), -- Rebirth CreateSpellCooldown(22812), -- Barkskin - + -- Talents CreateSpellCooldown(29166), -- Innervate CreateSpellCooldown(102359), -- Mass Entanglement CreateSpellCooldown(102793), -- Ursol's Vortex CreateSpellCooldown(108238), -- Renewal CreateSpellCooldown(124974), -- Mature's Vigil + CreateSpellCooldown(106839), -- Skull Bash + CreateSpellCooldown(99), -- Incapacitating Roar + CreateSpellCooldown(132469), -- Typhoon + CreateSpellCooldown(106898), -- Stampeding Roar -- All CreateSpellCooldown(391528), -- Convoke the Spirits @@ -79,9 +114,12 @@ local data = { CreateSpellCooldown(202425, false), -- Warrior of Elune CreateSpellCooldown(202770), -- Fury of Elune CreateSpellCooldown(205636), -- Force of Nature - + -- Feral - + CreateSpellCooldown(5217), -- Tiger's Fury + CreateSpellCooldown(106951), -- Berserk + CreateSpellCooldown(102543), -- Incarnation: Avatar of Ashamane + -- Guardian CreateSpellCooldown(50334), -- Berserkl: Ravage CreateSpellCooldown(61336), -- Survival Instincts @@ -89,15 +127,103 @@ local data = { CreateSpellCooldown(102558), -- Incarnation: Guardian of Ursoc CreateSpellCooldown(200851), -- Rage of the Sleeper CreateSpellCooldown(204066), -- Lunar Beam - + -- Restoration CreateSpellCooldown(740), -- Tranquility CreateSpellCooldown(33891), -- Incarnation: Tree of Life CreateSpellCooldown(102342), -- Ironbark CreateSpellCooldown(132158), -- Nature's Swiftness - CreateSpellCooldown(203651), -- Overgrowth + + CreateSpellCooldown(155835), -- Bristling Fur + CreateSpellCooldown(274837), -- Feral Frenzy + CreateSpellCooldown(1243807), -- Frantic Frenzy + CreateSpellCooldown(22842), -- Frenzied Regeneration + CreateSpellCooldown(1261867), -- Heart of the Wild + CreateSpellCooldown(5211), -- Mighty Bash + CreateSpellCooldown(1253799), -- Sundering Roar + CreateSpellCooldown(252216), -- Tiger Dash + }, + ["EVOKER"] = { + -- General + CreateSpellCooldown(351338), -- Quell + CreateSpellCooldown(363916), -- Obsidian Scales + CreateSpellCooldown(370665), -- Rescue + CreateSpellCooldown(374227), -- Zephyr + CreateSpellCooldown(358385), -- Landslide + CreateSpellCooldown(374968), -- Time Spiral + CreateSpellCooldown(370553), -- Tip the Scales + + -- Devastation + CreateSpellCooldown(375087), -- Dragonrage + CreateSpellCooldown(357210), -- Deep Breath + + -- Preservation + CreateSpellCooldown(363534), -- Rewind + CreateSpellCooldown(359816), -- Dream Flight + CreateSpellCooldown(370960), -- Emerald Communion + CreateSpellCooldown(357170), -- Time Dilation + + -- Augmentation + CreateSpellCooldown(403631), -- Breath of Eons + CreateSpellCooldown(360827), -- Blistering Scales + + CreateSpellCooldown(408233), -- Bestow Weyrnstone + CreateSpellCooldown(374251), -- Cauterizing Flame + CreateSpellCooldown(1259173), -- Duplicate + CreateSpellCooldown(1259174), -- Duplicate + CreateSpellCooldown(1259175), -- Duplicate + CreateSpellCooldown(390386), -- Fury of the Aspects + CreateSpellCooldown(358267), -- Hover + CreateSpellCooldown(372048), -- Oppressing Roar + CreateSpellCooldown(406732), -- Spatial Paradox + CreateSpellCooldown(370537), -- Stasis + CreateSpellCooldown(368970), -- Tail Swipe + CreateSpellCooldown(404977), -- Time Skip + CreateSpellCooldown(368412), -- Time of Need + CreateSpellCooldown(396286), -- Upheaval + }, + ["HUNTER"] = { + -- General + CreateSpellCooldown(186265), -- Aspect of the Turtle + CreateSpellCooldown(109304), -- Exhilaration + CreateSpellCooldown(264735), -- Survival of the Fittest + CreateSpellCooldown(5384), -- Feign Death + CreateSpellCooldown(186257), -- Aspect of the Cheetah + CreateSpellCooldown(147362), -- Counter Shot + CreateSpellCooldown(187707), -- Muzzle + CreateSpellCooldown(187650), -- Freezing Trap + CreateSpellCooldown(109248), -- Binding Shot + CreateSpellCooldown(19577), -- Intimidation + CreateSpellCooldown(34477), -- Misdirection + + -- Beast Mastery + CreateSpellCooldown(19574), -- Bestial Wrath + CreateSpellCooldown(359844), -- Call of the Wild + + -- Marksmanship + CreateSpellCooldown(288613), -- Trueshot + + -- Survival + CreateSpellCooldown(360952), -- Coordinated Assault + + CreateSpellCooldown(131894), -- A Murder of Crows + CreateSpellCooldown(186289), -- Aspect of the Eagle + CreateSpellCooldown(321530), -- Bloodshed + CreateSpellCooldown(1261193), -- Boomstick + CreateSpellCooldown(186387), -- Bursting Shot + CreateSpellCooldown(199483), -- Camouflage + CreateSpellCooldown(375891), -- Chakram + CreateSpellCooldown(203415), -- Fury of the Eagle + CreateSpellCooldown(466904), -- Harrier's Cry + CreateSpellCooldown(236776), -- High Explosive Trap + CreateSpellCooldown(462031), -- Implosive Trap + CreateSpellCooldown(53271), -- Master's Call + CreateSpellCooldown(264667), -- Primal Rage + CreateSpellCooldown(53480), -- Roar of Sacrifice + CreateSpellCooldown(360966), -- Spearhead + CreateSpellCooldown(1250646), -- Takedown + CreateSpellCooldown(260243), -- Volley }, - ["EVOKER"] = {}, ["MAGE"] = { -- Talents CreateSpellCooldown(31661), -- Dragon's Breath @@ -108,11 +234,34 @@ local data = { CreateSpellCooldown(157980), -- Supernova CreateSpellCooldown(382440), -- Shifting Power CreateSpellCooldown(414660), -- Mass Barrier - + CreateSpellCooldown(2139), -- Counterspell + CreateSpellCooldown(342245), -- Alter Time + CreateSpellCooldown(113724), -- Ring of Frost + + -- Arcane + CreateSpellCooldown(365350), -- Arcane Surge + CreateSpellCooldown(321507), -- Touch of the Magi + CreateSpellCooldown(12051), -- Evocation + CreateSpellCooldown(205025), -- Presence of Mind + + -- Fire + CreateSpellCooldown(190319), -- Combustion + -- Frost CreateSpellCooldown(12472), -- Icy Veins CreateSpellCooldown(84714), -- Frozen Orb CreateSpellCooldown(235219), -- Cold Snap + CreateSpellCooldown(31687), -- Summon Water Elemental + + CreateSpellCooldown(235870), -- Alexstrasza's Fury + CreateSpellCooldown(214634), -- Ebonbolt + CreateSpellCooldown(414658), -- Ice Cold + CreateSpellCooldown(66), -- Invisibility + CreateSpellCooldown(224968), -- Mark of Aluneth + CreateSpellCooldown(414664), -- Mass Invisibility + CreateSpellCooldown(383121), -- Mass Polymorph + CreateSpellCooldown(153561), -- Meteor + CreateSpellCooldown(205021), -- Ray of Frost }, ["MONK"] = { -- Talents @@ -125,25 +274,43 @@ local data = { CreateSpellCooldown(123986, false), -- Chi Burst CreateSpellCooldown(322109), -- Touch of Death CreateSpellCooldown(324312, false), -- Clash + CreateSpellCooldown(115078), -- Paralysis + CreateSpellCooldown(119381), -- Leg Sweep -- Mistweaver - CreateSpellCooldown(115310), -- Revival - CreateSpellCooldown(116849), -- Life Cocoon - CreateSpellCooldown(197908), -- Mana Tea - CreateSpellCooldown(322118), -- Invoke Yu'lon, the Jade Serpent - CreateSpellCooldown(325197), -- Invoke Chi-ji, The Red Crane - CreateSpellCooldown(388193), -- Faeline Stomp - CreateSpellCooldown(388615), -- Restoral + CreateSpellCooldown(115310), -- Revival + CreateSpellCooldown(116849), -- Life Cocoon + CreateSpellCooldown(197908), -- Mana Tea + CreateSpellCooldown(322118), -- Invoke Yu'lon, the Jade Serpent + CreateSpellCooldown(325197), -- Invoke Chi-ji, The Red Crane + CreateSpellCooldown(388193), -- Faeline Stomp + CreateSpellCooldown(388615), -- Restoral + CreateSpellCooldown(116680), -- Thunder Focus Tea -- Brewmaster CreateSpellCooldown(119582, false), -- Purifiying Brew CreateSpellCooldown(132578), -- Invoke Niuzao, the Black Ox CreateSpellCooldown(115399), -- Black Ox Brew + CreateSpellCooldown(115315), -- Summon Black Ox Statue CreateSpellCooldown(322507), -- Celestial Brew CreateSpellCooldown(115176), -- Zen Meditation CreateSpellCooldown(325153), -- Exploding Keg CreateSpellCooldown(387184), -- Weapons of Order CreateSpellCooldown(1241059), -- Celestial Infusion + + -- Windwalker + CreateSpellCooldown(137639), -- Storm, Earth, and Fire + CreateSpellCooldown(123904), -- Invoke Xuen, the White Tiger + CreateSpellCooldown(122470), -- Touch of Karma + + CreateSpellCooldown(325216), -- Bonedust Brew + CreateSpellCooldown(386276), -- Bonedust Brew + CreateSpellCooldown(443028), -- Celestial Conduit + CreateSpellCooldown(326860), -- Fallen Order + CreateSpellCooldown(196725), -- Refreshing Jade Wind + CreateSpellCooldown(392983), -- Strike of the Windlord + CreateSpellCooldown(152175), -- Whirling Dragon Punch + CreateSpellCooldown(1249625), -- Zenith }, ["PALADIN"] = { CreateSpellCooldown(633), -- Lay on Hands @@ -159,17 +326,16 @@ local data = { CreateSpellCooldown(96231, false), -- Rebuke CreateSpellCooldown(115750), -- Blinding Light CreateSpellCooldown(375576), -- Divine Toll - + -- Holy CreateSpellCooldown(498), -- Divine Protection - CreateSpellCooldown(85222), -- Aura Mastery + CreateSpellCooldown(31821), -- Aura Mastery CreateSpellCooldown(114165, false), -- Holy Prism CreateSpellCooldown(148039, false), -- Barrier of Faith CreateSpellCooldown(200025, false), -- Beacon of Virtue - CreateSpellCooldown(200672), -- Tyr's Deliverance CreateSpellCooldown(388007), -- Blessim of Summer - CreateSpellCooldown(414273), -- Hand of Divinity - + CreateSpellCooldown(216331), -- Avenging Crusader + -- Protection CreateSpellCooldown(31850), -- Ardent Defender CreateSpellCooldown(86659), -- Guardian of Ancient Kings @@ -178,12 +344,17 @@ local data = { CreateSpellCooldown(378974), -- Bastion of Light CreateSpellCooldown(389539), -- Sentinel CreateSpellCooldown(387174), -- Eye of Tyr - + -- Retribution CreateSpellCooldown(403876), -- Divine Protection CreateSpellCooldown(255937, false), -- Wake of Ashes CreateSpellCooldown(343721), -- Final Reckoning CreateSpellCooldown(343527, false), -- Execution Sentence + + CreateSpellCooldown(190784), -- Divine Steed + CreateSpellCooldown(405397), -- Hammer of Retribution + CreateSpellCooldown(105809), -- Holy Avenger + CreateSpellCooldown(432459), -- Holy Bulwark }, ["PRIEST"] = { -- All @@ -195,14 +366,14 @@ local data = { CreateSpellCooldown(10060), -- Power Infusion CreateSpellCooldown(15286), -- Vampiric Embrace CreateSpellCooldown(32375), -- Mass Dispel - CreateSpellCooldown(34433), -- Shadowfiennd CreateSpellCooldown(73325), -- Leap of Faith - CreateSpellCooldown(108920), -- Void Tendrils + -- CreateSpellCooldown(108920), -- Void Tendrils CreateSpellCooldown(108968), -- Void Shift CreateSpellCooldown(120517), -- Halo (Disciple / Holy) CreateSpellCooldown(120644), -- Halo (Shadow) CreateSpellCooldown(205364), -- Dominate Mind CreateSpellCooldown(373481, false), -- Power Word: Life + CreateSpellCooldown(375901), -- Mindgames -- Discipline CreateSpellCooldown(33206), -- Pain Suppression @@ -228,8 +399,50 @@ local data = { CreateSpellCooldown(47585), -- Dispersion CreateSpellCooldown(64044), -- Psychic Horror CreateSpellCooldown(200174), -- Mindbender - CreateSpellCooldown(228260), -- Void Eruption CreateSpellCooldown(391109), -- Dark Ascension + CreateSpellCooldown(263165), -- Void Torrent + + CreateSpellCooldown(472433), -- Evangelism + CreateSpellCooldown(265202), -- Holy Word: Salvation + CreateSpellCooldown(421453), -- Ultimate Penitence + CreateSpellCooldown(228260), -- Voidform + }, + ["ROGUE"] = { + -- General + CreateSpellCooldown(1766), -- Kick + CreateSpellCooldown(31224), -- Cloak of Shadows + CreateSpellCooldown(5277), -- Evasion + CreateSpellCooldown(1856), -- Vanish + CreateSpellCooldown(2094), -- Blind + CreateSpellCooldown(2983), -- Sprint + CreateSpellCooldown(114018), -- Shroud of Concealment + CreateSpellCooldown(57934), -- Tricks of the Trade + CreateSpellCooldown(36554), -- Shadowstep + + -- Assassination + CreateSpellCooldown(360194), -- Deathmark + + -- Outlaw + CreateSpellCooldown(13750), -- Adrenaline Rush + CreateSpellCooldown(51690), -- Killing Spree + + -- Subtlety + CreateSpellCooldown(121471), -- Shadow Blades + CreateSpellCooldown(185313), -- Shadow Dance + + CreateSpellCooldown(315341), -- Between the Eyes + CreateSpellCooldown(271877), -- Blade Rush + CreateSpellCooldown(426591), -- Goremaw's Bite + CreateSpellCooldown(195457), -- Grappling Hook + CreateSpellCooldown(381989), -- Keep It Rolling + CreateSpellCooldown(385627), -- Kingsbane + CreateSpellCooldown(137619), -- Marked for Death + CreateSpellCooldown(1277933), -- Preparation + CreateSpellCooldown(107079), -- Quaking Palm + CreateSpellCooldown(315508), -- Roll the Bones + CreateSpellCooldown(1214909), -- Roll the Bones + CreateSpellCooldown(385408), -- Sepsis + CreateSpellCooldown(1298826), -- Thistle Tea }, ["SHAMAN"] = { -- General @@ -243,6 +456,11 @@ local data = { CreateSpellCooldown(192077), -- Wind Rush Totem CreateSpellCooldown(198103), -- Earth Elemental CreateSpellCooldown(383013), -- Poison Cleansing Totem + CreateSpellCooldown(57994), -- Wind Shear + CreateSpellCooldown(51514), -- Hex + CreateSpellCooldown(2825), -- Bloodlust + CreateSpellCooldown(32182), -- Heroism + CreateSpellCooldown(51490), -- Thunderstorm -- Elemental CreateSpellCooldown(114050), -- Ascendance @@ -255,7 +473,6 @@ local data = { CreateSpellCooldown(98008), -- Spirit Link Totem CreateSpellCooldown(108280), -- Healing Tide Totem CreateSpellCooldown(114052), -- Ascendance - CreateSpellCooldown(157153), -- Cloudburst Totem CreateSpellCooldown(198838), -- Eartheb Wall Totem CreateSpellCooldown(207399), -- Ancestral Protection Totem @@ -264,20 +481,96 @@ local data = { CreateSpellCooldown(114051), -- Ascendance CreateSpellCooldown(197214), -- Sundering CreateSpellCooldown(384352), -- Doom Winds + + CreateSpellCooldown(556), -- Astral Recall + CreateSpellCooldown(305483), -- Lightning Lasso + CreateSpellCooldown(378081), -- Nature's Swiftness + CreateSpellCooldown(20608), -- Reincarnation + CreateSpellCooldown(58875), -- Spirit Walk + CreateSpellCooldown(383019), -- Tranquil Air Totem + }, + ["WARLOCK"] = { + -- General + CreateSpellCooldown(5484), -- Howl of Terror + CreateSpellCooldown(6789), -- Mortal Coil + CreateSpellCooldown(20707), -- Soulstone + CreateSpellCooldown(30283), -- Shadowfury + CreateSpellCooldown(48020), -- Demonic Circle: Teleport + CreateSpellCooldown(104773), -- Unending Resolve + CreateSpellCooldown(108416), -- Dark Pact + CreateSpellCooldown(333889), -- Fel Domination + + -- Affliction + CreateSpellCooldown(205180), -- Summon Darkglare + + -- Demonology + CreateSpellCooldown(265187), -- Summon Demonic Tyrant + CreateSpellCooldown(111898), -- Grimoire: Felguard + + -- Destruction + CreateSpellCooldown(1122), -- Summon Infernal + + CreateSpellCooldown(698), -- Ritual of Summoning + CreateSpellCooldown(6353), -- Soul Fire + CreateSpellCooldown(29893), -- Create Soulwell + CreateSpellCooldown(205179), -- Phantom Singularity + CreateSpellCooldown(267171), -- Demonic Strength + CreateSpellCooldown(267217), -- Nether Portal + CreateSpellCooldown(328774), -- Amplify Curse + CreateSpellCooldown(342601), -- Ritual of Doom + CreateSpellCooldown(386696), -- Decimating Bolt + CreateSpellCooldown(386833), -- Guillotine + CreateSpellCooldown(386997), -- Soul Rot + CreateSpellCooldown(387976), -- Dimensional Rift + CreateSpellCooldown(417537), -- Oblivion + CreateSpellCooldown(1257052), -- Dark Harvest + CreateSpellCooldown(1271802), -- Blight of Tongues + CreateSpellCooldown(1276452), -- Grimoire: Imp Lord + CreateSpellCooldown(1276467), -- Grimoire: Fel Ravager + CreateSpellCooldown(1276672), -- Summon Doomguard }, ["WARRIOR"] = { -- Talent + CreateSpellCooldown(3411), -- Intervene + CreateSpellCooldown(5246), -- Intimidating Shout + CreateSpellCooldown(6552), -- Pummel + CreateSpellCooldown(18499), -- Berserker Rage + CreateSpellCooldown(23920), -- Spell Reflection + CreateSpellCooldown(46968), -- Shockwave CreateSpellCooldown(97462), -- Rallying Cry - -- CreateSpellCooldown(401150), -- Avatar - CreateSpellCooldown(384318), -- Thunderous Roar + CreateSpellCooldown(107570), -- Storm Bolt + CreateSpellCooldown(107574), -- Avatar CreateSpellCooldown(376079), -- Champion's Spear - + CreateSpellCooldown(383762), -- Bitter Immunity + CreateSpellCooldown(384318), -- Thunderous Roar + -- Arms + CreateSpellCooldown(118038), -- Die by the Sword + CreateSpellCooldown(167105), -- Colossus Smash + CreateSpellCooldown(227847), -- Bladestorm + -- Fury + CreateSpellCooldown(1719), -- Recklessness + CreateSpellCooldown(184364), -- Enraged Regeneration + -- Protection CreateSpellCooldown(871), -- Shield Wall CreateSpellCooldown(12975), -- Last Stand CreateSpellCooldown(228920), -- Ravager + CreateSpellCooldown(1160), -- Demoralizing Shout + + CreateSpellCooldown(1161), -- Challenging Shout + CreateSpellCooldown(6544), -- Heroic Leap + CreateSpellCooldown(12323), -- Piercing Howl + CreateSpellCooldown(64382), -- Shattering Throw + CreateSpellCooldown(262161), -- Warbreaker + CreateSpellCooldown(384100), -- Berserker Shout + CreateSpellCooldown(384110), -- Wrecking Throw + CreateSpellCooldown(385059), -- Odyn's Fury + CreateSpellCooldown(385952), -- Shield Charge + CreateSpellCooldown(386071), -- Disrupting Shout + CreateSpellCooldown(392966), -- Spell Block + CreateSpellCooldown(1223268), -- Neltharion's Fury } } diff --git a/data/Standard/spells.lua b/data/Standard/spells.lua index 87ce8b3..db972b7 100644 --- a/data/Standard/spells.lua +++ b/data/Standard/spells.lua @@ -8,161 +8,278 @@ local AddSpells = ns.data.AddSpells -------------------------------------------------- local data = { ["DEMONHUNTER"] = { + -- Havoc + [162264] = CreateSpellPriority(9), -- Metamorphosis + [212800] = CreateSpellPriority(8), -- Blur + -- Vengeance - [203719] = CreateSpellPriority(6), -- Demon Spikes - [212988] = CreateSpellPriority(8), -- Painbringer - [258920] = CreateSpellPriority(8), -- Immolation Aura - [263648] = CreateSpellPriority(7), -- Soul Barrier - [391234] = CreateSpellPriority(8), -- Soulmonger + [187827] = CreateSpellPriority(9), -- Metamorphosis + [203720] = CreateSpellPriority(6), -- Demon Spikes + [212988] = CreateSpellPriority(8), -- Painbringer + [258920] = CreateSpellPriority(8), -- Immolation Aura + [263648] = CreateSpellPriority(7), -- Soul Barrier + [391234] = CreateSpellPriority(8), -- Soulmonger }, ["DEATHKNIGHT"] = { -- Blood - [48743] = CreateSpellPriority(5), -- Death Pact - [195181] = CreateSpellPriority(8), -- Bone Shield - [219809] = CreateSpellPriority(8), -- Tombstone - [194679] = CreateSpellPriority(8), -- Rune Tap + [48743] = CreateSpellPriority(5), -- Death Pact + [195181] = CreateSpellPriority(8), -- Bone Shield + [219809] = CreateSpellPriority(8), -- Tombstone + [194679] = CreateSpellPriority(8), -- Rune Tap + [81256] = CreateSpellPriority(9), -- Dancing Rune Weapon + [55233] = CreateSpellPriority(9), -- Vampiric Blood + + -- All + [48707] = CreateSpellPriority(9), -- Anti-Magic Shell + [48792] = CreateSpellPriority(9), -- Icebound Fortitude + + -- Frost + [51271] = CreateSpellPriority(9), -- Pillar of Frost + [152279] = CreateSpellPriority(9), -- Breath of Sindragosa + [47568] = CreateSpellPriority(8), -- Empower Rune Weapon + [51124] = CreateSpellPriority(7), -- Killing Machine + [59052] = CreateSpellPriority(7), -- Rime }, ["DRUID"] = { -- All - [22812] = CreateSpellPriority(2), -- Barkskin + [22812] = CreateSpellPriority(2), -- Barkskin + [61336] = CreateSpellPriority(9), -- Survival Instincts -- Balance - [48517] = CreateSpellPriority(5), -- Elipse (Solar) - [48518] = CreateSpellPriority(5), -- Elipse (Lunar) - [191034] = CreateSpellPriority(2), -- Starfall - + [48517] = CreateSpellPriority(5), -- Elipse (Solar) + [48518] = CreateSpellPriority(5), -- Elipse (Lunar) + [191034] = CreateSpellPriority(2), -- Starfall + [102560] = CreateSpellPriority(8), -- Incarnation: Chosen of Elune + [194223] = CreateSpellPriority(8), -- Celestial Alignment + -- Feral - + [106951] = CreateSpellPriority(8), -- Berserk + [5217] = CreateSpellPriority(7), -- Tiger's Fury + [135700] = CreateSpellPriority(6), -- Clearcasting + -- Guardian - [192081] = CreateSpellPriority(6), -- Ironfur - + [192081] = CreateSpellPriority(6), -- Ironfur + [50334] = CreateSpellPriority(8), -- Berserk + -- Restoration - [16870] = CreateSpellPriority(6), -- Clearcasting - [117679] = CreateSpellPriority(8), -- Incarnetion - [102342] = CreateSpellPriority(3), -- Ironbark - [102351] = CreateSpellPriority(2), -- Cenarion Ward + [16870] = CreateSpellPriority(6), -- Clearcasting + [117679] = CreateSpellPriority(8), -- Incarnetion + [102342] = CreateSpellPriority(3), -- Ironbark + [102351] = CreateSpellPriority(2), -- Cenarion Ward + }, + ["EVOKER"] = { + [359618] = CreateSpellPriority(6), -- Essence Burst + [363916] = CreateSpellPriority(9), -- Obsidian Scales + [370553] = CreateSpellPriority(7), -- Tip the Scales + [374349] = CreateSpellPriority(9), -- Renewing Blaze + [375087] = CreateSpellPriority(8), -- Dragonrage }, ["HUNTER"] = { + -- All + [186265] = CreateSpellPriority(10), -- Aspect of the Turtle + [264735] = CreateSpellPriority(9), -- Survival of the Fittest + + -- Beast Mastery + [19574] = CreateSpellPriority(8), -- Bestial Wrath + [268877] = CreateSpellPriority(6), -- Beast Cleave + -- Marksmanship - [260242] = CreateSpellPriority(7), -- Precise Shot - [342076] = CreateSpellPriority(7), -- Streamline + [260242] = CreateSpellPriority(7), -- Precise Shot + [342076] = CreateSpellPriority(7), -- Streamline + [288613] = CreateSpellPriority(8), -- Trueshot + + -- Survival + [360952] = CreateSpellPriority(8), -- Coordinated Assault }, ["MAGE"] = { - [384267] = CreateSpellPriority(3), -- Siphon Storm + [384267] = CreateSpellPriority(3), -- Siphon Storm + [45438] = CreateSpellPriority(10), -- Ice Block + [342246] = CreateSpellPriority(8), -- Alter Time + + -- Arcane + [365362] = CreateSpellPriority(8), -- Arcane Surge + [263725] = CreateSpellPriority(6), -- Clearcasting + + -- Fire + [190319] = CreateSpellPriority(8), -- Combustion + [48108] = CreateSpellPriority(7), -- Hot Streak! + [48107] = CreateSpellPriority(6), -- Heating Up + + -- Frost + [12472] = CreateSpellPriority(8), -- Icy Veins + [44544] = CreateSpellPriority(7), -- Fingers of Frost + [190446] = CreateSpellPriority(7), -- Brain Freeze }, ["MONK"] = { -- All - [101643] = CreateSpellPriority(1), -- Transcendence + [101643] = CreateSpellPriority(1), -- Transcendence -- Mistweaver - [432180] = CreateSpellPriority(false), -- Dance of the Wind - [388193] = CreateSpellPriority(10), -- Jadefire Stomp + [432180] = CreateSpellPriority(false), -- Dance of the Wind + [388193] = CreateSpellPriority(10), -- Jadefire Stomp -- Brewmaster - [120954] = CreateSpellPriority(1), -- Fortifying Brew - [122278] = CreateSpellPriority(1), -- Dampen Harm - [122783] = CreateSpellPriority(1), -- Diffuse Magic - [322507] = CreateSpellPriority(3), -- Celestial Brew - [1260619] = CreateSpellPriority(3), -- Elevated Stagger - [325092] = CreateSpellPriority(10), -- Purified Chi - [1241059] = CreateSpellPriority(3), -- Celestial Infusion + [120954] = CreateSpellPriority(1), -- Fortifying Brew + [122278] = CreateSpellPriority(1), -- Dampen Harm + [122783] = CreateSpellPriority(1), -- Diffuse Magic + [322507] = CreateSpellPriority(3), -- Celestial Brew + [1260619] = CreateSpellPriority(3), -- Elevated Stagger + [325092] = CreateSpellPriority(10), -- Purified Chi + [1241059] = CreateSpellPriority(3), -- Celestial Infusion + + -- Windwalker + [137639] = CreateSpellPriority(8), -- Storm, Earth, and Fire + [125174] = CreateSpellPriority(9), -- Touch of Karma + [116768] = CreateSpellPriority(6), -- Blackout Kick! }, ["PALADIN"] = { -- Holy - [216331] = CreateSpellPriority(1), -- Avenging Crusader - [388007] = CreateSpellPriority(1), -- Blessing of Summer - [388010] = CreateSpellPriority(1), -- Blessing of Autumn - [388011] = CreateSpellPriority(1), -- Blessing of Winter - [388013] = CreateSpellPriority(1), -- Blessing of Spring - [414204] = CreateSpellPriority(1), -- Rising Sunlight - [414273] = CreateSpellPriority(1), -- Hand of Divinity + [216331] = CreateSpellPriority(1), -- Avenging Crusader + [388007] = CreateSpellPriority(1), -- Blessing of Summer + [388010] = CreateSpellPriority(1), -- Blessing of Autumn + [388011] = CreateSpellPriority(1), -- Blessing of Winter + [388013] = CreateSpellPriority(1), -- Blessing of Spring + [414204] = CreateSpellPriority(1), -- Rising Sunlight + [414273] = CreateSpellPriority(1), -- Hand of Divinity -- Protection - [642] = CreateSpellPriority(9), -- Divine Shield - [31850] = CreateSpellPriority(9), -- Ardent Defender - [86659] = CreateSpellPriority(9), -- Guardian of Ancient Kings - [31884] = CreateSpellPriority(8), -- Avenging Wrath - [132403] = CreateSpellPriority(8), -- Shield of Righteous - [432502] = CreateSpellPriority(7), -- Sacred Weapon - [432496] = CreateSpellPriority(7), -- Holy Bulwark - [432607] = CreateSpellPriority(7), -- Holy Bulwark - [400745] = CreateSpellPriority(false), -- Afterimage - [433550] = CreateSpellPriority(false), -- Afterimage - - [387174] = CreateSpellPriority(7), -- Eye of Tyr (target) + [642] = CreateSpellPriority(9), -- Divine Shield + [31850] = CreateSpellPriority(9), -- Ardent Defender + [86659] = CreateSpellPriority(9), -- Guardian of Ancient Kings + [31884] = CreateSpellPriority(8), -- Avenging Wrath + [132403] = CreateSpellPriority(8), -- Shield of Righteous + [432502] = CreateSpellPriority(7), -- Sacred Weapon + [432496] = CreateSpellPriority(7), -- Holy Bulwark + [432607] = CreateSpellPriority(7), -- Holy Bulwark + [400745] = CreateSpellPriority(false), -- Afterimage + + [387174] = CreateSpellPriority(7), -- Eye of Tyr (target) + + -- Retribution + [403876] = CreateSpellPriority(9), -- Divine Protection + [184662] = CreateSpellPriority(8), -- Shield of Vengeance + [223819] = CreateSpellPriority(6), -- Divine Purpose }, ["PRIEST"] = { -- All - [586] = CreateSpellPriority(10), -- Fade - [10060] = CreateSpellPriority(7), -- Power Infusion + [586] = CreateSpellPriority(10), -- Fade + [10060] = CreateSpellPriority(7), -- Power Infusion + [19236] = CreateSpellPriority(9), -- Desperate Prayer -- Discipline - [33206] = CreateSpellPriority(10), -- Pain Suppression - [322105] = CreateSpellPriority(9), -- Shadow Covenant - [214621] = CreateSpellPriority(8), -- Schism (Debuff) - [455033] = CreateSpellPriority(7), -- Darkness from Light - [198069] = CreateSpellPriority(9), -- Power of the Dark Side + [33206] = CreateSpellPriority(10), -- Pain Suppression + [322105] = CreateSpellPriority(9), -- Shadow Covenant + [424509] = CreateSpellPriority(8), -- Schism (Debuff) + [455033] = CreateSpellPriority(7), -- Darkness from Light + [198069] = CreateSpellPriority(9), -- Power of the Dark Side - [428933] = CreateSpellPriority(10), -- Premonition of Insight (-cooldown) + [428933] = CreateSpellPriority(10), -- Premonition of Insight (-cooldown) -- [428930] = CreateSpellPriority(10), -- Premonition of Piety (+ healing) - [428934] = CreateSpellPriority(10), -- Premonition of Solace (single heal to shield) + [428934] = CreateSpellPriority(10), -- Premonition of Solace (single heal to shield) -- Holy - [47788] = CreateSpellPriority(10), -- Guardian Spirit - [200183] = CreateSpellPriority(3), -- Apotheosis - + [47788] = CreateSpellPriority(10), -- Guardian Spirit + [200183] = CreateSpellPriority(3), -- Apotheosis + -- Shadow - [47585] = CreateSpellPriority(10), -- Dispersion - [15286] = CreateSpellPriority(3), -- Vampiric Embrace - [194249] = CreateSpellPriority(10), -- Voidform - [391109] = CreateSpellPriority(10), -- Dark Ascension - [391401] = CreateSpellPriority(7), -- Mind Flay: Insanity - [391099] = CreateSpellPriority(8), -- Dark Evangelism - [373204] = CreateSpellPriority(8), -- Mind Devourer - [454638] = CreateSpellPriority(8), -- Devouring Chorus + [47585] = CreateSpellPriority(10), -- Dispersion + [15286] = CreateSpellPriority(3), -- Vampiric Embrace + [194249] = CreateSpellPriority(10), -- Voidform + [391109] = CreateSpellPriority(10), -- Dark Ascension + [391401] = CreateSpellPriority(7), -- Mind Flay: Insanity + [391099] = CreateSpellPriority(8), -- Dark Evangelism + [373204] = CreateSpellPriority(8), -- Mind Devourer + [454638] = CreateSpellPriority(8), -- Devouring Chorus + }, + ["ROGUE"] = { + [31224] = CreateSpellPriority(10), -- Cloak of Shadows + [5277] = CreateSpellPriority(10), -- Evasion + [1966] = CreateSpellPriority(9), -- Feint + [11327] = CreateSpellPriority(8), -- Vanish + [2983] = CreateSpellPriority(5), -- Sprint + [315496] = CreateSpellPriority(4), -- Slice and Dice + + -- Outlaw + [13750] = CreateSpellPriority(8), -- Adrenaline Rush + + -- Subtlety + [121471] = CreateSpellPriority(8), -- Shadow Blades + [185422] = CreateSpellPriority(8), -- Shadow Dance }, ["SHAMAN"] = { -- General - [108270] = CreateSpellPriority(10), -- Stone Bulwark Totem - [108271] = CreateSpellPriority(10), -- Astral Shift - [192106] = CreateSpellPriority(false), -- Lightning Shield - [381684] = CreateSpellPriority(false), -- Brimming with Life + [108270] = CreateSpellPriority(10), -- Stone Bulwark Totem + [108271] = CreateSpellPriority(10), -- Astral Shift + [192106] = CreateSpellPriority(false), -- Lightning Shield + [381684] = CreateSpellPriority(false), -- Brimming with Life + + -- Elemental + [114050] = CreateSpellPriority(8), -- Ascendance + [191634] = CreateSpellPriority(8), -- Stormkeeper + [77762] = CreateSpellPriority(7), -- Lava Surge + + -- Restoration + [53390] = CreateSpellPriority(5), -- Tidal Waves -- Enhancement - [344179] = CreateSpellPriority(9), -- Maelstrom Weapon - [454015] = CreateSpellPriority(9), -- Tempest - [333957] = CreateSpellPriority(8), -- Feral Spirit - [466772] = CreateSpellPriority(7), -- Doom Winds - [470532] = CreateSpellPriority(7), -- Arc Discharge - [375986] = CreateSpellPriority(7), -- Primordial Wave - [187878] = CreateSpellPriority(7), -- Crash Lightning + [344179] = CreateSpellPriority(9), -- Maelstrom Weapon + [454015] = CreateSpellPriority(9), -- Tempest + [333957] = CreateSpellPriority(8), -- Feral Spirit + [466772] = CreateSpellPriority(7), -- Doom Winds + [470532] = CreateSpellPriority(7), -- Arc Discharge + [375986] = CreateSpellPriority(7), -- Primordial Wave + [187878] = CreateSpellPriority(7), -- Crash Lightning -- [470058] = CreateSpellPriority(1), -- Vulcanic Blaze - [201900] = CreateSpellPriority(1), -- Hot Hand - [384411] = CreateSpellPriority(1), -- Static Accumulation - [455110] = CreateSpellPriority(1), -- Supercharge - [469344] = CreateSpellPriority(1), -- Molten Thunder - [224127] = CreateSpellPriority(false), -- Crackling Surge + [201900] = CreateSpellPriority(1), -- Hot Hand + [384411] = CreateSpellPriority(1), -- Static Accumulation + [455110] = CreateSpellPriority(1), -- Supercharge + [469344] = CreateSpellPriority(1), -- Molten Thunder + [224127] = CreateSpellPriority(false), -- Crackling Surge + }, + ["WARLOCK"] = { + [104773] = CreateSpellPriority(10), -- Unending Resolve + [108416] = CreateSpellPriority(9), -- Dark Pact + + -- Demonology + [264173] = CreateSpellPriority(7), -- Demonic Core + + -- Destruction + [117828] = CreateSpellPriority(6), -- Backdraft }, ["WARRIOR"] = { + -- All + [107574] = CreateSpellPriority(8), -- Avatar + [18499] = CreateSpellPriority(6), -- Berserker Rage + [97463] = CreateSpellPriority(8), -- Rallying Cry + [52437] = CreateSpellPriority(7), -- Sudden Death + + -- Arms + [118038] = CreateSpellPriority(10), -- Die by the Sword + + -- Fury + [1719] = CreateSpellPriority(8), -- Recklessness + [184364] = CreateSpellPriority(10), -- Enraged Regeneration + [184362] = CreateSpellPriority(5), -- Enrage + -- Protection - [871] = CreateSpellPriority(1), -- Shield Wall - [12975] = CreateSpellPriority(1), -- Last Stand - [23920] = CreateSpellPriority(7), -- Spell Reflect - [132404] = CreateSpellPriority(9), -- Shield Block - [190456] = CreateSpellPriority(10), -- Ignore Pain + [871] = CreateSpellPriority(1), -- Shield Wall + [12975] = CreateSpellPriority(1), -- Last Stand + [23920] = CreateSpellPriority(7), -- Spell Reflect + [132404] = CreateSpellPriority(9), -- Shield Block + [190456] = CreateSpellPriority(10), -- Ignore Pain }, ["ALL"] = { -- Items - [449578] = CreateSpellPriority(false), -- Deliberate Incubation (Ovi'nax Mercurial Egg) - [449581] = CreateSpellPriority(false), -- Reckless Incubation (Ovi'nax Mercurial Egg) - [452226] = CreateSpellPriority(false), -- Spiderling (Ara-Kara Sacbrood) - [457925] = CreateSpellPriority(false), -- Venomous Potential (Seal of the Poisoned Pact) - [462513] = CreateSpellPriority(8, 1), -- Severed Strands (Spymaster's Web) - [449947] = CreateSpellPriority(20), -- Realigning Nexus Convergence Divergence (Treacherous Transmitter) - [1219102] = CreateSpellPriority(8), -- Mudborne (trinket) + [449578] = CreateSpellPriority(false), -- Deliberate Incubation (Ovi'nax Mercurial Egg) + [449581] = CreateSpellPriority(false), -- Reckless Incubation (Ovi'nax Mercurial Egg) + [452226] = CreateSpellPriority(false), -- Spiderling (Ara-Kara Sacbrood) + [457925] = CreateSpellPriority(false), -- Venomous Potential (Seal of the Poisoned Pact) + [462513] = CreateSpellPriority(8, 1), -- Severed Strands (Spymaster's Web) + [449947] = CreateSpellPriority(20), -- Realigning Nexus Convergence Divergence (Treacherous Transmitter) + [1219102] = CreateSpellPriority(8), -- Mudborne (trinket) -- Consumables - [431932] = CreateSpellPriority(5), -- Tempered Potion + [431932] = CreateSpellPriority(5), -- Tempered Potion } } diff --git a/data/TBC/blacklist.lua b/data/TBC/blacklist.lua index ce34369..f3d03a4 100644 --- a/data/TBC/blacklist.lua +++ b/data/TBC/blacklist.lua @@ -5,82 +5,12 @@ local AddBlacklist = ns.data.AddBlacklist -------------------------------------------------- -- The Burning Crusade Classic -------------------------------------------------- -do - local data = { - -- DRUID - [5232] = true, -- Mark of the Wild (Rank 2) - [6756] = true, -- Mark of the Wild (Rank 3) - [5234] = true, -- Mark of the Wild (Rank 4) - [8907] = true, -- Mark of the Wild (Rank 5) - [9884] = true, -- Mark of the Wild (Rank 6) - [9885] = true, -- Mark of the Wild (Rank 7) - [26990] = true, -- Mark of the Wild (Rank 8) +local data = { + -- HUNTER + [34074] = true, -- Aspect of the Viper + [24529] = true, -- Spirit Bond - [782] = true, -- Thorns (Rank 2) - [1075] = true, -- Thorns (Rank 3) - [8914] = true, -- Thorns (Rank 4) - [9756] = true, -- Thorns (Rank 5) - [9910] = true, -- Thorns (Rank 6) - [26992] = true, -- Thorns (Rank 7) + [25431] = true, -- Inner Fire (Rank 7) +} - -- MAGE - [1460] = true, -- Arcane Intellect (Rank 2) - [1461] = true, -- Arcane Intellect (Rank 3) - [10156] = true, -- Arcane Intellect (Rank 4) - [10157] = true, -- Arcane Intellect (Rank 5) - [27126] = true, -- Arcane Intellect (Rank 6) - - -- PRIEST - [1243] = true, -- Power Word: Fortitude (Rank 1) - [1244] = true, -- Power Word: Fortitude (Rank 2) - [1245] = true, -- Power Word: Fortitude (Rank 3) - [2791] = true, -- Power Word: Fortitude (Rank 4) - [10937] = true, -- Power Word: Fortitude (Rank 5) - [10938] = true, -- Power Word: Fortitude (Rank 6) - [25389] = true, -- Power Word: Fortitude (Rank 7) - - -- WARLOCK - [687] = true, -- Demon Skin (Rank 1) - [696] = true, -- Demon Skin (Rank 2) - - [6307] = true, -- Blood Pact (Rank 1) - [7804] = true, -- Blood Pact (Rank 2) - [7805] = true, -- Blood Pact (Rank 3) - [11766] = true, -- Blood Pact (Rank 4) - [11787] = true, -- Blood Pact (Rank 5) - [27267] = true, -- Blood Pact (Rank 6) - - -- Consumables - [17629] = true, -- Flask of Chromatic Resistance - - -- Scrolls - [33079] = true, -- Armor (Scroll of Protection V) - - [33078] = true, -- Intellect (Scroll of Intellect V) - - [33081] = true, -- Stamina (Scroll of Stamina V) - - [33080] = true, -- Spirit Magic (Scroll of Spirit V) - - [33077] = true, -- Agility (Scroll of Agility V) - - [33082] = true, -- Strength (Scroll of Strength V) - - -------------------------------------------------- - -- Season of Discovery - -------------------------------------------------- - [349981] = true, -- Supercharged Chronoboon Displacer - } - - AddBlacklist(data) -end - -do - local data = { - -- PRIEST - [25431] = true, -- Inner Fire (Rank 7) - [32999] = true, -- Prayer of Spirit (Rank 2) - } - - AddBlacklist(data) -end +AddBlacklist(data) diff --git a/data/TBC/cooldowns.lua b/data/TBC/cooldowns.lua index 5360720..2ffc843 100644 --- a/data/TBC/cooldowns.lua +++ b/data/TBC/cooldowns.lua @@ -7,62 +7,254 @@ local AddCooldowns = ns.data.AddCooldowns -- The Burning Crusade Classic -------------------------------------------------- local data = { + ["DRUID"] = { + -- General + CreateSpellCooldown(20484), -- Rebirth (Rank 1) + CreateSpellCooldown(740), -- Tranquility (Rank 1) + CreateSpellCooldown(22812), -- Barkskin + CreateSpellCooldown(29166), -- Innervate + CreateSpellCooldown(1850), -- Dash (Rank 1) + CreateSpellCooldown(5229), -- Enrage + CreateSpellCooldown(5209), -- Challenging Roar + CreateSpellCooldown(22842), -- Frenzied Regeneration (Rank 1) + + -- Talents + CreateSpellCooldown(17116), -- Nature's Swiftness + CreateSpellCooldown(16979), -- Feral Charge + CreateSpellCooldown(33831), -- Force of Nature + + CreateSpellCooldown(5211), -- Bash (Rank 1) + CreateSpellCooldown(6798), -- Bash (Rank 2) + CreateSpellCooldown(8983), -- Bash (Rank 3) + CreateSpellCooldown(16914), -- Hurricane (Rank 1) + CreateSpellCooldown(17401), -- Hurricane (Rank 2) + CreateSpellCooldown(17402), -- Hurricane (Rank 3) + CreateSpellCooldown(27012), -- Hurricane (Rank 4) + CreateSpellCooldown(16689), -- Nature's Grasp (Rank 1) + CreateSpellCooldown(16810), -- Nature's Grasp (Rank 2) + CreateSpellCooldown(16811), -- Nature's Grasp (Rank 3) + CreateSpellCooldown(16812), -- Nature's Grasp (Rank 4) + CreateSpellCooldown(16813), -- Nature's Grasp (Rank 5) + CreateSpellCooldown(17329), -- Nature's Grasp (Rank 6) + CreateSpellCooldown(27009), -- Nature's Grasp (Rank 7) + }, + ["HUNTER"] = { + -- General + CreateSpellCooldown(3045), -- Rapid Fire + CreateSpellCooldown(5384), -- Feign Death + CreateSpellCooldown(1499), -- Freezing Trap (Rank 1) + CreateSpellCooldown(19801), -- Tranquilizing Shot + CreateSpellCooldown(34477), -- Misdirection + + -- Talents + CreateSpellCooldown(19574), -- Bestial Wrath + CreateSpellCooldown(19577), -- Intimidation + CreateSpellCooldown(19263), -- Deterrence + CreateSpellCooldown(23989), -- Readiness + CreateSpellCooldown(34490), -- Silencing Shot + CreateSpellCooldown(19386), -- Wyvern Sting (Rank 1) + + CreateSpellCooldown(1510), -- Volley (Rank 1) + CreateSpellCooldown(14294), -- Volley (Rank 2) + CreateSpellCooldown(14295), -- Volley (Rank 3) + CreateSpellCooldown(27022), -- Volley (Rank 4) + }, + ["MAGE"] = { + -- General + CreateSpellCooldown(2139), -- Counterspell + CreateSpellCooldown(45438), -- Ice Block + CreateSpellCooldown(66), -- Invisibility + + -- Arcane + CreateSpellCooldown(12051), -- Evocation + CreateSpellCooldown(12042), -- Arcane Power + CreateSpellCooldown(12043), -- Presence of Mind + + -- Fire + CreateSpellCooldown(11129), -- Combustion + + -- Frost + CreateSpellCooldown(12472), -- Icy Veins + CreateSpellCooldown(11958), -- Cold Snap + CreateSpellCooldown(31687), -- Summon Water Elemental + + CreateSpellCooldown(43987), -- Ritual of Refreshment + }, + ["PALADIN"] = { + -- General + CreateSpellCooldown(498), -- Divine Protection + CreateSpellCooldown(642), -- Divine Shield + CreateSpellCooldown(633), -- Lay on Hands + CreateSpellCooldown(1022), -- Blessing of Protection + CreateSpellCooldown(1044), -- Blessing of Freedom + CreateSpellCooldown(6940), -- Blessing of Sacrifice + CreateSpellCooldown(853), -- Hammer of Justice (Rank 1) + CreateSpellCooldown(31884), -- Avenging Wrath + + -- Talents + CreateSpellCooldown(20216), -- Divine Favor + CreateSpellCooldown(31842), -- Divine Illumination + CreateSpellCooldown(20066), -- Repentance + + CreateSpellCooldown(19752), -- Divine Intervention + CreateSpellCooldown(2812), -- Holy Wrath (Rank 1) + CreateSpellCooldown(10318), -- Holy Wrath (Rank 2) + CreateSpellCooldown(27139), -- Holy Wrath (Rank 3) + }, ["PRIEST"] = { -- Discipline - CreateSpellCooldown(10060), -- Power Infusion - CreateSpellCooldown(14751), -- Inner Focus + CreateSpellCooldown(10060), -- Power Infusion + CreateSpellCooldown(14751), -- Inner Focus -- Holy - CreateSpellCooldown(724), -- Lightwell (Rank 1) - CreateSpellCooldown(27870), -- Lightwell (Rank 2) - CreateSpellCooldown(27871), -- Lightwell (Rank 3) + CreateSpellCooldown(724), -- Lightwell (Rank 1) + CreateSpellCooldown(27870), -- Lightwell (Rank 2) + CreateSpellCooldown(27871), -- Lightwell (Rank 3) -- Shadow - CreateSpellCooldown(15286, false), -- Vampiric Embrace - CreateSpellCooldown(15487), -- Silence - - CreateSpellCooldown(586), -- Fade (Rank 1) - CreateSpellCooldown(9578), -- Fade (Rank 2) - CreateSpellCooldown(9579), -- Fade (Rank 3) - CreateSpellCooldown(9592), -- Fade (Rank 4) - CreateSpellCooldown(10941), -- Fade (Rank 5) - CreateSpellCooldown(10942), -- Fade (Rank 6) - - CreateSpellCooldown(8122), -- Psychic Scream (Rank 1) - CreateSpellCooldown(8124), -- Psychic Scream (Rank 2) - CreateSpellCooldown(10888), -- Psychic Scream (Rank 3) - CreateSpellCooldown(10890), -- Psychic Scream (Rank 4) - - CreateSpellCooldown(6346), -- Fear Ward (Rank 1) + CreateSpellCooldown(15487), -- Silence + + CreateSpellCooldown(586), -- Fade (Rank 1) + CreateSpellCooldown(9578), -- Fade (Rank 2) + CreateSpellCooldown(9579), -- Fade (Rank 3) + CreateSpellCooldown(9592), -- Fade (Rank 4) + CreateSpellCooldown(10941), -- Fade (Rank 5) + CreateSpellCooldown(10942), -- Fade (Rank 6) + + CreateSpellCooldown(8122), -- Psychic Scream (Rank 1) + CreateSpellCooldown(8124), -- Psychic Scream (Rank 2) + CreateSpellCooldown(10888), -- Psychic Scream (Rank 3) + CreateSpellCooldown(10890), -- Psychic Scream (Rank 4) + + CreateSpellCooldown(6346), -- Fear Ward (Rank 1) -- Night Elf - CreateSpellCooldown(2651), -- Elune's Grace + CreateSpellCooldown(2651), -- Elune's Grace - -- Human - CreateSpellCooldown(13896), -- Feedback (Rank 1) - CreateSpellCooldown(19271), -- Feedback (Rank 2) - CreateSpellCooldown(19273), -- Feedback (Rank 3) - CreateSpellCooldown(19274), -- Feedback (Rank 4) - CreateSpellCooldown(19275), -- Feedback (Rank 5) - CreateSpellCooldown(25441), -- Feedback (Rank 6) + -- Human + CreateSpellCooldown(13896), -- Feedback (Rank 1) + CreateSpellCooldown(19271), -- Feedback (Rank 2) + CreateSpellCooldown(19273), -- Feedback (Rank 3) + CreateSpellCooldown(19274), -- Feedback (Rank 4) + CreateSpellCooldown(19275), -- Feedback (Rank 5) + CreateSpellCooldown(25441), -- Feedback (Rank 6) -- Dwarf / Humman - CreateSpellCooldown(13908), -- Desperate Prayer (Rank 1) - CreateSpellCooldown(19236), -- Desperate Prayer (Rank 2) - CreateSpellCooldown(19238), -- Desperate Prayer (Rank 3) - CreateSpellCooldown(19240), -- Desperate Prayer (Rank 4) - CreateSpellCooldown(19241), -- Desperate Prayer (Rank 5) - CreateSpellCooldown(19242), -- Desperate Prayer (Rank 6) - CreateSpellCooldown(19243), -- Desperate Prayer (Rank 7) - CreateSpellCooldown(25437), -- Desperate Prayer (Rank 8) - + CreateSpellCooldown(13908), -- Desperate Prayer (Rank 1) + CreateSpellCooldown(19236), -- Desperate Prayer (Rank 2) + CreateSpellCooldown(19238), -- Desperate Prayer (Rank 3) + CreateSpellCooldown(19240), -- Desperate Prayer (Rank 4) + CreateSpellCooldown(19241), -- Desperate Prayer (Rank 5) + CreateSpellCooldown(19242), -- Desperate Prayer (Rank 6) + CreateSpellCooldown(19243), -- Desperate Prayer (Rank 7) + CreateSpellCooldown(25437), -- Desperate Prayer (Rank 8) + -- Undead - CreateSpellCooldown(2944), -- Devouring Plague(Rank 1) - CreateSpellCooldown(19276), -- Devouring Plague(Rank 2) - CreateSpellCooldown(19277), -- Devouring Plague(Rank 3) - CreateSpellCooldown(19278), -- Devouring Plague(Rank 4) - CreateSpellCooldown(19279), -- Devouring Plague(Rank 5) - CreateSpellCooldown(19280), -- Devouring Plague(Rank 6) + CreateSpellCooldown(2944), -- Devouring Plague(Rank 1) + CreateSpellCooldown(19276), -- Devouring Plague(Rank 2) + CreateSpellCooldown(19277), -- Devouring Plague(Rank 3) + CreateSpellCooldown(19278), -- Devouring Plague(Rank 4) + CreateSpellCooldown(19279), -- Devouring Plague(Rank 5) + CreateSpellCooldown(19280), -- Devouring Plague(Rank 6) + + -- Talents + CreateSpellCooldown(33206), -- Pain Suppression + CreateSpellCooldown(34433), -- Shadowfiend + + CreateSpellCooldown(28880), -- Gift of the Naaru + }, + ["ROGUE"] = { + -- General + CreateSpellCooldown(1766), -- Kick (Rank 1) + CreateSpellCooldown(2094), -- Blind + CreateSpellCooldown(5277), -- Evasion (Rank 1) + CreateSpellCooldown(1856), -- Vanish (Rank 1) + CreateSpellCooldown(2983), -- Sprint (Rank 1) + CreateSpellCooldown(31224), -- Cloak of Shadows + + -- Talents + CreateSpellCooldown(13750), -- Adrenaline Rush + CreateSpellCooldown(13877), -- Blade Flurry + CreateSpellCooldown(14177), -- Cold Blood + CreateSpellCooldown(14185), -- Preparation + CreateSpellCooldown(14183), -- Premeditation + CreateSpellCooldown(36554), -- Shadowstep + }, + ["SHAMAN"] = { + -- General + CreateSpellCooldown(8177), -- Grounding Totem + CreateSpellCooldown(20608), -- Reincarnation + CreateSpellCooldown(2825), -- Bloodlust + CreateSpellCooldown(32182), -- Heroism + CreateSpellCooldown(2062), -- Earth Elemental Totem + CreateSpellCooldown(2894), -- Fire Elemental Totem + + -- Talents + CreateSpellCooldown(17364), -- Stormstrike + CreateSpellCooldown(16166), -- Elemental Mastery + CreateSpellCooldown(16188), -- Nature's Swiftness + CreateSpellCooldown(30823), -- Shamanistic Rage + CreateSpellCooldown(16190), -- Mana Tide Totem + }, + ["WARLOCK"] = { + -- General + CreateSpellCooldown(1122), -- Inferno + CreateSpellCooldown(6789), -- Death Coil (Rank 1) + CreateSpellCooldown(5484), -- Howl of Terror (Rank 1) + CreateSpellCooldown(29858), -- Soulshatter + + -- Talents + CreateSpellCooldown(18288), -- Amplify Curse + CreateSpellCooldown(18708), -- Fel Domination + + CreateSpellCooldown(603), -- Curse of Doom (Rank 1) + CreateSpellCooldown(30910), -- Curse of Doom (Rank 2) + CreateSpellCooldown(18540), -- Ritual of Doom + CreateSpellCooldown(29893), -- Ritual of Souls + CreateSpellCooldown(6353), -- Soul Fire (Rank 1) + CreateSpellCooldown(17924), -- Soul Fire (Rank 2) + CreateSpellCooldown(27211), -- Soul Fire (Rank 3) + CreateSpellCooldown(30545), -- Soul Fire (Rank 4) + CreateSpellCooldown(17735), -- Suffering (Rank 1) + CreateSpellCooldown(17750), -- Suffering (Rank 2) + CreateSpellCooldown(17751), -- Suffering (Rank 3) + CreateSpellCooldown(17752), -- Suffering (Rank 4) + CreateSpellCooldown(27271), -- Suffering (Rank 5) + CreateSpellCooldown(33701), -- Suffering (Rank 6) + }, + ["WARRIOR"] = { + -- General + CreateSpellCooldown(871), -- Shield Wall + CreateSpellCooldown(1719), -- Recklessness + CreateSpellCooldown(20230), -- Retaliation + CreateSpellCooldown(18499), -- Berserker Rage + CreateSpellCooldown(3411), -- Intervene + CreateSpellCooldown(5246), -- Intimidating Shout + CreateSpellCooldown(1161), -- Challenging Shout + CreateSpellCooldown(676), -- Disarm + CreateSpellCooldown(2687), -- Bloodrage + CreateSpellCooldown(6552), -- Pummel (Rank 1) + CreateSpellCooldown(20252), -- Intercept (Rank 1) + CreateSpellCooldown(1671), -- Shield Bash (Rank 2) + CreateSpellCooldown(6178), -- Charge (Rank 2) + + -- Talents + CreateSpellCooldown(12292), -- Death Wish + CreateSpellCooldown(12328), -- Sweeping Strikes + CreateSpellCooldown(12809), -- Concussion Blow + CreateSpellCooldown(12975), -- Last Stand + + CreateSpellCooldown(694), -- Mocking Blow (Rank 1) + CreateSpellCooldown(7400), -- Mocking Blow (Rank 2) + CreateSpellCooldown(7402), -- Mocking Blow (Rank 3) + CreateSpellCooldown(20559), -- Mocking Blow (Rank 4) + CreateSpellCooldown(20560), -- Mocking Blow (Rank 5) + CreateSpellCooldown(25266), -- Mocking Blow (Rank 6) + CreateSpellCooldown(26090), -- Thunderstomp (Rank 1) + CreateSpellCooldown(26187), -- Thunderstomp (Rank 2) + CreateSpellCooldown(26188), -- Thunderstomp (Rank 3) + CreateSpellCooldown(27063), -- Thunderstomp (Rank 4) } } + AddCooldowns(data) diff --git a/data/Vanilla/blacklist.lua b/data/Vanilla/blacklist.lua index 6c60c11..b3e676d 100644 --- a/data/Vanilla/blacklist.lua +++ b/data/Vanilla/blacklist.lua @@ -5,99 +5,29 @@ local AddBlacklist = ns.data.AddBlacklist -------------------------------------------------- -- Classic Era -------------------------------------------------- -do - local data = { - -- DRUID - [5232] = true, -- Mark of the Wild (Rank 2) - [6756] = true, -- Mark of the Wild (Rank 3) - [5234] = true, -- Mark of the Wild (Rank 4) - [8907] = true, -- Mark of the Wild (Rank 5) - [9884] = true, -- Mark of the Wild (Rank 6) - [9885] = true, -- Mark of the Wild (Rank 7) - - [782] = true, -- Thorns (Rank 2) - [1075] = true, -- Thorns (Rank 3) - [8914] = true, -- Thorns (Rank 4) - [9756] = true, -- Thorns (Rank 5) - [9910] = true, -- Thorns (Rank 6) - - -- MAGE - [1460] = true, -- Arcane Intellect (Rank 2) - [1461] = true, -- Arcane Intellect (Rank 3) - [10156] = true, -- Arcane Intellect (Rank 4) - [10157] = true, -- Arcane Intellect (Rank 5) - - -- PRIEST - [1243] = true, -- Power Word: Fortitude (Rank 1) - [1244] = true, -- Power Word: Fortitude (Rank 2) - [1245] = true, -- Power Word: Fortitude (Rank 3) - [2791] = true, -- Power Word: Fortitude (Rank 4) - [10937] = true, -- Power Word: Fortitude (Rank 5) - [10938] = true, -- Power Word: Fortitude (Rank 6) - - [21562] = true, -- Prayer of Fortitude (Rank 1) - [21564] = true, -- Prayer of Fortitude (Rank 2) - - [27681] = true, -- Prayer of Spirit - - -- WARLOCK - [687] = true, -- Demon Skin (Rank 1) - [696] = true, -- Demon Skin (Rank 2) - - [6307] = true, -- Blood Pact (Rank 1) - [7804] = true, -- Blood Pact (Rank 2) - [7805] = true, -- Blood Pact (Rank 3) - [11766] = true, -- Blood Pact (Rank 4) - [11787] = true, -- Blood Pact (Rank 5) - - -- Consumables - [17629] = true, -- Flask of Chromatic Resistance - - -- Scrolls - [8091] = true, -- Armor (Scroll of Protection) - [8094] = true, -- Armor (Scroll of Protection II) - [8095] = true, -- Armor (Scroll of Protection III) - [12175] = true, -- Armor (Scroll of Protection IV) - - [8096] = true, -- Intellect (Scroll of Intellect) - [8097] = true, -- Intellect (Scroll of Intellect II) - [8098] = true, -- Intellect (Scroll of Intellect III) - [12176] = true, -- Intellect (Scroll of Intellect IV) - - [8099] = true, -- Stamina (Scroll of Stamina) - [8100] = true, -- Stamina (Scroll of Stamina II) - [8101] = true, -- Stamina (Scroll of Stamina III) - [12178] = true, -- Stamina (Scroll of Stamina IV) - - [8112] = true, -- Spirit Magic (Scroll of Spirit) - [8113] = true, -- Spirit Magic (Scroll of Spirit II) - [8114] = true, -- Spirit Magic (Scroll of Spirit III) - [12177] = true, -- Spirit Magic (Scroll of Spirit IV) - - [8115] = true, -- Agility (Scroll of Agility) - [8116] = true, -- Agility (Scroll of Agility II) - [8117] = true, -- Agility (Scroll of Agility III) - [12174] = true, -- Agility (Scroll of Agility IV) - - [8118] = true, -- Strength (Scroll of Strength) - [8119] = true, -- Strength (Scroll of Strength II) - [8120] = true, -- Strength (Scroll of Strength III) - [12179] = true, -- Strength (Scroll of Strength IV) - - -- Christimas - [26218] = true, -- Mistletoe - - -------------------------------------------------- - -- Season of Discovery - -------------------------------------------------- - [349981] = true, -- Supercharged Chronoboon Displacer - [410935] = true, -- Meditation on the Light - [417316] = true, -- Meditation on the Loa - [418459] = true, -- Meditation on Undeath - [419307] = true, -- Meditation on Elune - [430947] = true, -- Boon of Blackfathom (World Buff) - [436412] = true, -- Discoverer's Delight - } - - AddBlacklist(data) -end +local data = { + -------------------------------------------------- + -- Hardcore + -------------------------------------------------- + [364001] = true, -- Soul of Iron + + -------------------------------------------------- + -- Season of Discovery + -------------------------------------------------- + [349981] = true, -- Supercharged Chronoboon Displacer + [410935] = true, -- Meditation on the Light + [417316] = true, -- Meditation on the Loa + [418459] = true, -- Meditation on Undeath + [419307] = true, -- Meditation on Elune + [430947] = true, -- Boon of Blackfathom (World Buff) + [436412] = true, -- Discoverer's Delight + + -- PALADIN + [407627] = true, -- Righteous Fury + + [438536] = true, -- Spark of Inspiration + [446695] = true, -- Fervor of the Temple Explorer + [460940] = true, -- Might of Stormwind +} + +AddBlacklist(data) diff --git a/data/Vanilla/cooldowns.lua b/data/Vanilla/cooldowns.lua index e1bb02a..0637dfc 100644 --- a/data/Vanilla/cooldowns.lua +++ b/data/Vanilla/cooldowns.lua @@ -7,93 +7,256 @@ local AddCooldowns = ns.data.AddCooldowns -- Classic Era -------------------------------------------------- local data = { + ["DRUID"] = { + -- General + CreateSpellCooldown(20484), -- Rebirth (Rank 1) + CreateSpellCooldown(20739), -- Rebirth (Rank 2) + CreateSpellCooldown(20742), -- Rebirth (Rank 3) + CreateSpellCooldown(20747), -- Rebirth (Rank 4) + CreateSpellCooldown(20748), -- Rebirth (Rank 5) + + CreateSpellCooldown(740), -- Tranquility (Rank 1) + CreateSpellCooldown(8918), -- Tranquility (Rank 2) + CreateSpellCooldown(9862), -- Tranquility (Rank 3) + CreateSpellCooldown(9863), -- Tranquility (Rank 4) + + CreateSpellCooldown(22812), -- Barkskin + + CreateSpellCooldown(1850), -- Dash (Rank 1) + CreateSpellCooldown(9821), -- Dash (Rank 2) + + CreateSpellCooldown(5229), -- Enrage + CreateSpellCooldown(5209), -- Challenging Roar + + CreateSpellCooldown(22842), -- Frenzied Regeneration (Rank 1) + CreateSpellCooldown(22895), -- Frenzied Regeneration (Rank 2) + CreateSpellCooldown(22896), -- Frenzied Regeneration (Rank 3) + + -- Talents + CreateSpellCooldown(16979), -- Feral Charge + CreateSpellCooldown(17116), -- Nature's Swiftness + CreateSpellCooldown(29166), -- Innervate + + CreateSpellCooldown(417141), -- Berserk + CreateSpellCooldown(439748), -- Starfall + CreateSpellCooldown(408024), -- Survival Instincts + }, + ["HUNTER"] = { + -- General + CreateSpellCooldown(1499), -- Freezing Trap + CreateSpellCooldown(3045), -- Rapid Fire + CreateSpellCooldown(5384), -- Feign Death + -- CreateSpellCooldown(19801), -- Tranquilizing Shot + + -- Talents + CreateSpellCooldown(19263), -- Deterrence + CreateSpellCooldown(19386), -- Wyvern Sting + CreateSpellCooldown(19574), -- Bestial Wrath + CreateSpellCooldown(19577), -- Intimidation + + CreateSpellCooldown(409379), -- Kill Command + }, + ["MAGE"] = { + -- General + CreateSpellCooldown(2139), -- Counterspell + + -- Arcane + CreateSpellCooldown(12042), -- Arcane Power + CreateSpellCooldown(12043), -- Presence of Mind + CreateSpellCooldown(12051), -- Evocation + + -- Fire + CreateSpellCooldown(11129), -- Combustion + + -- Frost + CreateSpellCooldown(11958), -- Ice Block + CreateSpellCooldown(12472), -- Icy Veins + + CreateSpellCooldown(425124), -- Arcane Surge + CreateSpellCooldown(440802), -- Frozen Orb + CreateSpellCooldown(425121), -- Icy Veins + }, ["PALADIN"] = { -- General - CreateSpellCooldown(498), -- Divine Protection - CreateSpellCooldown(642), -- Divine Shield - CreateSpellCooldown(633), -- Lay on Hands - CreateSpellCooldown(1022), -- Blessing of Protection - CreateSpellCooldown(1044), -- Blessing of Freedom - CreateSpellCooldown(6940), -- Blessing of Sacrifice + CreateSpellCooldown(498), -- Divine Protection + CreateSpellCooldown(642), -- Divine Shield + CreateSpellCooldown(633), -- Lay on Hands + + CreateSpellCooldown(853), -- Hammer of Justice (Rank 1) + CreateSpellCooldown(5588), -- Hammer of Justice (Rank 2) + CreateSpellCooldown(5589), -- Hammer of Justice (Rank 3) + CreateSpellCooldown(10308), -- Hammer of Justice (Rank 4) + + CreateSpellCooldown(1022), -- Blessing of Protection (Rank 1) + CreateSpellCooldown(5599), -- Blessing of Protection (Rank 2) + CreateSpellCooldown(10278), -- Blessing of Protection (Rank 3) + + CreateSpellCooldown(1044), -- Blessing of Freedom + + -- Holy + CreateSpellCooldown(20216), -- Divine Favor + + -- Retribution + CreateSpellCooldown(20066), -- Repentance + + CreateSpellCooldown(409324), -- Ancestral Guidance + CreateSpellCooldown(407804), -- Divine Sacrifice }, ["PRIEST"] = { -- Discipline - CreateSpellCooldown(10060), -- Power Infusion - CreateSpellCooldown(14751), -- Inner Focus + CreateSpellCooldown(10060), -- Power Infusion + CreateSpellCooldown(14751), -- Inner Focus -- Holy - CreateSpellCooldown(724), -- Lightwell (Rank 1) - CreateSpellCooldown(27870), -- Lightwell (Rank 2) - CreateSpellCooldown(27871), -- Lightwell (Rank 3) + CreateSpellCooldown(724), -- Lightwell (Rank 1) + CreateSpellCooldown(27870), -- Lightwell (Rank 2) + CreateSpellCooldown(27871), -- Lightwell (Rank 3) -- Shadow - CreateSpellCooldown(15286, false), -- Vampiric Embrace - CreateSpellCooldown(15487), -- Silence + CreateSpellCooldown(15487), -- Silence - CreateSpellCooldown(586), -- Fade (Rank 1) - CreateSpellCooldown(9578), -- Fade (Rank 2) - CreateSpellCooldown(9579), -- Fade (Rank 3) - CreateSpellCooldown(9592), -- Fade (Rank 4) - CreateSpellCooldown(10941), -- Fade (Rank 5) - CreateSpellCooldown(10942), -- Fade (Rank 6) + CreateSpellCooldown(586), -- Fade (Rank 1) + CreateSpellCooldown(9578), -- Fade (Rank 2) + CreateSpellCooldown(9579), -- Fade (Rank 3) + CreateSpellCooldown(9592), -- Fade (Rank 4) + CreateSpellCooldown(10941), -- Fade (Rank 5) + CreateSpellCooldown(10942), -- Fade (Rank 6) - CreateSpellCooldown(8122), -- Psychic Scream (Rank 1) - CreateSpellCooldown(8124), -- Psychic Scream (Rank 2) - CreateSpellCooldown(10888), -- Psychic Scream (Rank 3) - CreateSpellCooldown(10890), -- Psychic Scream (Rank 4) + CreateSpellCooldown(8122), -- Psychic Scream (Rank 1) + CreateSpellCooldown(8124), -- Psychic Scream (Rank 2) + CreateSpellCooldown(10888), -- Psychic Scream (Rank 3) + CreateSpellCooldown(10890), -- Psychic Scream (Rank 4) -- Night Elf - CreateSpellCooldown(2651), -- Elune's Grace (Rank 1) - CreateSpellCooldown(19289), -- Elune's Grace (Rank 2) - CreateSpellCooldown(19291), -- Elune's Grace (Rank 3) - CreateSpellCooldown(19292), -- Elune's Grace (Rank 4) - CreateSpellCooldown(19293), -- Elune's Grace (Rank 5) - - -- Human - CreateSpellCooldown(13896), -- Feedback (Rank 1) - CreateSpellCooldown(19271), -- Feedback (Rank 2) - CreateSpellCooldown(19273), -- Feedback (Rank 3) - CreateSpellCooldown(19274), -- Feedback (Rank 4) - CreateSpellCooldown(19275), -- Feedback (Rank 5) + CreateSpellCooldown(2651), -- Elune's Grace (Rank 1) + CreateSpellCooldown(19289), -- Elune's Grace (Rank 2) + CreateSpellCooldown(19291), -- Elune's Grace (Rank 3) + CreateSpellCooldown(19292), -- Elune's Grace (Rank 4) + CreateSpellCooldown(19293), -- Elune's Grace (Rank 5) + + -- Human + CreateSpellCooldown(13896), -- Feedback (Rank 1) + CreateSpellCooldown(19271), -- Feedback (Rank 2) + CreateSpellCooldown(19273), -- Feedback (Rank 3) + CreateSpellCooldown(19274), -- Feedback (Rank 4) + CreateSpellCooldown(19275), -- Feedback (Rank 5) -- Dwarf - CreateSpellCooldown(6346), -- Fear Ward (Rank 1) + CreateSpellCooldown(6346), -- Fear Ward (Rank 1) -- Dwarf / Humman - CreateSpellCooldown(13908), -- Desperate Prayer (Rank 1) - CreateSpellCooldown(19236), -- Desperate Prayer (Rank 2) - CreateSpellCooldown(19238), -- Desperate Prayer (Rank 3) - CreateSpellCooldown(19240), -- Desperate Prayer (Rank 4) - CreateSpellCooldown(19241), -- Desperate Prayer (Rank 5) - CreateSpellCooldown(19242), -- Desperate Prayer (Rank 6) - CreateSpellCooldown(19243), -- Desperate Prayer (Rank 7) - + CreateSpellCooldown(13908), -- Desperate Prayer (Rank 1) + CreateSpellCooldown(19236), -- Desperate Prayer (Rank 2) + CreateSpellCooldown(19238), -- Desperate Prayer (Rank 3) + CreateSpellCooldown(19240), -- Desperate Prayer (Rank 4) + CreateSpellCooldown(19241), -- Desperate Prayer (Rank 5) + CreateSpellCooldown(19242), -- Desperate Prayer (Rank 6) + CreateSpellCooldown(19243), -- Desperate Prayer (Rank 7) + -- Undead - CreateSpellCooldown(2944), -- Devouring Plague(Rank 1) - CreateSpellCooldown(19276), -- Devouring Plague(Rank 2) - CreateSpellCooldown(19277), -- Devouring Plague(Rank 3) - CreateSpellCooldown(19278), -- Devouring Plague(Rank 4) - CreateSpellCooldown(19279), -- Devouring Plague(Rank 5) - CreateSpellCooldown(19280), -- Devouring Plague(Rank 6) + CreateSpellCooldown(2944), -- Devouring Plague(Rank 1) + CreateSpellCooldown(19276), -- Devouring Plague(Rank 2) + CreateSpellCooldown(19277), -- Devouring Plague(Rank 3) + CreateSpellCooldown(19278), -- Devouring Plague(Rank 4) + CreateSpellCooldown(19279), -- Devouring Plague(Rank 5) + CreateSpellCooldown(19280), -- Devouring Plague(Rank 6) + + CreateSpellCooldown(425294), -- Dispersion + CreateSpellCooldown(402789), -- Eye of the Void + CreateSpellCooldown(402799), -- Homunculi + CreateSpellCooldown(402004), -- Pain Suppression + CreateSpellCooldown(425207), -- Power Word: Barrier + }, + ["ROGUE"] = { + -- General + CreateSpellCooldown(2094), -- Blind + CreateSpellCooldown(5277), -- Evasion + + CreateSpellCooldown(1856), -- Vanish (Rank 1) + CreateSpellCooldown(1857), -- Vanish (Rank 2) + + CreateSpellCooldown(2983), -- Sprint (Rank 1) + CreateSpellCooldown(8696), -- Sprint (Rank 2) + CreateSpellCooldown(11305), -- Sprint (Rank 3) + + -- Talents + CreateSpellCooldown(13750), -- Adrenaline Rush + CreateSpellCooldown(13877), -- Blade Flurry + CreateSpellCooldown(14177), -- Cold Blood + CreateSpellCooldown(14183), -- Premeditation + CreateSpellCooldown(14185), -- Preparation + }, + ["SHAMAN"] = { + -- General + -- CreateSpellCooldown(8177), -- Grounding Totem + CreateSpellCooldown(20608), -- Reincarnation + + -- Restoration + CreateSpellCooldown(16188), -- Nature's Swiftness + CreateSpellCooldown(16190), -- Mana Tide Totem (Rank 1) + CreateSpellCooldown(17354), -- Mana Tide Totem (Rank 2) + CreateSpellCooldown(17359), -- Mana Tide Totem (Rank 3) + + -- Elemental + CreateSpellCooldown(16166), -- Elemental Mastery + + -- Enhancement + CreateSpellCooldown(17364), -- Stormstrike + }, + ["WARLOCK"] = { + -- General + CreateSpellCooldown(1122), -- Inferno + + CreateSpellCooldown(6789), -- Death Coil (Rank 1) + CreateSpellCooldown(17925), -- Death Coil (Rank 2) + CreateSpellCooldown(17926), -- Death Coil (Rank 3) + + CreateSpellCooldown(5484), -- Howl of Terror (Rank 1) + CreateSpellCooldown(17928), -- Howl of Terror (Rank 2) + + -- Affliction + CreateSpellCooldown(18288), -- Amplify Curse + + -- Demonologist + CreateSpellCooldown(18708), -- Fel Domination + + CreateSpellCooldown(412789), -- Demonic Howl + CreateSpellCooldown(426195), -- Vengeance }, ["WARRIOR"] = { + -- General + CreateSpellCooldown(1719), -- Recklessness + + CreateSpellCooldown(6552), -- Pummel (Rank 1) + CreateSpellCooldown(6554), -- Pummel (Rank 2) + + -- Talents + CreateSpellCooldown(12292), -- Sweeping Strikes + CreateSpellCooldown(12328), -- Death Wish + -- Arms - CreateSpellCooldown(6178), -- Charge - CreateSpellCooldown(7400), -- Mocking Blow - CreateSpellCooldown(20230), -- Retaliation - + CreateSpellCooldown(6178), -- Charge + CreateSpellCooldown(7400), -- Mocking Blow + CreateSpellCooldown(20230), -- Retaliation + -- Fury - CreateSpellCooldown(1161), -- Challenging Shout - CreateSpellCooldown(5246), -- Intimidating Shout - CreateSpellCooldown(18499), -- Berserker Rage - CreateSpellCooldown(20252), -- Intercept + CreateSpellCooldown(1161), -- Challenging Shout + CreateSpellCooldown(5246), -- Intimidating Shout + CreateSpellCooldown(18499), -- Berserker Rage + CreateSpellCooldown(20252), -- Intercept -- Protection - CreateSpellCooldown(355), -- Taunt - CreateSpellCooldown(676), -- Disarm - CreateSpellCooldown(871), -- Shield Wall - CreateSpellCooldown(1671), -- Shield Bash - CreateSpellCooldown(2687), -- Bloodrage + CreateSpellCooldown(676), -- Disarm + CreateSpellCooldown(871), -- Shield Wall + CreateSpellCooldown(1671), -- Shield Bash + CreateSpellCooldown(2687), -- Bloodrage + CreateSpellCooldown(12809), -- Concussion Blow + CreateSpellCooldown(12975), -- Last Stand + + -- Season of Discovery + CreateSpellCooldown(402913), -- Enraged Regeneration + CreateSpellCooldown(426490), -- Rallying Cry } } + AddCooldowns(data) diff --git a/data/Wrath/blacklist.lua b/data/Wrath/blacklist.lua index fe81068..13fd3c0 100644 --- a/data/Wrath/blacklist.lua +++ b/data/Wrath/blacklist.lua @@ -3,85 +3,35 @@ local _, ns = ... local AddBlacklist = ns.data.AddBlacklist -------------------------------------------------- --- Wrath of the Lich King Classic (Titan) +-- Wrath of the Lich King -------------------------------------------------- -do - local data = { - -- DRUID - [5232] = true, -- Mark of the Wild (Rank 2) - [6756] = true, -- Mark of the Wild (Rank 3) - [5234] = true, -- Mark of the Wild (Rank 4) - [8907] = true, -- Mark of the Wild (Rank 5) - [9884] = true, -- Mark of the Wild (Rank 6) - [9885] = true, -- Mark of the Wild (Rank 7) - [26990] = true, -- Mark of the Wild (Rank 8) - [48469] = true, -- Mark of the Wild (Rank 9) +local data = { + -- DRUID + [48469] = true, -- Mark of the Wild (Rank 9) - [782] = true, -- Thorns (Rank 2) - [1075] = true, -- Thorns (Rank 3) - [8914] = true, -- Thorns (Rank 4) - [9756] = true, -- Thorns (Rank 5) - [9910] = true, -- Thorns (Rank 6) - [26992] = true, -- Thorns (Rank 7) - [53307] = true, -- Thorns (Rank 8) + [53307] = true, -- Thorns (Rank 8) - -- MAGE - [1460] = true, -- Arcane Intellect (Rank 2) - [1461] = true, -- Arcane Intellect (Rank 3) - [10156] = true, -- Arcane Intellect (Rank 4) - [10157] = true, -- Arcane Intellect (Rank 5) - [27126] = true, -- Arcane Intellect (Rank 6) - [42995] = true, -- Arcane Intellect (Rank 7) + -- HUNTER + [61846] = "name", -- Aspect of the Dragonhawk - -- PRIEST - [1243] = true, -- Power Word: Fortitude (Rank 1) - [1244] = true, -- Power Word: Fortitude (Rank 2) - [1245] = true, -- Power Word: Fortitude (Rank 3) - [2791] = true, -- Power Word: Fortitude (Rank 4) - [10937] = true, -- Power Word: Fortitude (Rank 5) - [10938] = true, -- Power Word: Fortitude (Rank 6) - [25389] = true, -- Power Word: Fortitude (Rank 7) - [48161] = true, -- Power Word: Fortitude (Rank 8) + -- MAGE + [42995] = true, -- Arcane Intellect (Rank 7) - -- WARLOCK - [687] = true, -- Demon Skin (Rank 1) - [696] = true, -- Demon Skin (Rank 2) + -- PALADIN + [20911] = true, -- Blessing of Sanctuary + [25899] = true, -- Greater Blessing of Sanctuary - [6307] = true, -- Blood Pact (Rank 1) - [7804] = true, -- Blood Pact (Rank 2) - [7805] = true, -- Blood Pact (Rank 3) - [11766] = true, -- Blood Pact (Rank 4) - [11787] = true, -- Blood Pact (Rank 5) - [27267] = true, -- Blood Pact (Rank 6) - [47982] = true, -- Blood Pact (Rank 7) + -- PRIEST + [48161] = true, -- Power Word: Fortitude (Rank 8) - -------------------------------------------------- - -- Season of Discovery - -------------------------------------------------- - [349981] = true, -- Supercharged Chronoboon Displacer - } + [48040] = true, -- Inner Fire (Rank 8) + [48168] = true, -- Inner Fire (Rank 9) + [48074] = true, -- Prayer of Spirit (Rank 3) + [23723] = true, -- Mind Quickening - AddBlacklist(data) -end + -- WARLOCK + [27267] = true, -- Blood Pact (Rank 6) + [47982] = true, -- Blood Pact (Rank 7) +} -do - local data = { - -- DEATHKNIGHT - [55610] = true, -- Improved Icy Talons - - -- MAGE - [61316] = true, -- Dalaran Brilliance - - -- PRIEST - [48040] = true, -- Inner Fire (Rank 8) - [48168] = true, -- Inner Fire (Rank 9) - [48074] = true, -- Prayer of Spirit (Rank 3) - [49868] = true, -- Mind Quickening - - -- SHAMAN - [30809] = true, -- Unleashed Rage - [51470] = true, -- Elemental Oath - } - - AddBlacklist(data) -end +AddBlacklist(data) diff --git a/data/Wrath/cooldowns.lua b/data/Wrath/cooldowns.lua index ac770a9..38d591d 100644 --- a/data/Wrath/cooldowns.lua +++ b/data/Wrath/cooldowns.lua @@ -7,51 +7,389 @@ local AddCooldowns = ns.data.AddCooldowns -- Wrath of the Lich King Classic (Titan) -------------------------------------------------- local data = { + ["DEATHKNIGHT"] = { + -- General + CreateSpellCooldown(47528), -- Mind Freeze + CreateSpellCooldown(49576), -- Death Grip + CreateSpellCooldown(47476), -- Strangulate + CreateSpellCooldown(48707), -- Anti-Magic Shell + CreateSpellCooldown(48792), -- Icebound Fortitude + CreateSpellCooldown(47568), -- Empower Rune Weapon + CreateSpellCooldown(42650), -- Army of the Dead + CreateSpellCooldown(61999), -- Raise Ally + CreateSpellCooldown(48743), -- Death Pact + + -- Blood + CreateSpellCooldown(49028), -- Dancing Rune Weapon + CreateSpellCooldown(55233), -- Vampiric Blood + CreateSpellCooldown(48982), -- Rune Tap + + -- Frost + CreateSpellCooldown(49039), -- Lichborne + CreateSpellCooldown(51271), -- Unbreakable Armor + CreateSpellCooldown(49203), -- Hungering Cold + + -- Unholy + CreateSpellCooldown(49206), -- Summon Gargoyle + CreateSpellCooldown(49222), -- Bone Shield + CreateSpellCooldown(51052), -- Anti-Magic Zone + + CreateSpellCooldown(45529), -- Blood Tap + CreateSpellCooldown(1314847), -- Death From Above + CreateSpellCooldown(50033), -- Death Rune Mastery (Rank 2) + CreateSpellCooldown(50034), -- Death Rune Mastery (Rank 3) + CreateSpellCooldown(49796), -- Deathchill + CreateSpellCooldown(49005), -- Mark of Blood + CreateSpellCooldown(46584), -- Raise Dead + CreateSpellCooldown(49016), -- Unholy Frenzy + }, + ["DRUID"] = { + -- General + CreateSpellCooldown(20484), -- Rebirth (Rank 1) + CreateSpellCooldown(740), -- Tranquility (Rank 1) + CreateSpellCooldown(22812), -- Barkskin + CreateSpellCooldown(29166), -- Innervate + CreateSpellCooldown(1850), -- Dash (Rank 1) + CreateSpellCooldown(5229), -- Enrage + CreateSpellCooldown(5209), -- Challenging Roar + CreateSpellCooldown(22842), -- Frenzied Regeneration + + -- Talents + CreateSpellCooldown(17116), -- Nature's Swiftness + CreateSpellCooldown(16979), -- Feral Charge - Bear + CreateSpellCooldown(49376), -- Feral Charge - Cat + CreateSpellCooldown(61336), -- Survival Instincts + CreateSpellCooldown(50334), -- Berserk + CreateSpellCooldown(33831), -- Force of Nature + CreateSpellCooldown(48505), -- Starfall (Rank 1) + + CreateSpellCooldown(5211), -- Bash (Rank 1) + CreateSpellCooldown(6798), -- Bash (Rank 2) + CreateSpellCooldown(8983), -- Bash (Rank 3) + CreateSpellCooldown(1309397), -- Elune's Orbital Cannon + CreateSpellCooldown(16689), -- Nature's Grasp (Rank 1) + CreateSpellCooldown(16810), -- Nature's Grasp (Rank 2) + CreateSpellCooldown(16811), -- Nature's Grasp (Rank 3) + CreateSpellCooldown(16812), -- Nature's Grasp (Rank 4) + CreateSpellCooldown(16813), -- Nature's Grasp (Rank 5) + CreateSpellCooldown(17329), -- Nature's Grasp (Rank 6) + CreateSpellCooldown(27009), -- Nature's Grasp (Rank 7) + CreateSpellCooldown(53312), -- Nature's Grasp (Rank 8) + }, + ["HUNTER"] = { + -- General + CreateSpellCooldown(3045), -- Rapid Fire + CreateSpellCooldown(5384), -- Feign Death + CreateSpellCooldown(19263), -- Deterrence + CreateSpellCooldown(1499), -- Freezing Trap (Rank 1) + CreateSpellCooldown(34477), -- Misdirection + CreateSpellCooldown(53271), -- Master's Call + CreateSpellCooldown(19801), -- Tranquilizing Shot + + -- Talents + CreateSpellCooldown(19574), -- Bestial Wrath + CreateSpellCooldown(19577), -- Intimidation + CreateSpellCooldown(23989), -- Readiness + CreateSpellCooldown(34490), -- Silencing Shot + CreateSpellCooldown(19386), -- Wyvern Sting (Rank 1) + + CreateSpellCooldown(50433), -- Bad Attitude (Rank 1) + CreateSpellCooldown(52395), -- Bad Attitude (Rank 2) + CreateSpellCooldown(52396), -- Bad Attitude (Rank 3) + CreateSpellCooldown(52397), -- Bad Attitude (Rank 4) + CreateSpellCooldown(52398), -- Bad Attitude (Rank 5) + CreateSpellCooldown(52399), -- Bad Attitude (Rank 6) + CreateSpellCooldown(53490), -- Bullheaded + CreateSpellCooldown(62757), -- Call Stabled Pet + CreateSpellCooldown(53434), -- Call of the Wild + CreateSpellCooldown(1742), -- Cower + CreateSpellCooldown(61684), -- Dash + CreateSpellCooldown(23145), -- Dive + CreateSpellCooldown(50285), -- Dust Cloud + CreateSpellCooldown(24604), -- Furious Howl (Rank 1) + CreateSpellCooldown(64491), -- Furious Howl (Rank 2) + CreateSpellCooldown(64492), -- Furious Howl (Rank 3) + CreateSpellCooldown(64493), -- Furious Howl (Rank 4) + CreateSpellCooldown(64494), -- Furious Howl (Rank 5) + CreateSpellCooldown(64495), -- Furious Howl (Rank 6) + CreateSpellCooldown(55709), -- Heart of the Phoenix + CreateSpellCooldown(34026), -- Kill Command + CreateSpellCooldown(53478), -- Last Stand + CreateSpellCooldown(53426), -- Lick Your Wounds + CreateSpellCooldown(50479), -- Nether Shock (Rank 1) + CreateSpellCooldown(53584), -- Nether Shock (Rank 2) + CreateSpellCooldown(53586), -- Nether Shock (Rank 3) + CreateSpellCooldown(53587), -- Nether Shock (Rank 4) + CreateSpellCooldown(53588), -- Nether Shock (Rank 5) + CreateSpellCooldown(53589), -- Nether Shock (Rank 6) + CreateSpellCooldown(50245), -- Pin (Rank 1) + CreateSpellCooldown(53544), -- Pin (Rank 2) + CreateSpellCooldown(53545), -- Pin (Rank 3) + CreateSpellCooldown(53546), -- Pin (Rank 4) + CreateSpellCooldown(53547), -- Pin (Rank 5) + CreateSpellCooldown(53548), -- Pin (Rank 6) + CreateSpellCooldown(53401), -- Rabid + CreateSpellCooldown(50518), -- Ravage (Rank 1) + CreateSpellCooldown(53558), -- Ravage (Rank 2) + CreateSpellCooldown(53559), -- Ravage (Rank 3) + CreateSpellCooldown(53560), -- Ravage (Rank 4) + CreateSpellCooldown(53561), -- Ravage (Rank 5) + CreateSpellCooldown(53562), -- Ravage (Rank 6) + CreateSpellCooldown(53517), -- Roar of Recovery + CreateSpellCooldown(53480), -- Roar of Sacrifice + CreateSpellCooldown(50498), -- Savage Rend (Rank 1) + CreateSpellCooldown(53578), -- Savage Rend (Rank 2) + CreateSpellCooldown(53579), -- Savage Rend (Rank 3) + CreateSpellCooldown(53580), -- Savage Rend (Rank 4) + CreateSpellCooldown(53581), -- Savage Rend (Rank 5) + CreateSpellCooldown(53582), -- Savage Rend (Rank 6) + CreateSpellCooldown(50318), -- Serenity Dust (Rank 1) + CreateSpellCooldown(52012), -- Serenity Dust (Rank 2) + CreateSpellCooldown(52013), -- Serenity Dust (Rank 3) + CreateSpellCooldown(52014), -- Serenity Dust (Rank 4) + CreateSpellCooldown(52015), -- Serenity Dust (Rank 5) + CreateSpellCooldown(52016), -- Serenity Dust (Rank 6) + CreateSpellCooldown(26064), -- Shell Shield + CreateSpellCooldown(50541), -- Snatch (Rank 1) + CreateSpellCooldown(53537), -- Snatch (Rank 2) + CreateSpellCooldown(53538), -- Snatch (Rank 3) + CreateSpellCooldown(53540), -- Snatch (Rank 4) + CreateSpellCooldown(53542), -- Snatch (Rank 5) + CreateSpellCooldown(53543), -- Snatch (Rank 6) + CreateSpellCooldown(50519), -- Sonic Blast (Rank 1) + CreateSpellCooldown(53564), -- Sonic Blast (Rank 2) + CreateSpellCooldown(53565), -- Sonic Blast (Rank 3) + CreateSpellCooldown(53566), -- Sonic Blast (Rank 4) + CreateSpellCooldown(53567), -- Sonic Blast (Rank 5) + CreateSpellCooldown(53568), -- Sonic Blast (Rank 6) + CreateSpellCooldown(57386), -- Stampede (Rank 1) + CreateSpellCooldown(57389), -- Stampede (Rank 2) + CreateSpellCooldown(57390), -- Stampede (Rank 3) + CreateSpellCooldown(57391), -- Stampede (Rank 4) + CreateSpellCooldown(57392), -- Stampede (Rank 5) + CreateSpellCooldown(57393), -- Stampede (Rank 6) + CreateSpellCooldown(53477), -- Taunt + CreateSpellCooldown(54706), -- Venom Web Spray (Rank 1) + CreateSpellCooldown(55505), -- Venom Web Spray (Rank 2) + CreateSpellCooldown(55506), -- Venom Web Spray (Rank 3) + CreateSpellCooldown(55507), -- Venom Web Spray (Rank 4) + CreateSpellCooldown(55508), -- Venom Web Spray (Rank 5) + CreateSpellCooldown(55509), -- Venom Web Spray (Rank 6) + CreateSpellCooldown(4167), -- Web + }, + ["MAGE"] = { + -- General + CreateSpellCooldown(2139), -- Counterspell + CreateSpellCooldown(45438), -- Ice Block + CreateSpellCooldown(66), -- Invisibility + CreateSpellCooldown(12051), -- Evocation + CreateSpellCooldown(55342), -- Mirror Image + + -- Arcane + CreateSpellCooldown(12042), -- Arcane Power + CreateSpellCooldown(12043), -- Presence of Mind + + -- Fire + CreateSpellCooldown(11129), -- Combustion + + -- Frost + CreateSpellCooldown(12472), -- Icy Veins + CreateSpellCooldown(11958), -- Cold Snap + CreateSpellCooldown(31687), -- Summon Water Elemental + CreateSpellCooldown(44572), -- Deep Freeze + + CreateSpellCooldown(53142), -- Portal: Dalaran + CreateSpellCooldown(43987), -- Ritual of Refreshment (Rank 1) + CreateSpellCooldown(58659), -- Ritual of Refreshment (Rank 2) + CreateSpellCooldown(70909), -- Summon Water Elemental (Prototype) + }, + ["PALADIN"] = { + -- General + CreateSpellCooldown(498), -- Divine Protection + CreateSpellCooldown(642), -- Divine Shield + CreateSpellCooldown(633), -- Lay on Hands (Rank 1) + CreateSpellCooldown(1022), -- Hand of Protection (Rank 1) + CreateSpellCooldown(1044), -- Hand of Freedom + CreateSpellCooldown(6940), -- Hand of Sacrifice + CreateSpellCooldown(853), -- Hammer of Justice (Rank 1) + CreateSpellCooldown(31884), -- Avenging Wrath + CreateSpellCooldown(54428), -- Divine Plea + CreateSpellCooldown(2812), -- Holy Wrath (Rank 1) + CreateSpellCooldown(10318), -- Holy Wrath (Rank 2) + CreateSpellCooldown(27139), -- Holy Wrath (Rank 3) + + -- Talents + CreateSpellCooldown(20216), -- Divine Favor + CreateSpellCooldown(31842), -- Divine Illumination + CreateSpellCooldown(31821), -- Aura Mastery + CreateSpellCooldown(64205), -- Divine Sacrifice + CreateSpellCooldown(20066), -- Repentance + + CreateSpellCooldown(19752), -- Divine Intervention + CreateSpellCooldown(1038), -- Hand of Salvation + }, ["PRIEST"] = { -- Discipline - CreateSpellCooldown(10060), -- Power Infusion - CreateSpellCooldown(14751), -- Inner Focus + CreateSpellCooldown(10060), -- Power Infusion + CreateSpellCooldown(14751), -- Inner Focus -- Holy - CreateSpellCooldown(724), -- Lightwell (Rank 1) - CreateSpellCooldown(27870), -- Lightwell (Rank 2) - CreateSpellCooldown(27871), -- Lightwell (Rank 3) + CreateSpellCooldown(724), -- Lightwell (Rank 1) + CreateSpellCooldown(27870), -- Lightwell (Rank 2) + CreateSpellCooldown(27871), -- Lightwell (Rank 3) -- Shadow - CreateSpellCooldown(15286, false), -- Vampiric Embrace - CreateSpellCooldown(15487), -- Silence - - CreateSpellCooldown(586), -- Fade (Rank 1) - CreateSpellCooldown(9578), -- Fade (Rank 2) - CreateSpellCooldown(9579), -- Fade (Rank 3) - CreateSpellCooldown(9592), -- Fade (Rank 4) - CreateSpellCooldown(10941), -- Fade (Rank 5) - CreateSpellCooldown(10942), -- Fade (Rank 6) - - CreateSpellCooldown(8122), -- Psychic Scream (Rank 1) - CreateSpellCooldown(8124), -- Psychic Scream (Rank 2) - CreateSpellCooldown(10888), -- Psychic Scream (Rank 3) - CreateSpellCooldown(10890), -- Psychic Scream (Rank 4) - - CreateSpellCooldown(6346), -- Fear Ward (Rank 1) - - CreateSpellCooldown(13908), -- Desperate Prayer (Rank 1) - CreateSpellCooldown(19236), -- Desperate Prayer (Rank 2) - CreateSpellCooldown(19238), -- Desperate Prayer (Rank 3) - CreateSpellCooldown(19240), -- Desperate Prayer (Rank 4) - CreateSpellCooldown(19241), -- Desperate Prayer (Rank 5) - CreateSpellCooldown(19242), -- Desperate Prayer (Rank 6) - CreateSpellCooldown(19243), -- Desperate Prayer (Rank 7) - CreateSpellCooldown(25437), -- Desperate Prayer (Rank 8) - CreateSpellCooldown(48173), -- Desperate Prayer (Rank 9) - - -- Undead - CreateSpellCooldown(2944), -- Devouring Plague(Rank 1) - CreateSpellCooldown(19276), -- Devouring Plague(Rank 2) - CreateSpellCooldown(19277), -- Devouring Plague(Rank 3) - CreateSpellCooldown(19278), -- Devouring Plague(Rank 4) - CreateSpellCooldown(19279), -- Devouring Plague(Rank 5) - CreateSpellCooldown(19280), -- Devouring Plague(Rank 6) + CreateSpellCooldown(15487), -- Silence + + CreateSpellCooldown(586), -- Fade (Rank 1) + CreateSpellCooldown(9578), -- Fade (Rank 2) + CreateSpellCooldown(9579), -- Fade (Rank 3) + CreateSpellCooldown(9592), -- Fade (Rank 4) + CreateSpellCooldown(10941), -- Fade (Rank 5) + CreateSpellCooldown(10942), -- Fade (Rank 6) + + CreateSpellCooldown(8122), -- Psychic Scream (Rank 1) + CreateSpellCooldown(8124), -- Psychic Scream (Rank 2) + CreateSpellCooldown(10888), -- Psychic Scream (Rank 3) + CreateSpellCooldown(10890), -- Psychic Scream (Rank 4) + + CreateSpellCooldown(6346), -- Fear Ward (Rank 1) + + CreateSpellCooldown(13908), -- Desperate Prayer (Rank 1) + CreateSpellCooldown(19236), -- Desperate Prayer (Rank 2) + CreateSpellCooldown(19238), -- Desperate Prayer (Rank 3) + CreateSpellCooldown(19240), -- Desperate Prayer (Rank 4) + CreateSpellCooldown(19241), -- Desperate Prayer (Rank 5) + CreateSpellCooldown(19242), -- Desperate Prayer (Rank 6) + CreateSpellCooldown(19243), -- Desperate Prayer (Rank 7) + CreateSpellCooldown(25437), -- Desperate Prayer (Rank 8) + CreateSpellCooldown(48173), -- Desperate Prayer (Rank 9) + + -- Talents + CreateSpellCooldown(47585), -- Dispersion + CreateSpellCooldown(33206), -- Pain Suppression + CreateSpellCooldown(47788), -- Guardian Spirit + CreateSpellCooldown(64843), -- Divine Hymn + CreateSpellCooldown(64901), -- Hymn of Hope + CreateSpellCooldown(34433), -- Shadowfiend + + CreateSpellCooldown(64044), -- Psychic Horror + }, + ["ROGUE"] = { + -- General + CreateSpellCooldown(1766), -- Kick (Rank 1) + CreateSpellCooldown(2094), -- Blind + CreateSpellCooldown(5277), -- Evasion (Rank 1) + CreateSpellCooldown(1856), -- Vanish (Rank 1) + CreateSpellCooldown(2983), -- Sprint (Rank 1) + CreateSpellCooldown(31224), -- Cloak of Shadows + CreateSpellCooldown(57934), -- Tricks of the Trade + + -- Talents + CreateSpellCooldown(13750), -- Adrenaline Rush + CreateSpellCooldown(13877), -- Blade Flurry + CreateSpellCooldown(51690), -- Killing Spree + CreateSpellCooldown(14177), -- Cold Blood + CreateSpellCooldown(14185), -- Preparation + CreateSpellCooldown(14183), -- Premeditation + CreateSpellCooldown(36554), -- Shadowstep + CreateSpellCooldown(51713), -- Shadow Dance + + CreateSpellCooldown(51722), -- Dismantle + }, + ["SHAMAN"] = { + -- General + CreateSpellCooldown(57994), -- Wind Shear + CreateSpellCooldown(51514), -- Hex + CreateSpellCooldown(8177), -- Grounding Totem + CreateSpellCooldown(20608), -- Reincarnation + CreateSpellCooldown(2825), -- Bloodlust + CreateSpellCooldown(32182), -- Heroism + CreateSpellCooldown(2062), -- Earth Elemental Totem + CreateSpellCooldown(2894), -- Fire Elemental Totem + + -- Talents + CreateSpellCooldown(16166), -- Elemental Mastery + CreateSpellCooldown(16188), -- Nature's Swiftness + CreateSpellCooldown(30823), -- Shamanistic Rage + CreateSpellCooldown(51533), -- Feral Spirit + CreateSpellCooldown(16190), -- Mana Tide Totem + CreateSpellCooldown(55198), -- Tidal Force + + CreateSpellCooldown(556), -- Astral Recall + CreateSpellCooldown(51490), -- Thunderstorm (Rank 1) + CreateSpellCooldown(59156), -- Thunderstorm (Rank 2) + CreateSpellCooldown(59158), -- Thunderstorm (Rank 3) + CreateSpellCooldown(59159), -- Thunderstorm (Rank 4) + CreateSpellCooldown(1320276), -- Volcano + }, + ["WARLOCK"] = { + -- General + CreateSpellCooldown(1122), -- Inferno + CreateSpellCooldown(6789), -- Death Coil (Rank 1) + CreateSpellCooldown(5484), -- Howl of Terror (Rank 1) + CreateSpellCooldown(29858), -- Soulshatter + CreateSpellCooldown(48020), -- Demonic Circle: Teleport + + -- Talents + CreateSpellCooldown(18708), -- Fel Domination + CreateSpellCooldown(47193), -- Demonic Empowerment + CreateSpellCooldown(47241), -- Metamorphosis + + CreateSpellCooldown(603), -- Curse of Doom (Rank 1) + CreateSpellCooldown(30910), -- Curse of Doom (Rank 2) + CreateSpellCooldown(47867), -- Curse of Doom (Rank 3) + CreateSpellCooldown(18540), -- Ritual of Doom + CreateSpellCooldown(29893), -- Ritual of Souls (Rank 1) + CreateSpellCooldown(58887), -- Ritual of Souls (Rank 2) + CreateSpellCooldown(698), -- Ritual of Summoning + CreateSpellCooldown(7812), -- Sacrifice (Rank 1) + CreateSpellCooldown(19438), -- Sacrifice (Rank 2) + CreateSpellCooldown(19440), -- Sacrifice (Rank 3) + CreateSpellCooldown(19441), -- Sacrifice (Rank 4) + CreateSpellCooldown(19442), -- Sacrifice (Rank 5) + CreateSpellCooldown(19443), -- Sacrifice (Rank 6) + CreateSpellCooldown(27273), -- Sacrifice (Rank 7) + CreateSpellCooldown(47985), -- Sacrifice (Rank 8) + CreateSpellCooldown(47986), -- Sacrifice (Rank 9) + CreateSpellCooldown(17735), -- Suffering (Rank 1) + CreateSpellCooldown(17750), -- Suffering (Rank 2) + CreateSpellCooldown(17751), -- Suffering (Rank 3) + CreateSpellCooldown(17752), -- Suffering (Rank 4) + CreateSpellCooldown(27271), -- Suffering (Rank 5) + CreateSpellCooldown(33701), -- Suffering (Rank 6) + CreateSpellCooldown(47989), -- Suffering (Rank 7) + CreateSpellCooldown(47990), -- Suffering (Rank 8) + }, + ["WARRIOR"] = { + -- General + CreateSpellCooldown(871), -- Shield Wall + CreateSpellCooldown(1719), -- Recklessness + CreateSpellCooldown(20230), -- Retaliation + CreateSpellCooldown(18499), -- Berserker Rage + CreateSpellCooldown(3411), -- Intervene + CreateSpellCooldown(5246), -- Intimidating Shout + CreateSpellCooldown(1161), -- Challenging Shout + CreateSpellCooldown(676), -- Disarm + CreateSpellCooldown(2687), -- Bloodrage + CreateSpellCooldown(6552), -- Pummel + CreateSpellCooldown(20252), -- Intercept + CreateSpellCooldown(64382), -- Shattering Throw + + -- Talents + CreateSpellCooldown(12292), -- Death Wish + CreateSpellCooldown(12328), -- Sweeping Strikes + CreateSpellCooldown(12809), -- Concussion Blow + CreateSpellCooldown(12975), -- Last Stand + CreateSpellCooldown(46924), -- Bladestorm + CreateSpellCooldown(46968), -- Shockwave + CreateSpellCooldown(55694), -- Enraged Regeneration + + CreateSpellCooldown(57755), -- Heroic Throw + CreateSpellCooldown(694), -- Mocking Blow + CreateSpellCooldown(1282056), -- Rallying Cry + CreateSpellCooldown(2565), -- Shield Block } } + AddCooldowns(data) diff --git a/data/shared/blacklist.lua b/data/shared/blacklist.lua index af7568b..cb1ec92 100644 --- a/data/shared/blacklist.lua +++ b/data/shared/blacklist.lua @@ -1,55 +1,241 @@ local _, ns = ... local AddBlacklist = ns.data.AddBlacklist +local In = ns.data.In -local EXPANSION = _G.LE_EXPANSION_LEVEL_CURRENT or -1 -local LE_EXPANSION_CLASSIC = _G.LE_EXPANSION_CLASSIC or 0 -local LE_EXPANSION_BURNING_CRUSADE = _G.LE_EXPANSION_BURNING_CRUSADE or 1 -local LE_EXPANSION_WRATH_OF_THE_LICH_KING = _G.LE_EXPANSION_WRATH_OF_THE_LICH_KING or 2 -local LE_EXPANSION_CATACLYSM = _G.LE_EXPANSION_CATACLYSM or 3 -local LE_EXPANSION_MISTS_OF_PANDARIA = _G.LE_EXPANSION_MISTS_OF_PANDARIA or 4 -local LE_EXPANSION_WARLORDS_OF_DRAENOR = _G.LE_EXPANSION_WARLORDS_OF_DRAENOR or 5 -local LE_EXPANSION_LEGION = _G.LE_EXPANSION_LEGION or 6 -local LE_EXPANSION_BATTLE_FOR_AZEROTH = _G.LE_EXPANSION_BATTLE_FOR_AZEROTH or 7 -local LE_EXPANSION_SHADOWLANDS = _G.LE_EXPANSION_SHADOWLANDS or 8 -local LE_EXPANSION_DRAGONFLIGHT = _G.LE_EXPANSION_DRAGONFLIGHT or 9 -local LE_EXPANSION_WAR_WITHIN = _G.LE_EXPANSION_WAR_WITHIN or 10 -local LE_EXPANSION_MIDNIGHT = _G.LE_EXPANSION_MIDNIGHT or 11 +local EXPANSION = ns.client.expansion +local LE = ns.expansions -------------------------------------------------- -- Black List -------------------------------------------------- +-- "name": also hide every aura sharing this spell's localized name (all ranks, new food buffs) local general = { - ["Well Fed"] = true, - ["Drink"] = true, - ["Food"] = true, - + [430] = "name", -- Drink + [433] = "name", -- Food + [19705] = "name", -- Well Fed + -- Lust - [57723] = (EXPANSION >= LE_EXPANSION_WRATH_OF_THE_LICH_KING), -- Exhaustion (Heroism) - [57724] = (EXPANSION >= LE_EXPANSION_WRATH_OF_THE_LICH_KING), -- Sated (Bloodlust) - [80354] = (EXPANSION >= LE_EXPANSION_MISTS_OF_PANDARIA), -- Temporal Displacement (Mage) - [264689] = (EXPANSION >= LE_EXPANSION_SHADOWLANDS), -- Fatigued (Hunter) - [390435] = (EXPANSION >= LE_EXPANSION_DRAGONFLIGHT), -- Exhaustion (Evoker - Fury of the Aspects) + [57723] = In(LE.Wrath), -- Exhaustion (Heroism) + [57724] = In(LE.Wrath), -- Sated (Bloodlust) + [80354] = In(LE.Mists), -- Temporal Displacement (Mage) + [264689] = In(LE.Shadowlands), -- Fatigued (Hunter) + [390435] = In(LE.Dragonflight), -- Exhaustion (Evoker - Fury of the Aspects) + + -- DEATHKNIGHT + [48263] = In(LE.Wrath, LE.Mists), -- Frost Presence (Blood Presence on Cata, Mists) + [48265] = In(LE.Wrath, LE.Mists), -- Unholy Presence + [48266] = In(LE.Wrath, LE.Mists), -- Blood Presence (Frost Presence on Cata, Mists) + [55610] = In(LE.Wrath, LE.Mists), -- Improved Icy Talons + [57330] = In(LE.Wrath, LE.Wrath) and "name" or In(LE.Mists, LE.Mists), -- Horn of Winter -- DRUID - ["Mark of the Wild"] = true, - [1126] = true, -- Mark of the Wild - [768] = true, -- Cat Form - [5487] = true, -- Bear Form - [24858] = true, -- Moonkin Form - [114282] = (EXPANSION >= LE_EXPANSION_MISTS_OF_PANDARIA), -- Treant Form + [1126] = "name", -- Mark of the Wild + [768] = true, -- Cat Form + [5487] = true, -- Bear Form + [24858] = true, -- Moonkin Form + [114282] = In(LE.Mists), -- Treant Form + + [5232] = In(LE.Classic, LE.Wrath), -- Mark of the Wild (Rank 2) + [6756] = In(LE.Classic, LE.Wrath), -- Mark of the Wild (Rank 3) + [5234] = In(LE.Classic, LE.Wrath), -- Mark of the Wild (Rank 4) + [8907] = In(LE.Classic, LE.Wrath), -- Mark of the Wild (Rank 5) + [9884] = In(LE.Classic, LE.Wrath), -- Mark of the Wild (Rank 6) + [9885] = In(LE.Classic, LE.Wrath), -- Mark of the Wild (Rank 7) + [26990] = In(LE.BurningCrusade, LE.Wrath), -- Mark of the Wild (Rank 8) + + [782] = In(LE.Classic, LE.Wrath), -- Thorns (Rank 2) + [1075] = In(LE.Classic, LE.Wrath), -- Thorns (Rank 3) + [8914] = In(LE.Classic, LE.Wrath), -- Thorns (Rank 4) + [9756] = In(LE.Classic, LE.Wrath), -- Thorns (Rank 5) + [9910] = In(LE.Classic, LE.Wrath), -- Thorns (Rank 6) + [26992] = In(LE.BurningCrusade, LE.Wrath), -- Thorns (Rank 7) + + [783] = true, -- Travel Form + [1066] = In(LE.Classic, LE.Mists), -- Aquatic Form + [9634] = In(LE.Classic, LE.Wrath), -- Dire Bear Form + [33943] = In(LE.BurningCrusade, LE.Mists), -- Flight Form + [40120] = In(LE.BurningCrusade, LE.Mists), -- Swift Flight Form + + [21849] = In(LE.Classic, LE.Wrath) and "name", -- Gift of the Wild + [21850] = In(LE.Classic, LE.Classic), -- Gift of the Wild (Rank 2) + + -- HUNTER + [13165] = In(LE.Classic, LE.Wrath) and "name" or In(LE.Mists, LE.Mists), -- Aspect of the Hawk + [13163] = In(LE.Classic, LE.Wrath), -- Aspect of the Monkey -- MAGE - ["Arcane Intellect"] = true, + [1459] = "name", -- Arcane Intellect + + [1460] = In(LE.Classic, LE.Wrath), -- Arcane Intellect (Rank 2) + [1461] = In(LE.Classic, LE.Wrath), -- Arcane Intellect (Rank 3) + [10156] = In(LE.Classic, LE.Wrath), -- Arcane Intellect (Rank 4) + [10157] = In(LE.Classic, LE.Wrath), -- Arcane Intellect (Rank 5) + [27126] = In(LE.BurningCrusade, LE.Wrath), -- Arcane Intellect (Rank 6) + + [30482] = In(LE.BurningCrusade, LE.Wrath) and "name" or In(LE.Mists, LE.Mists), -- Molten Armor + + [61316] = In(LE.Wrath, LE.Mists), -- Dalaran Brilliance + + [23028] = In(LE.Classic, LE.Wrath) and "name", -- Arcane Brilliance + + [168] = In(LE.Classic, LE.Wrath) and "name", -- Frost Armor + [7300] = In(LE.Classic, LE.Classic), -- Frost Armor (Rank 2) + [7301] = In(LE.Classic, LE.Classic), -- Frost Armor (Rank 3) + + [7302] = In(LE.Classic, LE.Wrath) and "name" or In(LE.Mists, LE.Mists), -- Ice Armor + [7320] = In(LE.Classic, LE.Classic), -- Ice Armor (Rank 2) + [10219] = In(LE.Classic, LE.Classic), -- Ice Armor (Rank 3) + [10220] = In(LE.Classic, LE.Classic), -- Ice Armor (Rank 4) + + [6117] = In(LE.Classic, LE.Wrath) and "name" or In(LE.Mists, LE.Mists), -- Mage Armor + [22782] = In(LE.Classic, LE.Classic), -- Mage Armor (Rank 2) + [22783] = In(LE.Classic, LE.Classic), -- Mage Armor (Rank 3) -- PALADIN - [7294] = (EXPANSION <= LE_EXPANSION_CATACLYSM), -- Retribution Aura - [19746] = (EXPANSION <= LE_EXPANSION_CATACLYSM), -- Concentration Aura - [19891] = (EXPANSION <= LE_EXPANSION_CATACLYSM), -- Resistance Aura - [32223] = (EXPANSION >= LE_EXPANSION_BURNING_CRUSADE), -- Crusader Aura + [7294] = In(LE.Classic, LE.Cataclysm), -- Retribution Aura + [19746] = In(LE.Classic, LE.Cataclysm), -- Concentration Aura + [19891] = In(LE.Classic, LE.Cataclysm), -- Resistance Aura + [32223] = In(LE.BurningCrusade), -- Crusader Aura + + [465] = In(LE.Classic, LE.Wrath) and "name", -- Devotion Aura + [25780] = In(LE.Classic, LE.Mists), -- Righteous Fury + [20217] = In(LE.Classic, LE.Mists), -- Blessing of Kings + [19740] = In(LE.Classic, LE.Wrath) and "name" or In(LE.Cataclysm, LE.Mists), -- Blessing of Might + [19742] = In(LE.Classic, LE.Wrath) and "name", -- Blessing of Wisdom + [25782] = In(LE.Classic, LE.Wrath) and "name", -- Greater Blessing of Might + [25916] = In(LE.Classic, LE.Classic), -- Greater Blessing of Might (Rank 2) + [25894] = In(LE.Classic, LE.Wrath) and "name", -- Greater Blessing of Wisdom + [25918] = In(LE.Classic, LE.Classic), -- Greater Blessing of Wisdom (Rank 2) + [25898] = In(LE.Classic, LE.Wrath), -- Greater Blessing of Kings + [19899] = In(LE.Classic, LE.BurningCrusade), -- Fire Resistance Aura (Rank 2) + [19900] = In(LE.Classic, LE.BurningCrusade), -- Fire Resistance Aura (Rank 3) + [21084] = In(LE.Classic, LE.Wrath) and "name", -- Seal of Righteousness -- PRIEST - ["Power Word: Fortitude"] = true, + [1243] = In(LE.Classic, LE.Cataclysm) and "name", -- Power Word: Fortitude (Retail uses 21562) + + [25389] = In(LE.BurningCrusade, LE.Wrath), -- Power Word: Fortitude (Rank 7) + + [21562] = In(LE.Classic, LE.Wrath) and "name" or true, -- Prayer of Fortitude (Power Word: Fortitude from Cata) + [21564] = In(LE.Classic, LE.BurningCrusade), -- Prayer of Fortitude (Rank 2) + + [976] = In(LE.Classic, LE.BurningCrusade), -- Shadow Protection (Rank 1) + [10957] = In(LE.Classic, LE.BurningCrusade), -- Shadow Protection (Rank 2) + + [27683] = In(LE.Classic, LE.BurningCrusade), -- Prayer of Shadow Protection + + [14819] = In(LE.Classic, LE.BurningCrusade), -- Divine Spirit + [27681] = In(LE.Classic, LE.BurningCrusade), -- Prayer of Spirit (Rank 1) + [32999] = In(LE.BurningCrusade, LE.Wrath), -- Prayer of Spirit (Rank 2) + [588] = In(LE.Classic, LE.Wrath) and "name" or In(LE.Mists, LE.Mists), -- Inner Fire + [15473] = In(LE.Classic, LE.Mists), -- Shadowform + + [1244] = In(LE.Classic, LE.Wrath), -- Power Word: Fortitude (Rank 2) + [1245] = In(LE.Classic, LE.Wrath), -- Power Word: Fortitude (Rank 3) + [2791] = In(LE.Classic, LE.Wrath), -- Power Word: Fortitude (Rank 4) + [10937] = In(LE.Classic, LE.Wrath), -- Power Word: Fortitude (Rank 5) + [10938] = In(LE.Classic, LE.Wrath), -- Power Word: Fortitude (Rank 6) + + -- ROGUE + [8679] = In(LE.Mists), -- Wound Poison + [5761] = In(LE.Mists), -- Mind-numbing Poison + + -- SHAMAN + [324] = In(LE.Classic, LE.Wrath) and "name" or In(LE.Mists, LE.Mists), -- Lightning Shield + [24398] = In(LE.BurningCrusade, LE.Wrath) and "name", -- Water Shield + + -- Windfury Weapon has 3 IDs per rank on Era: cast, effect, and one with no class + -- (R1 8232/8233/8234, R2 8235/8236/8237, R3 10486/10484/10488, R4 16362/16361/16363) + [8232] = In(LE.Classic, LE.Classic) and "name", -- Windfury Weapon + + [30809] = In(LE.Wrath, LE.Mists), -- Unleashed Rage + [51470] = In(LE.Wrath, LE.Mists), -- Elemental Oath + + [52127] = In(LE.Mists), -- Water Shield + + -- WARLOCK + [687] = In(LE.Classic, LE.Wrath), -- Demon Skin (Rank 1) + [696] = In(LE.Classic, LE.Wrath), -- Demon Skin (Rank 2) + + [6307] = In(LE.Classic, LE.Wrath), -- Blood Pact (Rank 1) + [7804] = In(LE.Classic, LE.Wrath), -- Blood Pact (Rank 2) + [7805] = In(LE.Classic, LE.Wrath), -- Blood Pact (Rank 3) + [11766] = In(LE.Classic, LE.Wrath), -- Blood Pact (Rank 4) + [11767] = In(LE.Classic, LE.Wrath), -- Blood Pact (Rank 5) + [27268] = In(LE.BurningCrusade, LE.Wrath), -- Blood Pact (Rank 6) + + [706] = In(LE.Classic, LE.Wrath) and "name", -- Demon Armor + [28176] = In(LE.BurningCrusade, LE.Wrath) and "name", -- Fel Armor + + -- WARRIOR + [2457] = In(LE.Classic, LE.Mists), -- Battle Stance + [71] = In(LE.Classic, LE.Mists), -- Defensive Stance + [2458] = In(LE.Classic, LE.Mists), -- Berserker Stance + [6673] = In(LE.Classic, LE.Wrath) and "name" or In(LE.Mists, LE.Mists), -- Battle Shout + [469] = In(LE.BurningCrusade, LE.Wrath) and "name" or In(LE.Mists, LE.Mists), -- Commanding Shout + + -- Scrolls + [8091] = In(LE.Classic, LE.BurningCrusade), -- Armor (Scroll of Protection) + [8094] = In(LE.Classic, LE.BurningCrusade), -- Armor (Scroll of Protection II) + [8095] = In(LE.Classic, LE.BurningCrusade), -- Armor (Scroll of Protection III) + [12175] = In(LE.Classic, LE.BurningCrusade), -- Armor (Scroll of Protection IV) + [33079] = In(LE.BurningCrusade, LE.Wrath), -- Armor (Scroll of Protection V) + + [8096] = In(LE.Classic, LE.BurningCrusade), -- Intellect (Scroll of Intellect) + [8097] = In(LE.Classic, LE.BurningCrusade), -- Intellect (Scroll of Intellect II) + [8098] = In(LE.Classic, LE.BurningCrusade), -- Intellect (Scroll of Intellect III) + [12176] = In(LE.Classic, LE.BurningCrusade), -- Intellect (Scroll of Intellect IV) + [33078] = In(LE.BurningCrusade, LE.Wrath), -- Intellect (Scroll of Intellect V) + + [8099] = In(LE.Classic, LE.BurningCrusade), -- Stamina (Scroll of Stamina) + [8100] = In(LE.Classic, LE.BurningCrusade), -- Stamina (Scroll of Stamina II) + [8101] = In(LE.Classic, LE.BurningCrusade), -- Stamina (Scroll of Stamina III) + [12178] = In(LE.Classic, LE.BurningCrusade), -- Stamina (Scroll of Stamina IV) + [33081] = In(LE.BurningCrusade, LE.Wrath), -- Stamina (Scroll of Stamina V) + + [8112] = In(LE.Classic, LE.BurningCrusade), -- Spirit Magic (Scroll of Spirit) + [8113] = In(LE.Classic, LE.BurningCrusade), -- Spirit Magic (Scroll of Spirit II) + [8114] = In(LE.Classic, LE.BurningCrusade), -- Spirit Magic (Scroll of Spirit III) + [12177] = In(LE.Classic, LE.BurningCrusade), -- Spirit Magic (Scroll of Spirit IV) + [33080] = In(LE.BurningCrusade, LE.Wrath), -- Spirit Magic (Scroll of Spirit V) + + [8115] = In(LE.Classic, LE.BurningCrusade), -- Agility (Scroll of Agility) + [8116] = In(LE.Classic, LE.BurningCrusade), -- Agility (Scroll of Agility II) + [8117] = In(LE.Classic, LE.BurningCrusade), -- Agility (Scroll of Agility III) + [12174] = In(LE.Classic, LE.BurningCrusade), -- Agility (Scroll of Agility IV) + [33077] = In(LE.BurningCrusade, LE.Wrath), -- Agility (Scroll of Agility V) + + [8118] = In(LE.Classic, LE.BurningCrusade), -- Strength (Scroll of Strength) + [8119] = In(LE.Classic, LE.BurningCrusade), -- Strength (Scroll of Strength II) + [8120] = In(LE.Classic, LE.BurningCrusade), -- Strength (Scroll of Strength III) + [12179] = In(LE.Classic, LE.BurningCrusade), -- Strength (Scroll of Strength IV) + [33082] = In(LE.BurningCrusade, LE.Wrath), -- Strength (Scroll of Strength V) + + -- Consumables + [17629] = In(LE.Classic, LE.BurningCrusade), -- Flask of Chromatic Resistance + + -- Reputation + [17670] = In(LE.Classic, LE.BurningCrusade), -- Agent Dawn Commission + + -- Christimas + [26218] = In(LE.Classic, LE.BurningCrusade), -- Mistletoe + + -- Hallowen + [24755] = In(LE.Classic, LE.BurningCrusade), -- Tricked or Treated + + -- Booms + [15366] = In(LE.Classic, LE.Classic), -- Songflower Serenade + [22817] = In(LE.Classic, LE.Classic), -- Fengus' Ferocity + [22818] = In(LE.Classic, LE.Classic), -- Mol'dar's Moxie + [22820] = In(LE.Classic, LE.Classic), -- Slip'kik's Savvy + [22888] = In(LE.Classic, LE.Classic), -- Rallying Cry of the Dragonslayer + [355363] = In(LE.Classic, LE.Classic), -- Rallying Cry of the Dragonslayer + [23768] = In(LE.Classic, LE.Classic), -- Sayge's Dark Fortune of Damage + [24425] = In(LE.Classic, LE.Classic), -- Spirit of Zandalar + [11371] = In(LE.Classic, LE.Classic), -- Gift of Arthas + [355365] = In(LE.Classic, LE.Classic), -- Spirit of Zandalar + [16323] = In(LE.Classic, LE.Classic), -- Juju Power } AddBlacklist(general) @@ -57,87 +243,82 @@ AddBlacklist(general) -------------------------------------------------- -- Classic -------------------------------------------------- -do - local data = { - -- DRUID - [1126] = true, -- Mark of the Wild (Rank 1) - - [467] = (EXPANSION < LE_EXPANSION_CATACLYSM), -- Thorns (Rank 1) - - [24907] = (EXPANSION <= LE_EXPANSION_MISTS_OF_PANDARIA), -- Moonkin Aura +local classic = { + -- DRUID + [1126] = true, -- Mark of the Wild (Rank 1) - -- HUNTER - [19506] = (EXPANSION <= LE_EXPANSION_MISTS_OF_PANDARIA), -- Trueshot Aura + [467] = In(LE.Classic, LE.Wrath), -- Thorns (Rank 1) - -- MAGE - [1459] = true, -- Arcane Intellect (Rank 1) + [24907] = In(LE.Classic, LE.Mists), -- Moonkin Aura - -- PALADIN - [19740] = (EXPANSION <= LE_EXPANSION_MISTS_OF_PANDARIA), -- Blessing of Might - - -- ROGUE - [1784] = false, -- Stealth - [2823] = true, -- Deadly Poison - [3408] = true, -- Crippling Poison - - -- Consumables - [673] = true, -- Elixir of Minor Defense - [2367] = true, -- Elixir of Lion's Strength - [2374] = true, -- Elixir of Minor Agility - [2378] = true, -- Elixir of Minor Fortitude - [3160] = true, -- Elixir of Lesser Agility - [3164] = true, -- Elixir of Ogre's Strength - [3166] = true, -- Elixir of Wisdom - [3220] = true, -- Elixir of Defense - [3593] = true, -- Elixir of Fortitude - [6512] = true, -- Elixir of Detect Lesser Invisibility - [7178] = true, -- Elixir of Water Breathing - [7844] = true, -- Elixir of Fire Power - [8212] = true, -- Elixir of Giant Growth - [11319] = true, -- Elixir of Water Walking - [11328] = true, -- Elixir of Agility - [11334] = true, -- Elixir of Greater Agility - [11348] = true, -- Elixir of Superior Defense - [11349] = true, -- Elixir of Greater Defense - [11389] = true, -- Elixir of Detect Undead - [11390] = true, -- Arcane Elixir - [11396] = true, -- Elixir of Greater Intellect - [11403] = true, -- Elixir of Dream Vision - [11405] = true, -- Elixir of the Giants - [11406] = true, -- Elixir of Demonslaying - [11407] = true, -- Elixir of Detect Demon - [11474] = true, -- Elixir of Shadow Power - [12608] = true, -- Catseye Elixir - [17535] = true, -- Elixir of the Sages - [17537] = true, -- Elixir of Brute Force - [17538] = true, -- Elixir of the Mongoose - [17539] = true, -- Greater Arcane Elixir - [21920] = true, -- Elixir of Frost Power - [22807] = false, -- Elixir Greater Water Breathing - [26276] = true, -- Elixir of Greater Firepower - [26677] = true, -- Elixir of Poison Resistance - - [17624] = false, -- Flask of Petrification - [17626] = true, -- Flask of the Titans - [17627] = true, -- Flask of Distilled Wisdom - [17628] = true, -- Flask od Supreme Power - - -- Costumes - [8220] = true, -- Flip Out! - [8222] = true, -- Yaaarrrr - [16739] = true, -- Orb of Deception + -- HUNTER + [19506] = In(LE.Classic, LE.Mists), -- Trueshot Aura - -- Items - [17619] = true, -- Alchemist Stone - } + -- MAGE + [1459] = true, -- Arcane Intellect (Rank 1) + + -- ROGUE + [1784] = false, -- Stealth + [2823] = true, -- Deadly Poison + [3408] = true, -- Crippling Poison + + -- Consumables + [673] = true, -- Elixir of Minor Defense + [2367] = true, -- Elixir of Lion's Strength + [2374] = true, -- Elixir of Minor Agility + [2378] = true, -- Elixir of Minor Fortitude + [3160] = true, -- Elixir of Lesser Agility + [3164] = true, -- Elixir of Ogre's Strength + [3166] = true, -- Elixir of Wisdom + [3220] = true, -- Elixir of Defense + [3593] = true, -- Elixir of Fortitude + [6512] = true, -- Elixir of Detect Lesser Invisibility + [7178] = true, -- Elixir of Water Breathing + [7844] = true, -- Elixir of Fire Power + [8212] = true, -- Elixir of Giant Growth + [11319] = true, -- Elixir of Water Walking + [11328] = true, -- Elixir of Agility + [11334] = true, -- Elixir of Greater Agility + [11348] = true, -- Elixir of Superior Defense + [11349] = true, -- Elixir of Greater Defense + [11389] = true, -- Elixir of Detect Undead + [11390] = true, -- Arcane Elixir + [11396] = true, -- Elixir of Greater Intellect + [11403] = true, -- Elixir of Dream Vision + [11405] = true, -- Elixir of the Giants + [11406] = true, -- Elixir of Demonslaying + [11407] = true, -- Elixir of Detect Demon + [11474] = true, -- Elixir of Shadow Power + [12608] = true, -- Catseye Elixir + [17535] = true, -- Elixir of the Sages + [17537] = true, -- Elixir of Brute Force + [17538] = true, -- Elixir of the Mongoose + [17539] = true, -- Greater Arcane Elixir + [21920] = true, -- Elixir of Frost Power + [22807] = false, -- Elixir Greater Water Breathing + [26276] = true, -- Elixir of Greater Firepower + [26677] = true, -- Elixir of Poison Resistance + + [17624] = false, -- Flask of Petrification + [17626] = true, -- Flask of the Titans + [17627] = true, -- Flask of Distilled Wisdom + [17628] = true, -- Flask od Supreme Power + + -- Costumes + [8220] = true, -- Flip Out! + [8222] = true, -- Yaaarrrr + [16739] = true, -- Orb of Deception + + -- Items + [17619] = true, -- Alchemist Stone +} - AddBlacklist(data) -end +AddBlacklist(classic) -------------------------------------------------- -- The Burning Crusade -------------------------------------------------- -if EXPANSION >= LE_EXPANSION_BURNING_CRUSADE then +if EXPANSION >= LE.BurningCrusade then local data = { -- Events [44185] = true, -- Jack-o'-Lanterned! @@ -149,7 +330,7 @@ end -------------------------------------------------- -- Wrath of the Lich King -------------------------------------------------- -if EXPANSION >= LE_EXPANSION_WRATH_OF_THE_LICH_KING then +if EXPANSION >= LE.Wrath then local data = { -- Items [72968] = true, -- Precious's Ribbon @@ -160,36 +341,38 @@ if EXPANSION >= LE_EXPANSION_WRATH_OF_THE_LICH_KING then -- World Buffs [57940] = true, -- Essence of Wintergrasp } + AddBlacklist(data) end -------------------------------------------------- -- Cataclysm -------------------------------------------------- -if EXPANSION >= LE_EXPANSION_CATACLYSM then +if EXPANSION >= LE.Cataclysm then local data = { -- WARLOCK [108503] = true, -- Grimoire of Sacrifice -- Items - [93337] = true, -- Champion of Ramkahen - [93795] = true, -- Stormwind Champion - [93806] = true, -- Darnassus Champion - [93825] = true, -- Orgrimmar Champion - [93828] = true, -- Silvermoon Champion - [97341] = true, -- Guild Champion + [93337] = true, -- Champion of Ramkahen + [93795] = true, -- Stormwind Champion + [93806] = true, -- Darnassus Champion + [93825] = true, -- Orgrimmar Champion + [93828] = true, -- Silvermoon Champion + [97341] = true, -- Guild Champion -- Customes - [74589] = true, -- Identity Crisis (Faded Wizard Hat) - [96312] = true, -- Kalytha's Haunted Locket + [74589] = true, -- Identity Crisis (Faded Wizard Hat) + [96312] = true, -- Kalytha's Haunted Locket } + AddBlacklist(data) end -------------------------------------------------- -- Mists of Pandaria -------------------------------------------------- -if EXPANSION >= LE_EXPANSION_MISTS_OF_PANDARIA then +if EXPANSION >= LE.Mists then local data = { -- HUNTER [109260] = true, -- Aspect of the Iron Hawk @@ -224,13 +407,14 @@ if EXPANSION >= LE_EXPANSION_MISTS_OF_PANDARIA then [114800] = true, -- Polyformic Acid Potion [110880] = true, -- 1st Place } + AddBlacklist(data) end -------------------------------------------------- -- Warlords of Draenor -------------------------------------------------- -if EXPANSION >= LE_EXPANSION_WARLORDS_OF_DRAENOR then +if EXPANSION >= LE.Warlords then local data = { -- World Buffs [186401] = true, -- Sign of the Skirmisher @@ -240,13 +424,14 @@ if EXPANSION >= LE_EXPANSION_WARLORDS_OF_DRAENOR then -- ??? [182422] = true, -- Training Gear } + AddBlacklist(data) end -------------------------------------------------- -- Legion -------------------------------------------------- -if EXPANSION >= LE_EXPANSION_LEGION then +if EXPANSION >= LE.Legion then local data = { -- PvP [282559] = true, -- Enlisted @@ -264,13 +449,14 @@ if EXPANSION >= LE_EXPANSION_LEGION then -- Mythic+ [206151] = true, -- Challenger's Burden } + AddBlacklist(data) end -------------------------------------------------- -- Battle for Azeroth -------------------------------------------------- -if EXPANSION >= LE_EXPANSION_BATTLE_FOR_AZEROTH then +if EXPANSION >= LE.BattleForAzeroth then local data = { -- World Buffs [335148] = true, -- Sign of the Twisting Nether @@ -317,13 +503,14 @@ if EXPANSION >= LE_EXPANSION_BATTLE_FOR_AZEROTH then [312456] = true, -- Elite Extermination [310720] = true, -- Elite Extermination } + AddBlacklist(data) end -------------------------------------------------- -- Shadowlands -------------------------------------------------- -if EXPANSION >= LE_EXPANSION_SHADOWLANDS then +if EXPANSION >= LE.Shadowlands then local data = { -- World Buffs [347600] = true, -- Infused Ruby Tracking @@ -334,32 +521,32 @@ if EXPANSION >= LE_EXPANSION_SHADOWLANDS then [368510] = true, -- So'leash's Secret Technique [368512] = true, -- So'leash's Secret Technique } + AddBlacklist(data) end -------------------------------------------------- -- Dragonflight -------------------------------------------------- -if EXPANSION >= LE_EXPANSION_DRAGONFLIGHT then +if EXPANSION >= LE.Dragonflight then local data = { -- DEATHKNIGHT - + -- MONK [166646] = true, -- Windwalking -- PALADIN - [465] = true, -- Devotion Aura + [465] = true, -- Devotion Aura [32223] = true, -- Crusader Aura -- PRIEST - [21562] = true, -- Power Word: Fortitude [280398] = true, -- Sins of the Many -- SHAMAN [395197] = true, -- Mana Spring -- WARRIOR - [6673] = true, -- Battle Shout + [6673] = true, -- Battle Shout [202602] = true, -- Into the Fray -- Dragons Island diff --git a/data/shared/cooldowns.lua b/data/shared/cooldowns.lua index a41017b..3c587ce 100644 --- a/data/shared/cooldowns.lua +++ b/data/shared/cooldowns.lua @@ -4,39 +4,28 @@ local CreateSpellCooldown = ns.data.CreateSpellCooldown local CreateSlotCooldown = ns.data.CreateSlotCooldown local AddCooldowns = ns.data.AddCooldowns -local expansion = _G.LE_EXPANSION_LEVEL_CURRENT or -1 -local LE_EXPANSION_CLASSIC = _G.LE_EXPANSION_CLASSIC or 0 -local LE_EXPANSION_BURNING_CRUSADE = _G.LE_EXPANSION_BURNING_CRUSADE or 1 -local LE_EXPANSION_WRATH_OF_THE_LICH_KING = _G.LE_EXPANSION_WRATH_OF_THE_LICH_KING or 2 -local LE_EXPANSION_CATACLYSM = _G.LE_EXPANSION_CATACLYSM or 3 -local LE_EXPANSION_MISTS_OF_PANDARIA = _G.LE_EXPANSION_MISTS_OF_PANDARIA or 4 -local LE_EXPANSION_WARLORDS_OF_DRAENOR = _G.LE_EXPANSION_WARLORDS_OF_DRAENOR or 5 -local LE_EXPANSION_LEGION = _G.LE_EXPANSION_LEGION or 6 -local LE_EXPANSION_BATTLE_FOR_AZEROTH = _G.LE_EXPANSION_BATTLE_FOR_AZEROTH or 7 -local LE_EXPANSION_SHADOWLANDS = _G.LE_EXPANSION_SHADOWLANDS or 8 -local LE_EXPANSION_DRAGONFLIGHT = _G.LE_EXPANSION_DRAGONFLIGHT or 9 -local LE_EXPANSION_WAR_WITHIN = _G.LE_EXPANSION_WAR_WITHIN or 10 -local LE_EXPANSION_MIDNIGHT = _G.LE_EXPANSION_MIDNIGHT or 11 +local expansion = ns.client.expansion +local LE = ns.expansions local racials = { -- Horde - CreateSpellCooldown(7744), -- Will of the Forsaken (Undead) - CreateSpellCooldown(20549), -- War Stomp (Tauren) - CreateSpellCooldown(20572), -- Blood Fury (Orc) - CreateSpellCooldown(26297), -- Berserking (Troll) - CreateSpellCooldown(28730, expansion >= LE_EXPANSION_BURNING_CRUSADE), -- Arcane Torrent (Blood Elf) - CreateSpellCooldown(255654, expansion >= LE_EXPANSION_LEGION), -- Bull Rush (Highmountain Tauren) + CreateSpellCooldown(7744), -- Will of the Forsaken (Undead) + CreateSpellCooldown(20549), -- War Stomp (Tauren) + CreateSpellCooldown(20572), -- Blood Fury (Orc) + CreateSpellCooldown(26297), -- Berserking (Troll) + CreateSpellCooldown(28730, expansion >= LE.BurningCrusade), -- Arcane Torrent (Blood Elf) + CreateSpellCooldown(255654, expansion >= LE.Legion), -- Bull Rush (Highmountain Tauren) -- Alliance - CreateSpellCooldown(20594), -- Stoneform (Dwarf) - CreateSpellCooldown(265221, expansion >= LE_EXPANSION_BATTLE_FOR_AZEROTH), -- Fireblood Fury (Dark Iron Dwarf) + CreateSpellCooldown(20594), -- Stoneform (Dwarf) + CreateSpellCooldown(265221, expansion >= LE.BattleForAzeroth), -- Fireblood Fury (Dark Iron Dwarf) } local gear = { - CreateSlotCooldown(2), -- Neck - CreateSlotCooldown(6), -- Waist - CreateSlotCooldown(13), -- Trinket 1 - CreateSlotCooldown(14), -- Trinket 2 + CreateSlotCooldown(2), -- Neck + CreateSlotCooldown(6), -- Waist + CreateSlotCooldown(13), -- Trinket 1 + CreateSlotCooldown(14), -- Trinket 2 } -- racials and gear slots go after the player class cooldowns diff --git a/dev/development.lua b/dev/development.lua index 5379d26..bc51ff1 100644 --- a/dev/development.lua +++ b/dev/development.lua @@ -7,133 +7,6 @@ if not ns.config.general.dev then return end -- Development (write anything here) ------------------------------------------------------------ --- Experiment 4: spell-ID gate of CustomAuraContainerTemplate --- usage: /filger exp4 , (out of combat, then enter combat and compare) -local exp4 = function(arg) - local buff, debuff = (arg or ""):match("^(%d+),(%d+)$") - if not buff then - print(Filger.title, "usage: /filger exp4 ,") - return - elseif not C_XMLUtil or not C_XMLUtil.GetTemplateInfo("CustomAuraContainerTemplate") then - print(Filger.title, "exp4: no CustomAuraContainerTemplate on this client") - return - elseif InCombatLockdown() then - print(Filger.title, "exp4: leave combat first") - return - elseif _G.FilgerExp4_T1 then - print(Filger.title, "exp4: already created, /reload to change IDs") - return - end - buff, debuff = tonumber(buff), tonumber(debuff) - - -- CustomAuraButtonTemplate has no regions; without an icon the button draws nothing - local function initializeFrame(button) - button:SetSize(32, 32) - local icon = button:CreateTexture(nil, "ARTWORK") - icon:SetAllPoints() - button:SetIcon(icon) - local count = button:CreateFontString(nil, "OVERLAY", "NumberFontNormal") - count:SetPoint("BOTTOMRIGHT") - button:SetApplicationCount(count) - end - - local function Make(name, unit, filter, candidateFilters, y) - local c = CreateFrame("AuraContainer", "FilgerExp4_" .. name, UIParent, "CustomAuraContainerTemplate") - c:SetPoint("LEFT", UIParent, "CENTER", 0, y) - c:SetUnit(unit) - c:AddAuraGroup(name, filter, { - candidateFilters = candidateFilters, - initializeFrame = initializeFrame, - layout = { elementWidth = 32, elementHeight = 32, elementSpacing = 2, lineSpacing = 2 } - }) - - local label = UIParent:CreateFontString(nil, "OVERLAY", "GameFontNormal") - label:SetPoint("RIGHT", UIParent, "CENTER", -10, y) - label:SetText(name .. " " .. unit .. " " .. filter) - end - - -- expected in combat (Retail): T1 buff, T2 empty, T3 debuff still shown, T4 no error - Make("T1", "player", "HELPFUL|PLAYER", { includeSpellIDs = { [buff] = true } }, 120) - Make("T2", "player", "HARMFUL", { includeSpellIDs = { [debuff] = true } }, 80) - Make("T3", "player", "HARMFUL", { excludeSpellIDs = { [debuff] = true } }, 40) - Make("T4", "focus", "HARMFUL", nil, 0) - print(Filger.title, "exp4: created T1-T4, buff", buff, "debuff", debuff) -end - -ns.AddCommand("exp4", exp4, "experiment 4: aura container spell-ID gate (/filger exp4 ,)") - --- Experiment 5: which filter strings each client accepts and fills --- usage: /filger exp5 (out of combat; GetAuraSlots errors on secret auras) -local filters = { - -- complementary pairs must add up to HELPFUL, so they can be checked solo - "HELPFUL", "HARMFUL", "HELPFUL|PLAYER", "HELPFUL|!PLAYER", "HELPFUL|CANCELABLE", "HELPFUL|!CANCELABLE", - "HELPFUL|NOT_CANCELABLE", "HELPFUL|BIG_DEFENSIVE", "HELPFUL|IMPORTANT", "HARMFUL|RAID_PLAYER_DISPELLABLE", - "HARMFUL|DISPELLABLE" -} - -local exp5 = function() - if C_Secrets and C_Secrets.ShouldAurasBeSecret() then - print(Filger.title, "exp5: auras are secret right now, leave combat first") - return - end - - for _, filter in ipairs(filters) do - -- unknown tokens may error; the first return is a continuation token, not a slot - local ok, n = pcall(function() return select("#", C_UnitAuras.GetAuraSlots("player", filter)) - 1 end) - -- "||" so chat doesn't read "|R" / "|N" as escape codes - print(Filger.title, (filter:gsub("|", "||")), ok and n or ("error: " .. tostring(n))) - end -end - -ns.AddCommand("exp5", exp5, "experiment 5: aura counts per filter string on the player") - --- Experiment 6: private aura anchors from addon code --- usage: /filger exp6 (anywhere; the private aura icon draws inside the grey boxes) -local exp6 = function() - if not C_UnitAuras.AddPrivateAuraAnchor then - print(Filger.title, "exp6: no AddPrivateAuraAnchor on this client") - return - elseif _G.FilgerExp6 then - print(Filger.title, "exp6: already created") - return - end - - local frame = CreateFrame("Frame", "FilgerExp6", UIParent) - frame:SetSize(3 * 44, 44) - frame:SetPoint("CENTER", UIParent, "CENTER", 0, 200) - - -- one anchor per private aura slot on the player - for i = 1, 3 do - local slot = CreateFrame("Frame", nil, frame) - slot:SetSize(40, 40) - slot:SetPoint("LEFT", frame, "LEFT", (i - 1) * 44, 0) - local bg = slot:CreateTexture(nil, "BACKGROUND") - bg:SetAllPoints() - bg:SetColorTexture(0.3, 0.3, 0.3, 0.5) - - local ok, anchorID = pcall(C_UnitAuras.AddPrivateAuraAnchor, { - unitToken = "player", - auraIndex = i, - parent = slot, - showCooldownFrame = true, - showCountdownNumbers = true, - iconInfo = { - iconAnchor = { point = "CENTER", relativeTo = slot, relativePoint = "CENTER", offsetX = 0, offsetY = 0 }, - iconWidth = 40, - iconHeight = 40 - } - }) - print(Filger.title, "exp6: slot", i, "aurasSecret", C_Secrets and C_Secrets.ShouldAurasBeSecret(), - ok and "anchorID" or "error", tostring(anchorID)) - end -end - -ns.AddCommand("exp6", exp6, "experiment 6: private aura anchors on the player") - --- Experiment 7: cooldown edges (item/slot cooldowns, secret cast spellID) --- usage: /filger exp7 [itemID] toggles logging; enter combat and cast spells / use the item --- on each player cast: is the spellID secret, are slot 13/14 and item cooldowns secret -local exp7Frame -- prints start/duration/enabled when readable, so an active cooldown is visible local function secrecy(...) local ok, start, duration, enabled = pcall(...) @@ -145,45 +18,6 @@ local function secrecy(...) return format("%.1f/%.1f/%s", start, duration, tostring(enabled)) end -local exp7 = function(arg) - if not issecretvalue then - print(Filger.title, "exp7: no issecretvalue on this client") - return - elseif exp7Frame then - exp7Frame:UnregisterAllEvents() - exp7Frame = nil - print(Filger.title, "exp7: stopped") - return - end - local itemID = tonumber(arg) - - exp7Frame = CreateFrame("Frame") - exp7Frame:RegisterUnitEvent("UNIT_SPELLCAST_SUCCEEDED", "player") - exp7Frame:SetScript("OnEvent", function(_, _, _, _, spellID) - -- a secret spellID can't be printed or looked up; the cast order tells which spell it was - local id = issecretvalue(spellID) and "|cffff0000secret|r" or tostring(spellID) - print(Filger.title, "exp7:", format("%.1f", GetTime()), "combat", tostring(InCombatLockdown()), - "spellID", id, - "slot13", secrecy(GetInventoryItemCooldown, "player", 13), - "slot14", secrecy(GetInventoryItemCooldown, "player", 14), - "item", itemID and secrecy(C_Container.GetItemCooldown, itemID) or "-") - end) - print(Filger.title, "exp7: logging player casts (start/duration or secret), run again to stop") -end - -ns.AddCommand("exp7", exp7, "experiment 7: cooldown edges, logs player casts (/filger exp7 [itemID])") - --- Experiment 8: which aura tooltip methods each client has --- usage: /filger exp8 (anywhere) -local exp8 = function() - for _, method in ipairs({ "SetUnitAura", "SetUnitBuff", "SetUnitDebuff", "SetUnitBuffByAuraInstanceID", - "SetUnitDebuffByAuraInstanceID" }) do - print(Filger.title, "exp8:", method, GameTooltip[method] ~= nil) - end -end - -ns.AddCommand("exp8", exp8, "experiment 8: aura tooltip methods on GameTooltip") - -- Experiment 10: which event reports each item/slot cooldown change -- usage: /filger exp10 [itemID] toggles logging; use a trinket and a potion, compare with Filger's icons -- prints a line when an event sees slot 13/14/item values that differ from what that same event saw last @@ -222,3 +56,97 @@ local exp10 = function(arg) end ns.AddCommand("exp10", exp10, "experiment 10: item cooldown refresh events (/filger exp10 [itemID])") + +-- T20: listed aura IDs that never show up (a cast ID listed instead of the aura ID) +-- usage: /filger unseen starts logging; play the spec, then /filger unseen again lists them +-- Retail records nothing while auras are secret (combat, instances): test outside combat there +local unseenFrame, listed, seen +local unseenUnits = { player = true, target = true, focus = true } + +local function markAura(data) + if data and listed[data.spellId] then + seen[data.spellId] = true + end +end + +local function scanUnit(unit) + for _, filter in ipairs({ "HELPFUL", "HARMFUL" }) do + local slots = { C_UnitAuras.GetAuraSlots(unit, filter) } + for i = 2, #slots do -- #1 return is continuationToken + markAura(C_UnitAuras.GetAuraDataBySlot(unit, slots[i])) + end + end +end + +local unseen = function() + if unseenFrame then + unseenFrame:UnregisterAllEvents() + unseenFrame = nil + + local ids = {} + for spellId in next, listed do + if not seen[spellId] then table.insert(ids, spellId) end + end + table.sort(ids) + for _, spellId in ipairs(ids) do + local info = ns.compat.GetSpellInfo(spellId) + print(Filger.title, "unseen:", spellId, info and info.name or "?") + end + print(Filger.title, "unseen: stopped,", #ids, "listed IDs never seen") + return + end + + listed = Mixin({}, ns.data.spells[ns.player.class] or {}, ns.data.spells.ALL or {}) + seen = {} + + unseenFrame = CreateFrame("Frame") + unseenFrame:RegisterEvent("UNIT_AURA") + unseenFrame:SetScript("OnEvent", function(_, _, unit, updateInfo) + -- updateInfo and aura slots are secret while restricted + if not unseenUnits[unit] or ns.compat.AurasSecret() then return end + if not updateInfo or updateInfo.isFullUpdate then + scanUnit(unit) + elseif updateInfo.addedAuras then + for _, data in next, updateInfo.addedAuras do + markAura(data) + end + end + end) + if not ns.compat.AurasSecret() then scanUnit("player") end + print(Filger.title, "unseen: logging listed aura IDs, run again to report") +end + +ns.AddCommand("unseen", unseen, "dev: logs listed aura IDs; run again to list the ones never seen") + +-- fingerprint of the final data, to compare a client before and after moving blacklist IDs +-- usage: /filger dump; name checksums depend on the client locale +local function checksum(values) + local h = 0 + for _, v in ipairs(values) do + local s = tostring(v) + for i = 1, #s do h = (h * 31 + s:byte(i)) % 2147483647 end + h = (h * 31 + 10) % 2147483647 -- separator, so {1,23} ~= {12,3} + end + return format("%08x", h) +end + +local dump = function() + -- sorted, so the checksum doesn't depend on table iteration order + local ids, names = {}, {} + for key in next, ns.data.blacklist do + table.insert(type(key) == "number" and ids or names, key) + end + table.sort(ids) + table.sort(names) + + -- cooldown order is display order, so it is not sorted + local cooldowns = {} + for _, row in ipairs(ns.data.cooldowns) do + table.insert(cooldowns, row.spellId and ("spell" .. row.spellId) or ("slot" .. row.slotId)) + end + + print(Filger.title, "dump: blacklist", #ids, "ids", checksum(ids), "/", #names, "names", checksum(names)) + print(Filger.title, "dump: cooldowns", ns.player.class, #cooldowns, checksum(cooldowns)) +end + +ns.AddCommand("dump", dump, "dev: count and checksum of the final blacklist and cooldowns") diff --git a/docs/compatibility.md b/docs/compatibility.md index 7b5428d..1803d7b 100644 --- a/docs/compatibility.md +++ b/docs/compatibility.md @@ -31,11 +31,29 @@ One `Filger.toc` serves every client (`## Interface: 11509, 20506, 38002, 50504, (e.g. `[ExcludeLoadGameType tbc, wrath, mists, standard]`). - `core\compat.lua` and `core\util.lua` load first (Blizzard globals only), so `core\data.lua` can use them at load. -- Data is loaded before `core\init.xml` via `data\[Game]\.lua`; every `[Game]` folder must - contain every listed file (stubs are fine). `data/shared/` loads everywhere, gated by - `LE_EXPANSION_LEVEL_CURRENT`. `[Family]` is too coarse for spell data. +- Data is loaded after `core\init.xml` (it needs `ns.client`) via `data\[Game]\.lua`; every + `[Game]` folder must contain every listed file (stubs are fine). `data/shared/` loads everywhere, + gated by `ns.client.expansion` (`LE_EXPANSION_LEVEL_CURRENT`) against `ns.expansions`. + `[Family]` is too coarse for spell data. - `## Title` is one untagged line. +## Blacklist data + +- An ID listed for two or more games whose games form one range on + Vanilla → TBC → Wrath → Mists → Standard goes in the `general` table of + `data/shared/blacklist.lua` as `[id] = In(LE., LE.)` (`to` omitted: up to the current + expansion). Retail additions stay in the `if EXPANSION >= LE.` blocks. +- Otherwise (one game, or games that don't form one range) it stays in `data//blacklist.lua`. +- Forever (expansion 0) inherits every shared range starting at `LE.Classic`. Era-only content + (Hardcore, Season of Discovery) stays in `data/Vanilla/`. `data/Cata/` is not maintained. +- `"name"` also hides every aura with the same localized name. Use it where a game lists only + rank 1 (TBC, Wrath) or every rank (Vanilla); use `true` from Mists on, where `"name"` would + catch unrelated auras. An ID whose value differs by range is one expression: + `In(LE.Classic, LE.Wrath) and "name" or In(LE.Mists, LE.Mists)`. +- `false` never un-hides an ID that another source hides; write "everywhere except X" as a range. +- After moving IDs, `lua tests/dump.lua | diff before.txt -` must be empty unless the change is + intended; in game, compare `/filger dump`. + ## Libraries Git submodules in `libs/`: `LibStub` (loaded by `libs/init.xml`, every client) and `LibDispel` @@ -46,6 +64,10 @@ Git submodules in `libs/`: `LibStub` (loaded by `libs/init.xml`, every client) a Flags in `core/init.lua` (`ns.client`) compare `WOW_PROJECT_ID` (see table). `ns.client.isClassic` is any `classic` family client; `ns.client.isMainline` is its negation (Retail and Forever). +`ns.client.expansion` is `LE_EXPANSION_LEVEL_CURRENT`; `ns.expansions` holds the `LE_EXPANSION_*` +constants. Verified in-game: every `LE_EXPANSION_*` constant exists on every supported client, and +`LE_EXPANSION_LEVEL_CURRENT` is 0 on Era and Forever, 1 on TBC, 2 on Titan, 4 on MoP and 11 on Retail. + ## Secret values (Midnight / Retail) - Secret values allow no arithmetic, comparison, string operations or use as table keys. diff --git a/docs/references.md b/docs/references.md index 0ad245d..fead3b0 100644 --- a/docs/references.md +++ b/docs/references.md @@ -36,3 +36,23 @@ Each worktree's build is in its `version.txt`. | Cooldowns | `Blizzard_CooldownViewer` (retail); `C_Spell.GetSpellCooldown` / `GetItemCooldown` in API docs | | Spell API | `C_Spell` vs legacy `GetSpellInfo` in API docs and `Blizzard_Deprecated*` | | Tooltips | `Blizzard_GameTooltip` (`GameTooltip:SetUnitAura`) | + +## `../spellbook` (spell DB2 data and checks) + +A separate tool, not part of Filger. Don't edit it unless asked. It caches Blizzard's spell DB2 +tables from wago.tools per client build in `../spellbook/data//` and merges them into +`spells.csv` (`ID,Name,Subtext,Class,Learnable,Dispel,Cooldown,CategoryCooldown,Charges,ChargeRecovery,Labels,Description`). +Use it to verify spell IDs offline instead of relying on memory. Usage is in `../spellbook/README.md`. + +```sh +lua ../spellbook/check.lua [Game ...] # run from Filger's root: MISSING / NAME / NOCD / CLASS +lua ../spellbook/check.lua --cooldowns # learnable spells with a cooldown > 30s not in cooldowns.lua (CSV) +``` + +- Clients map to builds by version prefix in the `clients` table at the top of `check.lua`. + A missing build is downloaded (network); use the cached `data/` when it is enough. +- To look up a single ID: `grep '^,' ../spellbook/data//spells.csv`. +- Caveats: an ID present in DB2 isn't necessarily obtainable (Retail keeps many removed spells). + `Learnable` has false negatives (for example Retail Barkskin = 0) and is sparse on Era and + Forever, so `1` is evidence and `0` is not. A Retail `Cooldown` of 0 doesn't prove there is no + cooldown. Treat DB2-only conclusions as **unverified** until they're checked in-game. diff --git a/elements/cooldowns.lua b/elements/cooldowns.lua index 362ebb0..99bdbcc 100644 --- a/elements/cooldowns.lua +++ b/elements/cooldowns.lua @@ -107,16 +107,31 @@ do return a.index < b.index end + -- returns the row's reused data table; name/icon are cached and only looked up again when they can change function cooldown_proto:ProcessCooldownData(unit, data) - local index, name, icon, start, duration, enabled, durationObject + local d = self.rows[data] + if not d then + d = { + index = data.spellId and ("SPELL_" .. data.spellId) or ("SLOT_" .. data.slotId), + spellId = data.spellId, + slotId = data.slotId + } + self.rows[data] = d + end + + local start, duration, enabled, durationObject if data.spellId then - index = "SPELL_" .. data.spellId - local info = GetSpellInfo(data.spellId) - if info then - name = info.name - icon = info.iconID + -- a talent can replace one tracked spell with another (e.g. Sentinel overrides Avenging Wrath) + local activeSpellId = GetOverrideSpell and GetOverrideSpell(data.spellId) or data.spellId + -- iconID follows the override, so look it up again when the override changes + if not d.name or d.activeSpellId ~= activeSpellId then + local info = GetSpellInfo(data.spellId) + d.name = info and info.name + d.icon = info and info.iconID end + d.activeSpellId = activeSpellId + local cdInfo = GetSpellCooldown(data.spellId) if cdInfo then if SpellCooldownSecret(data.spellId) then @@ -131,12 +146,20 @@ do enabled = cdInfo.isEnabled and 1 or 0 end elseif data.slotId then - index = "SLOT_" .. data.slotId local itemLink = GetInventoryItemLink(unit, data.slotId) if (itemLink) then - name, _, _, _, _, _, _, _, _, icon, _, _, _, _, _, _, _ = GetItemInfo(itemLink) + if itemLink ~= d.itemLink then + local name, _, _, _, _, _, _, _, _, icon = GetItemInfo(itemLink) + d.name = name + d.icon = icon + -- item info can be uncached on first lookup; keep retrying until it returns a name + d.itemLink = name and itemLink + end start, duration, enabled = GetInventoryItemCooldown(unit, data.slotId) else + d.name = nil + d.icon = nil + d.itemLink = nil enabled = 0 end end @@ -144,22 +167,15 @@ do duration = duration or 0 start = start or 0 - return { - index = index, - name = name, - spellId = data.spellId, - -- a talent can replace one tracked spell with another (e.g. Sentinel overrides Avenging Wrath) - activeSpellId = data.spellId and GetOverrideSpell and GetOverrideSpell(data.spellId) or data.spellId, - slotId = data.slotId, - icon = icon, - start = start, - duration = duration, - expirationTime = start + duration, - durationObject = durationObject, - enabled = (enabled ~= 0), - casted = (not data.spellId) and true or self.casted[data.spellId], - isKnown = (not data.spellId) and true or IsSpellKnown(data.spellId) - } + d.start = start + d.duration = duration + d.expirationTime = start + duration + d.durationObject = durationObject + d.enabled = (enabled ~= 0) + d.casted = (not data.spellId) and true or self.casted[data.spellId] + d.isKnown = (not data.spellId) and true or IsSpellKnown(data.spellId) + + return d end function cooldown_proto:UpdateCooldowns(event, unit, spellID, baseSpellID) @@ -176,9 +192,14 @@ do if self:FilterCooldown(data) then self.active[row] = data + -- a secret cooldown already shown counts as cast, in case the cast event's spellID was secret + if data.durationObject then + self.casted[data.spellId] = true + end else self.active[row] = nil - if data.spellId then + -- an on-hold cooldown (e.g. Inner Focus) starts later; keep the cast so it shows then + if data.spellId and data.enabled then self.casted[data.spellId] = nil end end @@ -210,6 +231,20 @@ do self:UpdateCooldowns("SPELL_UPDATE_COOLDOWN", self.unit, spellID, baseSpellID) end + -- only refresh when a tracked slot changed + function cooldown_proto:PLAYER_EQUIPMENT_CHANGED(slot) + for _, row in next, self.spells do + if row.slotId == slot then + return self:ForceUpdate() + end + end + end + + -- talent/spec changes alter isKnown and overrides + function cooldown_proto:SPELLS_CHANGED() + self:ForceUpdate() + end + -- register which spell the player cast function cooldown_proto:UNIT_SPELLCAST_SUCCEEDED(unit, guid, spellId) if IsSecret(spellId) then return end @@ -223,8 +258,11 @@ do self.casted = {} self.active = {} + self.rows = {} self:RegisterEvent("SPELL_UPDATE_COOLDOWN") + self:RegisterEvent("PLAYER_EQUIPMENT_CHANGED") + self:RegisterEvent("SPELLS_CHANGED") self:RegisterUnitEvent("UNIT_SPELLCAST_SUCCEEDED", self.unit) end end diff --git a/exclude.lst b/exclude.lst index 8a8b013..7bc2de7 100644 --- a/exclude.lst +++ b/exclude.lst @@ -13,6 +13,7 @@ mise.toml *Makefile *exclude.lst *.luacheckrc +tests/* # extra files docs/* diff --git a/libs/LibDispel b/libs/LibDispel index 09accd8..7186300 160000 --- a/libs/LibDispel +++ b/libs/LibDispel @@ -1 +1 @@ -Subproject commit 09accd8f995c8b01e126ceafe665fad6adb1209b +Subproject commit 71863000e8b816390130ecef3a88ba6f1b65eeac diff --git a/tests/dump.lua b/tests/dump.lua new file mode 100644 index 0000000..5070095 --- /dev/null +++ b/tests/dump.lua @@ -0,0 +1,130 @@ +-- Prints Filger's final spell data for every game and class, one sorted line per entry, so two +-- data trees can be diffed. Every spell ID counts as valid (no client DB here): /filger validate +-- covers missing IDs in game. +-- Run from the repository root: +-- lua tests/dump.lua [root] > dump.txt (root defaults to ".") + +local root = arg[1] or "." + +local classes = { + "DEATHKNIGHT", "DEMONHUNTER", "DRUID", "EVOKER", "HUNTER", "MAGE", "MONK", + "PALADIN", "PRIEST", "ROGUE", "SHAMAN", "WARLOCK", "WARRIOR", +} + +-- [Game] folder, WOW_PROJECT_ID, LE_EXPANSION_LEVEL_CURRENT and interface of each client +local games = { + { name = "Vanilla", project = 2, expansion = 0, interface = 11509 }, + { name = "TBC", project = 5, expansion = 1, interface = 20506 }, + { name = "Wrath", project = 11, expansion = 2, interface = 38002 }, + { name = "Cata", project = 14, expansion = 3, interface = 40000 }, -- not in the TOC; placeholder + { name = "Mists", project = 19, expansion = 4, interface = 50504 }, + { name = "Camelot", project = 18, expansion = 0, interface = 16001 }, + { name = "Standard", project = 1, expansion = 11, interface = 120105 }, +} + +local blizzard = { + WOW_PROJECT_MAINLINE = 1, + WOW_PROJECT_CLASSIC = 2, + WOW_PROJECT_BURNING_CRUSADE_CLASSIC = 5, + WOW_PROJECT_WRATH_CLASSIC = 11, + WOW_PROJECT_CATACLYSM_CLASSIC = 14, + WOW_PROJECT_CAMELOT = 18, + WOW_PROJECT_MISTS_CLASSIC = 19, + LE_EXPANSION_CLASSIC = 0, + LE_EXPANSION_BURNING_CRUSADE = 1, + LE_EXPANSION_WRATH_OF_THE_LICH_KING = 2, + LE_EXPANSION_CATACLYSM = 3, + LE_EXPANSION_MISTS_OF_PANDARIA = 4, + LE_EXPANSION_WARLORDS_OF_DRAENOR = 5, + LE_EXPANSION_LEGION = 6, + LE_EXPANSION_BATTLE_FOR_AZEROTH = 7, + LE_EXPANSION_SHADOWLANDS = 8, + LE_EXPANSION_DRAGONFLIGHT = 9, + LE_EXPANSION_WAR_WITHIN = 10, + LE_EXPANSION_MIDNIGHT = 11, + UIParent = {}, + CreateFrame = function() return {} end, + C_AddOns = { GetAddOnMetadata = function() return "" end }, + GetPhysicalScreenSize = function() return 1920, 1080 end, +} + +local function spellName(id) + return "spell" .. id +end + +local function load(ns, path) + assert(loadfile(root .. "/" .. path))("Filger", ns) +end + +-- loads the addon files that build ns.data, in TOC order, as `game` with player `class` +local function build(game, class) + for k, v in pairs(blizzard) do _G[k] = v end + _G.WOW_PROJECT_ID = game.project + _G.LE_EXPANSION_LEVEL_CURRENT = game.expansion + _G.GetBuildInfo = function() return "", "", "", game.interface end + _G.UnitClass = function() return class, class end + + local ns = { + config = { general = { dev = false } }, + compat = { GetSpellInfo = function(id) return { name = spellName(id) } end }, + } + load(ns, "core/util.lua") + load(ns, "core/data.lua") + load(ns, "core/init.lua") + for _, file in ipairs({ "blacklist", "cooldowns", "spells" }) do + load(ns, "data/" .. game.name .. "/" .. file .. ".lua") + end + for _, file in ipairs({ "blacklist", "cooldowns" }) do + load(ns, "data/shared/" .. file .. ".lua") + end + ns.data.Finalize() + return ns.data +end + +local function sortedKeys(t, keep) + local keys = {} + for k in pairs(t) do + if not keep or keep(k) then keys[#keys + 1] = k end + end + table.sort(keys, function(a, b) return tostring(a) < tostring(b) end) + return keys +end + +local function isNumber(k) return type(k) == "number" end + +local out = {} +local function emit(...) out[#out + 1] = table.concat({ ... }, " ") end + +for _, game in ipairs(games) do + local tag = "[" .. game.name .. "]" + local data = build(game, classes[1]) + + -- class independent + for _, id in ipairs(sortedKeys(data.blacklist, isNumber)) do + emit(tag, "blacklist", id, data.blacklist[spellName(id)] and "name" or "id") + end + for _, class in ipairs(sortedKeys(data.spells)) do + for _, id in ipairs(sortedKeys(data.spells[class])) do + local s = data.spells[class][id] + emit(tag, "spell", class, id, tostring(s.enabled), s.priority, s.stackThreshold) + end + end + + -- player class dependent + for _, class in ipairs(classes) do + if class ~= classes[1] then data = build(game, class) end + for i, row in ipairs(data.cooldowns) do + emit(tag, "cooldown", class, i, row.spellId and ("spell " .. row.spellId) or ("slot " .. row.slotId)) + end + local invalid = {} + for _, entry in ipairs(data.invalid) do + invalid[entry.kind .. " " .. (entry.class or "-") .. " " .. entry.id] = true + end + for _, key in ipairs(sortedKeys(invalid)) do + emit(tag, "invalid", class, key) + end + end +end + +table.sort(out) +print(table.concat(out, "\n")) diff --git a/tests/run.lua b/tests/run.lua new file mode 100644 index 0000000..30b51d1 --- /dev/null +++ b/tests/run.lua @@ -0,0 +1,183 @@ +-- Plain Lua 5.1 tests for Filger's pure logic. Run from the repository root: make test + +local passed, failed = 0, 0 + +local function test(name, fn) + local ok, err = pcall(fn) + if ok then + passed = passed + 1 + else + failed = failed + 1 + print("FAIL " .. name .. ": " .. tostring(err)) + end +end + +local function eq(actual, expected, msg) + if actual ~= expected then + error(string.format("%s: expected %s (%s), got %s (%s)", msg or "value", + tostring(expected), type(expected), tostring(actual), type(actual)), 2) + end +end + +-- addon files receive (addonName, ns) as `...`, like in WoW +local function loadAddonFile(ns, path) + assert(loadfile(path))("Filger", ns) +end + +-- fresh namespace per test: data.lua captures GetSpellInfo at load and Finalize drops its sources +local function newData(known, class) + local ns = { + config = { general = { dev = false } }, + player = { class = class or "MAGE" }, + client = { expansion = 2 }, + compat = { + GetSpellInfo = function(id) + return known and known[id] and { name = known[id] } or nil + end, + }, + } + loadAddonFile(ns, "core/util.lua") + loadAddonFile(ns, "core/data.lua") + return ns.data +end + +local function hasInvalid(invalid, kind, class, id) + for _, entry in ipairs(invalid) do + if entry.kind == kind and entry.class == class and entry.id == id then + return true + end + end + return false +end + +------------------------------------------------------------ +-- util.FormatTime +------------------------------------------------------------ +test("FormatTime", function() + local ns = {} + loadAddonFile(ns, "core/util.lua") + local FormatTime = ns.util.FormatTime + + eq(FormatTime(nil), "0.0", "nil") + eq(FormatTime(0), "0.0", "0") + eq(FormatTime(4.99), "5.0", "4.99") + eq(FormatTime(5), 5, "5") + eq(FormatTime(59.9), 59, "59.9") + eq(FormatTime(60), "1m", "60") + eq(FormatTime(61), "2m", "61") + eq(FormatTime(3600), "1h", "3600") + eq(FormatTime(86400), "1d", "86400") + eq(FormatTime("12"), 12, "\"12\"") +end) + +------------------------------------------------------------ +-- data constructors +------------------------------------------------------------ +test("CreateSpellPriority", function() + local data = newData() + + local p = data.CreateSpellPriority() + eq(p.enabled, true, "default enabled") + eq(p.priority, 0, "default priority") + eq(p.stackThreshold, 0, "default stackThreshold") + + eq(data.CreateSpellPriority(false).enabled, false, "disabled") + + p = data.CreateSpellPriority(5, 3) + eq(p.enabled, true, "enabled") + eq(p.priority, 5, "priority") + eq(p.stackThreshold, 3, "stackThreshold") +end) + +test("CreateSpellCooldown", function() + local data = newData() + eq(data.CreateSpellCooldown(1).enabled, true, "default enabled") + eq(data.CreateSpellCooldown(1, false).enabled, false, "disabled") + eq(pcall(data.CreateSpellCooldown, "1"), false, "non-number spellId errors") +end) + +test("CreateSlotCooldown", function() + local data = newData() + eq(data.CreateSlotCooldown("13").slotId, "13", "numeric string slotId") + eq(data.CreateSlotCooldown(13, false).enabled, false, "disabled") + eq(pcall(data.CreateSlotCooldown, "x"), false, "non-numeric slotId errors") +end) + +test("In", function() + local data = newData() -- expansion 2 + + eq(data.In(0), true, "from below") + eq(data.In(2), true, "from equal") + eq(data.In(3), false, "from above") + eq(data.In(0, 2), true, "to equal") + eq(data.In(0, 1), false, "to below") + eq(data.In(2, 2), true, "single") + eq(data.In(3, 4), false, "range above") +end) + +------------------------------------------------------------ +-- data.Finalize +------------------------------------------------------------ +test("Finalize blacklist", function() + local data = newData({ [10] = "Ten", [11] = "Food", [12] = "Twelve" }) + data.AddBlacklist({ [10] = true, [11] = "name", [12] = false, [97] = true }) + data.Finalize() + + eq(data.blacklist[10], true, "id") + eq(data.blacklist["Ten"], nil, "name of an id-only entry") + eq(data.blacklist[11], true, "id of a name entry") + eq(data.blacklist["Food"], true, "name of a name entry") + eq(data.blacklist[12], nil, "disabled") + eq(data.blacklist[97], nil, "unknown") + eq(#data.invalid, 1, "invalid count") + eq(hasInvalid(data.invalid, "blacklist", nil, 97), true, "unknown reported") +end) + +test("Finalize spells", function() + local data = newData({ [10] = "Ten" }) + local info = data.CreateSpellPriority(1) + data.AddSpells({ MAGE = { [10] = info, [96] = info } }) + data.Finalize() + + eq(data.spells.MAGE[10], info, "known") + eq(data.spells.MAGE[96], nil, "unknown") + eq(#data.invalid, 1, "invalid count") + eq(hasInvalid(data.invalid, "spell", "MAGE", 96), true, "unknown reported") +end) + +test("Finalize cooldowns", function() + local data = newData({ [1] = "A", [2] = "B", [3] = "C", [4] = "D" }, "MAGE") + local spell, slot = data.CreateSpellCooldown, data.CreateSlotCooldown + data.AddCooldowns({ + MAGE = { spell(1), spell(99), spell(2, false) }, + ALL = { slot(13), spell(3) }, + PRIEST = { spell(98), spell(1) }, + }) + data.AddCooldowns({ + MAGE = { spell(4) }, + ALL = { spell(1) }, + }) + data.Finalize() + + -- player class first, then ALL, each in source order + local expected = { 1, 4, "slot13", 3 } + eq(#data.cooldowns, #expected, "active count") + for i, key in ipairs(expected) do + local row = data.cooldowns[i] + eq(row.spellId or ("slot" .. row.slotId), key, "row " .. i) + end + + eq(#data.invalid, 3, "invalid count") + eq(hasInvalid(data.invalid, "cooldown", "MAGE", 99), true, "unknown player row") + eq(hasInvalid(data.invalid, "duplicate", "ALL", 1), true, "duplicate across class and ALL") + eq(hasInvalid(data.invalid, "cooldown", "PRIEST", 98), true, "unknown other-class row") +end) + +test("Finalize drops sources", function() + local data = newData() + data.Finalize() + eq(pcall(data.AddSpells, {}), false, "AddSpells after Finalize errors") +end) + +print(string.format("%d passed, %d failed", passed, failed)) +os.exit(failed > 0 and 1 or 0)