diff --git a/.gitignore b/.gitignore new file mode 100755 index 0000000..f75ce25 --- /dev/null +++ b/.gitignore @@ -0,0 +1,13 @@ +### Vim ### +# swap +[._]*.s[a-v][a-z] +[._]*.sw[a-p] +[._]s[a-v][a-z] +[._]sw[a-p] +# session +Session.vim +# temporary +.netrwhist +*~ +# auto-generated tag files +tags diff --git a/README.md b/README.md index 9ac66d2..1775c0c 100755 --- a/README.md +++ b/README.md @@ -1,55 +1,4 @@ -modui for Classic WoW -====== -![UI](https://i.imgur.com/WNCe8em.png) -![UI:cast](https://i.imgur.com/34BJX0D.png) -![UI:inventory](https://i.imgur.com/YPoAaqG.jpg) -![UI:options](https://i.imgur.com/e3VtOsZ.png) -====== +modui for wotlk -#### Stable Versions #### -https://www.wowinterface.com/downloads/info25114-modui.html - -#### Elements #### -- Actionbar: BfA-style small mainbar with compact menus & bags. -- Bag: one-bag inventory and bank. -- Chat: simple chat solution with modified text strings and style. -- Enemy Castbars: on Target and Nameplate unitframes. -- Nameplates: combo points for Rogues and Druids, icon-style totems, style changes. -- Quest Tracker: click-through to Quest Log. -- Theme: change the colour of your UI textures with a colour wheel. cleaner button skinning. -- Tooltip: cleaner, prettier, more useful information. -- UnitFrame: style changes, class information, -- Worldmap: smaller panel, usable while playing, coordinates and better group pins. - - -#### Options #### -Click the M above the backpack button (bottom-right of the main actionbar) to open theme and display options. modui is designed to be modular and the different elements of the UI can be turned on and off. - -#### FAQ #### -Q: I'm getting an error that says something about MODUI_VAR. - -A: try reloading the UI (type: _/rl_) and then deleting your cache before making an issue, particularly if you've recently used an older version of modui. - - - -Q: The UI won't load in my game! - -A: Make sure you're putting the directory in _WoW/Classic/Interface/AddOns/_, then rename the folder from *modui_classic-master* to *modui_classic*. - - - -Q: Why aren't my target and nameplate casting timers correct? - -A: Blizzard recently disabled accurate timer checking in their classic API in the run up to release, so now its no longer possible to check which spell rank is being used - so modui has to assume its the highest rank with the longest spell cast time for now. - - - -Q: I don't want a black UI, how do I change it back to normal? - -A: Open the theme option by hitting the *M* above the bag button or typing _/modui_, then choose *UI Colour*. Hit *Reset To Default* or move the colour wheel picker to white and hit Okay. - -#### To-do #### -- Combat Text -- PvP and Battleground support. -- Raid Frames (?) -- Other stuff i forgot about since I last worked on this thing. +I just remove everything i dont use from modUI, hardcoded some things +and stole a little bit of code from [RougeUI](https://github.com/XyzKangUI/RougeUI/) diff --git a/actionbar/bars.lua b/actionbar/bars.lua deleted file mode 100755 index 3377ef7..0000000 --- a/actionbar/bars.lua +++ /dev/null @@ -1,390 +0,0 @@ - - - local _, ns = ... - - local n = { - 'Action', - 'MultiBarBottomLeft', - 'MultiBarBottomRight', - 'MultiBarLeft', - 'MultiBarRight', - } - - local x = { - 'Pet', - 'Stance', - } - - local h = { - 'MultiBarLeft', - 'MultiBarRight', - } - - local events = { - 'PLAYER_LOGIN', - 'PLAYER_XP_UPDATE', - 'UPDATE_EXHAUSTION', - 'PLAYER_LEVEL_UP' - } - - local MoveBars = function() - if not InCombatLockdown() then - MultiBarBottomLeft:ClearAllPoints() - MultiBarBottomLeft:SetPoint('BOTTOMLEFT', ActionButton1, 'TOPLEFT', 0, 23) - - MultiBarBottomLeftButton1:ClearAllPoints() - MultiBarBottomLeftButton1:SetPoint('BOTTOMLEFT', ActionButton1, 'TOPLEFT', 0, ReputationWatchBar:IsShown() and 30 or 23) - - MultiBarBottomRight:SetPoint('LEFT', MultiBarBottomLeft, 'RIGHT', 43, 6) - - SlidingActionBarTexture0:ClearAllPoints() - SlidingActionBarTexture0:SetPoint('TOPLEFT', PetActionButton1, -34, 12) - - MultiBarBottomRightButton7:ClearAllPoints() - MultiBarBottomRightButton7:SetPoint('BOTTOMLEFT', MultiBarBottomRightButton1, 'TOPLEFT', 0, ReputationWatchBar:IsShown() and 31 or 24) - - PetActionButton1:ClearAllPoints() - PetActionButton1:SetPoint('BOTTOMLEFT', MultiBarBottomLeftButton1, 'TOPLEFT', 20, 8) - - MainMenuBarVehicleLeaveButton:ClearAllPoints() - MainMenuBarVehicleLeaveButton:SetPoint('BOTTOM', MainMenuBarBackpackButton, 'TOP', -5, 30) - end - end - - local SetBarLength = function(shorten) - local bar = _G['modui_mainbar'] - - ActionBarUpButton:ClearAllPoints() - ActionBarUpButton:SetPoint('LEFT', ActionButton12, 'RIGHT', -1, 10) - - ActionBarDownButton:ClearAllPoints() - ActionBarDownButton:SetPoint('TOP', ActionBarUpButton, 'BOTTOM', 0, 10) - - MainMenuBarPageNumber:ClearAllPoints() - MainMenuBarPageNumber:SetPoint('LEFT', ActionBarUpButton, 'RIGHT', -2, -10) - - if shorten then - MainMenuExpBar:SetSize(760, 8) - ReputationWatchBar:SetSize(760, 6) - ReputationWatchBar.StatusBar:SetSize(760, 6) - ExhaustionLevelFillBar:SetSize(760, 6) - bar.t:SetTexture[[Interface/Addons/modui_classic/art/mainbar/ActionBarArtLarge]] - bar.t:SetPoint('BOTTOM', -111, -11) - bar.caps:SetSize(950, 64) - ActionButton1:ClearAllPoints() - ActionButton1:SetPoint('BOTTOMLEFT', MainMenuBarArtFrame, 120, 7) - else - MainMenuExpBar:SetSize(500, 8) - ReputationWatchBar:SetSize(500, 6) - ReputationWatchBar.StatusBar:SetSize(500, 6) - ExhaustionLevelFillBar:SetSize(500, 6) - bar.t:SetTexture[[Interface/Addons/modui_classic/art/mainbar/ActionBarArtSmall]] - bar.t:SetPoint('BOTTOM', -237, -11) - bar.caps:SetSize(700, 64) - ActionButton1:ClearAllPoints() - ActionButton1:SetPoint('BOTTOMLEFT', MainMenuBarArtFrame, 245, 7) - end - end - - local UpdateWatchbar = function() - if not ReputationWatchBar:IsShown() then return end - local _, index = GetWatchedFactionInfo() - local min, max = ReputationWatchBar.StatusBar:GetMinMaxValues() - local v = ReputationWatchBar.StatusBar:GetValue() - local x = (v/max)*ReputationWatchBar.StatusBar:GetWidth() - local colour = FACTION_BAR_COLORS[index] - - ReputationWatchBar:ClearAllPoints() - ReputationWatchBar:SetPoint('BOTTOMLEFT', MainMenuExpBar, 'TOPLEFT') - ReputationWatchBar:SetPoint('BOTTOMRIGHT', MainMenuExpBar, 'TOPRIGHT') - - ReputationWatchBar.spark:SetPoint('CENTER', ReputationWatchBar.StatusBar, 'LEFT', x, 2) - ReputationWatchBar.spark:SetVertexColor(colour.r, colour.g, colour.b) - - ReputationWatchBar:HookScript('OnShow', MoveBars) - ReputationWatchBar:HookScript('OnHide', MoveBars) - end - - local UpdateExhaustion = function() - local xp, max = UnitXP'player', UnitXPMax'player' - local threshold = GetXPExhaustion() - if threshold then - local x = ((xp + threshold)/max)*MainMenuExpBar:GetWidth() - ExhaustionTick:SetPoint('CENTER', MainMenuExpBar, 'LEFT', x, 0) - end - end - - local HideMaxXP = function() - for i = 0, 3 do - local t = _G['MainMenuMaxLevelBar'..i] - t:SetTexture'' - t:Hide() - end - end - - local UpdateXP = function() - local xp, max = UnitXP'player', UnitXPMax'player' - local x = (xp/max)*MainMenuExpBar:GetWidth() - local rest = GetRestState() - UpdateExhaustion() - if _G['modui_mainbar'] then - HideMaxXP() - MainMenuExpBar.spark:SetPoint('CENTER', MainMenuExpBar, 'LEFT', x, 2) - if rest == 1 then - MainMenuExpBar.spark:SetVertexColor(0*1.5, .39*1.5, .88*1.5, 1) - elseif rest == 2 then - MainMenuExpBar.spark:SetVertexColor(.58*1.5, 0*1.5, .55*1.5, 1) - end - end - end - - local UpdatePetBar = function() - SlidingActionBarTexture0:ClearAllPoints() - SlidingActionBarTexture0:SetPoint('BOTTOMLEFT', PetActionButton1, -14, -2) - - PetActionBarFrame:ClearAllPoints() - PetActionButton1:ClearAllPoints() - if MODUI_VAR['elements']['mainbar'].horiz and not MODUI_VAR['elements']['mainbar'].enable then - PetActionBarFrame:SetPoint('BOTTOMLEFT', MultiBarBottomLeftButton1, 'TOPLEFT', 20, MultiBarRight:IsShown() and 56 or MultiBarBottomLeft:IsShown() and 8 or -40) - PetActionButton1:SetPoint('BOTTOMLEFT', MultiBarBottomLeftButton1, 'TOPLEFT', 20, MultiBarRight:IsShown() and 56 or MultiBarBottomLeft:IsShown() and 8 or -40) - else - PetActionBarFrame:SetPoint('BOTTOMLEFT', MultiBarBottomLeftButton1, 'TOPLEFT', 20, MultiBarBottomLeft:IsShown() and 8 or -40) - PetActionButton1:SetPoint('BOTTOMLEFT', MultiBarBottomLeftButton1, 'TOPLEFT', 20, MultiBarBottomLeft:IsShown() and 8 or -40) - end - end - - local UpdateStanceBar = function() - StanceBarLeft:ClearAllPoints() - StanceBarLeft:SetPoint('BOTTOMLEFT', StanceButton1, -14, -2) - StanceButton1:ClearAllPoints() - if MODUI_VAR['elements']['mainbar'].horiz and not MODUI_VAR['elements']['mainbar'].enable then - StanceButton1:SetPoint('BOTTOMLEFT', MultiBarBottomLeftButton1, 'TOPLEFT', 20, MultiBarRight:IsShown() and 56 or MultiBarBottomLeft:IsShown() and 8 or -40) - else - StanceButton1:SetPoint('BOTTOMLEFT', MultiBarBottomLeftButton1, 'TOPLEFT', 20, MultiBarBottomLeft:IsShown() and 8 or -40) - end - end - - local UpdatePetStance = function() - if not InCombatLockdown() then - UpdatePetBar() - UpdateStanceBar() - end - end - - local UpdateBars = function() - SetBarLength(MultiBar2_IsVisible() and true or false) - UpdateXP() - UpdateWatchbar() - UpdatePetStance() - end - - local AddXP = function() - for i = 0, 3 do - _G['MainMenuXPBarTexture'..i]:Hide() - ReputationWatchBar.StatusBar['WatchBarTexture'..i]:SetAlpha(0) - if MODUI_VAR['elements']['mainbar'].enable then - _G['MainMenuBarTexture'..i]:Hide() - end - end - - ReputationWatchBar:SetSize(1024, 6) - ReputationWatchBar.StatusBar:SetSize(1024, 6) - - ReputationWatchBar.spark = ReputationWatchBar:CreateTexture(nil, 'OVERLAY', nil, 7) - ReputationWatchBar.spark:SetTexture[[Interface\CastingBar\UI-CastingBar-Spark]] - ReputationWatchBar.spark:SetSize(35, 35) - ReputationWatchBar.spark:SetBlendMode'ADD' - - MainMenuExpBar:SetSize(1024, 6) - MainMenuExpBar:ClearAllPoints() - MainMenuExpBar:SetPoint('BOTTOM', 0, MODUI_VAR['elements']['mainbar'].enable and 49 or 40) - - MainMenuExpBar.spark = MainMenuExpBar:CreateTexture(nil, 'OVERLAY', nil, 7) - MainMenuExpBar.spark:SetTexture[[Interface\CastingBar\UI-CastingBar-Spark]] - MainMenuExpBar.spark:SetVertexColor(.58*1.5, 0*1.5, .55*1.5, 1) - MainMenuExpBar.spark:SetSize(35, 35) - MainMenuExpBar.spark:SetBlendMode'ADD' - - MainMenuExpBar.sb = MainMenuExpBar:CreateTexture(nil, 'BACKGROUND', nil, -7) - ns.SB(MainMenuExpBar.sb) - MainMenuExpBar.sb:SetPoint('TOPLEFT', 0, -1) - MainMenuExpBar.sb:SetPoint'BOTTOMRIGHT' - MainMenuExpBar.sb:SetVertexColor(.5, .5, .5) - - MainMenuExpBar.t = MainMenuExpBar:CreateTexture(nil, 'BACKGROUND') - ns.BD(MainMenuExpBar.t, 1, -.5) - MainMenuExpBar.t:SetHeight(1) - MainMenuExpBar.t:SetPoint('BOTTOMLEFT', MainMenuExpBar, 'TOPLEFT') - MainMenuExpBar.t:SetPoint('BOTTOMRIGHT', MainMenuExpBar, 'TOPRIGHT') - - hooksecurefunc('MainMenuTrackingBar_Configure', UpdateWatchbar) - hooksecurefunc('MainMenuBar_UpdateExperienceBars', UpdateWatchbar) - end - - local AddButtonSkin = function() - for _, v in pairs(n) do - for i = 1, 12 do - local bu = _G[v..'Button'..i] - if bu then - ns.BU(bu, .75, true, bu:GetHeight() - 2.25, bu:GetWidth() - 2.25) - ns.BUBorder(bu) - ns.BUElements(bu) - end - end - end - for _, v in pairs(x) do - for i = 1, 10 do - local bu = _G[v..'Button'..i] - if bu then - ns.BU(bu, .75, true, bu:GetHeight() - 2.25, bu:GetWidth() - 2.25) - ns.BUBorder(bu) - ns.BUElements(bu) - end - end - end - end - - local AddBars = function() - local bar = CreateFrame('Frame', 'modui_mainbar', MainMenuBar) - bar:SetSize(1024, 128) - bar:SetPoint'BOTTOM' - - bar.t = bar:CreateTexture(nil, 'BACKGROUND') - bar.t:SetAllPoints() - tinsert(ns.skin, bar.t) - - bar.caps = CreateFrame('Frame', 'modui_endcaps', UIParent) - bar.caps:SetPoint('BOTTOM', bar) - bar.caps:SetFrameLevel(1) - - AddXP() - - MainMenuBarVehicleLeaveButton:SetSize(28, 28) - ns.BUBorder(MainMenuBarVehicleLeaveButton, MainMenuBarVehicleLeaveButton:GetWidth() - 10, MainMenuBarVehicleLeaveButton:GetWidth() - 2, 3.5, 6) - - for _, v in pairs(n) do - for i = 1, 12 do - local bu = _G[v..'Button'..i] - if bu then - -- TODO: all our placement needs *MAJOR* streamlining - -- but i dont have time rn - if v == 'MultiBarBottomRight' then - if i == 1 then - bu:ClearAllPoints() - bu:SetPoint('LEFT', ActionButton12, 'RIGHT', 46, 0) - end - end - - if i > 1 then - bu:ClearAllPoints() - -- pixel... - if v == 'MultiBarRight' or v == 'MultiBarLeft' then - bu:SetPoint('TOP', _G[v..'Button'..(i - 1)], 'BOTTOM', 0, -8.5) - else - bu:SetPoint('LEFT', _G[v..'Button'..(i - 1)], 'RIGHT', 8.5, 0) - end - -- PERFECTION! - if i == 7 and v == 'MultiBarBottomRight' then - bu:ClearAllPoints() - bu:SetPoint('BOTTOMLEFT', _G[v..'Button1'], 'TOPLEFT', 0, 17) - end - end - end - end - end - - for i, v in pairs(n) do - if i > 1 then -- skip 'action' - local bar = _G[v] - bar:HookScript('OnShow', UpdateBars) - bar:HookScript('OnHide', UpdateBars) - end - end - - for _, v in pairs( - { - MultiBarBottomLeft, - PetActionBarFrame, - StanceBarFrame, - } - ) do - UIPARENT_MANAGED_FRAME_POSITIONS.v = nil - end - - for _, v in pairs( - { - MainMenuBarLeftEndCap, - MainMenuBarRightEndCap, - -- fuck em, im just hiding these textures - -- until i can be bothered to level hunter - SlidingActionBarTexture0, - SlidingActionBarTexture1, - } - ) do - v:Hide() - end - - hooksecurefunc('MultiActionBar_Update', MoveBars) - hooksecurefunc('ActionBarController_UpdateAll', UpdateBars) - hooksecurefunc('ShowPetActionBar', UpdatePetBar) - end - - local AddHorizBars = function() - for _, v in pairs(h) do - for i = 1, 12 do - local bu = _G[v..'Button'..i] - if v == 'MultiBarRight' then - if i == 1 then - bu:ClearAllPoints() - bu:SetPoint('BOTTOMLEFT', MultiBarBottomLeftButton1, 'TOPLEFT', 0, 8) - else - bu:ClearAllPoints() - bu:SetPoint('LEFT', _G[v..'Button'..(i - 1)], 'RIGHT', 6, 0) - end - else - if i == 1 then - bu:ClearAllPoints() - bu:SetPoint('BOTTOMLEFT', MultiBarBottomRightButton1, 'TOPLEFT', 0, 8) - else - bu:ClearAllPoints() - bu:SetPoint('LEFT', _G[v..'Button'..(i - 1)], 'RIGHT', 6, 0) - end - end - end - end - for i, v in pairs(n) do - if i > 1 then - local bar = _G[v] - bar:HookScript('OnShow', UpdatePetStance) - bar:HookScript('OnHide', UpdatePetStance) - end - end - hooksecurefunc('ActionBarController_UpdateAll', UpdatePetStance) - hooksecurefunc('ShowPetActionBar', UpdatePetBar) - end - - local OnEvent = function(self, event) - if MODUI_VAR['elements']['mainbar'].enable then - if event == 'PLAYER_LOGIN' then - AddBars() - AddButtonSkin() - MoveBars() - UpdateBars() - else - UpdateXP() - end - elseif MODUI_VAR['elements']['mainbar'].xp then - AddXP() - UpdateXP() - end - if MODUI_VAR['elements']['mainbar'].horiz and not MODUI_VAR['elements']['mainbar'].enable then - AddHorizBars() - end - end - - local e = CreateFrame'Frame' - for _, v in pairs(events) do e:RegisterEvent(v) end - e:SetScript('OnEvent', OnEvent) - - - -- diff --git a/actionbar/keypress.lua b/actionbar/keypress.lua deleted file mode 100755 index 579415c..0000000 --- a/actionbar/keypress.lua +++ /dev/null @@ -1,98 +0,0 @@ - - - local _, ns = ... - - local time = nil - - local SetButtonColour = function(self, r, g, b) - for i = 1, 4 do - self.bo[i]:SetVertexColor(r, g, b) - end - end - - local AddBorderColour = function(self, newtime) - if self:GetChecked() then - self.checked = true - SetButtonColour(self, 255/255, 240/255, 0/255) - end - if self.keypress then - local i = (newtime - self.keypress)*5 - SetButtonColour(self, .3*i, .3*i, .3*i) - end - if self.checked and not self:GetChecked() then - SetButtonColour(self, MODUI_VAR['theme_bu'].r, MODUI_VAR['theme_bu'].g, MODUI_VAR['theme_bu'].b) - self.checked = nil - end - if self.keypress and newtime > (self.keypress + .4) then - SetButtonColour(self, MODUI_VAR['theme_bu'].r, MODUI_VAR['theme_bu'].g, MODUI_VAR['theme_bu'].b) - self.keypress = nil - end - end - - local AddPetBorderColour = function() - for i = 1, 10 do - local bu = _G['PetActionButton'..i] - local _, _, _, _, active = GetPetActionInfo(i) - if active then - SetButtonColour(bu, 255/255, 240/255, 0/255) - else - SetButtonColour(bu, MODUI_VAR['theme_bu'].r, MODUI_VAR['theme_bu'].g, MODUI_VAR['theme_bu'].b) - end - end - end - - local AddKeyDown = function(bu) - if not bu.keydown then - local buttontype = string.upper(bu:GetName()) or bu:GetAttribute'binding' - buttontype = replace(buttontype, 'BOTTOMLEFT', '1') - buttontype = replace(buttontype, 'BOTTOMRIGHT', '2') - buttontype = replace(buttontype, 'RIGHT', '3') - buttontype = replace(buttontype, 'LEFT', '4') - buttontype = replace(buttontype, 'MULTIBAR', 'MULTIACTIONBAR') - - local key = GetBindingKey(buttontype) - if key then - bu:RegisterForClicks'AnyDown' - SetOverrideBinding(bu, true, key, 'CLICK '..bu:GetName()..':LeftButton') - end - - bu.keydown = true - end - end - - local ButtonDown = function(id) - local time = GetTime() - local bu = GetActionButtonForID(id) - if bu:GetButtonState() == 'PUSHED' then - bu.keypress = time - end - end - - local OnUpdate = function(self, elapsed) - if self.bo then - AddBorderColour(self, GetTime()) - end - end - - local PetOnUpdate = function(self, elapsed) - if self.bo then - AddPetBorderColour(self, GetTime()) - end - end - - local OnEvent = function(self, event) - hooksecurefunc('ActionButtonDown', ButtonDown) - hooksecurefunc('ActionButton_OnUpdate', OnUpdate) - hooksecurefunc('PetActionBarFrame_OnUpdate', PetOnUpdate) - - if MODUI_VAR['elements']['mainbar'].keypress then - hooksecurefunc('ActionButton_Update', AddKeyDown) - end - end - - local e = CreateFrame'Frame' - e:RegisterEvent'PLAYER_LOGIN' - e:SetScript('OnEvent', OnEvent) - - - -- diff --git a/aura/aura.lua b/aura/aura.lua index 93ad421..7241267 100755 --- a/aura/aura.lua +++ b/aura/aura.lua @@ -1,294 +1,296 @@ - - - local _, ns = ... - local FONT_REGULAR = ns.FONT_REGULAR - - local e = CreateFrame'Frame' - - local layout = { - ['player|HELPFUL'] = { - point = 'TOPRIGHT', - sort = 'TIME', - minWidth = 330, - minHeight = 100, - x = -38, - y = 0, - wrapAfter = 12, - wrapY = -50, - direction = '+', - position = { - 'TOPRIGHT', - Minimap, - 'TOPLEFT', - -35, - -8, - }, +local _, ns = ... +local FONT_REGULAR = ns.FONT_REGULAR + +local e = CreateFrame'Frame' + +local layout = { + ['player|HELPFUL'] = { + point = 'TOPRIGHT', + sort = 'TIME', + minWidth = 330, + minHeight = 100, + x = -38, + y = 0, + wrapAfter = 9, + wrapY = -50, + direction = '+', + position = { + 'TOPRIGHT', + MinimapCluster, + 'TOPLEFT', + -150, + -180, }, - ['player|HARMFUL'] = { - point = 'TOPRIGHT', - sort = 'TIME', - minWidth = 330, - minHeight = 100, - x = -50, - wrapAfter = 1, - wrapY = -50, - direction = '+', - position = { - 'TOPRIGHT', - QuestWatchFrame, - 'TOPLEFT', - -25, - -20, - }, + }, + ['player|HARMFUL'] = { + point = 'TOPRIGHT', + sort = 'TIME', + minWidth = 330, + minHeight = 100, + x = -38, + wrapAfter = 10, + wrapY = -50, + direction = '+', + position = { + 'TOPRIGHT', + MinimapCluster, + 'TOPLEFT', + -150, + -390, }, - ['weapons|NA'] = { - xOffset = 40, - position = { - 'TOPRIGHT', - QuestWatchFrame, - 'TOPLEFT', - -25, - -20, - }, + }, + ['weapons|NA'] = { + xOffset = 40, + position = { + 'TOPRIGHT', + MinimapCluster, + 'TOPLEFT', + -25, + -20, }, - } - - local AbbrevTime = function(bu, time) - local h, m, s, text - if time <= 0 then - text = '' - elseif time < 3600 and time > 60 then - h = floor(time/3600) - m = floor(mod(time, 3600)/60 + 1) - s = mod(time, 60) - text = format('|cffffffff%d|rm', m) - elseif time < 60 then - m = floor(time/60) - s = mod(time, 60) - text = m == 0 and format('|cffffffff%d|rs', s) + }, +} + +local AbbrevTime = function(bu, time) + local h, m, s, text + if time <= 0 then + text = '' + elseif time > 60 then + m = floor(time/60 + 1) + text = format('|cffffffff%d|rm', m) + elseif time < 60 then + m = floor(time/60) + s = mod(time, 60) + text = m == 0 and format('|cffffffff%d|rs', s) + end + return text +end + +local UpdateSB = function(self, duration, expiration) + self.sb:Hide() + if MODUI_VAR['elements']['aura'].statusbars and expiration and duration > 0 then + -- local p = duration/expiration + self.sb:SetMinMaxValues(0, duration) + self.sb:SetValue(expiration) + self.sb:SetStatusBarColor(self.debuff and 1 or 0, self.debuff and 0 or 1, 0) + self.sb:Show() + end +end + +local OnUpdate = function(self, elapsed) + if self.expiration then + self.expiration = max(self.expiration - elapsed, 0) + if MODUI_VAR['elements']['aura'].values then + self:SetText(self.expiration > 0 and AbbrevTime(self, self.expiration) or '') else - h = floor(time/3600 + 1) - text = format('|cffffffff%d|rh', h) + self:SetFormattedText(SecondsToTimeAbbrev(self.expiration)) + end + if self.duration then + UpdateSB(self, self.duration, self.expiration) end - return text end - - local UpdateSB = function(self, duration, expiration) - self.sb:Hide() - if MODUI_VAR['elements']['aura'].statusbars and expiration and duration > 0 then - -- local p = duration/expiration - self.sb:SetMinMaxValues(0, duration) - self.sb:SetValue(expiration) - self.sb:SetStatusBarColor(self.debuff and 1 or 0, self.debuff and 0 or 1, 0) - self.sb:Show() +end + +local FormatDebuffs = function(self, name, dtype) + if name then + local colour = DebuffTypeColor[dtype or 'none'] + --self.Name:SetText(strupper(name)) + --self.Name:SetTextColor(colour.r*1.7, colour.g*1.7, colour.b*1.7) -- brighten up + --self.Name:SetWidth(150) + --self.Name:SetWordWrap(true) + for i, v in pairs(self.F.bo) do + self.F.bo[i]:SetVertexColor(colour.r, colour.g, colour.b) + end + else + self.Name:SetText'' + for i, v in pairs(self.F.bo) do + self.F.bo[i]:SetVertexColor(MODUI_VAR['theme'].r, MODUI_VAR['theme'].g, MODUI_VAR['theme'].b) end end +end - local OnUpdate = function(self, elapsed) - if self.expiration then - self.expiration = max(self.expiration - elapsed, 0) - if MODUI_VAR['elements']['aura'].values then - self:SetText(self.expiration > 0 and AbbrevTime(self, self.expiration) or '') - else - self:SetFormattedText(SecondsToTimeAbbrev(self.expiration)) - end - if self.duration then - UpdateSB(self, self.duration, self.expiration) - end - end - end +local UpdateAura = function(self, index, filter) + local header = self:GetParent() + local unit, filter = header:GetAttribute'unit', header:GetAttribute'filter' + local name, icon, count, dtype, duration, expiration, _, __, shouldConsolidate = UnitAura(unit, index, filter) + if name then + self:SetNormalTexture(icon) - local FormatDebuffs = function(self, name, dtype) - if name then - local colour = DebuffTypeColor[dtype or 'none'] - self.Name:SetText(strupper(name)) - self.Name:SetTextColor(colour.r*1.7, colour.g*1.7, colour.b*1.7) -- brighten up - self.Name:SetWidth(150) - self.Name:SetWordWrap(true) - for i, v in pairs(self.F.bo) do - self.F.bo[i]:SetVertexColor(colour.r, colour.g, colour.b) - end - else - self.Name:SetText'' - for i, v in pairs(self.F.bo) do - self.F.bo[i]:SetVertexColor(MODUI_VAR['theme'].r, MODUI_VAR['theme'].g, MODUI_VAR['theme'].b) - end + self.Count:SetText(count > 1 and count or '') + + self.debuff = false + self.duration = duration + self.expiration = expiration - GetTime() + + if self.expiration and duration > 0 then + self.sb:SetMinMaxValues(0, duration) end - end - local UpdateAura = function(self, index, filter) - local header = self:GetParent() - local unit, filter = header:GetAttribute'unit', header:GetAttribute'filter' - local name, icon, count, dtype, duration, expiration = UnitAura(unit, index, filter) - if name then - self:SetNormalTexture(icon) - self.Count:SetText(count > 1 and count or '') - - self.debuff = false - self.duration = duration - self.expiration = expiration - GetTime() - - if self.expiration and duration > 0 then - self.sb:SetMinMaxValues(0, duration) - end - - if filter == 'HARMFUL' then - self.debuff = true - FormatDebuffs(self, name, dtype) - end - end + if filter == 'HARMFUL' then + self.debuff = true + FormatDebuffs(self, name, dtype) + end end +end + +local UpdateTempEnchant = function(self, index) + local enchant = (index == 16 and 2) or 6 + local expiration = select(enchant, GetWeaponEnchantInfo()) + local duration = expiration/1e3 + local icon = GetInventoryItemTexture('player', index) - local UpdateTempEnchant = function(self, index) - local enchant = (index == 16 and 2) or 6 - local expiration = select(enchant, GetWeaponEnchantInfo()) - local duration = expiration/1e3 - local icon = GetInventoryItemTexture('player', index) - - if expiration then - self.expiration = expiration/1000 - self.enchant = enchant - self.duration = duration - - if self.expiration and duration and duration > 0 then - self.sb:SetMinMaxValues(0, duration) - end - else - self.expiration = nil - self.enchant = nil - self.duration = nil - end - - self:SetAlpha(icon and 1 or 0) - - if icon then - self:SetNormalTexture(icon) - for k = 1, 4 do - self.F.bo[k]:SetVertexColor(.6, 0, 1) - end + if expiration then + self.expiration = expiration/1000 + self.enchant = enchant + self.duration = duration + + if self.expiration and duration and duration > 0 then + self.sb:SetMinMaxValues(0, duration) end + else + self.expiration = nil + self.enchant = nil + self.duration = nil end - local OnAttributeChanged = function(self, attribute, index) - if attribute == 'index' then - UpdateAura(self, index, filter) - elseif attribute == 'target-slot' then - UpdateTempEnchant(self, index) + self:SetAlpha(icon and 1 or 0) + + if icon then + self:SetNormalTexture(icon) + for k = 1, 4 do + self.F.bo[k]:SetVertexColor(.6, 0, 1) end end +end - local AddButton = function(self, name, bu) - --print(name) - if name:match'^child' or name:find'tempenchant' then - bu:SetScript('OnUpdate', OnUpdate) - bu:SetScript('OnAttributeChanged', OnAttributeChanged) - - bu.F = CreateFrame('Frame', nil, bu) - bu.F:SetAllPoints() - ns.BD(bu) - - ns.BUBorder(bu.F, 20) - for i = 1, 4 do - tinsert(ns.skinbu, bu.F[i]) - bu.F.bo[i]:SetVertexColor(MODUI_VAR['theme'].r, MODUI_VAR['theme'].g, MODUI_VAR['theme'].b) - end - - local icon = bu:CreateTexture('$parentTexture', 'ARTWORK') - icon:SetAllPoints() - icon:SetTexCoord(.1, .9, .1, .9) - - local name = bu:CreateFontString('$parentName', nil, 'GameFontNormal') - name:SetFont(FONT_REGULAR, 14) - name:SetShadowOffset(1, -1) - name:SetShadowColor(0, 0, 0) - name:SetJustifyH'RIGHT' - name:SetPoint('RIGHT', bu, 'LEFT', -15, 0) - - local d = bu:CreateFontString('$parentDuration', nil, 'GameFontNormalSmall') - d:SetPoint('TOP', bu, 'BOTTOM', 0, -8) - - local count = bu:CreateFontString('$parentCount', nil, 'GameFontNormal') - count:SetParent(bu.F) - count:SetJustifyH'CENTER' - count:SetPoint('CENTER', bu, 'TOP', 0, 2) - - local sb = CreateFrame('StatusBar', nil, bu) - ns.BD(sb, 1, -2) - ns.SB(sb) - sb:SetHeight(5) - sb:SetPoint'LEFT' - sb:SetPoint'RIGHT' - sb:SetPoint'BOTTOM' - sb:SetMinMaxValues(0, 1) - sb:Hide() - - sb.bg = sb:CreateTexture(nil, 'BORDER') - ns.SB(sb.bg) - sb.bg:SetAllPoints() - sb.bg:SetVertexColor(.2, .2, .2) - - bu:SetFontString(d) - bu:SetNormalTexture(icon) - - bu.Count = count - bu.Name = name - bu.sb = sb - end +local OnAttributeChanged = function(self, attribute, index) + if attribute == 'index' then + UpdateAura(self, index, filter) + elseif attribute == 'target-slot' then + UpdateTempEnchant(self, index) end +end - local AddHeader = function(unit, filter, attribute) - local Header = CreateFrame('Frame', 'modauras'..filter, Minimap, 'SecureAuraHeaderTemplate') - Header:SetAttribute('template', 'modauraTemplate') - Header:SetAttribute('unit', unit) - Header:SetAttribute('filter', filter) - Header:SetAttribute('xOffset', attribute.x) - Header:SetPoint(unpack(attribute.position)) - - if filter == 'HELPFUL' then - Header:SetAttribute('weaponTemplate', 'modauraTemplate') - Header:SetAttribute('includeWeapons', 1) - end +local AddButton = function(self, name, bu) + if name:match'^child' or name:find'tempenchant' then - Header:SetAttribute('sortDirection', attribute.direction) - Header:SetAttribute('sortMethod', attribute.sort) - Header:SetAttribute('sortDirection', attribute.direction) - Header:SetAttribute('point', attribute.point) - Header:SetAttribute('minWidth', attribute.minWidth) - Header:SetAttribute('minHeight', attribute.minHeight) - Header:SetAttribute('xOffset', attribute.x) - Header:SetAttribute('wrapYOffset', attribute.wrapY) - Header:SetAttribute('wrapAfter', attribute.wrapAfter) + bu:SetScript('OnUpdate', OnUpdate) + bu:SetScript('OnAttributeChanged', OnAttributeChanged) - Header:HookScript('OnAttributeChanged', AddButton) - Header:Show() + ns.BD(bu) + bu.F = CreateFrame('Frame', nil, bu, "BackdropTemplate") + bu.F:SetAllPoints() - RegisterAttributeDriver(Header, 'unit', '[vehicleui] vehicle; player') - end + ns.BUBorder(bu.F, 20) + for i = 1, 4 do + tinsert(ns.skinbu, bu.F[i]) + bu.F.bo[i]:SetVertexColor(MODUI_VAR['theme'].r, MODUI_VAR['theme'].g, MODUI_VAR['theme'].b) + end - local RemoveBuffFrame = function() - for _, v in pairs( - { - BuffFrame, - TemporaryEnchantFrame - } - ) do - v:UnregisterAllEvents() - v:Hide() + local icon = bu:CreateTexture('$parentTexture', 'ARTWORK') + icon:SetAllPoints() + icon:SetTexCoord(.1, .9, .1, .9) + + local name = bu:CreateFontString('$parentName', nil, 'GameFontNormal') + name:SetFont(FONT_REGULAR, 14) + name:SetShadowOffset(1, -1) + name:SetShadowColor(0, 0, 0) + name:SetJustifyH'RIGHT' + name:SetPoint('RIGHT', bu, 'LEFT', -15, 0) + + local d = bu:CreateFontString('$parentDuration', nil, 'GameFontNormalSmall') + d:SetPoint('TOP', bu, 'BOTTOM', 0, -8) + + local count = bu:CreateFontString('$parentCount', nil, 'GameFontNormal') + count:SetParent(bu.F) + count:SetJustifyH'CENTER' + count:SetPoint('CENTER', bu, 'TOP', 0, 2) + + local sb = CreateFrame('StatusBar', nil, bu, "BackdropTemplate") + ns.BD(sb, 1, -2) + ns.SB(sb) + sb:SetHeight(5) + sb:SetPoint'LEFT' + sb:SetPoint'RIGHT' + sb:SetPoint'BOTTOM' + sb:SetMinMaxValues(0, 1) + sb:Hide() + + sb.bg = sb:CreateTexture(nil, 'BORDER') + ns.SB(sb.bg) + sb.bg:SetAllPoints() + sb.bg:SetVertexColor(.2, .2, .2) + + bu:SetFontString(d) + bu:SetNormalTexture(icon) + + bu.Count = count + bu.Name = name + bu.sb = sb + end +end + +local AddHeader = function(unit, filter, attribute) + local Header = CreateFrame('Frame', 'modauras'..filter, Minimap, 'SecureAuraHeaderTemplate') + Header:SetAttribute('template', 'modauraTemplate') + Header:SetAttribute('unit', unit) + Header:SetAttribute('filter', filter) + Header:SetAttribute('xOffset', attribute.x) + Header:SetPoint(unpack(attribute.position)) + + if filter == 'HELPFUL' then + Header:SetAttribute('weaponTemplate', 'modauraTemplate') + Header:SetAttribute('includeWeapons', 1) + + local buffsAreConsolidated = GetCVarBool("consolidateBuffs") + if buffsAreConsolidated then + Header:SetAttribute("consolidateTo", 1) + Header:SetAttribute("consolidateDuration", -1) end end - local AddHeader = function() - if not MODUI_VAR['elements']['aura'].enable then return end - RemoveBuffFrame() - for i ,v in pairs(layout) do - local unit, filter = i:match'(.-)|(.+)' - if unit then - AddHeader(unit, filter, v) - end + + Header:SetAttribute('sortDirection', attribute.direction) + Header:SetAttribute('sortMethod', attribute.sort) + Header:SetAttribute('sortDirection', attribute.direction) + Header:SetAttribute('point', attribute.point) + Header:SetAttribute('minWidth', attribute.minWidth) + Header:SetAttribute('minHeight', attribute.minHeight) + Header:SetAttribute('xOffset', attribute.x) + Header:SetAttribute('wrapYOffset', attribute.wrapY) + Header:SetAttribute('wrapAfter', attribute.wrapAfter) + + Header:HookScript('OnAttributeChanged', AddButton) + Header:Show() + + RegisterAttributeDriver(Header, 'unit', '[vehicleui] vehicle; player') +end + +local RemoveBuffFrame = function() + for _, v in pairs( + { + BuffFrame, + TemporaryEnchantFrame + } + ) do + v:UnregisterAllEvents() + v:Hide() + end +end + +local AddHeader = function() + if not MODUI_VAR['elements']['aura'].enable then return end + RemoveBuffFrame() + for i ,v in pairs(layout) do + local unit, filter = i:match'(.-)|(.+)' + if unit then + AddHeader(unit, filter, v) end end - e:RegisterEvent'PLAYER_LOGIN' - e:SetScript('OnEvent', AddHeader) + ConsolidatedBuffs:ClearAllPoints(); + ConsolidatedBuffs:SetPoint('TOPRIGHT', MinimapCluster, 'TOPLEFT', -147, -130); +end - -- +e:RegisterEvent'PLAYER_LOGIN' +e:SetScript('OnEvent', AddHeader) diff --git a/bag/bag/bag.lua b/bag/bag/bag.lua deleted file mode 100755 index e4470ee..0000000 --- a/bag/bag/bag.lua +++ /dev/null @@ -1,225 +0,0 @@ - - - local _, ns = ... - - local FONT_REGULAR = ns.FONT_REGULAR - local e = CreateFrame'Frame' - - local AddSparkle = function(bu) - bu.sparkle = CreateFrame('Button', bu:GetName()..'sparkle', bu, 'AutoCastShineTemplate') - bu.sparkle:RegisterForClicks'NONE' - bu.sparkle:SetAllPoints() - bu.sparkle:Hide() - end - - local ToggleSparkle = function(i, j, enter) - local bu = _G['ContainerFrame'..i..'Item'..j] - - if not bu.sparkle then AddSparkle(bu) end - - if enter then - bu.sparkle:SetFrameStrata'HIGH' - bu.sparkle:Show() - AutoCastShine_AutoCastStart(bu.sparkle, 0, 1, 0) - else - bu.sparkle:SetFrameStrata'LOW' - bu.sparkle:Hide() - AutoCastShine_AutoCastStop(bu.sparkle) - end - end - - local IterateForSparkle = function(self, enter) - if self.isMainBag then - for j = 1, GetContainerNumSlots(0) do - ToggleSparkle(1, j, enter) - end - else - local id = self:GetID() - CharacterBag0Slot:GetID() + 1 - for i = 1, NUM_CONTAINER_FRAMES do - local frame = _G['ContainerFrame'..i] - if frame:GetID() == id then - for j = 1, GetContainerNumSlots(id) do - ToggleSparkle(i, j, enter) - end - end - end - end - end - - local OnEnter = function(self) - if _G['modbag']:IsShown() then - self.isMainBag = true - IterateForSparkle(self, true) - end - end - - local OnLeave = function(self) - IterateForSparkle(self, false) - end - - local ShowBags = function(self) - for i = 0, 3 do - local s = _G['CharacterBag'..i..'Slot'] - s:SetAlpha(1) - s:EnableMouse(true) - end - end - - local HideBags = function(self) - for i = 0, 3 do - local s = _G['CharacterBag'..i..'Slot'] - s:SetAlpha(0) - s:EnableMouse(false) - end - end - - local UpdateSlot = function(self) - if MODUI_VAR['elements']['mainbar'].enable then - self:SetSize(18, 12) - _G[self:GetName()..'IconTexture']:SetTexCoord(.1, .9, .2, .8) - end - end - - local AddBag = function() - local bag = CreateFrame('Frame', 'modbag', UIParent, 'ButtonFrameTemplate') - bag:SetPoint('BOTTOMRIGHT', -120, 150) - bag:SetFrameLevel(3) - bag:Hide() - for _, v in pairs({bag:GetRegions()}) do tinsert(ns.skin, v) end - - bag.portrait = bag:CreateTexture(nil, 'BORDER', nil, 7) - bag.portrait:SetSize(64, 64) - bag.portrait:SetPoint('TOPLEFT', -8, 8) - bag.portrait:SetAlpha(1) - SetPortraitToTexture(bag.portrait, [[Interface\ICONS\Inv_misc_bag_08]]) - - bag.name = bag:CreateFontString(nil, 'OVERLAY', 'GameFontNormal') - bag.name:SetFont(FONT_REGULAR, 10) - bag.name:SetText'Bag' - bag.name:SetPoint('TOPLEFT', 63, -6) - bag.name:SetTextColor(1, .7, 0) - - bag.bd = CreateFrame('Frame', nil, bag) - ns.BD(bag.bd) - bag.bd:SetPoint('TOPLEFT', 8, -58) - bag.bd:SetPoint('BOTTOMRIGHT', -10, 27) - - bag.bd.t = bag.bd:CreateTexture(nil, 'ARTWORK') - bag.bd.t:SetAllPoints() - bag.bd.t:SetTexture([[Interface/Garrison/ClassHallBackground]], true, true) - bag.bd.t:SetHorizTile(true) - bag.bd.t:SetVertTile(true) - bag.bd.t:SetVertexColor(.8, .8, .8) - - bag.topstrip = CreateFrame('Frame', nil, bag) - bag.topstrip:SetHeight(25) - bag.topstrip:SetPoint('TOPLEFT', bag, 60, -28) - bag.topstrip:SetPoint('TOPRIGHT', -10, -28) - - local money = ContainerFrame1MoneyFrame - money:SetParent(bag) - money:ClearAllPoints() - money:SetPoint('BOTTOMRIGHT', 0, 7) - money:SetFrameStrata'MEDIUM' - money:SetFrameLevel(3) - - --[[ - -- https://us.forums.blizzard.com/en/wow/t/key-ring-in-classic/253354/19 - KeyRingButton:SetSize(39, 18) - KeyRingButton:SetParent(bag) - KeyRingButton:ClearAllPoints() - KeyRingButton:SetPoint('BOTTOMLEFT', bag, 6, 3) - KeyRingButton:SetFrameLevel(4) - KeyRingButton:GetNormalTexture():SetTexCoord(.61,0,0,0,.61,.59,0,.59) - KeyRingButton:GetPushedTexture():SetTexCoord(.61,0,0,0,.61,.59,0,.59) - KeyRingButton:SetHighlightTexture'' - ]] - - for _, v in pairs( - { - ContainerFrame1MoneyFrameCopperButtonText, - ContainerFrame1MoneyFrameSilverButtonText, - ContainerFrame1MoneyFrameGoldButtonText - } - ) do - v:SetFont(FONT_REGULAR, 10, 'OUTLINE') - v:SetShadowOffset(0, 0) - end - - MainMenuBarBackpackButton:HookScript('OnEnter', OnEnter) - MainMenuBarBackpackButton:HookScript('OnLeave', OnLeave) - end - - local AddSlots = function() - for i = 0, 3 do - local bag = _G['modbag'] - local slot = _G['CharacterBag'..i..'Slot'] - local icon = _G['CharacterBag'..i..'SlotIconTexture'] - - slot:HookScript('OnEnter', function(self) - IterateForSparkle(self, true) - end) - - slot:HookScript('OnLeave', function(self) - IterateForSparkle(self, false) - end) - - if MODUI_VAR['elements']['onebag'].enable then - slot:SetScript('OnClick', nil) - end - - if MODUI_VAR['elements']['mainbar'].enable then - slot:UnregisterEvent'ITEM_PUSH' - slot:SetNormalTexture'' - slot:SetCheckedTexture'' - slot:SetHighlightTexture'' - slot:SetFrameStrata'MEDIUM' - slot:ClearAllPoints() - - ns.BD(slot) - ns.BDStone(slot, 5) - - slot.IconBorder:SetAlpha(0) - - -- not... the best - slot:HookScript('OnShow', UpdateSlot) - slot:HookScript('OnEvent', UpdateSlot) - - slot:SetParent(MODUI_VAR['elements']['onebag'].enable and bag.topstrip or ContainerFrame1) - if MODUI_VAR['elements']['onebag'].enable then - if i == 0 then - slot:SetPoint('RIGHT', bag.topstrip, 0, 3) - else - slot:SetPoint('RIGHT', _G['CharacterBag'..(i - 1)..'Slot'], 'LEFT', -9, 0) - end - else - if MODUI_VAR['elements']['mainbar'].enable then - slot:SetSize(18, 12) - end - slot:SetParent(ContainerFrame1) - if i == 0 then - slot:SetPoint('TOPRIGHT', ContainerFrame1, -20, -32) - else - slot:SetPoint('RIGHT', _G['CharacterBag'..(i - 1)..'Slot'], 'LEFT', -9, 0) - end - end - end - end - end - - local OnEvent = function(self, event) - if event == 'PLAYER_LOGIN' then - e:RegisterEvent'PLAYER_ENTERING_WORLD' - if MODUI_VAR['elements']['onebag'].enable then - AddBag() - end - elseif event == 'PLAYER_ENTERING_WORLD' then - AddSlots() - end - end - - e:RegisterEvent'PLAYER_LOGIN' - e:SetScript('OnEvent', OnEvent) - - - -- diff --git a/bag/bank/bank.lua b/bag/bank/bank.lua deleted file mode 100755 index ccb6291..0000000 --- a/bag/bank/bank.lua +++ /dev/null @@ -1,143 +0,0 @@ - - - local _, ns = ... - - local FONT_REGULAR = ns.FONT_REGULAR - - local AddSparkle = function(bu) - bu.sparkle = CreateFrame('Button', bu:GetName()..'sparkle', bu, 'SecureActionButtonTemplate, SecureHandlerStateTemplate, SecureHandlerEnterLeaveTemplate, AutoCastShineTemplate') - bu.sparkle:RegisterForClicks'NONE' - bu.sparkle:SetAllPoints() - bu.sparkle:Hide() - end - - local ToggleSparkle = function(self, isEnter) - local id = self:GetID() + NUM_BAG_SLOTS - for i = 1, NUM_CONTAINER_FRAMES do - local frame = _G['ContainerFrame'..i] - if frame:GetID() == id then - for j = 1, GetContainerNumSlots(frame:GetID()) do - local bu = _G['ContainerFrame'..i..'Item'..j] - - if not bu.sparkle then AddSparkle(bu) end - - if isEnter then - bu.sparkle:SetFrameStrata'HIGH' - bu.sparkle:Show() - AutoCastShine_AutoCastStart(bu.sparkle, .25*i, .2/i, .2/i) - else - bu.sparkle:SetFrameStrata'LOW' - bu.sparkle:Hide() - AutoCastShine_AutoCastStop(bu.sparkle) - end - end - end - end - end - - local AddBank = function() - local bag = _G['modbag'] - - local bank = CreateFrame('Button', 'modbank', UIParent, 'ButtonFrameTemplate') - bank:SetPoint('BOTTOMRIGHT', bag, 'BOTTOMLEFT', -20, 0) - bank:SetFrameLevel(5) - bank:Hide() - for _, v in pairs({bank:GetRegions()}) do tinsert(ns.skin, v) end - - bank.portrait = bank:CreateTexture(nil, 'BORDER', nil, 7) - bank.portrait:SetSize(64, 64) - bank.portrait:SetPoint('TOPLEFT', -8, 8) - bank.portrait:SetAlpha(1) - SetPortraitToTexture(bank.portrait, [[Interface\ICONS\Inv_misc_coin_02]]) - - bank.name = CreateFrame('Button', nil, bank) - bank.name:SetPoint('TOPLEFT', 65, -5) - - bank.name.t = bank.name:CreateFontString(nil, 'OVERLAY', 'GameFontNormal') - bank.name.t:SetText'Bank' - bank.name.t:SetAllPoints() - bank.name:SetSize(35, 12) - - bank.bd = CreateFrame('Frame', nil, bank) - ns.BD(bank.bd) - bank.bd:SetPoint('TOPLEFT', 8, -58) - bank.bd:SetPoint('BOTTOMRIGHT', -10, 27) - - bank.bd.t = bank.bd:CreateTexture(nil, 'ARTWORK') - bank.bd.t:SetAllPoints() - bank.bd.t:SetTexture([[Interface/BankFrame/Bank-Background]], true, true) - bank.bd.t:SetHorizTile(true) - bank.bd.t:SetVertTile(true) - bank.bd.t:SetVertexColor(.8, .8, .8) - tinsert(ns.skin, bank.bd.t) - - bank.space = CreateFrame('StatusBar', nil, bank.bd) - ns.SB(bank.space) - ns.BD(bank.space) - bank.space:SetHeight(5) - bank.space:SetPoint('TOPLEFT', bank, 9, -58) - bank.space:SetPoint('TOPRIGHT', bank, -10, -58) - bank.space:SetMinMaxValues(0, 100) - bank.space:SetValue(100) - bank.space:SetStatusBarColor(245/255, 172/255, 144/255) - - bank.purchase = CreateFrame('Button', 'modBankPurchase', bank, 'SmallMoneyFrameTemplate') - bank.purchase:SetSize(30, 20) - bank.purchase:SetPoint('BOTTOMRIGHT', bank, -10, 10) - bank.purchase:SetScale(.7) - SmallMoneyFrame_OnLoad(bank.purchase) - MoneyFrame_SetType(bank.purchase, 'STATIC') - - bank.purchase.t = bank.purchase:CreateFontString(nil, 'OVERLAY', 'NumberFontNormalRight') - bank.purchase.t:SetPoint('RIGHT', bank.purchase, 'LEFT', -6, 0) - bank.purchase.t:SetText'Buy New Bank Slot +' - - for i = 1, 6 do - local slot = BankSlotsFrame['Bag'..i] - local _, highlight = slot:GetChildren() - - ns.BD(slot) - ns.BDStone(slot, 5) - - slot:UnregisterEvent'ITEM_PUSH' - slot:SetNormalTexture'' - slot:SetHighlightTexture'' - slot:SetParent(bank) - slot:SetSize(16, 12) - slot:ClearAllPoints() - slot:SetParent(bank) - slot:SetFrameStrata'MEDIUM' - - slot.IconBorder:SetAlpha(0) - - slot.icon:SetTexCoord(.1, .9, .225, .775) - - if highlight then highlight:Hide() end - - if i == 1 then - slot:SetPoint('TOPRIGHT', bank, -15, -32) - else - slot:SetPoint('RIGHT', BankSlotsFrame['Bag'..(i - 1)], 'LEFT', -3, 0) - end - - slot:HookScript('OnEnter', function(self) - ToggleSparkle(self, true) - end) - slot:HookScript('OnLeave', function(self) - ToggleSparkle(self, false) - end) - end - end - - local OnEvent = function() - if MODUI_VAR['elements']['onebag'].enable then - AddBank() - end - end - - local e = CreateFrame'Frame' - e:RegisterEvent'PLAYER_LOGIN' - e:SetScript('OnEvent', OnEvent) - - - -- diff --git a/bag/button.lua b/bag/button.lua deleted file mode 100755 index 0d50fec..0000000 --- a/bag/button.lua +++ /dev/null @@ -1,123 +0,0 @@ - - - local _, ns = ... - - local FONT_REGULAR = ns.FONT_REGULAR - - local e = CreateFrame'Frame' - - local ColourBagBorders = function(bu, slotID, texture, rarity, type, quest) - local q = _G[bu:GetName()..'IconQuestTexture'] - local s = _G[bu:GetName()].searchOverlay - if bu.bo then - for i, v in pairs(bu.bo) do - if texture then - -- search - if s:IsShown() then - bu.bo[i]:SetVertexColor(1, 1, 1) - -- quest - elseif quest then - bu.bo[i]:SetVertexColor(248/255, 98/255, 86/255) - -- uncommon+ quality - elseif rarity and rarity >= 2 and BAG_ITEM_QUALITY_COLORS[rarity] then - local colour = BAG_ITEM_QUALITY_COLORS[rarity] - bu.bo[i]:SetVertexColor(colour.r*1.5, colour.g*1.5, colour.b*1.5) - elseif type > 0 then - bu.bo[i]:SetVertexColor(.4, .3, 0) - else - bu.bo[i]:SetVertexColor(MODUI_VAR['theme_bu'].r or 1, MODUI_VAR['theme_bu'].g or 1, MODUI_VAR['theme_bu'].b or 1) - end - else - if type > 0 then - bu.bo[i]:SetVertexColor(.4, .3, 0) - else - bu.bo[i]:SetVertexColor(.2, .2, .2) - end - end - end - end - end - - local ColourBankBorders = function(bu, name) - local q = bu['IconQuestTexture'] - if bu.bo then - -- quest - for i, v in pairs(bu.bo) do - if name then - if q and q:IsShown() then - bu.bo[i]:SetVertexColor(248/255, 98/255, 86/255) - -- uncommon+ - elseif bu.quality and bu.quality > 1 and BAG_ITEM_QUALITY_COLORS[bu.quality] then - local colour = BAG_ITEM_QUALITY_COLORS[bu.quality] - bu.bo[i]:SetVertexColor(colour.r, colour.g, colour.b) - else - bu.bo[i]:SetVertexColor(MODUI_VAR['theme_bu'].r or 1, MODUI_VAR['theme_bu'].g or 1, MODUI_VAR['theme_bu'].b or 1) - end - else - bu.bo[i]:SetVertexColor(.2, .2, .2) - end - end - end - end - - ns.ColourUpdate = function(frame) - local name = frame:GetName() - local id = frame:GetID() - for i = 1, frame.size do - local bu = _G[name..'Item'..i] - local itemID = GetContainerItemID(id, bu:GetID()) - local texture, _, _, rarity = GetContainerItemInfo(id, bu:GetID()) - local itemlink = GetContainerItemLink(id, bu:GetID()) - local quest = false - if itemlink then - local _, _, _, _, _, itemtype = GetItemInfo(itemlink) - if itemtype == TRANSMOG_SOURCE_2 then - quest = true - end - end - - local _, type = GetContainerNumFreeSlots(id) - ColourBagBorders(bu, itemID, texture, rarity, type, quest) - bu.IconBorder:Hide() - end - end - - ns.BankColourUpdate = function(bu) - local id = bu:GetID() - local container = bu:GetParent():GetID() - - if bu.isBag then container = -4 end - if container == 0 then return end -- stop colouring bags - - local _, _, _, _, _, _, ilink = GetContainerItemInfo(container, id) - bu.ilink = ilink - bu.quality = nil - - if bu.ilink then - bu.name, _, bu.quality = GetItemInfo(bu.ilink) - end - - ColourBankBorders(bu, bu.name) - end - - ns.AddButtonStyle = function(bu) - if bu and not bu.bo then - ns.BU(bu, 1, true) - ns.BUBorder(bu, 21) - ns.ItemElements(bu) - end - end - - local AddBankSlots = function() - for i = 1, 7 do - local bu = BankSlotsFrame['Bag'..i] - ns.BU(bu) - ns.BUElements(bu) - end - end - - hooksecurefunc('ContainerFrame_Update', ns.ColourUpdate) - hooksecurefunc('ContainerFrame_UpdateSearchResults', ns.ColourUpdate) - hooksecurefunc('BankFrameItemButton_Update', ns.BankColourUpdate) - - -- diff --git a/bag/menu.lua b/bag/menu.lua deleted file mode 100755 index 1251889..0000000 --- a/bag/menu.lua +++ /dev/null @@ -1,101 +0,0 @@ - - - local _, ns = ... - - local bu = MainMenuBarBackpackButton - - --_G['MicroButtonAndBagsBar']:Hide() - --_G['MicroButtonAndBagsBar']:UnregisterAllEvents() - - local ShowBags = function() - for i = 0, 3 do - local s = _G['CharacterBag'..i..'Slot'] - s:SetAlpha(1) - s:EnableMouse(true) - end - end - - local HideBags = function() - for i = 0, 3 do - local s = _G['CharacterBag'..i..'Slot'] - s:SetAlpha(0) - s:EnableMouse(false) - end - end - - local UpdateFreeSlots = function() - local free, total = 0, 0 - for i = BACKPACK_CONTAINER, NUM_BAG_SLOTS do - local slots, type = GetContainerNumFreeSlots(i) - if type == 0 then - free, total = free + slots, total + GetContainerNumSlots(i) - end - end - bu.space:SetMinMaxValues(0, total) - bu.space:SetValue(free) - MainMenuBarBackpackButtonCount:SetText'' - ns.GRADIENT_COLOUR(bu.space, free, 0, total) - end - - local AddBagMenu = function() - bu:SetParent(_G['modui_mainbar'].caps) - bu:ClearAllPoints() - bu:SetPoint('RIGHT', _G['modui_mainbar'].caps, -35, 0) - bu:SetSize(21, 21) - bu:GetNormalTexture():SetTexture'' - ns.BUElements(bu) - - bu.Count:ClearAllPoints() - bu.Count:SetPoint('BOTTOM', bu, 1, 0) - - bu.space = CreateFrame('StatusBar', 'modui_bagspace', bu) - ns.SB(bu.space) - bu.space:SetSize(22, 3) - bu.space:SetPoint('TOP', bu, 'BOTTOM', -2, -7) - bu.space:SetStatusBarColor(1, 1, 1) - bu.space:SetFrameLevel(bu:GetFrameLevel()) - bu.space:SetBackdrop( - {bgFile = [[Interface\Buttons\WHITE8x8]], - insets = { - left = -1, - right = -1, - top = -1, - bottom = -1, - } - } - ) - bu.space:SetBackdropColor(0, 0, 0) - - local mask = bu:CreateMaskTexture() - mask:SetTexture[[Interface\Minimap\UI-Minimap-Background]] - mask:SetPoint('TOPLEFT', -3, 3) - mask:SetPoint('BOTTOMRIGHT', 3, -3) - - bu:GetCheckedTexture():SetTexture'' - - MainMenuBarBackpackButtonIconTexture:AddMaskTexture(mask) - - if not bu.bo then - bu.bo = bu:CreateTexture(nil, 'OVERLAY') - bu.bo:SetSize(36, 36) - bu.bo:SetTexture[[Interface\Artifacts\Artifacts]] - bu.bo:SetPoint'CENTER' - bu.bo:SetTexCoord(.5, .58, .8775, .9575) - bu.bo:SetVertexColor(.6, .6, .6) - tinsert(ns.skinmenu, bu.bo) - end - end - - local OnEvent = function(self, event) - if MODUI_VAR['elements']['mainbar'].enable then - AddBagMenu() - UpdateFreeSlots() - hooksecurefunc('MainMenuBarBackpackButton_UpdateFreeSlots', UpdateFreeSlots) - end - end - - local e = CreateFrame'Frame' - e:RegisterEvent'PLAYER_LOGIN' - e:SetScript('OnEvent', OnEvent) - - -- diff --git a/bag/tools/greys.lua b/bag/tools/greys.lua deleted file mode 100755 index 1499d2b..0000000 --- a/bag/tools/greys.lua +++ /dev/null @@ -1,54 +0,0 @@ - - - local _, ns = ... - - local AddSellShitButton = function() - local bag = _G['modbag'] - - local bu = CreateFrame('Button', nil, MerchantFrame, 'ActionButtonTemplate') - ns.BU(bu) - ns.BUBorder(bu, 16, 16) - bu:SetSize(17, 17) - bu:SetPoint('TOPLEFT', MerchantFrame, 70, -34) - bu:SetFrameStrata'MEDIUM' - bu:Hide() - - bu.i = bu:CreateTexture(nil, 'ARTWORK') - bu.i:SetAllPoints() - bu.i:SetTexture[[Interface\ICONS\inv_ore_tin_01]] - bu.i:SetTexCoord(.1, .9, .1, .9) - - bu:SetScript('OnEnter', function(self) - GameTooltip:SetOwner(self, 'ANCHOR_CURSOR') - GameTooltip:SetText'Sell Poor Quality Items & Rubbish' - GameTooltip:Show() - end) - - bu:SetScript('OnLeave', function() GameTooltip:Hide() end) - - bu:SetScript('OnClick', function() - for i = 0, 4 do - for j = 1, GetContainerNumSlots(i) do - local _, _, _, q = GetContainerItemInfo(i, j) - if q == LE_ITEM_QUALITY_POOR then - UseContainerItem(i, j) - end - end - end - end) - - MerchantFrame:HookScript('OnShow', function() bu:Show() end) - MerchantFrame:HookScript('OnHide', function() bu:Hide() end) - end - - local OnEvent = function() - if MODUI_VAR['elements']['onebag'].greys then - AddSellShitButton() - end - end - - local e = CreateFrame'Frame' - e:RegisterEvent'PLAYER_LOGIN' - e:SetScript('OnEvent', OnEvent) - - -- diff --git a/bag/tools/sort.lua b/bag/tools/sort.lua deleted file mode 100755 index 9057d96..0000000 --- a/bag/tools/sort.lua +++ /dev/null @@ -1,55 +0,0 @@ - - - local _, ns = ... - - local AddAutoSort = function() - local bag = _G['modbag'] or ContainerFrame1 - local bank = _G['modbank'] or BankFrame - - local sort = CreateFrame('Frame', 'modui_AutoSort', bag) - sort:SetSize(14, 12) - if MODUI_VAR['elements']['onebag'].enable then - sort:SetPoint('LEFT', bag.topstrip, 7, 4) - else - sort:SetPoint('TOPLEFT', ContainerFrame1, 50, -32) - end - ns.BDStone(sort, 5) - - sort.t = CreateFrame('Button', 'modui_AudioSortButton', sort) - sort.t:SetAllPoints() - ns.BD(sort.t) - - sort.t.icon = sort.t:CreateTexture(nil, 'OVERLAY') - sort.t.icon:SetAllPoints() - sort.t.icon:SetAtlas'bags-button-autosort-up' - sort.t.icon:SetTexCoord(.2, .8, .2, .8) - - sort.t:SetScript('OnEnter', function(self) - GameTooltip:SetOwner(self) - GameTooltip:SetText(BAG_CLEANUP_BAGS) - GameTooltip:Show() - end) - - sort.t:SetScript('OnLeave', GameTooltip_Hide) - - sort.t:SetScript('OnClick', function() - if bank:IsShown() then - SetSortBagsRightToLeft(true) - SortBankBags() - else - SetSortBagsRightToLeft(false) - SortBags() - end - end) - - end - - local OnEvent = function(self, event, ...) - AddAutoSort() - end - - local e = CreateFrame'Frame' - e:RegisterEvent'PLAYER_LOGIN' - e:SetScript('OnEvent', OnEvent) - - -- diff --git a/bag/update.lua b/bag/update.lua deleted file mode 100755 index 438071b..0000000 --- a/bag/update.lua +++ /dev/null @@ -1,378 +0,0 @@ - - - local _, ns = ... - - local size, spacing = 28, 9 - local buttons, bankbuttons = {}, {} - - --SetSortBagsRightToLeft(true) - -- SetInsertItemsLeftToRight(false) - - local grab_slots = function() - local numBags = 1 - for i = 1, NUM_BAG_FRAMES do - local bagName = 'ContainerFrame'..i + 1 - if _G[bagName]:IsShown() and not _G[bagName..'BackgroundTop']:GetTexture():find'Bank' then - numBags = numBags + 1 - end - end - return numBags - end - - local BagSpace = function() - local ct = 0 - for bag = 0, NUM_BAG_SLOTS do - for slot = 1, GetContainerNumSlots(bag) do - local link = GetContainerItemLink(bag, slot) - if not link then ct = ct + 1 end - end - end - return ct - end - - local BagMaxSpace = function() - local ct = 0 - for bag = 0, NUM_BAG_SLOTS do - for slot = 1, GetContainerNumSlots(bag) do - ct = ct + 1 - end - end - return ct - end - - local BankSpace = function() - local ct = 0 - for i = 1, 28 do - local id = BankButtonIDToInvSlotID(i) - local link = GetInventoryItemLink('player', id) - if not link then ct = ct + 1 end - end - for bag = NUM_BAG_SLOTS + 1, NUM_BAG_SLOTS + NUM_BANKBAGSLOTS do - for slot = 1, GetContainerNumSlots(bag) do - local link = GetContainerItemLink(bag, slot) - if not link then ct = ct + 1 end - end - end - return ct - end - - local BankMaxSpace = function() - local ct = 28 -- account for standard bank slots - for bag = NUM_BAG_SLOTS + 1, NUM_BAG_SLOTS + NUM_BANKBAGSLOTS do - for slot = 1, GetContainerNumSlots(bag) do - ct = ct + 1 - end - end - return ct - end - - local HideBags = function(bagName) - local bag = _G[bagName] - if not bag.stripped then - for i = 1, 7 do select(i, bag:GetRegions()):SetAlpha(0) end - bag:EnableMouse(false) - bag.ClickableTitleFrame:EnableMouse(false) - _G[bagName..'CloseButton']:Hide() - _G[bagName..'PortraitButton']:EnableMouse(false) - bag.stripped = true - end - end - - local HideBagSmall = function() - local hidden = nil - for i = 0, 3 do - local slot = _G['CharacterBag'..i..'Slot'] - if GetInventoryItemTexture('player', slot:GetID()) then - slot:Show() - else - slot:Hide() - hidden = true - end - end - --[[if hidden then - BagItemSearchBox:Hide() - else - BagItemSearchBox:Show() - end]] - end - - local AddBankSlotPurchase = function() - local bank = _G['modbank'] - local num, full = GetNumBankSlots() - local cost = GetBankSlotCost(num) - - bank.purchase:Hide() - - if not full then - bank.purchase:Show() - - _G['modBankPurchaseSilverButton']:Hide() - _G['modBankPurchaseCopperButton']:Hide() - - MoneyFrame_Update(bank.purchase, cost) - - bank.purchase:SetScript('OnClick', function() - --PlaySound'igMainMenuOption' - StaticPopup_Show'CONFIRM_BUY_BANK_SLOT' - end) - end - end - - local HideBank = function() - BankFrame:EnableMouse(false) - BankFrame:DisableDrawLayer'BACKGROUND' - BankFrame:DisableDrawLayer'BORDER' - BankFrame:DisableDrawLayer'OVERLAY' - - BankSlotsFrame:DisableDrawLayer'BORDER' - - --BankItemAutoSortButton:EnableMouse(false) - --BankItemAutoSortButton:SetAlpha(0) - - BankCloseButton:Hide() - BankPortraitTexture:SetTexture'' - - for _, v in pairs({BankFrame:GetRegions()}) do - if v:GetObjectType() == 'Texture' then - v:SetTexture'' - v:SetAlpha(0) - elseif v:GetObjectType() == 'FontString' then - v:SetText'' - v:Hide() - end - end - - for _, v in pairs({ - BankFrameCloseButton, - BankFrameMoneyFrame, - BankItemSearchBox, - BankPortraitTexture, - BankFramePurchaseInfo, - BankFrame.NineSlice - }) do - v:Hide() - end - end - - local HideReagentBank = function() - ReagentBankFrame:DisableDrawLayer'BACKGROUND' - ReagentBankFrame:DisableDrawLayer'BORDER' - ReagentBankFrame:DisableDrawLayer'ARTWORK' - ReagentBankFrame:DisableDrawLayer'OVERLAY' - end - - local HideBankArt = function() -- previously bankArtToggle(x) (we dont need x) - AddBankSlotPurchase() - HideBank() - --HideReagentBank() - - for _, v in pairs({BankFrameMoneyFrameInset, BankFrameMoneyFrameBorder}) do - v:Hide() - end - end - - local AddBG = function(bu) - bu.bg = bu:CreateTexture(nil, 'BACKGROUND', nil, 7) - bu.bg:SetTexture[[Interface\PaperDoll\UI-Backpack-EmptySlot]] - bu.bg:SetTexCoord(.1, .9, .1, .9) - bu.bg:SetAlpha(.5) - bu.bg:SetAllPoints() - end - - local bu, con, bag, col, row - local MoveButtons = function(table, frame) - local columns = ceil(sqrt(#table)) - col, row = 0, 0 - - for i = 1, #table do - bu = table[i] - bu:SetSize(size, size) - bu:ClearAllPoints() - bu:SetPoint('TOPLEFT', frame, col*(size + spacing) + 9, -1*row*(size + spacing) - 58) - - if not bu.bg then AddBG(bu) end - - if col > (columns - 2) then - col = 0 - row = row + 1 - else - col = col + 1 - end - end - - frame:SetHeight((row + (col == 0 and 0 or 1))*(size + spacing) + 83) - frame:SetWidth(columns*size + spacing*(columns - 1) + 20) - col, row = 0, 0 - end - - local FixSlots = function(bag) - for i = 0, 3 do - local bu = _G['CharacterBag'..i..'Slot'] - local icon = _G['CharacterBag'..i..'SlotIconTexture'] - if MODUI_VAR['elements']['mainbar'].enable then - bu:SetSize(18, 12) - icon:SetTexCoord(.1, .9, .2, .8) - end - end - end - - local ReAnchor = function() - local bag = _G['modbag'] - wipe(buttons) - HideBagSmall() - for f = 1, grab_slots() do - con = 'ContainerFrame'..f - HideBags(con) - for i = GetContainerNumSlots(_G[con]:GetID()), 1, -1 do - bu = _G[con..'Item'..i] - tinsert(buttons, bu) - ns.AddButtonStyle(bu) - end - ns.ColourUpdate(_G[con]) - end - MoveButtons(buttons, bag) - FixSlots(bag) - bag:Show() - end - - local cachedBankWidth, cachedBankHeight -- setup bank - local ReAnchorBank = function(noMoving) - local bank = _G['modbank'] - for _, button in pairs(bankbuttons) do button:Hide() end - - wipe(bankbuttons) - - for i = 1, 24 do - local bu = _G['BankFrameItem'..i] - tinsert(bankbuttons, bu) - ns.AddButtonStyle(bu) - ns.BankColourUpdate(bu) - bu:Show() - end - - local bagNameCount = 0 - for f = NUM_BAG_SLOTS + 1, NUM_BAG_SLOTS + NUM_BANKBAGSLOTS do - bagNameCount = bagNameCount + 1 - con = 'ContainerFrame'..grab_slots() + bagNameCount - HideBags(con) - for i = GetContainerNumSlots(f), 1, -1 do - bu = _G[con..'Item'..i] - tinsert(bankbuttons, bu) - ns.AddButtonStyle(bu) - ns.BankColourUpdate(bu) - bu:Show() - end - end - - if not noMoving then - MoveButtons(bankbuttons, bank) - cachedBankWidth = bank:GetWidth() - cachedBankHeight = bank:GetHeight() - else - bank:SetWidth(cachedBankWidth) - bank:SetHeight(cachedBankHeight) - end - - if bank:GetWidth() < 200 then - for i = 1, 6 do BankSlotsFrame['Bag'..i]:SetScale(.85) end - end - - bank:Show() - bank.purchase:Show() - for i = 1, 6 do - BankSlotsFrame['Bag'..i]:Show() - end - end - - local CloseBags = function() -- toggle functions - local bag = _G['modbag'] - local bank = _G['modbank'] - HideBankArt() - for i = 0, 11 do CloseBag(i) end - for _, v in pairs({bag, bank}) do v:Hide() end - end - - local CloseBags2 = function() - local bag = _G['modbag'] - local bagnk = _G['modbank'] - CloseBankFrame() - for _, v in pairs({bag, bank}) do v:Hide() end - end - - local OpenBags = function() - HideBankArt() - for i = 0, 4 do OpenBag(i) end - end - - local ToggleBags = function() - if IsBagOpen(0) then - CloseBankFrame() - CloseBags() - else OpenBags() end - end - - local HideBank = function() - local bank = _G['modbank'] - for i = 1, 24 do - _G['BankFrameItem'..i]:Hide() - end - for i = 5, 11 do CloseBag(i) end - bank:Hide() - ReAnchor() - end - - local AddUpdates = function() - for i = 1, 5 do - local bag = _G['ContainerFrame'..i] - hooksecurefunc(bag, 'Show', ReAnchor) - hooksecurefunc(bag, 'Hide', CloseBags2) - end - - hooksecurefunc(BankFrame, 'Show', function() - for i = 0, 11 do OpenBag(i) end - ReAnchorBank() - HideBankArt() - end) - - hooksecurefunc(BankFrame, 'Hide', function() - CloseBags() - HideBankArt() - end) - - BagSlotButton_OnClick = function(self) - local id = self:GetID() - local hadItem = PutItemInBag(id) - return - end - - BankFrameItemButtonBag_OnClick = function(self, button) - local id = self:GetInventorySlot() - local hadItem = PutItemInBag(id) - if not hadItem then return end - end - - function UpdateContainerFrameAnchors() end - ToggleBackpack = ToggleBags - ToggleBag = ToggleBags - OpenAllBags = OpenBags - OpenBackpack = OpenBags - CloseAllBags = CloseBags - - hooksecurefunc('ContainerFrame_Update', ReAnchor) - - - _G['modbag'].CloseButton:SetScript('OnClick', ToggleBags) - _G['modbank'].CloseButton:SetScript('OnClick', function() HideBank() CloseBankFrame() HideBankArt() end) - end - - local OnEvent = function() - if MODUI_VAR['elements']['onebag'].enable then - AddUpdates() - end - end - - local e = CreateFrame'Frame' - e:RegisterEvent'PLAYER_LOGIN' - e:SetScript('OnEvent', OnEvent) - - -- diff --git a/castbars/enemy.lua b/castbars/enemy.lua deleted file mode 100755 index bef1e00..0000000 --- a/castbars/enemy.lua +++ /dev/null @@ -1,492 +0,0 @@ - - - local _, ns = ... - - local GUIDs = {} - local timer = {} - local frames = {} - local pool = {} - local anchors = {} - local created = 0 - local active = 0 - local FONT_REGULAR = ns.FONT_REGULAR - - local f = CreateFramePool( - 'Statusbar', - UIParent, - 'SmallCastingBarFrameTemplate', - function(pool, frame) - frame:Hide() - frame:SetParent(nil) - frame:ClearAllPoints() - - if frame._data then - frame._data = nil - end - end - ) - - local e = CreateFrame'Frame' - - local InitializeNewFrame = function(frame) - frame.Border:ClearAllPoints() - frame.Icon:ClearAllPoints() - frame.Text:ClearAllPoints() - frame.Icon:SetPoint('LEFT', frame, -35, 0) - frame.Text:SetPoint'CENTER' - frame.Flash:SetAlpha(0) - - frame:SetScript('OnLoad', nil) - frame:SetScript('OnEvent', nil) - frame:SetScript('OnUpdate', nil) - frame:SetScript('OnShow', nil) - - frame.Timer = frame:CreateFontString(nil, 'OVERLAY') - frame.Timer:SetTextColor(1, 1, 1) - frame.Timer:SetFontObject'SystemFont_Shadow_Small' - end - - local GetAnchor = function(unit, default) - if string.find(unit, 'nameplate') then - return C_NamePlate.GetNamePlateForUnit(unit) - elseif string.match(unit, 'target') then - return TargetFrame - end - end - - local SetTargetCastbarPosition = function(castbar, parent) - -- Set position based on aura amount & targetframe type - local rows = parent.auraRows or 0 - if parent.haveToT or parent.haveElite then - if parent.buffsOnTop or rows <= 1 then - castbar:SetPoint('CENTER', TargetFrame, -8, -75) - else - castbar:SetPoint('CENTER', TargetFrame, -8, -100) - end - else - if not parent.buffsOnTop and rows > 0 then - castbar:SetPoint('CENTER', TargetFrame, -8, -100) - else - castbar:SetPoint('CENTER', TargetFrame, -8, -50) - end - end - end - - local SetCastbarIconAndText = function(castbar, cast) - --name = cast.rank and cast.name..' ('..cast.rank..')' or cast.name - name = cast.name - -- Update text + icon if it has changed - if castbar.Text:GetText() ~= name then - castbar.Icon:SetTexture(cast.icon) - castbar.Text:SetText(name) - castbar.Timer:SetPoint('RIGHT', castbar, 23, 0) - end - end - - local SetCastbarStyle = function(castbar, cast, db) - castbar:SetSize(150, 14) - castbar.Timer:SetShown(true) - --ns.SB(castbar) - - castbar.Spark:SetAlpha(1) - - castbar.Icon:SetSize(16, 16) - castbar.Icon:SetPoint('LEFT', castbar, -25, 0) - castbar.Icon:SetTexCoord(.1, .9, .1, .9) - - if not castbar.IconBorder then - castbar.IconBorder = CreateFrame('Frame', nil, castbar) - castbar.IconBorder:SetAllPoints(castbar.Icon) - ns.BD(castbar.IconBorder) - ns.BUBorder(castbar.IconBorder, 18) - for i = 1, 4 do - tinsert(ns.skinbu, castbar.IconBorder.bo[i]) - castbar.IconBorder.bo[i]:SetVertexColor(MODUI_VAR['theme'].r, MODUI_VAR['theme'].g, MODUI_VAR['theme'].b) - end - castbar.Icon:SetParent(castbar.IconBorder) - end - - castbar.Text:SetFont(FONT_REGULAR, 9) - castbar.Timer:SetFont(FONT_REGULAR, 9) - - castbar.Border:SetAlpha(1) - tinsert(ns.skin, castbar.Border) - castbar.Border:SetVertexColor(MODUI_VAR['theme'].r, MODUI_VAR['theme'].g, MODUI_VAR['theme'].b) - - if castbar.BorderFrame then -- unneccesary? - castbar.BorderFrame:SetAlpha(0) - end - - -- Update border to match castbar size - local width, height = castbar:GetWidth()*1.16, castbar:GetHeight()*1.16 - castbar.Border:SetPoint("TOPLEFT", width, height) - castbar.Border:SetPoint("BOTTOMRIGHT", -width, -height) - end - - local DisplayCastbar = function(castbar, unit) - local parent = GetAnchor(unit) - if not parent then return end -- sanity check - - local cast = castbar._data - castbar:SetMinMaxValues(0, cast.max) - castbar:SetParent(parent) - - if unit == 'target' then - SetTargetCastbarPosition(castbar, parent) - castbar:SetScale(1) - else - castbar:SetPoint('CENTER', parent, -6, -35) -- -5.5 x position? - castbar:SetScale(.7) - end - - SetCastbarStyle(castbar, cast) - SetCastbarIconAndText(castbar, cast) - - castbar:SetAlpha(1) - castbar:Show() - end - - local AcquireFrame = function() - if created >= 300 then return end -- should never happen - - local frame, isNew = f:Acquire() - active = active + 1 - - if isNew then - frame:Hide() - InitializeNewFrame(frame) - - created = created + 1 - -- frame._data = {} - end - - return frame, isNew, created - end - - local ReleaseFrame = function(frame) - if frame then - f:Release(frame) - active = active - 1 - end - end - - local GetFramePool = function() - return pool - end - - local GetCastbarFrame = function(unit) - -- pool:DebugInfo() - - if frames[unit] then - return frames[unit] - end - - -- store reference, refs are deleted on frame recycled. - -- This allows us to not have to Release & Acquire a frame everytime a - -- castbar is shown/hidden for the *same* unit - frames[unit] = AcquireFrame() - - return frames[unit] - end - - local FadeOut = function(self) - local a = self:GetAlpha() - CASTING_BAR_ALPHA_STEP - if a > 0 then - CastingBarFrame_ApplyAlpha(self, a) - else - self.fade = nil - self:Hide() - self:SetScript('OnUpdate', nil) - end - end - - local StartCast = function(GUID, unit) - if not timer[GUID] then return end - - local castbar = GetCastbarFrame(unit) - if not castbar then return end - - castbar._data = timer[GUID] - DisplayCastbar(castbar, unit) - end - - local StopCast = function(unit, hide) - local castbar = frames[unit] - if not castbar then return end - castbar._data = nil - if castbar.fade and not hide then - --C_Timer.After(1, function() castbar:SetScript('OnUpdate', FadeOut) end) - castbar:Hide() - end - end - - local StartAllCasts = function(GUID) - if not timer[GUID] then return end - for unit, guid in pairs(GUIDs) do - if guid == GUID then - StartCast(guid, unit) - end - end - end - - local StopAllCasts = function(GUID) - for unit, guid in pairs(GUIDs) do - if guid == GUID then - if frames[unit] then - frames[unit].fade = true - end - StopCast(unit) - end - end - end - - local StoreCast = function(GUID, name, icon, time, rank, channeled) - timer[GUID] = { - name = name, - rank = rank, - icon = icon, - max = time/1000, - endTime = GetTime() + (time/1000), - GUID = GUID, - channeled = channeled, - } - - StartAllCasts(GUID) - end - - local DeleteCast = function(GUID) - if GUID then - StopAllCasts(GUID) - timer[GUID] = nil - end - end - - local CastPushback = function(GUID, amount, faded) - local cast = timer[GUID] - if not cast then return end - - -- Set cast time modifier (i.e Curse of Tongues) - if not faded and amount and amount > 0 then - if not cast.currTimeModValue or cast.currTimeModValue < amount then -- run only once unless % changed to higher val - if cast.currTimeModValue then -- already was reduced - -- if existing modifer is e.g 50% and new is 60%, we only want to adjust cast by 10% - amount = amount - cast.currTimeModValue - - -- Store previous lesser modifier that was active - cast.prevCurrTimeModValue = cast.prevCurrTimeModValue or {} - cast.prevCurrTimeModValue[#cast.prevCurrTimeModValue + 1] = cast.currTimeModValue - end - - -- print("refreshing timer", percentageAmount) - cast.currTimeModValue = (cast.currTimeModValue or 0) + amount -- highest active modifier - cast.max = cast.max + (cast.max * amount)/100 - cast.endTime = cast.endTime + (cast.max * amount)/100 - elseif cast.currTimeModValue == amount then - -- new modifier has same percentage as current active one, just store it for later - -- print("same percentage, storing") - cast.prevCurrTimeModValue = cast.prevCurrTimeModValue or {} - cast.prevCurrTimeModValue[#cast.prevCurrTimeModValue + 1] = amount - end - elseif faded and amount then - -- Reset cast time modifier - if cast.currTimeModValue == amount then - cast.max = cast.max - (cast.max*amount)/100 - cast.endTime = cast.endTime - (cast.max*amount)/100 - cast.currTimeModValue = nil - - -- Reset to lesser modifier if available - if cast.prevCurrTimeModValue then - local highest, index = 0 - for i = 1, #cast.prevCurrTimeModValue do - if cast.prevCurrTimeModValue[i] and cast.prevCurrTimeModValue[i] > highest then - highest, index = cast.prevCurrTimeModValue[i], i - end - end - - if index then - cast.prevCurrTimeModValue[index] = nil - -- print("resetting to lesser modifier", highest) - return CastPushback(GUID, highest) - end - end - end - - if cast.prevCurrTimeModValue then - -- Delete 1 old modifier (doesn't matter which one aslong as its the same %) - for i = 1, #cast.prevCurrTimeModValue do - if cast.prevCurrTimeModValue[i] == amount then - -- print("deleted lesser modifier, new total:", #cast.prevCurrTimeModValue - 1) - cast.prevCurrTimeModValue[i] = nil - return - end - end - end - else -- normal pushback - if not cast.isChanneled then - cast.pushback = cast.pushback or 1 - cast.max = cast.max + cast.pushback - cast.endTime = cast.endTime + cast.pushback - cast.pushback = max(cast.pushback - .2, .2) - else - -- channels are reduced by 25% - cast.max = cast.max - (cast.max*25)/100 - cast.endTime = cast.endTime - (cast.max*25)/100 - end - end - end - - local PLAYER_ENTERING_WORLD = function(login) - if login then return end - - for _, table in pairs( - { - GUIDs, timer, frames - } - ) do - wipe(table) - end - - pool:GetFramePool():ReleaseAll() - end - - local PLAYER_LOGIN = function() - e:UnregisterEvent'PLAYER_LOGIN' - for _, v in pairs( - { - 'COMBAT_LOG_EVENT_UNFILTERED', - 'PLAYER_ENTERING_WORLD', - 'PLAYER_TARGET_CHANGED', - 'NAME_PLATE_UNIT_ADDED', - 'NAME_PLATE_UNIT_REMOVED', - } - ) do - e:RegisterEvent(v) - end - end - - local PLAYER_TARGET_CHANGED = function() - GUIDs.target = UnitGUID'target' or nil - local castbar = GetCastbarFrame'target' - if castbar then castbar:Hide() end - StopCast('target', true) - StartCast(GUIDs.target, 'target') - end - - local NAME_PLATE_UNIT_ADDED = function(unit) - local GUID = UnitGUID(unit) - GUIDs[unit] = GUID - StartCast(GUID, unit) - end - - local NAME_PLATE_UNIT_REMOVED = function(unit) - GUIDs[unit] = nil - local castbar = frames[unit] - if castbar then - ReleaseFrame(castbar) - frames[unit] = nil - end - end - - local COMBAT_LOG_EVENT_UNFILTERED = function() - local _, event, _, srcGUID, _, srcFlags, _, dstGUID, _, dstFlags, _, _, name, _, damage, _, resisted, blocked, absorbed = CombatLogGetCurrentEventInfo() - if event == 'SPELL_CAST_START' then - local spellid = ns.cast[name] - if not spellid then return end -- nb: keep an eye on how this table loop affects performance - local _, _, icon, time = GetSpellInfo(spellid) - if not time or time == 0 then return end - - local talentdecrease = ns.talentdecrease[name] - if talentdecrease then - if bit.band(srcFlags, COMBATLOG_OBJECT_TYPE_PLAYER) > 0 then - time = time - (talentdecrease*1000) - end - end - - return StoreCast(srcGUID, name, icon, time, GetSpellSubtext(spellid)) - elseif event == 'SPELL_CAST_SUCCESS' then - -- channeled spells start here - local spell = ns.channelled[name] - if spell then - return StoreCast(srcGUID, name, GetSpellTexture(spell[2]), spell[1]*1000, nil, true) - end - return DeleteCast(srcGUID) - elseif event == 'SPELL_AURA_APPLIED' then - local decrease = ns.decrease[name] - local increase = ns.delay[name] - local cc = ns.CC[name] - if decrease then - return CastPushback(dstGUID, decrease) - elseif increase then - return CastPushback(dstGUID, increase, true) - elseif cc then - return DeleteCast(dstGUID) - end - elseif event == 'SPELL_AURA_REMOVED' then - local increase = ns.delay[name] - if ns.channelled[name] then - return DeleteCast(srcGUID) - elseif increase then - return CastPushback(dstGUID, increase, true) - end - elseif event == 'SPELL_CAST_FAILED' then - if srcGUID == UnitGUID'player' then - if not CastingInfo'player' then - return DeleteCast(srcGUID) - end - else - return DeleteCast(srcGUID) - end - elseif event == 'PARTY_KILL' or event == 'UNIT_DIED' or event == 'SPELL_INTERRUPT' then - return DeleteCast(dstGUID) - elseif event == 'SWING_DAMAGE' or event == 'ENVIRONMENTAL_DAMAGE' or event == 'RANGE_DAMAGE' or event == 'SPELL_DAMAGE' then - if resisted or blocked or absorbed then return end - if bit.band(dstFlags, COMBATLOG_OBJECT_TYPE_PLAYER) > 0 then - return CastPushback(dstGUID) - end - end - end - - local OnUpdate = function() - if not next(timer) then return end - local current = GetTime() - for unit, castbar in pairs(frames) do - local cast = castbar._data - if cast then - local time = cast.endTime - current - if time > 0 then - local v = cast.max - time - if cast.channeled then - v = cast.max - v - end - castbar:SetMinMaxValues(0, cast.max) - castbar:SetValue(v) - castbar.Timer:SetFormattedText('%.1f', time) - castbar.Spark:SetPoint('CENTER', castbar, 'LEFT', (v/cast.max)*castbar:GetWidth(), 0) - else - DeleteCast(cast.GUID) - end - end - end - end - - local OnEvent = function(self, event, ...) - if MODUI_VAR['elements']['ecastbar'].enable then - if event == 'PLAYER_LOGIN' then - PLAYER_LOGIN() - e:SetScript('OnUpdate', OnUpdate) - elseif event == 'COMBAT_LOG_EVENT_UNFILTERED' then - COMBAT_LOG_EVENT_UNFILTERED() - elseif event == 'NAME_PLATE_UNIT_REMOVED' then - NAME_PLATE_UNIT_REMOVED(...) - elseif event == 'NAME_PLATE_UNIT_ADDED' then - NAME_PLATE_UNIT_ADDED(...) - elseif event == 'PLAYER_TARGET_CHANGED' then - PLAYER_TARGET_CHANGED() - end - end - end - - e:RegisterEvent'PLAYER_LOGIN' - e:SetScript('OnEvent', OnEvent) - - -- diff --git a/chat/chat.lua b/chat/chat.lua deleted file mode 100755 index 68a5a77..0000000 --- a/chat/chat.lua +++ /dev/null @@ -1,124 +0,0 @@ - - - local _, ns = ... - - local FONT_REGULAR = ns.FONT_REGULAR - - local HideChatElements = function(v) - for _, j in pairs({ - _G[v..'ButtonFrameUpButton'], _G[v..'ButtonFrameDownButton'], - _G[v..'ConversationButton'], _G[v..'ButtonFrameMinimizeButton'], - _G[v..'EditBoxFocusLeft'], _G[v..'EditBoxFocusRight'], _G[v..'EditBoxFocusMid'], - ChatFrameMenuButton, FriendsMicroButton, QuickJoinToastButton - }) do - if j then - j:SetAlpha(0) - if not j:GetName():find'Edit' then - j:EnableMouse(false) - if j:HasScript'OnEvent' then j:UnregisterAllEvents() end - end - end - end - for _, j in pairs({ - 'ButtonFrameBackground', - 'ButtonFrameTopLeftTexture', 'ButtonFrameTopRightTexture', - 'ButtonFrameBottomLeftTexture', 'ButtonFrameBottomRightTexture', - 'ButtonFrameLeftTexture', 'ButtonFrameRightTexture', - 'ButtonFrameBottomTexture', 'ButtonFrameTopTexture', - }) do - if _G[v..j] then _G[v..j]:SetTexture(nil) end - end - end - - local AddChat = function() - if MODUI_VAR['elements']['chat'].enable and MODUI_VAR['elements']['chat'].colornames then - SetCVar("chatClassColorOverride", 0) - else - SetCVar("chatClassColorOverride", 1) - end - ChatFrameChannelButton:ClearAllPoints() - ChatFrameChannelButton:SetPoint('BOTTOM', ChatFrame1ButtonFrame, 0, 22) - - DEFAULT_CHATFRAME_ALPHA = .25 - CHAT_FRAME_FADE_OUT_TIME = .1 - CHAT_FRAME_FADE_TIME = .1 - CHAT_FONT_HEIGHTS = { - [1] = 8, - [2] = 9, - [3] = 10, - [4] = 11, - [5] = 12, - [6] = 13, - [7] = 14, - [8] = 15, - [9] = 16, - [10] = 17, - [11] = 18, - [12] = 19, - [13] = 20, - [14] = 21, - [15] = 22, - } - - for i, v in pairs(CHAT_FRAMES) do - local chat = _G[v] - local edit = _G[v..'EditBox'] - local header = _G[v..'EditBoxHeader'] - local suffix = _G[v..'EditBoxHeaderSuffix'] - - SetChatWindowAlpha(i, 0) - HideChatElements(v) - - chat:SetFrameLevel(99) - chat:SetFrameStrata'MEDIUM' - chat:SetShadowOffset(1, -1) - chat:SetClampedToScreen(false) - chat:SetClampRectInsets(0, 0, 0, 0) - chat:SetMaxResize(UIParent:GetWidth(), UIParent:GetHeight()) - chat:SetMinResize(150, 25) - - edit:SetFrameLevel(0) - edit:Hide() - edit:SetSize(320, 20) - edit:SetAltArrowKeyMode(false) - edit:SetFont(FONT_REGULAR, 12) - edit:SetTextInsets(11 + header:GetWidth() + (suffix:IsShown() and suffix:GetWidth() or 0), 11, 0, 0) - - if not edit.f then - edit.f = CreateFrame('Frame', nil, edit) - ns.BD(edit.f) - edit.f:SetPoint('TOPLEFT', 12, -6) - edit.f:SetPoint('BOTTOMRIGHT', -12, 6) - - edit.shadow = edit:CreateTexture(nil, 'BACKGROUND', nil, -3) - edit.shadow:SetPoint('TOPLEFT', edit, -9, 7) - edit.shadow:SetPoint('BOTTOMRIGHT', edit, 9, -7) - edit.shadow:SetTexture[[Interface\Scenarios\ScenarioParts]] - edit.shadow:SetVertexColor(0, 0, 0, 1) - edit.shadow:SetTexCoord(0, .641, 0, .18) - end - - for _, j in pairs({edit:GetRegions()}) do - if j:GetObjectType() == 'FontString' then - j:SetParent(edit.f) - j:SetFont(STANDARD_TEXT_FONT, 11) - end - end - - ChatFrameMenuButton:SetAlpha(0) - ChatFrameMenuButton:EnableMouse(false) - end - end - - local OnEvent = function() - if MODUI_VAR['elements']['chat'].enable and MODUI_VAR['elements']['chat'].style then - AddChat() - hooksecurefunc('FCF_OpenTemporaryWindow', AddChat) - end - end - - local e = CreateFrame'Frame' - e:RegisterEvent'PLAYER_LOGIN' - e:SetScript('OnEvent', OnEvent) - - -- diff --git a/chat/cmd.lua b/chat/cmd.lua deleted file mode 100755 index cbed0ab..0000000 --- a/chat/cmd.lua +++ /dev/null @@ -1,35 +0,0 @@ - - - -- reload ui - SLASH_RELOADUI1 = '/rl' - SlashCmdList.RELOADUI = ReloadUI - - -- framestack - SLASH_FSTACK1 = '/fs' - SlashCmdList.FSTACK = function(msg) - UIParentLoadAddOn'Blizzard_DebugTools' - FrameStackTooltip_Toggle() - end - - -- event trace - SLASH_ETTRACE1 = '/et' - SlashCmdList.ETTRACE = function(msg) - UIParentLoadAddOn'Blizzard_DebugTools' - EventTraceFrame_HandleSlashCmd(msg) - end - - -- clear chat - SLASH_CLEAR_CHAT1 = '/clear' - SlashCmdList.CLEAR_CHAT = function() - for i = 1, NUM_CHAT_WINDOWS do _G['ChatFrame'..i]:Clear() end - end - - -- UI options list - SLASH_UIFORM1 = '/iip' SLASH_UIFORM2 = '/lip' - SLASH_UIFORM3 = '/iipui' SLASH_UIFORM4 = '/lipui' - SlashCmdList.UIFORM = function(msg) - DEFAULT_CHAT_FRAME:AddMessage('|cff01DFD7lip ui:|r options can be found in the portrait menu at the bottom-right of your action bar', 254/255, 193/255, 192/255) - end - - - -- diff --git a/chat/event.lua b/chat/event.lua deleted file mode 100755 index c6b2bcb..0000000 --- a/chat/event.lua +++ /dev/null @@ -1,175 +0,0 @@ - - - local _, ns = ... - - local hooks = {} - - local AddStringsAndChannelLabels = function() - FOREIGN_SERVER_LABEL = '—' - - CHAT_GUILD_GET = '|Hchannel:Guild|hG|h. %s:\32' - CHAT_OFFICER_GET = '|Hchannel:o|hO|h. %s:\32' - CHAT_RAID_GET = '|Hchannel:raid|hR|h. %s:\32' - CHAT_RAID_WARNING_GET = 'RW. %s:\32' - CHAT_RAID_LEADER_GET = '|Hchannel:raid|hRL|h. %s:\32' - CHAT_INSTANCE_CHAT_GET = '|Hchannel:INSTANCE_CHAT|hIns|h. %s:\32' - CHAT_INSTANCE_CHAT_LEADER_GET = '|Hchannel:INSTANCE_CHAT|hIL|h. %s:\32' - CHAT_BATTLEGROUND_GET = '|Hchannel:Battleground|hBG|h. %s:\32' - CHAT_BATTLEGROUND_LEADER_GET = '|Hchannel:Battleground|hBL|h. %s:\32' - CHAT_PARTY_GET = '|Hchannel:party|hP|h. %s:\32' - CHAT_PARTY_GUIDE_GET = '|Hchannel:party|hDG|h. %s:\32' - CHAT_MONSTER_PARTY_GET = '|Hchannel:raid|hR|h. %s:\32' - - -- this is a global change, affects lootframe etc. too. - _G.GOLD_AMOUNT = '|cffffffff%d|r|TInterface\\MONEYFRAME\\UI-GoldIcon:14:14:2:0|t' - _G.SILVER_AMOUNT = '|cffffffff%d|r|TInterface\\MONEYFRAME\\UI-SilverIcon:14:14:2:0|t' - _G.COPPER_AMOUNT = '|cffffffff%d|r|TInterface\\MONEYFRAME\\UI-CopperIcon:14:14:2:0|t' - end - - local events = { - CHAT_MSG_AFK = { - }, - CHAT_MSG_CHANNEL_JOIN = { - ['Joined Channel: (.+)'] = '', - }, - CHAT_MSG_COMBAT_FACTION_CHANGE = { - ['Reputation with (.+) increased by (.+).'] = '+ %2 %1 rep.', - ['You are now (.+) with (.+).'] = '%2 standing is now %1.', - }, - CHAT_MSG_COMBAT_XP_GAIN = { - ['(.+) dies, you gain (.+) experience. %(%+(.+)exp Rested bonus%)'] = '+ %2 (+%3) xp from %1.', - ['(.+) dies, you gain (.+) experience.'] = '+ %2 xp from %1.', - ['You gain (.+) experience.'] = '+ %1 xp.', - }, - CHAT_MSG_CURRENCY = { - ['You receive currency: (.+)%.'] = '+ %1.', - ['You\'ve lost (.+)%.'] = '- %1.', - }, - CHAT_MSG_GUILD_ACHIEVEMENT = { - ['(.+) has earned the achievement (.+)!'] = '%1 achieved %2.', - }, - CHAT_MSG_ACHIEVEMENT = { - ['(.+) has earned the achievement (.+)!'] = '%1 achieved %2.', - }, - CHAT_MSG_LOOT = { - ['You receive item: (.+)%.'] = '+ %1.', - ['You receive loot: (.+)%.'] = '+ %1.', - ['You receive bonus loot: (.+)%.'] = '+ bonus %1.', - ['You create: (.+)%.'] = '+ %1.', - ['You are refunded: (.+)%.'] = '+ %1.', - ['You have selected (.+) for: (.+)'] = 'Selected %1 for %2.', - ['Received item: (.+)%.'] = '+ %1.', - ['(.+) receives item: (.+)%.'] = '+ %2 for %1.', - ['(.+) receives loot: (.+)%.'] = '+ %2 for %1.', - ['(.+) receives bonus loot: (.+)%.'] = '+ bonus %2 for %1.', - ['(.+) creates: (.+)%.'] = '+ %2 for %1.', - ['(.+) was disenchanted for loot by (.+).'] = '%2 disenchanted %1.', - }, - CHAT_MSG_SKILL = { - ['Your skill in (.+) has increased to (.+).'] = '%1 lvl %2.' - }, - CHAT_MSG_SYSTEM = { - ['Received (.+), (.+).'] = '+ %1, %2.', - ['Received (.+).'] = '+ %1.', - ['Received (.+) of item: (.+).'] = '+ %2x%1.', - ['(.+) is now your follower.'] = '+ follower %1.', - ['(.+) completed.'] = '- Quest |cfff86256%1|r.', - ['Quest accepted: (.+)'] = '+ Quest |cfff86256%1|r.', - ['Received item: (.+)%.'] = '+ %1.', - ['Experience gained: (.+).'] = '+ %1 xp.', - ['(.+) has come online.'] = '|cff40fb40%1|r logged on.', - ['(.+) has gone offline.'] = '|cff40fb40%1|r logged off.', - ['You are now Busy: in combat'] = '+ Combat.', - ['You are no longer marked Busy.'] = '- Combat.', - ['Discovered (.+): (.+) experience gained'] = '+ %2 xp, found %1.', - ['You are now (.+) with (.+).'] = '+ %2 faction, now %1.', - ['Quest Accepted (.+)'] = '+ quest |cfff86256%1|r.', - ['You are now Away: AFK'] = '+ AFK.', - ['You are no longer Away.'] = '- AFK.', - ['You are no longer rested.'] = '- Rested.', - ['You don\'t meet the requirements for that quest.'] = '|cffff000!|r Quest requirements not met.', - ['(.+) has joined the raid group.'] = '+ Raider |cffff7d00%1|r.', - ['(.+) has left the raid group.'] = '- Raider |cffff7d00%1|r.', - ['You have earned the title \'(.+)\'.'] = '+ Title %1.', - }, - CHAT_MSG_TRADESKILLS = { - ['(.+) creates (.+).'] = '%1 |cffffff00->|r %2.', - }, - } - - local AddMessage = function(self, t, ...) - local _, size = self:GetFont() - local _, class = UnitClass'player' - local colour = (CUSTOM_CLASS_COLORS or RAID_CLASS_COLORS)[class].colorStr - local var = GetCVar'timeMgrUseMilitaryTime' - local d = var == '1' and date'%H.%M' or date'%I.%M'..string.lower(date'%p') - - if string.find(t, 'Left Channel:') then -- global channels being left should be indentifiable - t = gsub(t, '%[(%d0?)%. (.-)%]', '|cffffffff%1|r %2 ') -- [2. trade] > 2: Trade - else -- otherwise: - t = gsub(t, '%[(%d0?)%. (.-)%]', '|cffffffff%1|r ') -- globals channels: [2. trade] > 2 - end - -- 'square'-off string icons - t = gsub(t, '|TInterface\\Icons\\(.+):(.+)|t', '|TInterface\\Icons\\%1:'..size..':'..size..':0:0:64:64:8:56:8:56|t') - t = gsub(t, '(|HBNplayer.-|h)%[(.-)%]|h', '%1%2|h') -- battlenet player name - t = gsub(t, '(|Hplayer.-|h)%[(.-)%]|h', '%1%2|h') -- player name - t = gsub(t, 'Guild Message of the Day:', 'GMOTD ') -- message of the day - t = gsub(t, 'To (|HBNplayer.+|h):', '%1 > ') -- whisper to bnet - t = gsub(t, 'To (|Hplayer.+|h):', '%1 > ') -- whisper to - t = gsub(t, ' whispers:', ' < ') -- whisper from - t = gsub(t, 'Joined Channel:', '>') -- channel join - t = gsub(t, 'Left Channel:', 'Left ') -- channel left - t = gsub(t, '|H(.-)|h%[(.-)%]|h', '|H%1|h%2|h') -- strip brackets off've items iilinks style - - d = gsub(d, '0*(%d+)', '%1', 1) - t = string.format('|cffffc800%s|r %s', d, t) - - if string.find(t, 'Changed Channel') then return end - - return hooks[self](self, t, ...) - end - - local AddEventFilters = function() - for event, filters in pairs(events) do - ChatFrame_AddMessageEventFilter(event, function(f, event, t, ...) - for k, v in pairs(filters) do - if t:match(k) then - t = t:gsub(k, v) - return nil, t, ... - end - end - end) - end - end - - local AddNewMessage = function(chat) - hooks[chat] = chat.AddMessage - chat.AddMessage = AddMessage - end - - local AddMessageHooks = function() - for i, v in pairs(CHAT_FRAMES) do - if not v:find'2' then - local chat = _G[v] - AddNewMessage(chat) - end - end - hooksecurefunc('FCF_SetTemporaryWindowType', AddNewMessage) - end - - local OnEvent = function() - if MODUI_VAR['elements']['chat'].enable then - if MODUI_VAR['elements']['chat'].events then - AddEventFilters() - AddMessageHooks() - AddStringsAndChannelLabels() - end - end - end - - local e = CreateFrame'Frame' - e:RegisterEvent'PLAYER_LOGIN' - e:SetScript('OnEvent', OnEvent) - - - -- diff --git a/chat/tab.lua b/chat/tab.lua deleted file mode 100755 index b1ad45f..0000000 --- a/chat/tab.lua +++ /dev/null @@ -1,70 +0,0 @@ - - - local _, ns = ... - - CHAT_FRAME_TAB_SELECTED_MOUSEOVER_ALPHA = 1 - CHAT_FRAME_TAB_SELECTED_NOMOUSE_ALPHA = 0 - CHAT_FRAME_TAB_ALERTING_MOUSEOVER_ALPHA = 1 - CHAT_FRAME_TAB_ALERTING_NOMOUSE_ALPHA = 1 - CHAT_FRAME_TAB_NORMAL_MOUSEOVER_ALPHA = 1 - CHAT_FRAME_TAB_NORMAL_NOMOUSE_ALPHA = 0 - CHAT_TAB_HIDE_DELAY = 1 - - local NameTab = function(f, name, nosave) - local tab = _G[f:GetName()..'Tab'] - local n = tonumber(f:GetName():match'%d+') - if name and n > 10 then - local t = name:gsub('%-[^|]+', '') - tab:SetText(t) - tab.name = t - if not nosave then - SetChatWindowName(f:GetID(), text) - end - end - end - - local Tab = function(self, overflow) - local chat = _G[self] - local tab = _G[self..'Tab'] - local t = _G[self..'TabText'] - - for i = 1, select('#', tab:GetRegions()) do - local v = select(i, tab:GetRegions()) - if v and v:GetObjectType() == 'Texture' and not v:GetName():find'Glow' then - v:SetTexture(nil) - end - end - - local a = {t:GetPoint()} - t:SetPoint(a[1], a[2], a[3], overflow and a[4] - 10 or a[4], overflow and -1 or 2) - t:SetJustifyH'CENTER' - t:SetFont(STANDARD_TEXT_FONT, overflow and 10 or 12) - t:SetShadowOffset(1, -1) - t:SetShadowColor(0, 0, 0, 1) - t:SetDrawLayer('OVERLAY', 7) - - chat.tabbed = true - end - - local UpdateTab = function(bu, chat) - for i, v in ipairs(GENERAL_CHAT_DOCK.DOCKED_CHAT_FRAMES) do - if not v.tabbed then - local n = tonumber(v:GetName():match'%d+') - Tab(v:GetName(), n > 10 and true) - end - end - end - - local OnEvent = function() - if MODUI_VAR['elements']['chat'].enable and MODUI_VAR['elements']['chat'].style then - hooksecurefunc('FCF_SetWindowName', NameTab) - hooksecurefunc('FCFDock_UpdateTabs', UpdateTab) - end - end - - local e = CreateFrame'Frame' - e:RegisterEvent'PLAYER_LOGIN' - e:SetScript('OnEvent', OnEvent) - - - -- diff --git a/chat/url.lua b/chat/url.lua index 4cdf4f5..7504b7e 100755 --- a/chat/url.lua +++ b/chat/url.lua @@ -1,85 +1,80 @@ +local URL +local events = { + 'CHAT_MSG_BN_CONVERSATION', + 'CHAT_MSG_BN_WHISPER', + 'CHAT_MSG_BN_WHISPER_INFORM', + 'CHAT_MSG_CHANNEL', + 'CHAT_MSG_GUILD', + 'CHAT_MSG_INSTANCE_CHAT', + 'CHAT_MSG_INSTANCE_CHAT_LEADER', + 'CHAT_MSG_OFFICER', + 'CHAT_MSG_PARTY', + 'CHAT_MSG_PARTY_LEADER', + 'CHAT_MSG_RAID', + 'CHAT_MSG_RAID_LEADER', + 'CHAT_MSG_RAID_WARNING', + 'CHAT_MSG_SAY', + 'CHAT_MSG_SYSTEM', + 'CHAT_MSG_WHISPER', + 'CHAT_MSG_WHISPER_INFORM', + 'CHAT_MSG_YELL' +} - local URL +local patterns = { + '(https://%S+%.%S+)', + '(http://%S+%.%S+)', + '(www%.%S+%.%S+)', + '(%S+%.%S+%.%S+)', + '(%d+%.%d+%.%d+%.%d+:?%d*/?%S*)', +} - local events = { - 'CHAT_MSG_BN_CONVERSATION', - 'CHAT_MSG_BN_WHISPER', - 'CHAT_MSG_BN_WHISPER_INFORM', - 'CHAT_MSG_CHANNEL', - 'CHAT_MSG_GUILD', - 'CHAT_MSG_INSTANCE_CHAT', - 'CHAT_MSG_INSTANCE_CHAT_LEADER', - 'CHAT_MSG_OFFICER', - 'CHAT_MSG_PARTY', - 'CHAT_MSG_PARTY_LEADER', - 'CHAT_MSG_RAID', - 'CHAT_MSG_RAID_LEADER', - 'CHAT_MSG_RAID_WARNING', - 'CHAT_MSG_SAY', - 'CHAT_MSG_SYSTEM', - 'CHAT_MSG_WHISPER', - 'CHAT_MSG_WHISPER_INFORM', - 'CHAT_MSG_YELL' - } +StaticPopupDialogs['URL_COPY_DIALOG'] = { + text = 'URL', + button2 = CLOSE, + timeout = 0, + hasEditBox = 1, maxLetters = 1024, editBoxWidth = 350, + whileDead = true, hideOnEscape = true, + OnShow = function(self) + (self.icon or _G[self:GetName()..'AlertIcon']):Hide() - local patterns = { - '(https://%S+%.%S+)', - '(http://%S+%.%S+)', - '(www%.%S+%.%S+)', - '(%S+%.%S+%.%S+)', - '(%d+%.%d+%.%d+%.%d+:?%d*/?%S*)', - } + local edit = self.editBox or _G[self:GetName()..'EditBox'] + edit:SetText(URL) + edit:SetFocus() + edit:HighlightText(0) - StaticPopupDialogs['URL_COPY_DIALOG'] = { - text = 'URL', - button2 = CLOSE, - timeout = 0, - hasEditBox = 1, maxLetters = 1024, editBoxWidth = 350, - whileDead = true, hideOnEscape = true, - OnShow = function(self) - (self.icon or _G[self:GetName()..'AlertIcon']):Hide() + local b2 = self.button2 or _G[self:GetName()..'Button2'] + b2:ClearAllPoints() + b2:SetPoint('TOP', edit, 'BOTTOM', 0, -6) + b2:SetWidth(150) - local edit = self.editBox or _G[self:GetName()..'EditBox'] - edit:SetText(URL) - edit:SetFocus() - edit:HighlightText(0) + URL = nil + end, +} - local b2 = self.button2 or _G[self:GetName()..'Button2'] - b2:ClearAllPoints() - b2:SetPoint('TOP', edit, 'BOTTOM', 0, -6) - b2:SetWidth(150) +local OnEvent = function() + if MODUI_VAR['elements']['chat'].enable and MODUI_VAR['elements']['chat'].url then + for _, e in next, events do + ChatFrame_AddMessageEventFilter(e, function(self, event, t, ...) + for i = 1, #patterns do + local text, match = string.gsub(t, patterns[i], '|cfffade94|Hurl:%1|h%1|h|r') + if match > 0 then return false, text, ... end + end + end) + end - URL = nil - end, - } + local hook = ItemRefTooltip.SetHyperlink + ItemRefTooltip.SetHyperlink = function(self, link, ...) + if tostring(link):sub(1, 4) == 'url:' then + URL = string.sub(link, 5) + StaticPopup_Show'URL_COPY_DIALOG' + return + end + hook(self, link, ...) + end + end +end - local OnEvent = function() - if MODUI_VAR['elements']['chat'].enable and MODUI_VAR['elements']['chat'].url then - for _, e in next, events do - ChatFrame_AddMessageEventFilter(e, function(self, event, t, ...) - for i = 1, #patterns do - local text, match = string.gsub(t, patterns[i], '|cfffade94|Hurl:%1|h%1|h|r') - if match > 0 then return false, text, ... end - end - end) - end - - local hook = ItemRefTooltip.SetHyperlink - ItemRefTooltip.SetHyperlink = function(self, link, ...) - if tostring(link):sub(1, 4) == 'url:' then - URL = string.sub(link, 5) - StaticPopup_Show'URL_COPY_DIALOG' - return - end - hook(self, link, ...) - end - end - end - - local e = CreateFrame'Frame' - e:RegisterEvent'PLAYER_LOGIN' - e:SetScript('OnEvent', OnEvent) - - - -- +local e = CreateFrame'Frame' +e:RegisterEvent'PLAYER_LOGIN' +e:SetScript('OnEvent', OnEvent) diff --git a/core/colour.lua b/core/colour.lua index ca76b37..f02783a 100755 --- a/core/colour.lua +++ b/core/colour.lua @@ -1,120 +1,118 @@ +local _, ns = ... +local _, class = UnitClass'player' +local colour = RAID_CLASS_COLORS[class] - local _, ns = ... +local INTERNAL_CLASS_COLORS = { + ['DRUID'] = {r = 255/255, g = 110/255, b = 063/255, colorStr = 'ffff6e3f'}, + ['HUNTER'] = {r = 140/255, g = 220/255, b = 105/255, colorStr = 'ff8cdc69'}, + ['MAGE'] = {r = 000/255, g = 194/255, b = 255/255, colorStr = 'ff00c2ff'}, + ['PALADIN'] = {r = 255/255, g = 095/255, b = 168/255, colorStr = 'ffff5fa8'}, + ['PRIEST'] = {r = 255/255, g = 255/255, b = 255/255, colorStr = 'ffffffff'}, + ['ROGUE'] = {r = 255/255, g = 232/255, b = 000/255, colorStr = 'ffffe800'}, + ['SHAMAN'] = {r = 050/255, g = 111/255, b = 255/255, colorStr = 'ff326fff'}, + ['WARLOCK'] = {r = 140/255, g = 118/255, b = 238/255, colorStr = 'ff8c76ee'}, + ['WARRIOR'] = {r = 214/255, g = 148/255, b = 110/255, colorStr = 'ffd6946e'} +} - local _, class = UnitClass'player' - local colour = RAID_CLASS_COLORS[class] +local CUSTOM_FACTION_BAR_COLORS = { + [1] = {r = 1, g = .2, b = .2}, -- hated + [2] = {r = 1, g = .2, b = .2}, -- hostile + [3] = {r = 1, g = .6, b = .2}, -- unfriendly + [4] = {r = 1, g = .8, b = .1}, -- neutral + [5] = {r = .4, g = 1, b = .2}, -- friend + [6] = {r = .4, g = 1, b = .3}, -- honoured + [7] = {r = .3, g = 1, b = .4}, -- revered + [8] = {r = .3, g = 1, b = .5}, -- exalted +} - local INTERNAL_CLASS_COLORS = { - ['DRUID'] = {r = 255/255, g = 110/255, b = 063/255, colorStr = 'ffff6e3f'}, - ['HUNTER'] = {r = 140/255, g = 220/255, b = 105/255, colorStr = 'ff8cdc69'}, - ['MAGE'] = {r = 000/255, g = 194/255, b = 255/255, colorStr = 'ff00c2ff'}, - ['PALADIN'] = {r = 255/255, g = 095/255, b = 168/255, colorStr = 'ffff5fa8'}, - ['PRIEST'] = {r = 255/255, g = 255/255, b = 255/255, colorStr = 'ffffffff'}, - ['ROGUE'] = {r = 255/255, g = 232/255, b = 000/255, colorStr = 'ffffe800'}, - ['SHAMAN'] = {r = 050/255, g = 111/255, b = 255/255, colorStr = 'ff326fff'}, - ['WARLOCK'] = {r = 140/255, g = 118/255, b = 238/255, colorStr = 'ff8c76ee'}, - ['WARRIOR'] = {r = 214/255, g = 148/255, b = 110/255, colorStr = 'ffd6946e'} - } +-- set shaman colour to blue +-- nb: probably going to taint +RAID_CLASS_COLORS['SHAMAN'] = INTERNAL_CLASS_COLORS['SHAMAN'] - local CUSTOM_FACTION_BAR_COLORS = { - [1] = {r = 1, g = .2, b = .2}, -- hated - [2] = {r = 1, g = .2, b = .2}, -- hostile - [3] = {r = 1, g = .6, b = .2}, -- unfriendly - [4] = {r = 1, g = .8, b = .1}, -- neutral - [5] = {r = .4, g = 1, b = .2}, -- friend - [6] = {r = .4, g = 1, b = .3}, -- honoured - [7] = {r = .3, g = 1, b = .4}, -- revered - [8] = {r = .3, g = 1, b = .5}, -- exalted - } +local AddPowerColour = function() + if MODUI_VAR['elements']['statusbar'] then + PowerBarColor['MANA'] = { + r = MODUI_VAR['elements']['statusbar']['mana'].r or 0, + g = MODUI_VAR['elements']['statusbar']['mana'].g or 0, + b = MODUI_VAR['elements']['statusbar']['mana'].b or 1, + } + PowerBarColor['RAGE'] = { + r = MODUI_VAR['elements']['statusbar']['rage'].r or 1, + g = MODUI_VAR['elements']['statusbar']['rage'].g or 0, + b = MODUI_VAR['elements']['statusbar']['rage'].b or 0, + fullPowerAnim = true + } + PowerBarColor['FOCUS'] = { + r = MODUI_VAR['elements']['statusbar']['focus'].r or 1, + g = MODUI_VAR['elements']['statusbar']['focus'].g or .5, + b = MODUI_VAR['elements']['statusbar']['focus'].b or .25, + fullPowerAnim = true + } + PowerBarColor['ENERGY'] = { + r = MODUI_VAR['elements']['statusbar']['energy'].r or 1, + g = MODUI_VAR['elements']['statusbar']['energy'].g or 1, + b = MODUI_VAR['elements']['statusbar']['energy'].b or 0, + fullPowerAnim = true + } + end +end - -- set shaman colour to blue - -- nb: probably going to taint - RAID_CLASS_COLORS['SHAMAN'] = INTERNAL_CLASS_COLORS['SHAMAN'] +ns.CLASS_COLOUR = function(f, a) + if f:GetObjectType() == 'StatusBar' then + f:SetStatusBarColor(colour.r, colour.g, colour.b) + elseif + f:GetObjectType() == 'FontString' then + f:SetTextColor(colour.r, colour.g, colour.b) + else + f:SetVertexColor(colour.r, colour.g, colour.b) + end +end - local AddPowerColour = function() - PowerBarColor['MANA'] = { - r = MODUI_VAR['elements']['statusbar']['mana'].r or 0, - g = MODUI_VAR['elements']['statusbar']['mana'].g or 0, - b = MODUI_VAR['elements']['statusbar']['mana'].b or 1, - } - PowerBarColor['RAGE'] = { - r = MODUI_VAR['elements']['statusbar']['rage'].r or 1, - g = MODUI_VAR['elements']['statusbar']['rage'].g or 0, - b = MODUI_VAR['elements']['statusbar']['rage'].b or 0, - fullPowerAnim = true - } - PowerBarColor['FOCUS'] = { - r = MODUI_VAR['elements']['statusbar']['focus'].r or 1, - g = MODUI_VAR['elements']['statusbar']['focus'].g or .5, - b = MODUI_VAR['elements']['statusbar']['focus'].b or .25, - fullPowerAnim = true - } - PowerBarColor['ENERGY'] = { - r = MODUI_VAR['elements']['statusbar']['energy'].r or 1, - g = MODUI_VAR['elements']['statusbar']['energy'].g or 1, - b = MODUI_VAR['elements']['statusbar']['energy'].b or 0, - fullPowerAnim = true - } - end +ns.TEXT_WHITE = function(t, ...) + t:SetTextColor(1, 1, 1) +end - ns.CLASS_COLOUR = function(f, a) - if f:GetObjectType() == 'StatusBar' then - f:SetStatusBarColor(colour.r, colour.g, colour.b) - elseif - f:GetObjectType() == 'FontString' then - f:SetTextColor(colour.r, colour.g, colour.b) - else - f:SetVertexColor(colour.r, colour.g, colour.b) - end +ns.GRADIENT_COLOUR = function(f, v, min, max) + if not v then + v = f:GetValue() end - - ns.TEXT_WHITE = function(t, ...) - t:SetTextColor(1, 1, 1) + if not min or not max then + min, max = f:GetMinMaxValues() end - - ns.GRADIENT_COLOUR = function(f, v, min, max) - if not v then - v = f:GetValue() - end - if not min or not max then - min, max = f:GetMinMaxValues() - end - if (not v) or v < min or v > max then return end - if (max - min) > 0 then - v = (v - min)/(max - min) - else - v = 0 - end - if v > .5 then - r = (1 - v)*2 - g = 1 - elseif v < .2 then - r = 1 - g = 0 - else - r = 1 - g = v*2 - end - b = 0 - if f:GetObjectType() == 'StatusBar' then - f:SetStatusBarColor(r, g, b) - elseif f:GetObjectType() == 'FontString' then - f:SetTextColor(r*1.5, g*1.5, b*1.5) - else - f:SetVertexColor(r, g, b) - end + if (not v) or v < min or v > max then return end + if (max - min) > 0 then + v = (v - min)/(max - min) + else + v = 0 end + if v > .5 then + r = (1 - v)*2 + g = 1 + elseif v < .2 then + r = 1 + g = 0 + else + r = 1 + g = v*2 + end + b = 0 + if f:GetObjectType() == 'StatusBar' then + f:SetStatusBarColor(r, g, b) + elseif f:GetObjectType() == 'FontString' then + f:SetTextColor(r*1.5, g*1.5, b*1.5) + else + f:SetVertexColor(r, g, b) + end +end - ns.INTERNAL_CLASS_COLORS = INTERNAL_CLASS_COLORS - ns.CUSTOM_FACTION_BAR_COLORS = CUSTOM_FACTION_BAR_COLORS - - local OnEvent = function(self, event, ...) - AddPowerColour() - end +ns.INTERNAL_CLASS_COLORS = INTERNAL_CLASS_COLORS +ns.CUSTOM_FACTION_BAR_COLORS = CUSTOM_FACTION_BAR_COLORS - local e = CreateFrame'Frame' - e:RegisterEvent'ADDON_LOADED' - e:SetScript('OnEvent', OnEvent) +local OnEvent = function(self, event, ...) + AddPowerColour() +end - -- +local e = CreateFrame'Frame' +e:RegisterEvent'ADDON_LOADED' +e:SetScript('OnEvent', OnEvent) diff --git a/core/debug.lua b/core/debug.lua index 58bd0c2..08b8470 100755 --- a/core/debug.lua +++ b/core/debug.lua @@ -1,16 +1,11 @@ +local _, ns = ... +local EnableErrors = function() + if GetCVar'ScriptErrors' == '0' then + SetCVar('ScriptErrors', 1) + end +end - local _, ns = ... - - local EnableErrors = function() - if GetCVar'ScriptErrors' == '0' then - SetCVar('ScriptErrors', 1) - end - end - - local e = CreateFrame'Frame' - e:RegisterEvent'PLAYER_LOGIN' - e:SetScript('OnEvent', EnableErrors) - - - -- +local e = CreateFrame'Frame' +e:RegisterEvent'PLAYER_LOGIN' +e:SetScript('OnEvent', EnableErrors) diff --git a/core/functions.lua b/core/functions.lua index c89e762..1977cc6 100755 --- a/core/functions.lua +++ b/core/functions.lua @@ -1,15 +1,10 @@ - - - local _, ns = ... - - ns.IsClassic = function() - local build = tonumber(string.sub(GetBuildInfo() , 1, 2)) - if build < 2 then - return true -- it's wow: classic, baby - else - return false - end - end - - - -- +local _, ns = ... + +ns.IsClassic = function() + local build = tonumber(string.sub(GetBuildInfo() , 1, 2)) + if build < 2 then + return true -- it's wow: classic, baby + else + return false + end +end diff --git a/core/locale.lua b/core/locale.lua index cd1b2a5..1529741 100755 --- a/core/locale.lua +++ b/core/locale.lua @@ -1,249 +1,247 @@ - - - local _, ns = ... - - local L = {} - local locale = GetLocale() - - -- MENU - L['UI Colour'] = '' - L['Toggle Elements'] = '' - - -- AURA - L['h'] = 'h' -- "h" hours on aura timers - L['m'] = 'm' -- "m" minutes on aura timers - L['s'] = 's' -- "s" seconds on aura timers - - -- BAG - L['Bag'] = '' - L['Bank'] = '' - L['Sell Poor Quality Items & Rubbish'] = '' - - -- MAP - L['Mouse'] = '' - - -- MENU - L['Your new settings require a UI reload to take effect.'] = 'Your new settings require a UI reload to take effect.' - L['Toggle All modui Elements. |cffff0000Note: Overrides Selections.|r'] = 'Toggle All modui Elements. |cffff0000Note: Overrides Selections.|r' - L['Actionbar'] = '' - L['Exp & Reputation Bar'] = '' - L['Horizontal Third Row (Classic Layout only)'] = '' - L['Aura'] = '' - L['Statusbars on Auras'] = '' - L['Custom Value Formatting on Auras'] = '' - L['Chat'] = '' - L['Events & Custom Chat Text'] = '' - L['Chat Style'] = '' - L['URLs'] = '' - L['Inventory'] = '' - L['Button For Selling Grey Items at Vendor'] = '' - L['Enemy Castbars'] = '' - L['Nameplates'] = '' - L['Show Auras on Nameplates'] = '' - L['Show Combo Points on Nameplate'] = '' - L['Class Colours on Friendly Nameplates'] = '' - L['Icon-based Nameplates for Totems'] = '' - L['Quest Tracker (Click-through to Quest Log)'] = '' - L['Tooltip'] = '' - L['Mouse Anchor'] = '' - L['Unitframes'] = '' - L['Player'] = '' - L['Target'] = '' - L['Party'] = '' - L['Target of Target'] = '' - L['Pet'] = '' - L['Value Colours on Text'] = '' - L['Elite/Rare Dragons in Colour (for dark theme UIs)'] = '' - - -- TOOLTIP - L[' Boss'] = '' - L[' Rare Elite'] = '' - L[' Rare'] = '' - L[' Elite'] = '' - - -- TRANSFORM - L['Increases speed by (.+)%%'] = '' -- tooltip string on mount items - L['Fishing Pole'] = '' - L['Your Fishing Pole has been equipped'] = '' - L['while silenced'] = '' -- UI_ERROR_MESSAGE return, used to check if we're in combat (and dismount) - L['shapeshift'] = '' -- UI_ERROR_MESSAGE return, used to check if we're shapeshifted (and shift out) - - -- CHAT CHANNELS - L['|Hchannel:Guild|hG|h. %s:\32'] = '' -- "G. Obble:" guild chat - L['|Hchannel:o|hO|h. %s:\32'] = '' -- "O. Obble:" officer chat - L['|Hchannel:raid|hR|h. %s:\32'] = '' -- "R. Obble:" raid chat - L['RW. %s:\32'] = '' -- "RW. Obble:" raid warning - L['|Hchannel:raid|hRL|h. %s:\32'] = '' -- "RL. Obble:" raid leader - L['|Hchannel:INSTANCE_CHAT|hIns|h. %s:\32'] = '' -- "Ins. Obble:" instance chat - L['|Hchannel:INSTANCE_CHAT|hIL|h. %s:\32'] = '' -- "IL. Obble:" instance leader - L['|Hchannel:Battleground|hBG|h. %s:\32'] = '' -- "BG. Obble:" battleground chat - L['|Hchannel:Battleground|hBL|h. %s:\32'] = '' -- "BL. Obble:" battleground leader - L['|Hchannel:party|hP|h. %s:\32'] = '' -- "P. Obble:" party chat - L['|Hchannel:party|hDG|h. %s:\32'] = '' -- "DG. Obble:" party guide - L['|Hchannel:raid|hR|h. %s:\32'] = '' -- "R. Obble:" CHAT_MONSTER_PARTY_GET - - -- CHAT EVENTS - L['Joined Channel: (.+)'] = '' - L['Reputation with (.+) increased by (.+).'] = '' - L['You are now (.+) with (.+).'] = '' - L['(.+) dies, you gain (.+) experience. %(%+(.+)exp Rested bonus%)'] = '' - L['(.+) dies, you gain (.+) experience.'] = '' - L['You gain (.+) experience.'] = '' - L['You receive currency: (.+)%.'] = '' - L['You\'ve lost (.+)%.'] = '' - L['(.+) has earned the achievement (.+)!'] = '' - L['(.+) has earned the achievement (.+)!'] = '' - L['You receive item: (.+)%.'] = '' - L['You receive loot: (.+)%.'] = '' - L['You receive bonus loot: (.+)%.'] = '' - L['You create: (.+)%.'] = '' - L['You are refunded: (.+)%.'] = '' - L['You have selected (.+) for: (.+)'] = '' - L['Received item: (.+)%.'] = '' - L['(.+) receives item: (.+)%.'] = '' - L['(.+) receives loot: (.+)%.'] = '' - L['(.+) receives bonus loot: (.+)%.'] = '' - L['(.+) creates: (.+)%.'] = '' - L['(.+) was disenchanted for loot by (.+).'] = '' - L['Your skill in (.+) has increased to (.+).'] = '' - L['Received (.+), (.+).'] = '' - L['Received (.+).'] = '' - L['Received (.+) of item: (.+).'] = '' - L['(.+) is now your follower.'] = '' - L['(.+) completed.'] = '' - L['Quest accepted: (.+)'] = '' - L['Received item: (.+)%.'] = '' - L['Experience gained: (.+).'] = '' - L['(.+) has come online.'] = '' - L['(.+) has gone offline.'] = '' - L['You are now Busy: in combat'] = '' - L['You are no longer marked Busy.'] = '' - L['Discovered (.+): (.+) experience gained'] = '' - L['You are now (.+) with (.+).'] = '' - L['Quest Accepted (.+)'] = '' - L['You are now Away: AFK'] = '' - L['You are no longer Away.'] = '' - L['You are no longer rested.'] = '' - L['You don\'t meet the requirements for that quest.'] = '' - L['(.+) has joined the raid group.'] = '' - L['(.+) has left the raid group.'] = '' - L['You have earned the title \'(.+)\'.'] = '' - L['(.+) creates (.+).'] = '' - - L['Guild Message of the Day:'] = '' -- guild message of the day - L['To (|HBNplayer.+|h):'] = '' -- whisper to bnet - L['To (|Hplayer.+|h):'] = '' -- whisper to - L[' whispers:'] = '' -- whisper from - L['Joined Channel:'] = '' -- channel join - L['Left Channel:'] = 'Left ' -- channel left - - if locale == "zhTW" then - - -- MENU - L['UI Colour'] = '介面顏色' - L['Toggle Elements'] = '切換選項' - - -- BAG - L['Bag'] = '背包' -- or use BAGSLOT - L['Bank'] = '銀行' -- or use BANK - L['Sell Poor Quality Items & Rubbish'] = '賣垃圾' - - -- MAP - L['Mouse'] = '滑鼠' - - -- MENU - L['Your new settings require a UI reload to take effect.'] = '你的新設定需要重載介面才會生效。' - L['Toggle All modui Elements. |cffff0000Note: Overrides Selections.|r'] = '全局切換開關。|cffff0000注意:會覆蓋掉你現有的設定。|r' - L['Actionbar'] = '快捷列' - L['Exp & Reputation Bar'] = '經驗聲望條' - L['Horizontal Third Row (Classic Layout only)'] = '橫式的第三排快捷列,僅在經典布局生效' - L['Cast Spells on Button Down'] = '按下按鍵時施法' - L['Aura'] = '光環' - L['Statusbars on Auras'] = '在光環上顯示計時條' - L['Custom Value Formatting on Auras'] = '修改光環計時文本格式' - L['Chat'] = '聊天' - L['Events & Custom Chat Text'] = '修改聊天文本格式' - L['Chat Style'] = '修改聊天框架外觀' - L['URLs'] = '網址' - L['Inventory'] = '行囊' - L['Button For Selling Grey Items at Vendor'] = '在商人介面顯示賣垃圾的按鈕' - L['Enemy Castbars'] = '敵方施法條' - L['Nameplates'] = '名條' - L['Show Auras on Nameplates'] = '在名條上顯示光環' - L['Show Combo Points on Nameplate'] = '在名條上顯示連擊點' - L['Class Colours on Friendly Nameplates'] = '替友方名條職業著色' - L['Icon-based Nameplates for Totems'] = '圖騰圖示' - L['Quest Tracker (Click-through to Quest Log)'] = '點擊任務追蹤開啟任務日誌' - L['Tooltip'] = '滑鼠提示' - L['Mouse Anchor'] = '錨點於滑鼠位置' - L['Unitframes'] = '單位框架' - L['Player'] = '玩家' - L['Target'] = '目標' - L['Party'] = '隊伍' - L['Target of Target'] = '目標的目標' - L['Pet'] = '寵物' - L['Value Colours on Text'] = '數值著色' - L['Elite/Rare Dragons in Colour (for dark theme UIs)'] = '使用黑色主題時著色稀有和精英的金銀龍' - - -- TOOLTIP - L[' Boss'] = ' 首領' -- or use BOSS - L[' Rare Elite'] = ' 稀有精英' - L[' Rare'] = ' 稀有' -- or use ELITE - L[' Elite'] = ' 精英' - - elseif locale == "zhCN" then - -- MENU - L['UI Colour'] = '界面颜色' - L['Toggle Elements'] = '配置选项' - - -- BAG - L['Bag'] = '背包' -- or use BAGSLOT - L['Bank'] = '银行' -- or use BANK - L['Sell Poor Quality Items & Rubbish'] = '卖垃圾' - - -- MAP - L['Mouse'] = '鼠标' - - -- MENU - L['Your new settings require a UI reload to take effect.'] = '你的新设置需要重载界面才会生效。' - L['Toggle All modui Elements. |cffff0000Note: Overrides Selections.|r'] = '全局切换开关。|cffff0000注意:会复盖掉你现有的设置。|r' - L['Actionbar'] = '动作条' - L['Exp & Reputation Bar'] = '经验声望条' - L['Horizontal Third Row (Classic Layout only)'] = '横式的第三排动作条,仅在经典布局生效' - L['Cast Spells on Button Down'] = '按下按键时施法' - L['Aura'] = '光环' - L['Statusbars on Auras'] = '在光环上显示计时条' - L['Custom Value Formatting on Auras'] = '修改光环计时文本格式' - L['Chat'] = '聊天' - L['Events & Custom Chat Text'] = '修改聊天文本格式' - L['Chat Style'] = '修改聊天框架外观' - L['URLs'] = '网址' - L['Inventory'] = '行囊' - L['Button For Selling Grey Items at Vendor'] = '在商人接口显示卖垃圾的按钮' - L['Enemy Castbars'] = '敌对施法条' - L['Nameplates'] = '姓名板' - L['Show Auras on Nameplates'] = '在姓名板上显示光环' - L['Show Combo Points on Nameplate'] = '在姓名板上显示连击点' - L['Class Colours on Friendly Nameplates'] = '友方姓名板职业染色' - L['Icon-based Nameplates for Totems'] = '图腾图示' - L['Quest Tracker (Click-through to Quest Log)'] = '点击任务追踪开启任务日志' - L['Tooltip'] = '鼠标提示' - L['Mouse Anchor'] = '锚点于鼠标' - L['Unitframes'] = '单位框体' - L['Player'] = '玩家' - L['Target'] = '目标' - L['Party'] = '队伍' - L['Target of Target'] = '目标的目标' - L['Pet'] = '宠物' - L['Value Colours on Text'] = '数值染色' - L['Elite/Rare Dragons in Colour (for dark theme UIs)'] = '使用黑色主题时着色稀有和精英的金银龙' - - -- TOOLTIP - L[' Boss'] = ' 首领' -- or use BOSS - L[' Rare Elite'] = ' 稀有精英' - L[' Rare'] = ' 稀有' -- or use ELITE - L[' Elite'] = ' 精英' - - else - return - end \ No newline at end of file +local _, ns = ... + +local L = {} +local locale = GetLocale() + +-- MENU +L['UI Colour'] = '' +L['Toggle Elements'] = '' + +-- AURA +L['h'] = 'h' -- "h" hours on aura timers +L['m'] = 'm' -- "m" minutes on aura timers +L['s'] = 's' -- "s" seconds on aura timers + +-- BAG +L['Bag'] = '' +L['Bank'] = '' +L['Sell Poor Quality Items & Rubbish'] = '' + +-- MAP +L['Mouse'] = '' + +-- MENU +L['Your new settings require a UI reload to take effect.'] = 'Your new settings require a UI reload to take effect.' +L['Toggle All modui Elements. |cffff0000Note: Overrides Selections.|r'] = 'Toggle All modui Elements. |cffff0000Note: Overrides Selections.|r' +L['Actionbar'] = '' +L['Exp & Reputation Bar'] = '' +L['Horizontal Third Row (Classic Layout only)'] = '' +L['Aura'] = '' +L['Statusbars on Auras'] = '' +L['Custom Value Formatting on Auras'] = '' +L['Chat'] = '' +L['Events & Custom Chat Text'] = '' +L['Chat Style'] = '' +L['URLs'] = '' +L['Inventory'] = '' +L['Button For Selling Grey Items at Vendor'] = '' +L['Enemy Castbars'] = '' +L['Nameplates'] = '' +L['Show Auras on Nameplates'] = '' +L['Show Combo Points on Nameplate'] = '' +L['Class Colours on Friendly Nameplates'] = '' +L['Icon-based Nameplates for Totems'] = '' +L['Quest Tracker (Click-through to Quest Log)'] = '' +L['Tooltip'] = '' +L['Mouse Anchor'] = '' +L['Unitframes'] = '' +L['Player'] = '' +L['Target'] = '' +L['Party'] = '' +L['Target of Target'] = '' +L['Pet'] = '' +L['Value Colours on Text'] = '' +L['Elite/Rare Dragons in Colour (for dark theme UIs)'] = '' + +-- TOOLTIP +L[' Boss'] = '' +L[' Rare Elite'] = '' +L[' Rare'] = '' +L[' Elite'] = '' + +-- TRANSFORM +L['Increases speed by (.+)%%'] = '' -- tooltip string on mount items +L['Fishing Pole'] = '' +L['Your Fishing Pole has been equipped'] = '' +L['while silenced'] = '' -- UI_ERROR_MESSAGE return, used to check if we're in combat (and dismount) +L['shapeshift'] = '' -- UI_ERROR_MESSAGE return, used to check if we're shapeshifted (and shift out) + +-- CHAT CHANNELS +L['|Hchannel:Guild|hG|h. %s:\32'] = '' -- "G. Obble:" guild chat +L['|Hchannel:o|hO|h. %s:\32'] = '' -- "O. Obble:" officer chat +L['|Hchannel:raid|hR|h. %s:\32'] = '' -- "R. Obble:" raid chat +L['RW. %s:\32'] = '' -- "RW. Obble:" raid warning +L['|Hchannel:raid|hRL|h. %s:\32'] = '' -- "RL. Obble:" raid leader +L['|Hchannel:INSTANCE_CHAT|hIns|h. %s:\32'] = '' -- "Ins. Obble:" instance chat +L['|Hchannel:INSTANCE_CHAT|hIL|h. %s:\32'] = '' -- "IL. Obble:" instance leader +L['|Hchannel:Battleground|hBG|h. %s:\32'] = '' -- "BG. Obble:" battleground chat +L['|Hchannel:Battleground|hBL|h. %s:\32'] = '' -- "BL. Obble:" battleground leader +L['|Hchannel:party|hP|h. %s:\32'] = '' -- "P. Obble:" party chat +L['|Hchannel:party|hDG|h. %s:\32'] = '' -- "DG. Obble:" party guide +L['|Hchannel:raid|hR|h. %s:\32'] = '' -- "R. Obble:" CHAT_MONSTER_PARTY_GET + +-- CHAT EVENTS +L['Joined Channel: (.+)'] = '' +L['Reputation with (.+) increased by (.+).'] = '' +L['You are now (.+) with (.+).'] = '' +L['(.+) dies, you gain (.+) experience. %(%+(.+)exp Rested bonus%)'] = '' +L['(.+) dies, you gain (.+) experience.'] = '' +L['You gain (.+) experience.'] = '' +L['You receive currency: (.+)%.'] = '' +L['You\'ve lost (.+)%.'] = '' +L['(.+) has earned the achievement (.+)!'] = '' +L['(.+) has earned the achievement (.+)!'] = '' +L['You receive item: (.+)%.'] = '' +L['You receive loot: (.+)%.'] = '' +L['You receive bonus loot: (.+)%.'] = '' +L['You create: (.+)%.'] = '' +L['You are refunded: (.+)%.'] = '' +L['You have selected (.+) for: (.+)'] = '' +L['Received item: (.+)%.'] = '' +L['(.+) receives item: (.+)%.'] = '' +L['(.+) receives loot: (.+)%.'] = '' +L['(.+) receives bonus loot: (.+)%.'] = '' +L['(.+) creates: (.+)%.'] = '' +L['(.+) was disenchanted for loot by (.+).'] = '' +L['Your skill in (.+) has increased to (.+).'] = '' +L['Received (.+), (.+).'] = '' +L['Received (.+).'] = '' +L['Received (.+) of item: (.+).'] = '' +L['(.+) is now your follower.'] = '' +L['(.+) completed.'] = '' +L['Quest accepted: (.+)'] = '' +L['Received item: (.+)%.'] = '' +L['Experience gained: (.+).'] = '' +L['(.+) has come online.'] = '' +L['(.+) has gone offline.'] = '' +L['You are now Busy: in combat'] = '' +L['You are no longer marked Busy.'] = '' +L['Discovered (.+): (.+) experience gained'] = '' +L['You are now (.+) with (.+).'] = '' +L['Quest Accepted (.+)'] = '' +L['You are now Away: AFK'] = '' +L['You are no longer Away.'] = '' +L['You are no longer rested.'] = '' +L['You don\'t meet the requirements for that quest.'] = '' +L['(.+) has joined the raid group.'] = '' +L['(.+) has left the raid group.'] = '' +L['You have earned the title \'(.+)\'.'] = '' +L['(.+) creates (.+).'] = '' + +L['Guild Message of the Day:'] = '' -- guild message of the day +L['To (|HBNplayer.+|h):'] = '' -- whisper to bnet +L['To (|Hplayer.+|h):'] = '' -- whisper to +L[' whispers:'] = '' -- whisper from +L['Joined Channel:'] = '' -- channel join +L['Left Channel:'] = 'Left ' -- channel left + +if locale == "zhTW" then + + -- MENU + L['UI Colour'] = '介面顏色' + L['Toggle Elements'] = '切換選項' + + -- BAG + L['Bag'] = '背包' -- or use BAGSLOT + L['Bank'] = '銀行' -- or use BANK + L['Sell Poor Quality Items & Rubbish'] = '賣垃圾' + + -- MAP + L['Mouse'] = '滑鼠' + + -- MENU + L['Your new settings require a UI reload to take effect.'] = '你的新設定需要重載介面才會生效。' + L['Toggle All modui Elements. |cffff0000Note: Overrides Selections.|r'] = '全局切換開關。|cffff0000注意:會覆蓋掉你現有的設定。|r' + L['Actionbar'] = '快捷列' + L['Exp & Reputation Bar'] = '經驗聲望條' + L['Horizontal Third Row (Classic Layout only)'] = '橫式的第三排快捷列,僅在經典布局生效' + L['Cast Spells on Button Down'] = '按下按鍵時施法' + L['Aura'] = '光環' + L['Statusbars on Auras'] = '在光環上顯示計時條' + L['Custom Value Formatting on Auras'] = '修改光環計時文本格式' + L['Chat'] = '聊天' + L['Events & Custom Chat Text'] = '修改聊天文本格式' + L['Chat Style'] = '修改聊天框架外觀' + L['URLs'] = '網址' + L['Inventory'] = '行囊' + L['Button For Selling Grey Items at Vendor'] = '在商人介面顯示賣垃圾的按鈕' + L['Enemy Castbars'] = '敵方施法條' + L['Nameplates'] = '名條' + L['Show Auras on Nameplates'] = '在名條上顯示光環' + L['Show Combo Points on Nameplate'] = '在名條上顯示連擊點' + L['Class Colours on Friendly Nameplates'] = '替友方名條職業著色' + L['Icon-based Nameplates for Totems'] = '圖騰圖示' + L['Quest Tracker (Click-through to Quest Log)'] = '點擊任務追蹤開啟任務日誌' + L['Tooltip'] = '滑鼠提示' + L['Mouse Anchor'] = '錨點於滑鼠位置' + L['Unitframes'] = '單位框架' + L['Player'] = '玩家' + L['Target'] = '目標' + L['Party'] = '隊伍' + L['Target of Target'] = '目標的目標' + L['Pet'] = '寵物' + L['Value Colours on Text'] = '數值著色' + L['Elite/Rare Dragons in Colour (for dark theme UIs)'] = '使用黑色主題時著色稀有和精英的金銀龍' + + -- TOOLTIP + L[' Boss'] = ' 首領' -- or use BOSS + L[' Rare Elite'] = ' 稀有精英' + L[' Rare'] = ' 稀有' -- or use ELITE + L[' Elite'] = ' 精英' + +elseif locale == "zhCN" then + -- MENU + L['UI Colour'] = '界面颜色' + L['Toggle Elements'] = '配置选项' + + -- BAG + L['Bag'] = '背包' -- or use BAGSLOT + L['Bank'] = '银行' -- or use BANK + L['Sell Poor Quality Items & Rubbish'] = '卖垃圾' + + -- MAP + L['Mouse'] = '鼠标' + + -- MENU + L['Your new settings require a UI reload to take effect.'] = '你的新设置需要重载界面才会生效。' + L['Toggle All modui Elements. |cffff0000Note: Overrides Selections.|r'] = '全局切换开关。|cffff0000注意:会复盖掉你现有的设置。|r' + L['Actionbar'] = '动作条' + L['Exp & Reputation Bar'] = '经验声望条' + L['Horizontal Third Row (Classic Layout only)'] = '横式的第三排动作条,仅在经典布局生效' + L['Cast Spells on Button Down'] = '按下按键时施法' + L['Aura'] = '光环' + L['Statusbars on Auras'] = '在光环上显示计时条' + L['Custom Value Formatting on Auras'] = '修改光环计时文本格式' + L['Chat'] = '聊天' + L['Events & Custom Chat Text'] = '修改聊天文本格式' + L['Chat Style'] = '修改聊天框架外观' + L['URLs'] = '网址' + L['Inventory'] = '行囊' + L['Button For Selling Grey Items at Vendor'] = '在商人接口显示卖垃圾的按钮' + L['Enemy Castbars'] = '敌对施法条' + L['Nameplates'] = '姓名板' + L['Show Auras on Nameplates'] = '在姓名板上显示光环' + L['Show Combo Points on Nameplate'] = '在姓名板上显示连击点' + L['Class Colours on Friendly Nameplates'] = '友方姓名板职业染色' + L['Icon-based Nameplates for Totems'] = '图腾图示' + L['Quest Tracker (Click-through to Quest Log)'] = '点击任务追踪开启任务日志' + L['Tooltip'] = '鼠标提示' + L['Mouse Anchor'] = '锚点于鼠标' + L['Unitframes'] = '单位框体' + L['Player'] = '玩家' + L['Target'] = '目标' + L['Party'] = '队伍' + L['Target of Target'] = '目标的目标' + L['Pet'] = '宠物' + L['Value Colours on Text'] = '数值染色' + L['Elite/Rare Dragons in Colour (for dark theme UIs)'] = '使用黑色主题时着色稀有和精英的金银龙' + + -- TOOLTIP + L[' Boss'] = ' 首领' -- or use BOSS + L[' Rare Elite'] = ' 稀有精英' + L[' Rare'] = ' 稀有' -- or use ELITE + L[' Elite'] = ' 精英' + +else + return +end diff --git a/core/skins.lua b/core/skins.lua index a83deb3..eb0b8ab 100755 --- a/core/skins.lua +++ b/core/skins.lua @@ -1,252 +1,250 @@ +-- api for reskinning frames & buttons +-- + +local _, ns = ... + +local FONT_REGULAR = ns.FONT_REGULAR + +local TEXTURE = [[Interface\AddOns\modui_classic\art\statusbar\statusbar.tga]] +local BACKDROP = { + bgFile = [[Interface\ChatFrame\ChatFrameBackground]], + tiled = false, + insets = {left = -3, right = -3, top = -3, bottom = -3} +} +local SLOT = { + bgFile = '', + edgeFile = [[Interface\Buttons\WHITE8x8]], + edgeSize = 3, +} +local BORDER = { + bgFile = '', + edgeFile = [[Interface\Buttons\WHITE8x8]], + edgeSize = 1, +} + +local t = CreateFont'iipHotKeyFont' +t:SetFont(STANDARD_TEXT_FONT, 10, 'OUTLINE') + +local AddHighlight = function(bu) + bu.enter = bu:CreateTexture(nil, 'OVERLAY') + bu.enter:SetAllPoints() + bu.enter:SetTexture[[Interface\Buttons\CheckButtonHilight]] + bu.enter:SetTexCoord(.075, .95, .05, .95) + bu.enter:SetBlendMode'ADD' + bu.enter:SetAlpha(0) +end + +local ToggleHighlight = function(bu, show) + if not bu.enter then AddHighlight(bu) end + bu.enter:SetAlpha(show and 1 or 0) +end + +ns.BD = function(bu, a, ix) -- build in an anti-fuckup + if not bu then return end + local f = bu + if not f.SetBackdrop then + Mixin(f, BackdropTemplateMixin) + end + if f:GetObjectType() == 'Texture' then + if not bu.BD then + local parent = bu:GetParent() + bu.BD = CreateFrame('Frame', nil, parent, "BackdropTemplate") + bu.BD:SetAllPoints(bu) + bu.BD:SetFrameLevel(parent:GetFrameLevel() - 1) + end + f = bu.BD + end - - - -- api for reskinning frames & buttons - -- - - local _, ns = ... - - local FONT_REGULAR = ns.FONT_REGULAR - - local TEXTURE = [[Interface\AddOns\modui_classic\art\statusbar\statusbar.tga]] - local BACKDROP = { + f:SetBackdrop( + { bgFile = [[Interface\ChatFrame\ChatFrameBackground]], tiled = false, - insets = {left = -3, right = -3, top = -3, bottom = -3} - } - local SLOT = { - bgFile = '', - edgeFile = [[Interface\Buttons\WHITE8x8]], - edgeSize = 3, - } - local BORDER = { - bgFile = '', - edgeFile = [[Interface\Buttons\WHITE8x8]], - edgeSize = 1, + insets = { + left = ix or -3, + right = ix or -3, + top = ix or -3, + bottom = ix or -3 + } } + ) + f:SetBackdropColor(0, 0, 0, a or 1) +end + +ns.BU = function(bu, a, hover, x, y, ix) + if not bu then return end + ns.BD(bu, a, ix) + bu:SetNormalTexture'' + --bu:SetHighlightTexture'' + -- bu:SetPushedTexture'' + if not InCombatLockdown() then bu:SetSize(x or 21, x or y or 21) end + bu:HookScript('OnEnter', function() if hover then ToggleHighlight(bu, true) end end) + bu:HookScript('OnLeave', function() if hover then ToggleHighlight(bu, false) end end) +end + +ns.ItemElements = function(bu) + local n = bu:GetName() + local c = _G[n..'Count'] + local cd = _G[n..'Cooldown'] + local i = _G[n..'IconTexture'] + local q = _G[n..'IconQuestTexture'] + + for _, v in pairs({bu.Border, bu.IconBorder}) do + if v then v:SetAlpha(0) end + end - local t = CreateFont'iipHotKeyFont' - t:SetFont(STANDARD_TEXT_FONT, 10, 'OUTLINE') - - local AddHighlight = function(bu) - bu.enter = bu:CreateTexture(nil, 'OVERLAY') - bu.enter:SetAllPoints() - bu.enter:SetTexture[[Interface\Buttons\CheckButtonHilight]] - bu.enter:SetTexCoord(.075, .95, .05, .95) - bu.enter:SetBlendMode'ADD' - bu.enter:SetAlpha(0) - end - - local ToggleHighlight = function(bu, show) - if not bu.enter then AddHighlight(bu) end - bu.enter:SetAlpha(show and 1 or 0) - end - - ns.BD = function(bu, a, ix) -- build in an anti-fuckup - if not bu then return end - local f = bu - if f:GetObjectType() == 'Texture' then - if not bu.BD then - local parent = bu:GetParent() - bu.BD = CreateFrame('Frame', nil, parent) - bu.BD:SetAllPoints(bu) - bu.BD:SetFrameLevel(parent:GetFrameLevel() - 1) - end - f = bu.BD - end - f:SetBackdrop( - { - bgFile = [[Interface\ChatFrame\ChatFrameBackground]], - tiled = false, - insets = { - left = ix or -3, - right = ix or -3, - top = ix or -3, - bottom = ix or -3 - } - } - ) - f:SetBackdropColor(0, 0, 0, a or 1) - end - - ns.BU = function(bu, a, hover, x, y, ix) - if not bu then return end - ns.BD(bu, a, ix) - bu:SetNormalTexture'' - --bu:SetHighlightTexture'' - -- bu:SetPushedTexture'' - if not InCombatLockdown() then bu:SetSize(x or 21, x or y or 21) end - bu:HookScript('OnEnter', function() if hover then ToggleHighlight(bu, true) end end) - bu:HookScript('OnLeave', function() if hover then ToggleHighlight(bu, false) end end) - end - - ns.ItemElements = function(bu) - local n = bu:GetName() - local c = _G[n..'Count'] - local cd = _G[n..'Cooldown'] - local i = _G[n..'IconTexture'] - local q = _G[n..'IconQuestTexture'] - - for _, v in pairs({bu.Border, bu.IconBorder}) do - if v then v:SetAlpha(0) end - end - - if c then - c:ClearAllPoints() - c:SetPoint('BOTTOM', bu) - c:SetFont(FONT_REGULAR, 14, 'OUTLINE') - c:SetShadowOffset(0, 0) - c:SetJustifyH'CENTER' - c:SetDrawLayer('OVERLAY', 7) - end - - if i then - i:SetTexCoord(.1, .9, .1, .9) - i:SetDrawLayer'ARTWORK' - end - - if cd then - cd:ClearAllPoints() - cd:SetAllPoints() - end + if c then + c:ClearAllPoints() + c:SetPoint('BOTTOM', bu) + c:SetFont(FONT_REGULAR, 14, 'OUTLINE') + c:SetShadowOffset(0, 0) + c:SetJustifyH'CENTER' + c:SetDrawLayer('OVERLAY', 7) + end - if bu.JunkIcon then - bu.JunkIcon:ClearAllPoints() - bu.JunkIcon:SetPoint'CENTER' - end + if i then + i:SetTexCoord(.1, .9, .1, .9) + i:SetDrawLayer'ARTWORK' + end - if bu.NewItemTexture then - bu.NewItemTexture:SetTexture'' - bu.NewItemTexture:SetSize(28, 28) - end + if cd then + cd:ClearAllPoints() + cd:SetAllPoints() + end - if q then - q:SetDrawLayer'BACKGROUND' - q:SetSize(1, 1) - bu.forQuest = true - end + if bu.JunkIcon then + bu.JunkIcon:ClearAllPoints() + bu.JunkIcon:SetPoint'CENTER' end - ns.BUElements = function(bu) - if not bu then return end - local c = bu.Count or _G[bu:GetName()..'Count'] - local cd = bu.Cooldown or _G[bu:GetName()..'Cooldown'] - local i = bu.icon or bu.Icon or bu.IconTexture or _G[bu:GetName()..'Icon'] or _G[bu:GetName()..'IconTexture'] + if bu.NewItemTexture then + bu.NewItemTexture:SetTexture'' + bu.NewItemTexture:SetSize(28, 28) + end - for _, v in pairs({bu.Border, bu.FloatingBG}) do - if v then v:SetAlpha(0) end - end + if q then + q:SetDrawLayer'BACKGROUND' + q:SetSize(1, 1) + bu.forQuest = true + end +end - if bu.FloatingBG and not bu.iid then - bu.iid = bu:CreateTexture(nil, 'BACKGROUND') - bu.iid:SetAllPoints(bu.FloatingBG) - bu.iid:SetBackdrop(SLOT) - bu.iid:SetBackdropColor(0, 0, 0) - end +ns.BUElements = function(bu) + if not bu then return end + local c = bu.Count or _G[bu:GetName()..'Count'] + local cd = bu.Cooldown or _G[bu:GetName()..'Cooldown'] + local i = bu.icon or bu.Icon or bu.IconTexture or _G[bu:GetName()..'Icon'] or _G[bu:GetName()..'IconTexture'] + for _, v in pairs({bu.Border, bu.FloatingBG}) do + if v then v:SetAlpha(0) end + end - if c then - -- if bu.bo then c:SetParent(bu.bo) end - c:ClearAllPoints() - c:SetPoint('CENTER', bu, 'TOP', 0, -1) - c:SetFont(FONT_REGULAR, 15, 'OUTLINE') - c:SetShadowOffset(0, 0) - c:SetJustifyH'CENTER' - c:SetDrawLayer('OVERLAY', 7) - end + if bu.FloatingBG and not bu.iid then + bu.iid = bu:CreateTexture(nil, 'BACKGROUND') + bu.iid:SetAllPoints(bu.FloatingBG) + bu.iid:SetBackdrop(SLOT) + bu.iid:SetBackdropColor(0, 0, 0) + end - if cd then - cd:ClearAllPoints() - cd:SetAllPoints() - end - if bu.HotKey then - bu.HotKey:ClearAllPoints() - bu.HotKey:SetPoint('TOPRIGHT', bu, -1, 2) - NumberFontNormalSmallGray:SetFontObject'iipHotKeyFont' - end + if c then + -- if bu.bo then c:SetParent(bu.bo) end + c:ClearAllPoints() + c:SetPoint('CENTER', bu, 'TOP', 0, -1) + c:SetFont(FONT_REGULAR, 15, 'OUTLINE') + c:SetShadowOffset(0, 0) + c:SetJustifyH'CENTER' + c:SetDrawLayer('OVERLAY', 7) + end - if i then - i:SetTexCoord(.1, .9, .1, .9) - i:SetDrawLayer'ARTWORK' - end + if cd then + cd:ClearAllPoints() + cd:SetAllPoints() + end - if bu.Name then - bu.Name:SetWidth(bu:GetWidth() + 15) - bu.Name:SetFontObject'GameFontHighlight' - end + if bu.HotKey then + bu.HotKey:ClearAllPoints() + bu.HotKey:SetPoint('TOPRIGHT', bu, -1, 2) + NumberFontNormalSmallGray:SetFontObject'iipHotKeyFont' end - ns.BUBorder = function(bu, size, height, horiz, vert) - if bu.bo then return end - local x, y = (bu:GetWidth()/2) + 6, (bu:GetHeight()/2) + 7 + if i then + i:SetTexCoord(.1, .9, .1, .9) + i:SetDrawLayer'ARTWORK' + end - if size then - x = size - y = size - end + if bu.Name then + bu.Name:SetWidth(bu:GetWidth() + 15) + bu.Name:SetFontObject'GameFontHighlight' + end +end - if height then - y = height - end +ns.BUBorder = function(bu, size, height, horiz, vert) + if bu.bo then return end + local x, y = (bu:GetWidth()/2) + 6, (bu:GetHeight()/2) + 7 - bu.bo = {} - - bu.bo[1] = bu:CreateTexture(nil, 'BORDER') - bu.bo[1]:SetTexture[[Interface\Tooltips\UI-Tooltip-Border]] - bu.bo[1]:SetPoint('TOPLEFT', -(horiz or 6), vert or 7) - bu.bo[1]:SetSize(x, y) - bu.bo[1]:SetTexCoord(.5, .673, 0, 1) - bu.bo[1]:SetVertexColor(.9, .9, .9) - - bu.bo[2] = bu:CreateTexture(nil, 'BORDER') - bu.bo[2]:SetTexture[[Interface\Tooltips\UI-Tooltip-Border]] - bu.bo[2]:SetPoint('TOPRIGHT', horiz or 6, vert or 7) - bu.bo[2]:SetSize(x, y) - bu.bo[2]:SetTexCoord(.675, .5, 0, 1) - bu.bo[2]:SetVertexColor(.9, .9, .9) - - bu.bo[3] = bu:CreateTexture(nil, 'BORDER') - bu.bo[3]:SetTexture[[Interface\Tooltips\UI-Tooltip-Border]] - bu.bo[3]:SetPoint('BOTTOMLEFT', -(horiz or 6), -(vert or 7)) - bu.bo[3]:SetSize(x, y) - bu.bo[3]:SetTexCoord(1, .829, 0, 1) - - bu.bo[4] = bu:CreateTexture(nil, 'BORDER') - bu.bo[4]:SetTexture[[Interface\Tooltips\UI-Tooltip-Border]] - bu.bo[4]:SetPoint('BOTTOMRIGHT', horiz or 6, -(vert or 7)) - bu.bo[4]:SetSize(x, y) - bu.bo[4]:SetTexCoord(.82, 1, 0, 1) - - for i = 1, 4 do - tinsert(ns.skinbu, bu.bo[i]) - end + if size then + x = size + y = size end - ns.BDStone = function(bu, x, path) - bu.stone = CreateFrame('Frame', nil, bu) - bu.stone:SetBackdrop({ - bgFile = [[Interface\ChatFrame\ChatFrameBackground]], - insets = {left = -2, right = -2, top = -2, bottom = -2} - }) - bu.stone:SetBackdropColor(.05, .05, .05) - bu.stone:SetPoint('TOPLEFT', bu, x and -x or -4, x and x or 4) - bu.stone:SetPoint('BOTTOMRIGHT', bu, x and x or 4, x and -x or -4) - bu.stone:SetFrameLevel(bu:GetFrameLevel() - 1) - - bu.stone.t = bu.stone:CreateTexture(nil, 'ARTWORK') - bu.stone.t:SetAllPoints() - bu.stone.t:SetTexture(path or [[Interface/PLAYERACTIONBARALT/STONE]]) - bu.stone.t:SetTexCoord(0, 1, .18, .3) - end - - ns.SB = function(f) - if f:GetObjectType() == 'StatusBar' then - f:SetStatusBarTexture(TEXTURE) - else - f:SetTexture(TEXTURE) - end + if height then + y = height end - - -- + bu.bo = {} + + bu.bo[1] = bu:CreateTexture(nil, 'BORDER') + bu.bo[1]:SetTexture[[Interface\Tooltips\UI-Tooltip-Border]] + bu.bo[1]:SetPoint('TOPLEFT', -(horiz or 6), vert or 7) + bu.bo[1]:SetSize(x, y) + bu.bo[1]:SetTexCoord(.5, .673, 0, 1) + bu.bo[1]:SetVertexColor(.9, .9, .9) + + bu.bo[2] = bu:CreateTexture(nil, 'BORDER') + bu.bo[2]:SetTexture[[Interface\Tooltips\UI-Tooltip-Border]] + bu.bo[2]:SetPoint('TOPRIGHT', horiz or 6, vert or 7) + bu.bo[2]:SetSize(x, y) + bu.bo[2]:SetTexCoord(.675, .5, 0, 1) + bu.bo[2]:SetVertexColor(.9, .9, .9) + + bu.bo[3] = bu:CreateTexture(nil, 'BORDER') + bu.bo[3]:SetTexture[[Interface\Tooltips\UI-Tooltip-Border]] + bu.bo[3]:SetPoint('BOTTOMLEFT', -(horiz or 6), -(vert or 7)) + bu.bo[3]:SetSize(x, y) + bu.bo[3]:SetTexCoord(1, .829, 0, 1) + + bu.bo[4] = bu:CreateTexture(nil, 'BORDER') + bu.bo[4]:SetTexture[[Interface\Tooltips\UI-Tooltip-Border]] + bu.bo[4]:SetPoint('BOTTOMRIGHT', horiz or 6, -(vert or 7)) + bu.bo[4]:SetSize(x, y) + bu.bo[4]:SetTexCoord(.82, 1, 0, 1) + + for i = 1, 4 do + tinsert(ns.skinbu, bu.bo[i]) + end +end + +ns.BDStone = function(bu, x, path) + bu.stone = CreateFrame('Frame', nil, bu) + bu.stone:SetBackdrop({ + bgFile = [[Interface\ChatFrame\ChatFrameBackground]], + insets = {left = -2, right = -2, top = -2, bottom = -2} + }) + bu.stone:SetBackdropColor(.05, .05, .05) + bu.stone:SetPoint('TOPLEFT', bu, x and -x or -4, x and x or 4) + bu.stone:SetPoint('BOTTOMRIGHT', bu, x and x or 4, x and -x or -4) + bu.stone:SetFrameLevel(bu:GetFrameLevel() - 1) + + bu.stone.t = bu.stone:CreateTexture(nil, 'ARTWORK') + bu.stone.t:SetAllPoints() + bu.stone.t:SetTexture(path or [[Interface/PLAYERACTIONBARALT/STONE]]) + bu.stone.t:SetTexCoord(0, 1, .18, .3) +end + +ns.SB = function(f) + if f:GetObjectType() == 'StatusBar' then + f:SetStatusBarTexture(TEXTURE) + else + f:SetTexture(TEXTURE) + end +end diff --git a/core/tables.lua b/core/tables.lua index 6488b64..6d87909 100755 --- a/core/tables.lua +++ b/core/tables.lua @@ -1,2749 +1,28 @@ +local _, ns = ... +-- back to giant fuckin' tables now that blizzard removed spellIDs +-- i've pulled this from another developers (assuming auto-generated) list of spellIDs in classic +-- https://github.com/wardz/ClassicCastbars +-- but we have the old modui table too where there might be some benefits to using a "slimmer" table +-- of spells we * actually * came across and built up during extensive pserver play - local _, ns = ... +ns.cast = { +} - -- back to giant fuckin' tables now that blizzard removed spellIDs - -- i've pulled this from another developers (assuming auto-generated) list of spellIDs in classic - -- https://github.com/wardz/ClassicCastbars - -- but we have the old modui table too where there might be some benefits to using a "slimmer" table - -- of spells we * actually * came across and built up during extensive pserver play +ns.channelled = { +} - ns.cast = { - [GetSpellInfo(17745)] = 17745, -- Diseased Spit - [GetSpellInfo(6753)] = 6753, -- Backhand - [GetSpellInfo(21954)] = 21954, -- Dispel Poison - [GetSpellInfo(18440)] = 18440, -- Mooncloth Leggings - [GetSpellInfo(28165)] = 28165, -- Shadow Guard - [GetSpellInfo(17204)] = 17204, -- Summon Skeleton - [GetSpellInfo(18403)] = 18403, -- Frostweave Tunic - [GetSpellInfo(9781)] = 9781, -- Mithril Shield Spike - [GetSpellInfo(9478)] = 9478, -- Invis Placing Bear Trap - [GetSpellInfo(9972)] = 9972, -- Ornate Mithril Breastplate - [GetSpellInfo(16641)] = 16641, -- Dense Sharpening Stone - [GetSpellInfo(6648)] = 6648, -- Chestnut Mare - [GetSpellInfo(19755)] = 19755, -- Frightalon - [GetSpellInfo(19102)] = 19102, -- Runic Leather Armor - [GetSpellInfo(13228)] = 13228, -- Wound Poison II - [GetSpellInfo(28397)] = 28397, -- Reputation - Gadgetzan +500 - [GetSpellInfo(18452)] = 18452, -- Mooncloth Circlet - [GetSpellInfo(19048)] = 19048, -- Heavy Scorpid Bracers - [GetSpellInfo(29332)] = 29332, -- Fire-toasted Bun - [GetSpellInfo(25177)] = 25177, -- Fire Weakness - [GetSpellInfo(22566)] = 22566, -- Hex - [GetSpellInfo(17196)] = 17196, -- Seeping Willow - [GetSpellInfo(9575)] = 9575, -- Self Detonation - [GetSpellInfo(25166)] = 25166, -- Call Glyphs of Warding - [GetSpellInfo(19050)] = 19050, -- Green Dragonscale Breastplate - [GetSpellInfo(12585)] = 12585, -- Solid Blasting Powder - [GetSpellInfo(28297)] = 28297, -- Lightning Totem - [GetSpellInfo(24165)] = 24165, -- Hoodoo Hex - [GetSpellInfo(13692)] = 13692, -- Dire Growl - [GetSpellInfo(12093)] = 12093, -- Tuxedo Jacket - [GetSpellInfo(9942)] = 9942, -- Mithril Scale Gloves - [GetSpellInfo(16060)] = 16060, -- Golden Sabercat - [GetSpellInfo(18442)] = 18442, -- Felcloth Hood - [GetSpellInfo(12053)] = 12053, -- Black Mageweave Gloves - [GetSpellInfo(2164)] = 2164, -- Fine Leather Gloves - [GetSpellInfo(3170)] = 3170, -- Weak Troll's Blood Potion - [GetSpellInfo(10840)] = 10840, -- Mageweave Bandage - [GetSpellInfo(2666)] = 2666, -- Runed Copper Belt - [GetSpellInfo(21544)] = 21544, -- Create Shredder - [GetSpellInfo(17553)] = 17553, -- Superior Mana Potion - [GetSpellInfo(20890)] = 20890, -- Dark Iron Reaver - [GetSpellInfo(10703)] = 10703, -- Summon Wood Frog - [GetSpellInfo(8365)] = 8365, -- Enlarge - [GetSpellInfo(12511)] = 12511, -- Torch Combine - [GetSpellInfo(24162)] = 24162, -- Falcon's Call - [GetSpellInfo(17574)] = 17574, -- Greater Fire Protection Potion - [GetSpellInfo(3760)] = 3760, -- Hillman's Cloak - [GetSpellInfo(16726)] = 16726, -- Runic Plate Helm - [GetSpellInfo(9435)] = 9435, -- Detonation - [GetSpellInfo(17203)] = 17203, -- Fireball Volley - [GetSpellInfo(2661)] = 2661, -- Copper Chain Belt - [GetSpellInfo(1916)] = 1916, -- Sacrifice (NSE) - [GetSpellInfo(24655)] = 24655, -- Green Dragonscale Gauntlets - [GetSpellInfo(3635)] = 3635, -- Crystal Gaze - [GetSpellInfo(23214)] = 23214, -- Summon Charger - [GetSpellInfo(9195)] = 9195, -- Dusky Leather Leggings - [GetSpellInfo(13230)] = 13230, -- Wound Poison IV - [GetSpellInfo(11535)] = 11535, -- Opening Safe - [GetSpellInfo(11895)] = 11895, -- Healing Wave of Antu'sul - [GetSpellInfo(16658)] = 16658, -- Imperial Plate Helm - [GetSpellInfo(17951)] = 17951, -- Create Firestone - [GetSpellInfo(2337)] = 2337, -- Lesser Healing Potion - [GetSpellInfo(18406)] = 18406, -- Runecloth Robe - [GetSpellInfo(15861)] = 15861, -- Jungle Stew - [GetSpellInfo(16656)] = 16656, -- Radiant Boots - [GetSpellInfo(18763)] = 18763, -- Freeze - [GetSpellInfo(3861)] = 3861, -- Long Silken Cloak - [GetSpellInfo(27725)] = 27725, -- Satchel of Cenarius - [GetSpellInfo(19087)] = 19087, -- Frostsaber Gloves - [GetSpellInfo(22905)] = 22905, -- Place Unfired Blade - [GetSpellInfo(24263)] = 24263, -- UNUSED Quest - Create Empowered Mojo Bundle - [GetSpellInfo(12198)] = 12198, -- Marksman Hit - [GetSpellInfo(28738)] = 28738, -- Summon Speedy - [GetSpellInfo(7673)] = 7673, -- Nether Gem - [GetSpellInfo(27829)] = 27829, -- Titanic Leggings - [GetSpellInfo(3605)] = 3605, -- Summon Remote-Controlled Golem - [GetSpellInfo(17573)] = 17573, -- Greater Arcane Elixir - [GetSpellInfo(3595)] = 3595, -- Frost Oil - [GetSpellInfo(3872)] = 3872, -- Rich Purple Silk Shirt - [GetSpellInfo(23639)] = 23639, -- Blackfury - [GetSpellInfo(24006)] = 24006, -- Bounty of the Harvest - [GetSpellInfo(12907)] = 12907, -- Gnomish Mind Control Cap - [GetSpellInfo(22704)] = 22704, -- Field Repair Bot 74A - [GetSpellInfo(26265)] = 26265, -- Create Elune Stone - [GetSpellInfo(16195)] = 16195, -- Create Knucklebone Pouch - [GetSpellInfo(12248)] = 12248, -- Amplify Damage - [GetSpellInfo(19719)] = 19719, -- Use Bauble - [GetSpellInfo(11923)] = 11923, -- Repair the Blade of Heroes - [GetSpellInfo(7720)] = 7720, -- Ritual of Summoning Effect - [GetSpellInfo(3370)] = 3370, -- Crocolisk Steak - [GetSpellInfo(3854)] = 3854, -- Azure Silk Gloves - [GetSpellInfo(9957)] = 9957, -- Orcish War Leggings - [GetSpellInfo(20565)] = 20565, -- Magma Blast - [GetSpellInfo(17707)] = 17707, -- Summon Panda - [GetSpellInfo(26069)] = 26069, -- Silence - [GetSpellInfo(7636)] = 7636, -- Green Woolen Robe - [GetSpellInfo(2829)] = 2829, -- Sharpen Blade II - [GetSpellInfo(9068)] = 9068, -- Light Leather Pants - [GetSpellInfo(23638)] = 23638, -- Black Amnesty - [GetSpellInfo(3844)] = 3844, -- Heavy Woolen Cloak - [GetSpellInfo(7147)] = 7147, -- Guardian Pants - [GetSpellInfo(6358)] = 6358, -- Seduction - [GetSpellInfo(12851)] = 12851, -- Release the Hounds - [GetSpellInfo(18418)] = 18418, -- Cindercloth Cloak - [GetSpellInfo(9954)] = 9954, -- Truesilver Gauntlets - [GetSpellInfo(3939)] = 3939, -- Lovingly Crafted Boomstick - [GetSpellInfo(3936)] = 3936, -- Deadly Blunderbuss - [GetSpellInfo(6671)] = 6671, -- Create Scroll - [GetSpellInfo(17453)] = 17453, -- Green Mechanostrider - [GetSpellInfo(10696)] = 10696, -- Summon Azure Whelpling - [GetSpellInfo(3657)] = 3657, -- Summon Spell Guard - [GetSpellInfo(9193)] = 9193, -- Heavy Quiver - [GetSpellInfo(6366)] = 6366, -- Create Firestone (Lesser) - [GetSpellInfo(29467)] = 29467, -- Power of the Scourge - [GetSpellInfo(22725)] = 22725, -- Defense +3 - [GetSpellInfo(19790)] = 19790, -- Thorium Grenade - [GetSpellInfo(3849)] = 3849, -- Reinforced Woolen Shoulders - [GetSpellInfo(3263)] = 3263, -- Touch of Ravenclaw - [GetSpellInfo(19645)] = 19645, -- Anti-Magic Shield - [GetSpellInfo(15575)] = 15575, -- Flame Cannon - [GetSpellInfo(2740)] = 2740, -- Bronze Mace - [GetSpellInfo(2881)] = 2881, -- Light Leather - [GetSpellInfo(11466)] = 11466, -- Gift of Arthas - [GetSpellInfo(16652)] = 16652, -- Thorium Boots - [GetSpellInfo(3567)] = 3567, -- Teleport: Orgrimmar - [GetSpellInfo(28327)] = 28327, -- Steam Tonk Controller - [GetSpellInfo(25145)] = 25145, -- Merithra's Wake - [GetSpellInfo(8240)] = 8240, -- Elixir of Giant Growth - [GetSpellInfo(16058)] = 16058, -- Primal Leopard - [GetSpellInfo(21537)] = 21537, -- Planting Ryson's Beacon - [GetSpellInfo(17637)] = 17637, -- Flask of Supreme Power - [GetSpellInfo(24179)] = 24179, -- Create Seal of the Dawn - [GetSpellInfo(15095)] = 15095, -- Molten Blast - [GetSpellInfo(3870)] = 3870, -- Dark Silk Shirt - [GetSpellInfo(4165)] = 4165, -- Throw Rock II - [GetSpellInfo(3565)] = 3565, -- Teleport: Darnassus - [GetSpellInfo(3515)] = 3515, -- Golden Scale Boots - [GetSpellInfo(3966)] = 3966, -- Craftsman's Monocle - [GetSpellInfo(18560)] = 18560, -- Mooncloth - [GetSpellInfo(6215)] = 6215, -- Fear - [GetSpellInfo(23249)] = 23249, -- Great Brown Kodo - [GetSpellInfo(20685)] = 20685, -- Storm Bolt - [GetSpellInfo(25149)] = 25149, -- Arygos's Vengeance - [GetSpellInfo(23652)] = 23652, -- Blackguard - [GetSpellInfo(9814)] = 9814, -- Barbaric Iron Helm - [GetSpellInfo(19566)] = 19566, -- Salt Shaker - [GetSpellInfo(22480)] = 22480, -- Tender Wolf Steak - [GetSpellInfo(3325)] = 3325, -- Gemmed Copper Gauntlets - [GetSpellInfo(30047)] = 30047, -- Crystal Throat Lozenge - [GetSpellInfo(9200)] = 9200, -- Create Sapta - [GetSpellInfo(16600)] = 16600, -- Might of Shahram - [GetSpellInfo(7120)] = 7120, -- Proudmoore's Defense - [GetSpellInfo(16744)] = 16744, -- Enchanted Thorium Leggings - [GetSpellInfo(12908)] = 12908, -- Goblin Dragon Gun - [GetSpellInfo(19058)] = 19058, -- Rugged Armor Kit - [GetSpellInfo(20848)] = 20848, -- Flarecore Mantle - [GetSpellInfo(25123)] = 25123, -- Brilliant Mana Oil - [GetSpellInfo(3500)] = 3500, -- Shadow Crescent Axe - [GetSpellInfo(21943)] = 21943, -- Gloves of the Greatfather - [GetSpellInfo(3264)] = 3264, -- Blood Howl - [GetSpellInfo(23709)] = 23709, -- Corehound Belt - [GetSpellInfo(19512)] = 19512, -- Apply Salve - [GetSpellInfo(3636)] = 3636, -- Crystalline Slumber - [GetSpellInfo(27571)] = 27571, -- Cascade of Roses - [GetSpellInfo(12709)] = 12709, -- Collecting Fallout - [GetSpellInfo(12063)] = 12063, -- Stormcloth Gloves - [GetSpellInfo(10707)] = 10707, -- Summon Great Horned Owl - [GetSpellInfo(8467)] = 8467, -- White Woolen Dress - [GetSpellInfo(22720)] = 22720, -- Black War Ram - [GetSpellInfo(23308)] = 23308, -- Incinerate - [GetSpellInfo(3506)] = 3506, -- Green Iron Leggings - [GetSpellInfo(24815)] = 24815, -- Draw Ancient Glyphs - [GetSpellInfo(7125)] = 7125, -- Toxic Saliva - [GetSpellInfo(28396)] = 28396, -- Reputation - Everlook +500 - [GetSpellInfo(1002)] = 1002, -- Eyes of the Beast - [GetSpellInfo(15833)] = 15833, -- Dreamless Sleep Potion - [GetSpellInfo(10711)] = 10711, -- Summon Snowshoe Rabbit - [GetSpellInfo(10790)] = 10790, -- Tiger - [GetSpellInfo(28271)] = 28271, -- Polymorph - [GetSpellInfo(12584)] = 12584, -- Gold Power Core - [GetSpellInfo(10554)] = 10554, -- Tough Scorpid Boots - [GetSpellInfo(9818)] = 9818, -- Barbaric Iron Boots - [GetSpellInfo(3132)] = 3132, -- Chilling Breath - [GetSpellInfo(16473)] = 16473, -- Summoned Urok - [GetSpellInfo(24963)] = 24963, -- Honor Points +228 - [GetSpellInfo(18363)] = 18363, -- Riding Kodo - [GetSpellInfo(2739)] = 2739, -- Copper Shortsword - [GetSpellInfo(21160)] = 21160, -- Eye of Sulfuras - [GetSpellInfo(7408)] = 7408, -- Heavy Copper Maul - [GetSpellInfo(16032)] = 16032, -- Merging Oozes - [GetSpellInfo(23180)] = 23180, -- Release Imp - [GetSpellInfo(23219)] = 23219, -- Swift Mistsaber - [GetSpellInfo(7213)] = 7213, -- Giant Clam Scorcho - [GetSpellInfo(21370)] = 21370, -- Planting Jeztor's Beacon - [GetSpellInfo(10687)] = 10687, -- Summon White Plymouth Rock - [GetSpellInfo(25119)] = 25119, -- Lesser Wizard Oil - [GetSpellInfo(13528)] = 13528, -- Decayed Strength - [GetSpellInfo(24997)] = 24997, -- Greater Dispel - [GetSpellInfo(12587)] = 12587, -- Bright-Eye Goggles - [GetSpellInfo(3722)] = 3722, -- Summon Syndicate Spectre - [GetSpellInfo(6530)] = 6530, -- Sling Dirt - [GetSpellInfo(24912)] = 24912, -- Darkrune Gauntlets - [GetSpellInfo(23704)] = 23704, -- Timbermaw Brawlers - [GetSpellInfo(11478)] = 11478, -- Elixir of Detect Demon - [GetSpellInfo(7295)] = 7295, -- Soul Drain - [GetSpellInfo(29134)] = 29134, -- Maypole - [GetSpellInfo(18476)] = 18476, -- Summon Minion - [GetSpellInfo(21181)] = 21181, -- Summon Shadowstrike - [GetSpellInfo(2833)] = 2833, -- Armor +24 - [GetSpellInfo(16447)] = 16447, -- Spawn Challenge to Urok - [GetSpellInfo(6653)] = 6653, -- Dire Wolf - [GetSpellInfo(7136)] = 7136, -- Shadow Port - [GetSpellInfo(27832)] = 27832, -- Sageblade - [GetSpellInfo(18423)] = 18423, -- Runecloth Boots - [GetSpellInfo(9974)] = 9974, -- Truesilver Breastplate - [GetSpellInfo(3447)] = 3447, -- Healing Potion - [GetSpellInfo(4096)] = 4096, -- Raptor Hide Harness - [GetSpellInfo(23204)] = 23204, -- Place Scryer - [GetSpellInfo(17738)] = 17738, -- Curse of the Plague Rat - [GetSpellInfo(4950)] = 4950, -- Summon Helcular's Puppets - [GetSpellInfo(19095)] = 19095, -- Living Breastplate - [GetSpellInfo(12758)] = 12758, -- Goblin Rocket Helmet - [GetSpellInfo(3451)] = 3451, -- Mighty Troll's Blood Potion - [GetSpellInfo(11975)] = 11975, -- Arcane Explosion - [GetSpellInfo(12586)] = 12586, -- Solid Dynamite - [GetSpellInfo(3973)] = 3973, -- Silver Contact - [GetSpellInfo(25186)] = 25186, -- Super Crystal - [GetSpellInfo(9156)] = 9156, -- Create Mage's Orb - [GetSpellInfo(8465)] = 8465, -- Simple Dress - [GetSpellInfo(16996)] = 16996, -- Incendia Powder - [GetSpellInfo(10572)] = 10572, -- Wild Leather Leggings - [GetSpellInfo(2393)] = 2393, -- White Linen Shirt - [GetSpellInfo(16661)] = 16661, -- Storm Gauntlets - [GetSpellInfo(22949)] = 22949, -- Seal Felvine Shard - [GetSpellInfo(3942)] = 3942, -- Whirring Bronze Gizmo - [GetSpellInfo(10436)] = 10436, -- Attack - [GetSpellInfo(20274)] = 20274, -- Capturing Termites - [GetSpellInfo(19772)] = 19772, -- Summon Lifelike Toad - [GetSpellInfo(24847)] = 24847, -- Spitfire Gauntlets - [GetSpellInfo(26420)] = 26420, -- Large Blue Rocket - [GetSpellInfo(3400)] = 3400, -- Soothing Turtle Bisque - [GetSpellInfo(7223)] = 7223, -- Golden Scale Bracers - [GetSpellInfo(25813)] = 25813, -- Conjure Dream Rift - [GetSpellInfo(28745)] = 28745, -- Quest - Prepare Field Duty Papers - [GetSpellInfo(17009)] = 17009, -- Voodoo - [GetSpellInfo(2165)] = 2165, -- Medium Armor Kit - [GetSpellInfo(7179)] = 7179, -- Elixir of Water Breathing - [GetSpellInfo(4141)] = 4141, -- Summon Myzrael - [GetSpellInfo(23637)] = 23637, -- Dark Iron Gauntlets - [GetSpellInfo(6630)] = 6630, -- Set NG-5 Charge (Red) - [GetSpellInfo(10340)] = 10340, -- Uldaman Boss Agro - [GetSpellInfo(29331)] = 29331, -- Copy of Dark Desire - [GetSpellInfo(13227)] = 13227, -- Wound Poison - [GetSpellInfo(7845)] = 7845, -- Elixir of Firepower - [GetSpellInfo(12720)] = 12720, -- Goblin "Boom" Box - [GetSpellInfo(20051)] = 20051, -- Runed Arcanite Rod - [GetSpellInfo(5567)] = 5567, -- Miring Mud - [GetSpellInfo(12088)] = 12088, -- Cindercloth Boots - [GetSpellInfo(12905)] = 12905, -- Gnomish Rocket Boots - [GetSpellInfo(27658)] = 27658, -- Enchanted Mageweave Pouch - [GetSpellInfo(9933)] = 9933, -- Heavy Mithril Pants - [GetSpellInfo(24356)] = 24356, -- Bloodvine Goggles - [GetSpellInfo(10558)] = 10558, -- Nightscape Boots - [GetSpellInfo(23247)] = 23247, -- Great White Kodo - [GetSpellInfo(9055)] = 9055, -- Create Witherbark Totem Bundle - [GetSpellInfo(3949)] = 3949, -- Silver-plated Shotgun - [GetSpellInfo(13900)] = 13900, -- Fiery Burst - [GetSpellInfo(35)] = 35, -- Teleport Elwynn - [GetSpellInfo(712)] = 712, -- Summon Succubus - [GetSpellInfo(2157)] = 2157, -- Light Winter Boots - [GetSpellInfo(23122)] = 23122, -- Jaina's Autograph - [GetSpellInfo(3840)] = 3840, -- Heavy Linen Gloves - [GetSpellInfo(14928)] = 14928, -- Nagmara's Love Potion - [GetSpellInfo(3492)] = 3492, -- Hardened Iron Shortsword - [GetSpellInfo(23708)] = 23708, -- Chromatic Gauntlets - [GetSpellInfo(26373)] = 26373, -- Lunar Invititation - [GetSpellInfo(15596)] = 15596, -- Smoking Heart of the Mountain - [GetSpellInfo(10771)] = 10771, -- Soul Shatter - [GetSpellInfo(24418)] = 24418, -- Heavy Crocolisk Stew - [GetSpellInfo(12903)] = 12903, -- Gnomish Harm Prevention Belt - [GetSpellInfo(17463)] = 17463, -- Blue Skeletal Horse - [GetSpellInfo(12802)] = 12802, -- Getting Tide Pool Sample #1 - [GetSpellInfo(16868)] = 16868, -- Banshee Wail - [GetSpellInfo(19070)] = 19070, -- Heavy Scorpid Belt - [GetSpellInfo(6419)] = 6419, -- Lean Venison - [GetSpellInfo(17529)] = 17529, -- Vitreous Focuser - [GetSpellInfo(12755)] = 12755, -- Goblin Bomb Dispenser - [GetSpellInfo(8138)] = 8138, -- Mirkfallon Fungus - [GetSpellInfo(12895)] = 12895, -- Inlaid Mithril Cylinder Plans - [GetSpellInfo(9583)] = 9583, -- Water Sample - [GetSpellInfo(24168)] = 24168, -- Animist's Caress - [GetSpellInfo(458)] = 458, -- Brown Horse - [GetSpellInfo(19819)] = 19819, -- Voice Amplification Modulator - [GetSpellInfo(6918)] = 6918, -- Summon Snufflenose - [GetSpellInfo(8764)] = 8764, -- Earthen Vest - [GetSpellInfo(5761)] = 5761, -- Mind-numbing Poison - [GetSpellInfo(10912)] = 10912, -- Mind Control - [GetSpellInfo(9482)] = 9482, -- Amplify Flames - [GetSpellInfo(10789)] = 10789, -- Spotted Frostsaber - [GetSpellInfo(12805)] = 12805, -- Getting Tide Pool Sample #2 - [GetSpellInfo(16986)] = 16986, -- Blood Talon - [GetSpellInfo(3335)] = 3335, -- Dark Sludge - [GetSpellInfo(23208)] = 23208, -- Exorcise Spirits - [GetSpellInfo(9950)] = 9950, -- Ornate Mithril Gloves - [GetSpellInfo(3607)] = 3607, -- Yenniku's Release - [GetSpellInfo(10683)] = 10683, -- Summon Green Wing Macaw - [GetSpellInfo(14930)] = 14930, -- Quickdraw Quiver - [GetSpellInfo(5666)] = 5666, -- Summon Timberling - [GetSpellInfo(28526)] = 28526, -- Icebolt - [GetSpellInfo(2149)] = 2149, -- Handstitched Leather Boots - [GetSpellInfo(3920)] = 3920, -- Crafted Light Shot - [GetSpellInfo(24334)] = 24334, -- Acid Spit - [GetSpellInfo(25167)] = 25167, -- Call Ancients - [GetSpellInfo(2538)] = 2538, -- Charred Wolf Meat - [GetSpellInfo(6617)] = 6617, -- Rage Potion - [GetSpellInfo(11453)] = 11453, -- Magic Resistance Potion - [GetSpellInfo(6500)] = 6500, -- Goblin Deviled Clams - [GetSpellInfo(10647)] = 10647, -- Feathered Breastplate - [GetSpellInfo(12091)] = 12091, -- White Wedding Dress - [GetSpellInfo(12089)] = 12089, -- Tuxedo Pants - [GetSpellInfo(12890)] = 12890, -- Deep Slumber - [GetSpellInfo(20531)] = 20531, -- Bind Chapter 3 - [GetSpellInfo(15998)] = 15998, -- Capture Worg Pup - [GetSpellInfo(16528)] = 16528, -- Numbing Pain - [GetSpellInfo(27291)] = 27291, -- Summon Magic Staff - [GetSpellInfo(16654)] = 16654, -- Radiant Gloves - [GetSpellInfo(6725)] = 6725, -- Flame Spike - [GetSpellInfo(27287)] = 27287, -- Energy Siphon - [GetSpellInfo(17458)] = 17458, -- Fluorescent Green Mechanostrider - [GetSpellInfo(27860)] = 27860, -- Engulfing Shadows - [GetSpellInfo(28472)] = 28472, -- Bramblewood Helm - [GetSpellInfo(6305)] = 6305, -- Flame Burst - [GetSpellInfo(6469)] = 6469, -- Skeletal Miner Explode - [GetSpellInfo(4221)] = 4221, -- Healing Tongue II - [GetSpellInfo(27590)] = 27590, -- Obsidian Mail Tunic - [GetSpellInfo(26636)] = 26636, -- Elune's Candle - [GetSpellInfo(17432)] = 17432, -- Opening Stratholme Postbox - [GetSpellInfo(7222)] = 7222, -- Iron Counterweight - [GetSpellInfo(20529)] = 20529, -- Bind Chapter 1 - [GetSpellInfo(9594)] = 9594, -- Attach Medallion to Shaft - [GetSpellInfo(580)] = 580, -- Large Timber Wolf - [GetSpellInfo(11209)] = 11209, -- Summon Smithing Hammer - [GetSpellInfo(23510)] = 23510, -- Stormpike Battle Charger - [GetSpellInfo(25117)] = 25117, -- Minor Wizard Oil - [GetSpellInfo(24851)] = 24851, -- Sandstalker Breastplate - [GetSpellInfo(15128)] = 15128, -- Mark of Flames - [GetSpellInfo(11479)] = 11479, -- Transmute: Iron to Gold - [GetSpellInfo(8693)] = 8693, -- Mind-numbing Poison II - [GetSpellInfo(25122)] = 25122, -- Brilliant Wizard Oil - [GetSpellInfo(23252)] = 23252, -- Swift Gray Wolf - [GetSpellInfo(23679)] = 23679, -- Elementals Deck - [GetSpellInfo(18414)] = 18414, -- Brightcloth Robe - [GetSpellInfo(17727)] = 17727, -- Create Spellstone (Greater) - [GetSpellInfo(25853)] = 25853, -- Empty Festive Mug - [GetSpellInfo(13143)] = 13143, -- Summon Razelikh - [GetSpellInfo(25465)] = 25465, -- Firework - [GetSpellInfo(24973)] = 24973, -- Clean Up Stink Bomb - [GetSpellInfo(10698)] = 10698, -- Summon Emerald Whelpling - [GetSpellInfo(15491)] = 15491, -- Collect Blessed Water - [GetSpellInfo(8895)] = 8895, -- Goblin Rocket Boots - [GetSpellInfo(17565)] = 17565, -- Transmute: Life to Earth - [GetSpellInfo(12616)] = 12616, -- Parachute Cloak - [GetSpellInfo(11356)] = 11356, -- Deadly Poison IV - [GetSpellInfo(17460)] = 17460, -- Frost Ram - [GetSpellInfo(19049)] = 19049, -- Wicked Leather Gauntlets - [GetSpellInfo(24420)] = 24420, -- Zandalar Signet of Serenity - [GetSpellInfo(1842)] = 1842, -- Disarm Trap - [GetSpellInfo(17579)] = 17579, -- Greater Holy Protection Potion - [GetSpellInfo(15261)] = 15261, -- Holy Fire - [GetSpellInfo(7929)] = 7929, -- Heavy Silk Bandage - [GetSpellInfo(2166)] = 2166, -- Toughened Leather Armor - [GetSpellInfo(2549)] = 2549, -- Seasoned Wolf Kabob - [GetSpellInfo(11418)] = 11418, -- Portal: Undercity - [GetSpellInfo(25018)] = 25018, -- Summon Murki - [GetSpellInfo(8517)] = 8517, -- Opening Strongbox - [GetSpellInfo(13978)] = 13978, -- Summon Aquementas - [GetSpellInfo(20904)] = 20904, -- Aimed Shot - [GetSpellInfo(4983)] = 4983, -- Create Cleansing Totem - [GetSpellInfo(6805)] = 6805, -- Dousing - [GetSpellInfo(16741)] = 16741, -- Stronghold Gauntlets - [GetSpellInfo(21188)] = 21188, -- Stun Bomb Attack - [GetSpellInfo(2964)] = 2964, -- Bolt of Woolen Cloth - [GetSpellInfo(18246)] = 18246, -- Mightfish Steak - [GetSpellInfo(5669)] = 5669, -- Peon Disguise - [GetSpellInfo(1112)] = 1112, -- Shadow Nova II - [GetSpellInfo(12056)] = 12056, -- Red Mageweave Vest - [GetSpellInfo(21736)] = 21736, -- Winterax Wisdom - [GetSpellInfo(10556)] = 10556, -- Turtle Scale Leggings - [GetSpellInfo(7126)] = 7126, -- Handstitched Leather Vest - [GetSpellInfo(8339)] = 8339, -- EZ-Thro Dynamite - [GetSpellInfo(898)] = 898, -- Create Fervor Potion - [GetSpellInfo(2795)] = 2795, -- Beer Basted Boar Ribs - [GetSpellInfo(8607)] = 8607, -- Smoked Bear Meat - [GetSpellInfo(3611)] = 3611, -- Minion of Morganth - [GetSpellInfo(18163)] = 18163, -- Strength of Arko'narin - [GetSpellInfo(27891)] = 27891, -- Disease Buffet - [GetSpellInfo(7978)] = 7978, -- Throw Dynamite - [GetSpellInfo(10009)] = 10009, -- Runed Mithril Hammer - [GetSpellInfo(8600)] = 8600, -- Fevered Plague - [GetSpellInfo(19029)] = 19029, -- Create Coagulated Rot - [GetSpellInfo(5267)] = 5267, -- Dalaran Wizard Disguise - [GetSpellInfo(17562)] = 17562, -- Transmute: Water to Air - [GetSpellInfo(444)] = 444, -- Teleport Lighthouse - [GetSpellInfo(7962)] = 7962, -- Break Big Stuff - [GetSpellInfo(3513)] = 3513, -- Polished Steel Boots - [GetSpellInfo(8283)] = 8283, -- Snufflenose Command - [GetSpellInfo(23787)] = 23787, -- Powerful Anti-Venom - [GetSpellInfo(7754)] = 7754, -- Loch Frenzy Delight - [GetSpellInfo(459)] = 459, -- Gray Wolf - [GetSpellInfo(17577)] = 17577, -- Greater Arcane Protection Potion - [GetSpellInfo(11067)] = 11067, -- Perm. Illusion Tyrion - [GetSpellInfo(24214)] = 24214, -- Heart of Hakkar - Molthor chucks the heart - [GetSpellInfo(10180)] = 10180, -- Frostbolt - [GetSpellInfo(20528)] = 20528, -- Mor'rogal Enchant - [GetSpellInfo(19073)] = 19073, -- Chimeric Leggings - [GetSpellInfo(6405)] = 6405, -- Furbolg Form - [GetSpellInfo(16031)] = 16031, -- Releasing Corrupt Ooze - [GetSpellInfo(1452)] = 1452, -- Arcane Spirit IV - [GetSpellInfo(23710)] = 23710, -- Molten Belt - [GetSpellInfo(7817)] = 7817, -- Rough Bronze Boots - [GetSpellInfo(12047)] = 12047, -- Colorful Kilt - [GetSpellInfo(3292)] = 3292, -- Heavy Copper Broadsword - [GetSpellInfo(22372)] = 22372, -- Demon Portal - [GetSpellInfo(18992)] = 18992, -- Teal Kodo - [GetSpellInfo(7655)] = 7655, -- Hex of Ravenclaw - [GetSpellInfo(19484)] = 19484, -- Majordomo Teleport Visual - [GetSpellInfo(10574)] = 10574, -- Wild Leather Cloak - [GetSpellInfo(16725)] = 16725, -- Radiant Leggings - [GetSpellInfo(8778)] = 8778, -- Boots of Darkness - [GetSpellInfo(22711)] = 22711, -- Shadowskin Gloves - [GetSpellInfo(7751)] = 7751, -- Brilliant Smallfish - [GetSpellInfo(17728)] = 17728, -- Create Spellstone (Major) - [GetSpellInfo(12459)] = 12459, -- Deadly Scope - [GetSpellInfo(28219)] = 28219, -- Polar Tunic - [GetSpellInfo(22757)] = 22757, -- Elemental Sharpening Stone - [GetSpellInfo(9072)] = 9072, -- Red Whelp Gloves - [GetSpellInfo(3847)] = 3847, -- Red Woolen Boots - [GetSpellInfo(23152)] = 23152, -- Summon Xorothian Dreadsteed - [GetSpellInfo(17578)] = 17578, -- Greater Shadow Protection Potion - [GetSpellInfo(14804)] = 14804, -- Copy of Release Rageclaw - [GetSpellInfo(19052)] = 19052, -- Wicked Leather Bracers - [GetSpellInfo(4094)] = 4094, -- Barbecued Buzzard Wing - [GetSpellInfo(12059)] = 12059, -- White Bandit Mask - [GetSpellInfo(17554)] = 17554, -- Elixir of Superior Defense - [GetSpellInfo(28299)] = 28299, -- Ball Lightning - [GetSpellInfo(21935)] = 21935, -- SnowMaster 9000 - [GetSpellInfo(24252)] = 24252, -- Swift Zulian Tiger - [GetSpellInfo(885)] = 885, -- Invisibility - [GetSpellInfo(17555)] = 17555, -- Elixir of the Sages - [GetSpellInfo(6415)] = 6415, -- Fillet of Frenzy - [GetSpellInfo(16622)] = 16622, -- Enhance Blunt Weapon V - [GetSpellInfo(442)] = 442, -- Teleport Northshire Abbey - [GetSpellInfo(23254)] = 23254, -- Redeeming the Soul - [GetSpellInfo(12562)] = 12562, -- The Big One - [GetSpellInfo(7023)] = 7023, -- Goblin Camera Connection - [GetSpellInfo(4982)] = 4982, -- Pillar Delving - [GetSpellInfo(10708)] = 10708, -- Summon Snowy Owl - [GetSpellInfo(10934)] = 10934, -- Smite - [GetSpellInfo(7081)] = 7081, -- Encage - [GetSpellInfo(21885)] = 21885, -- Heal Vylestem Vine - [GetSpellInfo(19825)] = 19825, -- Master Engineer's Goggles - [GetSpellInfo(16533)] = 16533, -- Emberseer Start - [GetSpellInfo(10562)] = 10562, -- Big Voodoo Cloak - [GetSpellInfo(18243)] = 18243, -- Nightfin Soup - [GetSpellInfo(25804)] = 25804, -- Rumsey Rum Black Label - [GetSpellInfo(15627)] = 15627, -- Applying the Lure - [GetSpellInfo(17566)] = 17566, -- Transmute: Earth to Life - [GetSpellInfo(17464)] = 17464, -- Brown Skeletal Horse - [GetSpellInfo(12537)] = 12537, -- Quest - Summon Treant - [GetSpellInfo(9903)] = 9903, -- Enhance Blunt Weapon IV - [GetSpellInfo(22662)] = 22662, -- Wither - [GetSpellInfo(22876)] = 22876, -- Summon Netherwalker - [GetSpellInfo(5099)] = 5099, -- Disruption - [GetSpellInfo(10548)] = 10548, -- Nightscape Pants - [GetSpellInfo(12060)] = 12060, -- Red Mageweave Pants - [GetSpellInfo(23530)] = 23530, -- Summon Tiny Red Dragon - [GetSpellInfo(7836)] = 7836, -- Blackmouth Oil - [GetSpellInfo(12080)] = 12080, -- Pink Mageweave Shirt - [GetSpellInfo(17559)] = 17559, -- Transmute: Air to Fire - [GetSpellInfo(12048)] = 12048, -- Black Mageweave Vest - [GetSpellInfo(15734)] = 15734, -- Summon - [GetSpellInfo(25118)] = 25118, -- Minor Mana Oil - [GetSpellInfo(10721)] = 10721, -- Summon Elven Wisp - [GetSpellInfo(3658)] = 3658, -- Summon Theurgist - [GetSpellInfo(22732)] = 22732, -- Major Rejuvenation Potion - [GetSpellInfo(18456)] = 18456, -- Truefaith Vestments - [GetSpellInfo(22027)] = 22027, -- Remove Insignia - [GetSpellInfo(12615)] = 12615, -- Spellpower Goggles Xtreme - [GetSpellInfo(9952)] = 9952, -- Ornate Mithril Shoulders - [GetSpellInfo(6234)] = 6234, -- Incineration - [GetSpellInfo(12622)] = 12622, -- Green Lens - [GetSpellInfo(606)] = 606, -- Mind Rot - [GetSpellInfo(24889)] = 24889, -- Create Signet of Beckoning: Fire - [GetSpellInfo(10738)] = 10738, -- Unlocking - [GetSpellInfo(8800)] = 8800, -- Dynamite - [GetSpellInfo(28505)] = 28505, -- Summon Poley - [GetSpellInfo(24888)] = 24888, -- Create Crest of Beckoning: Water - [GetSpellInfo(10621)] = 10621, -- Wolfshead Helm - [GetSpellInfo(18166)] = 18166, -- Summon Magram Ravager - [GetSpellInfo(18629)] = 18629, -- Runecloth Bandage - [GetSpellInfo(30152)] = 30152, -- Summon White Tiger Cub - [GetSpellInfo(10098)] = 10098, -- Smelt Truesilver - [GetSpellInfo(688)] = 688, -- Summon Imp - [GetSpellInfo(8153)] = 8153, -- Owl Form - [GetSpellInfo(8368)] = 8368, -- Ironforge Gauntlets - [GetSpellInfo(15746)] = 15746, -- Disturb Rookery Egg - [GetSpellInfo(5414)] = 5414, -- Balance of Nature - [GetSpellInfo(3759)] = 3759, -- Embossed Leather Pants - [GetSpellInfo(28800)] = 28800, -- Word of Thawing - [GetSpellInfo(2331)] = 2331, -- Minor Mana Potion - [GetSpellInfo(23161)] = 23161, -- Summon Dreadsteed - [GetSpellInfo(23705)] = 23705, -- Dawn Treaders - [GetSpellInfo(9997)] = 9997, -- Wicked Mithril Blade - [GetSpellInfo(6651)] = 6651, -- Instant Toxin - [GetSpellInfo(1980)] = 1980, -- Bombard - [GetSpellInfo(10715)] = 10715, -- Summon Blue Racer - [GetSpellInfo(10854)] = 10854, -- Flames of Chaos - [GetSpellInfo(16650)] = 16650, -- Wildthorn Mail - [GetSpellInfo(12076)] = 12076, -- Shadoweave Shoulders - [GetSpellInfo(11820)] = 11820, -- Electrified Net - [GetSpellInfo(10733)] = 10733, -- Flame Spray - [GetSpellInfo(11568)] = 11568, -- Uldaman Sub-Boss Agro - [GetSpellInfo(20364)] = 20364, -- Bury Samuel's Remains - [GetSpellInfo(15906)] = 15906, -- Dragonbreath Chili - [GetSpellInfo(23232)] = 23232, -- Binding Volume II - [GetSpellInfo(16601)] = 16601, -- Fist of Shahram - [GetSpellInfo(9970)] = 9970, -- Heavy Mithril Helm - [GetSpellInfo(3113)] = 3113, -- Enhance Blunt Weapon II - [GetSpellInfo(24167)] = 24167, -- Prophetic Aura - [GetSpellInfo(5408)] = 5408, -- Quest - Sergra Darkthorn Spell - [GetSpellInfo(14807)] = 14807, -- Greater Magic Wand - [GetSpellInfo(7256)] = 7256, -- Shadow Protection Potion - [GetSpellInfo(20756)] = 20756, -- Create Soulstone (Greater) - [GetSpellInfo(13819)] = 13819, -- Summon Warhorse - [GetSpellInfo(24801)] = 24801, -- Smoked Desert Dumplings - [GetSpellInfo(23632)] = 23632, -- Girdle of the Dawn - [GetSpellInfo(12618)] = 12618, -- Rose Colored Goggles - [GetSpellInfo(23066)] = 23066, -- Red Firework - [GetSpellInfo(12084)] = 12084, -- Red Mageweave Headband - [GetSpellInfo(22598)] = 22598, -- Arcane Mantle of the Dawn - [GetSpellInfo(3766)] = 3766, -- Dark Leather Belt - [GetSpellInfo(12052)] = 12052, -- Shadoweave Pants - [GetSpellInfo(22795)] = 22795, -- Core Marksman Rifle - [GetSpellInfo(17708)] = 17708, -- Summon Diablo - [GetSpellInfo(11399)] = 11399, -- Mind-numbing Poison III - [GetSpellInfo(3443)] = 3443, -- Enchanted Quickness - [GetSpellInfo(15794)] = 15794, -- Summon Blackhand Dreadweaver - [GetSpellInfo(26419)] = 26419, -- Acid Spray - [GetSpellInfo(28612)] = 28612, -- Conjure Food - [GetSpellInfo(3952)] = 3952, -- Minor Recombobulator - [GetSpellInfo(20716)] = 20716, -- Sand Breath - [GetSpellInfo(4209)] = 4209, -- Healing Tongue - [GetSpellInfo(19077)] = 19077, -- Blue Dragonscale Breastplate - [GetSpellInfo(9959)] = 9959, -- Heavy Mithril Breastplate - [GetSpellInfo(8768)] = 8768, -- Iron Buckle - [GetSpellInfo(17048)] = 17048, -- Soul Claim - [GetSpellInfo(6741)] = 6741, -- Identify Brood - [GetSpellInfo(3670)] = 3670, -- Unlock Maury's Foot - [GetSpellInfo(8395)] = 8395, -- Emerald Raptor - [GetSpellInfo(15255)] = 15255, -- Mechanical Repair Kit - [GetSpellInfo(9983)] = 9983, -- Copper Claymore - [GetSpellInfo(3644)] = 3644, -- Speak with Heads - [GetSpellInfo(12085)] = 12085, -- Tuxedo Shirt - [GetSpellInfo(27586)] = 27586, -- Jagged Obsidian Shield - [GetSpellInfo(10509)] = 10509, -- Turtle Scale Gloves - [GetSpellInfo(2841)] = 2841, -- Creeping Torment - [GetSpellInfo(3857)] = 3857, -- Enchanter's Cowl - [GetSpellInfo(23129)] = 23129, -- World Enlarger - [GetSpellInfo(10451)] = 10451, -- Implosion - [GetSpellInfo(3537)] = 3537, -- Minions of Malathrom - [GetSpellInfo(11473)] = 11473, -- Ghost Dye - [GetSpellInfo(7220)] = 7220, -- Weapon Chain - [GetSpellInfo(19792)] = 19792, -- Thorium Rifle - [GetSpellInfo(3377)] = 3377, -- Gooey Spider Cake - [GetSpellInfo(27738)] = 27738, -- Right Piece of Lord Valthalak's Amulet - [GetSpellInfo(4093)] = 4093, -- Reconstruction - [GetSpellInfo(22331)] = 22331, -- Rugged Leather - [GetSpellInfo(3448)] = 3448, -- Lesser Invisibility Potion - [GetSpellInfo(24164)] = 24164, -- Presence of Sight - [GetSpellInfo(12609)] = 12609, -- Catseye Elixir - [GetSpellInfo(691)] = 691, -- Summon Felhunter - [GetSpellInfo(19588)] = 19588, -- Place Ghost Magnet - [GetSpellInfo(25992)] = 25992, -- Brood of Nozdormu Factoin +1000 - [GetSpellInfo(18240)] = 18240, -- Grilled Squid - [GetSpellInfo(10623)] = 10623, -- Chain Heal - [GetSpellInfo(6470)] = 6470, -- Tiny Bronze Key - [GetSpellInfo(15999)] = 15999, -- Summon Worg Pup - [GetSpellInfo(8016)] = 8016, -- Spirit Decay - [GetSpellInfo(26102)] = 26102, -- Sand Blast - [GetSpellInfo(2394)] = 2394, -- Blue Linen Shirt - [GetSpellInfo(3934)] = 3934, -- Flying Tiger Goggles - [GetSpellInfo(7753)] = 7753, -- Longjaw Mud Snapper - [GetSpellInfo(13714)] = 13714, -- Create Samophlange Manual - [GetSpellInfo(16730)] = 16730, -- Imperial Plate Leggings - [GetSpellInfo(6618)] = 6618, -- Great Rage Potion - [GetSpellInfo(24149)] = 24149, -- Presence of Might - [GetSpellInfo(6925)] = 6925, -- Gift of the Xavian - [GetSpellInfo(30156)] = 30156, -- Summon Hippogryph Hatchling - [GetSpellInfo(18448)] = 18448, -- Mooncloth Shoulders - [GetSpellInfo(27585)] = 27585, -- Heavy Obsidian Belt - [GetSpellInfo(28099)] = 28099, -- Shock - [GetSpellInfo(17456)] = 17456, -- Red & Blue Mechanostrider - [GetSpellInfo(24901)] = 24901, -- Runed Stygian Leggings - [GetSpellInfo(23078)] = 23078, -- Goblin Jumper Cables XL - [GetSpellInfo(3775)] = 3775, -- Guardian Belt - [GetSpellInfo(23678)] = 23678, -- Warlord Deck - [GetSpellInfo(8256)] = 8256, -- Lethal Toxin - [GetSpellInfo(126)] = 126, -- Eye of Kilrogg - [GetSpellInfo(27739)] = 27739, -- Top Piece of Lord Valthalak's Amulet - [GetSpellInfo(10630)] = 10630, -- Gauntlets of the Sea - [GetSpellInfo(19085)] = 19085, -- Black Dragonscale Breastplate - [GetSpellInfo(6461)] = 6461, -- Pick Lock - [GetSpellInfo(4945)] = 4945, -- Summon Dagun - [GetSpellInfo(11726)] = 11726, -- Enslave Demon - [GetSpellInfo(7629)] = 7629, -- Red Linen Vest - [GetSpellInfo(2951)] = 2951, -- Hellfire III - [GetSpellInfo(24726)] = 24726, -- Deputize Agent of Nozdormu - [GetSpellInfo(20814)] = 20814, -- Collect Dire Water - [GetSpellInfo(18415)] = 18415, -- Brightcloth Gloves - [GetSpellInfo(9901)] = 9901, -- Soothe Animal - [GetSpellInfo(3768)] = 3768, -- Hillman's Shoulders - [GetSpellInfo(10678)] = 10678, -- Summon Silver Tabby - [GetSpellInfo(2332)] = 2332, -- Minor Rejuvenation Potion - [GetSpellInfo(7481)] = 7481, -- Howling Rage - [GetSpellInfo(472)] = 472, -- Pinto Horse - [GetSpellInfo(3963)] = 3963, -- Compact Harvest Reaper Kit - [GetSpellInfo(3860)] = 3860, -- Boots of the Enchanter - [GetSpellInfo(15067)] = 15067, -- Summon Sprite Darter Hatchling - [GetSpellInfo(21957)] = 21957, -- Create Amulet of Union - [GetSpellInfo(8087)] = 8087, -- Shiny Bauble - [GetSpellInfo(3453)] = 3453, -- Elixir of Detect Lesser Invisibility - [GetSpellInfo(7919)] = 7919, -- Shoot Crossbow - [GetSpellInfo(19053)] = 19053, -- Chimeric Gloves - [GetSpellInfo(22979)] = 22979, -- Shadow Flame - [GetSpellInfo(3323)] = 3323, -- Runed Copper Gauntlets - [GetSpellInfo(23222)] = 23222, -- Swift Yellow Mechanostrider - [GetSpellInfo(25180)] = 25180, -- Nature Weakness - [GetSpellInfo(9853)] = 9853, -- Entangling Roots - [GetSpellInfo(12596)] = 12596, -- Hi-Impact Mithril Slugs - [GetSpellInfo(26587)] = 26587, -- Opening Scarab Coffer - [GetSpellInfo(28270)] = 28270, -- Polymorph: Cow - [GetSpellInfo(12070)] = 12070, -- Dreamweave Vest - [GetSpellInfo(16028)] = 16028, -- Freeze Rookery Egg - Prototype - [GetSpellInfo(8367)] = 8367, -- Ironforge Breastplate - [GetSpellInfo(9577)] = 9577, -- Uldaman Key Staff - [GetSpellInfo(7827)] = 7827, -- Rainbow Fin Albacore - [GetSpellInfo(9945)] = 9945, -- Ornate Mithril Pants - [GetSpellInfo(12258)] = 12258, -- Summon Shadowcaster - [GetSpellInfo(818)] = 818, -- Basic Campfire - [GetSpellInfo(8435)] = 8435, -- Forked Lightning - [GetSpellInfo(3146)] = 3146, -- Daunting Growl - [GetSpellInfo(2838)] = 2838, -- Creeping Pain - [GetSpellInfo(17552)] = 17552, -- Mighty Rage Potion - [GetSpellInfo(12617)] = 12617, -- Deepdive Helmet - [GetSpellInfo(16378)] = 16378, -- Temperature Reading - [GetSpellInfo(5403)] = 5403, -- Crash of Waves - [GetSpellInfo(7156)] = 7156, -- Guardian Gloves - [GetSpellInfo(3359)] = 3359, -- Drink Potion - [GetSpellInfo(759)] = 759, -- Conjure Mana Agate - [GetSpellInfo(27241)] = 27241, -- Summon Gurky - [GetSpellInfo(25120)] = 25120, -- Lesser Mana Oil - [GetSpellInfo(20855)] = 20855, -- Black Dragonscale Boots - [GetSpellInfo(6510)] = 6510, -- Blinding Powder - [GetSpellInfo(8789)] = 8789, -- Crimson Silk Cloak - [GetSpellInfo(3361)] = 3361, -- Dummy NPC Summon - [GetSpellInfo(12066)] = 12066, -- Red Mageweave Gloves - [GetSpellInfo(20773)] = 20773, -- Redemption - [GetSpellInfo(12243)] = 12243, -- Summon Mechanical Chicken - [GetSpellInfo(15958)] = 15958, -- Collect Rookery Egg - [GetSpellInfo(24966)] = 24966, -- Honor Points +2388 - [GetSpellInfo(16247)] = 16247, -- Curse of Thorns - [GetSpellInfo(18887)] = 18887, -- Create Nimboya's Laden Pike - [GetSpellInfo(7818)] = 7818, -- Silver Rod - [GetSpellInfo(16653)] = 16653, -- Thorium Helm - [GetSpellInfo(28161)] = 28161, -- Savage Guard - [GetSpellInfo(22458)] = 22458, -- Healing Circle - [GetSpellInfo(1451)] = 1451, -- Arcane Spirit III - [GetSpellInfo(29475)] = 29475, -- Resilience of the Scourge - [GetSpellInfo(17133)] = 17133, -- Create Pamela's Doll - [GetSpellInfo(15120)] = 15120, -- Cenarion Beacon - [GetSpellInfo(23246)] = 23246, -- Purple Skeletal Warhorse - [GetSpellInfo(15792)] = 15792, -- Summon Blackhand Veteran - [GetSpellInfo(9097)] = 9097, -- Summon Demon of the Orb - [GetSpellInfo(3477)] = 3477, -- Spirit Steal - [GetSpellInfo(19821)] = 19821, -- Arcane Bomb - [GetSpellInfo(4320)] = 4320, -- Trelane's Freezing Touch - [GetSpellInfo(3336)] = 3336, -- Green Iron Gauntlets - [GetSpellInfo(12938)] = 12938, -- Fel Curse - [GetSpellInfo(11643)] = 11643, -- Golden Scale Gauntlets - [GetSpellInfo(3114)] = 3114, -- Enhance Blunt Weapon III - [GetSpellInfo(8980)] = 8980, -- Skeletal Horse - [GetSpellInfo(26072)] = 26072, -- Dust Cloud - [GetSpellInfo(4629)] = 4629, -- Rain of Fire - [GetSpellInfo(16640)] = 16640, -- Dense Weightstone - [GetSpellInfo(2334)] = 2334, -- Elixir of Minor Fortitude - [GetSpellInfo(22797)] = 22797, -- Force Reactive Disk - [GetSpellInfo(11085)] = 11085, -- Chain Bolt - [GetSpellInfo(10053)] = 10053, -- Conjure Mana Citrine - [GetSpellInfo(7359)] = 7359, -- Bright Campfire - [GetSpellInfo(25247)] = 25247, -- Longsight - [GetSpellInfo(3955)] = 3955, -- Explosive Sheep - [GetSpellInfo(8688)] = 8688, -- Instant Poison III - [GetSpellInfo(16667)] = 16667, -- Demon Forged Breastplate - [GetSpellInfo(10011)] = 10011, -- Blight - [GetSpellInfo(3174)] = 3174, -- Elixir of Poison Resistance - [GetSpellInfo(21730)] = 21730, -- Planting Vipore's Beacon - [GetSpellInfo(19106)] = 19106, -- Onyxia Scale Breastplate - [GetSpellInfo(5266)] = 5266, -- Syndicate Disguise - [GetSpellInfo(3852)] = 3852, -- Gloves of Meditation - [GetSpellInfo(6490)] = 6490, -- Sarilus's Elementals - [GetSpellInfo(11447)] = 11447, -- Elixir of Waterwalking - [GetSpellInfo(11338)] = 11338, -- Instant Poison IV - [GetSpellInfo(24895)] = 24895, -- Create Scepter of Beckoning: Fire - [GetSpellInfo(578)] = 578, -- Black Wolf - [GetSpellInfo(11434)] = 11434, -- Gong Zul'Farrak Gong - [GetSpellInfo(22719)] = 22719, -- Black Battlestrider - [GetSpellInfo(21144)] = 21144, -- Egg Nog - [GetSpellInfo(10552)] = 10552, -- Turtle Scale Helm - [GetSpellInfo(18502)] = 18502, -- Curse of Hakkar - [GetSpellInfo(17536)] = 17536, -- Awaken Kerlonian - [GetSpellInfo(10787)] = 10787, -- Panther - [GetSpellInfo(6728)] = 6728, -- Enveloping Winds - [GetSpellInfo(21729)] = 21729, -- Planting Slidore's Beacon - [GetSpellInfo(22928)] = 22928, -- Shifting Cloak - [GetSpellInfo(3956)] = 3956, -- Green Tinted Goggles - [GetSpellInfo(19082)] = 19082, -- Runic Leather Headband - [GetSpellInfo(16396)] = 16396, -- Flame Breath - [GetSpellInfo(5412)] = 5412, -- Balance of Nature Failure - [GetSpellInfo(19047)] = 19047, -- Cured Rugged Hide - [GetSpellInfo(14932)] = 14932, -- Thick Leather Ammo Pouch - [GetSpellInfo(17634)] = 17634, -- Flask of Petrification - [GetSpellInfo(7755)] = 7755, -- Bristle Whisker Catfish - [GetSpellInfo(11729)] = 11729, -- Create Healthstone (Greater) - [GetSpellInfo(6297)] = 6297, -- Fiery Blaze - [GetSpellInfo(6690)] = 6690, -- Lesser Wizard's Robe - [GetSpellInfo(8386)] = 8386, -- Attacking - [GetSpellInfo(2406)] = 2406, -- Gray Woolen Shirt - [GetSpellInfo(2395)] = 2395, -- Barbaric Linen Vest - [GetSpellInfo(22840)] = 22840, -- Arcanum of Rapidity - [GetSpellInfo(23442)] = 23442, -- Everlook Transporter - [GetSpellInfo(8376)] = 8376, -- Earthgrab Totem - [GetSpellInfo(5967)] = 5967, -- Pickpocket (PT) - [GetSpellInfo(23054)] = 23054, -- Igniting Kroshius - [GetSpellInfo(6619)] = 6619, -- Cowardly Flight Potion - [GetSpellInfo(3397)] = 3397, -- Big Bear Steak - [GetSpellInfo(17293)] = 17293, -- Burning Winds - [GetSpellInfo(28210)] = 28210, -- Gaea's Embrace - [GetSpellInfo(27659)] = 27659, -- Enchanted Runecloth Bag - [GetSpellInfo(19078)] = 19078, -- Living Leggings - [GetSpellInfo(7162)] = 7162, -- First Aid - [GetSpellInfo(19796)] = 19796, -- Dark Iron Rifle - [GetSpellInfo(17575)] = 17575, -- Greater Frost Protection Potion - [GetSpellInfo(19060)] = 19060, -- Green Dragonscale Leggings - [GetSpellInfo(19797)] = 19797, -- Conjure Torch of Retribution - [GetSpellInfo(24195)] = 24195, -- Grom's Tribute - [GetSpellInfo(7739)] = 7739, -- Inferno Shell - [GetSpellInfo(12735)] = 12735, -- Fill the Egg of Hakkar - [GetSpellInfo(12280)] = 12280, -- Acid of Hakkar - [GetSpellInfo(24850)] = 24850, -- Sandstalker Gauntlets - [GetSpellInfo(18439)] = 18439, -- Brightcloth Pants - [GetSpellInfo(6777)] = 6777, -- Gray Ram - [GetSpellInfo(6704)] = 6704, -- Thick Murloc Armor - [GetSpellInfo(9879)] = 9879, -- Self Destruct - [GetSpellInfo(9082)] = 9082, -- Create Containment Coffer - [GetSpellInfo(3755)] = 3755, -- Linen Bag - [GetSpellInfo(23399)] = 23399, -- Barbaric Bracers - [GetSpellInfo(4942)] = 4942, -- Lesser Stoneshield Potion - [GetSpellInfo(26418)] = 26418, -- Small Red Rocket - [GetSpellInfo(24245)] = 24245, -- String Together Heads - [GetSpellInfo(10688)] = 10688, -- Summon Cockroach - [GetSpellInfo(4539)] = 4539, -- Strength of the Ages - [GetSpellInfo(4974)] = 4974, -- Wither Touch - [GetSpellInfo(12253)] = 12253, -- Dowse Eternal Flame - [GetSpellInfo(9002)] = 9002, -- Coarse Dynamite - [GetSpellInfo(6950)] = 6950, -- Faerie Fire - [GetSpellInfo(11836)] = 11836, -- Freeze Solid - [GetSpellInfo(16969)] = 16969, -- Ornate Thorium Handaxe - [GetSpellInfo(4131)] = 4131, -- Banish Cresting Exile - [GetSpellInfo(19669)] = 19669, -- Arcanite Skeleton Key - [GetSpellInfo(9062)] = 9062, -- Small Leather Ammo Pouch - [GetSpellInfo(4064)] = 4064, -- Rough Copper Bomb - [GetSpellInfo(22722)] = 22722, -- Red Skeletal Warhorse - [GetSpellInfo(14293)] = 14293, -- Lesser Magic Wand - [GetSpellInfo(12065)] = 12065, -- Mageweave Bag - [GetSpellInfo(20604)] = 20604, -- Dominate Mind - [GetSpellInfo(18409)] = 18409, -- Runecloth Cloak - [GetSpellInfo(855)] = 855, -- Feeblemind III - [GetSpellInfo(24125)] = 24125, -- Blood Tiger Shoulders - [GetSpellInfo(6202)] = 6202, -- Create Healthstone (Lesser) - [GetSpellInfo(16497)] = 16497, -- Stun Bomb - [GetSpellInfo(31)] = 31, -- Teleport Goldshire - [GetSpellInfo(20762)] = 20762, -- Soulstone Resurrection - [GetSpellInfo(8758)] = 8758, -- Azure Silk Pants - [GetSpellInfo(22596)] = 22596, -- Shadow Mantle of the Dawn - [GetSpellInfo(6252)] = 6252, -- Southsea Cannon Fire - [GetSpellInfo(19107)] = 19107, -- Black Dragonscale Leggings - [GetSpellInfo(17953)] = 17953, -- Create Firestone (Major) - [GetSpellInfo(18445)] = 18445, -- Mooncloth Bag - [GetSpellInfo(3278)] = 3278, -- Heavy Wool Bandage - [GetSpellInfo(10788)] = 10788, -- Leopard - [GetSpellInfo(6296)] = 6296, -- Enchant: Fiery Blaze - [GetSpellInfo(3501)] = 3501, -- Green Iron Bracers - [GetSpellInfo(16080)] = 16080, -- Red Wolf - [GetSpellInfo(447)] = 447, -- Teleport Treant - [GetSpellInfo(20006)] = 20006, -- Unholy Curse - [GetSpellInfo(2544)] = 2544, -- Crab Cake - [GetSpellInfo(10682)] = 10682, -- Summon Hyacinth Macaw - [GetSpellInfo(22563)] = 22563, -- Recall - [GetSpellInfo(19088)] = 19088, -- Heavy Scorpid Helm - [GetSpellInfo(3502)] = 3502, -- Green Iron Helm - [GetSpellInfo(17162)] = 17162, -- Summon Water Elemental - [GetSpellInfo(16587)] = 16587, -- Dark Whispers - [GetSpellInfo(23223)] = 23223, -- Swift White Mechanostrider - [GetSpellInfo(11082)] = 11082, -- Megavolt - [GetSpellInfo(17571)] = 17571, -- Elixir of the Mongoose - [GetSpellInfo(18960)] = 18960, -- Teleport: Moonglade - [GetSpellInfo(23429)] = 23429, -- Summon Loggerhead Snapjaw - [GetSpellInfo(7398)] = 7398, -- Birth - [GetSpellInfo(19833)] = 19833, -- Flawless Arcanite Rifle - [GetSpellInfo(14809)] = 14809, -- Lesser Mystic Wand - [GetSpellInfo(26086)] = 26086, -- Felcloth Bag - [GetSpellInfo(19083)] = 19083, -- Wicked Leather Pants - [GetSpellInfo(2742)] = 2742, -- Bronze Shortsword - [GetSpellInfo(11467)] = 11467, -- Elixir of Greater Agility - [GetSpellInfo(21027)] = 21027, -- Spark - [GetSpellInfo(16965)] = 16965, -- Bleakwood Hew - [GetSpellInfo(5140)] = 5140, -- Detonate - [GetSpellInfo(20649)] = 20649, -- Heavy Leather - [GetSpellInfo(8856)] = 8856, -- Bending Shinbone - [GetSpellInfo(2541)] = 2541, -- Coyote Steak - [GetSpellInfo(6717)] = 6717, -- Place Lion Carcass - [GetSpellInfo(3295)] = 3295, -- Deadly Bronze Poniard - [GetSpellInfo(7132)] = 7132, -- Summon Lupine Delusions - [GetSpellInfo(15853)] = 15853, -- Lean Wolf Steak - [GetSpellInfo(9149)] = 9149, -- Heavy Earthen Gloves - [GetSpellInfo(10518)] = 10518, -- Turtle Scale Bracers - [GetSpellInfo(16796)] = 16796, -- Summon Shy-Rotam - [GetSpellInfo(9273)] = 9273, -- Goblin Jumper Cables - [GetSpellInfo(12897)] = 12897, -- Gnomish Goggles - [GetSpellInfo(24849)] = 24849, -- Sandstalker Bracers - [GetSpellInfo(15779)] = 15779, -- White Mechanostrider - [GetSpellInfo(23227)] = 23227, -- Swift Palomino - [GetSpellInfo(4960)] = 4960, -- Create Fervor Potion (New) - [GetSpellInfo(15750)] = 15750, -- Rookery Whelp Spawn-in Spell - [GetSpellInfo(3503)] = 3503, -- Golden Scale Coif - [GetSpellInfo(3013)] = 3013, -- Volley II - [GetSpellInfo(12458)] = 12458, -- Evil God Counterspell - [GetSpellInfo(7896)] = 7896, -- Exploding Shot - [GetSpellInfo(19667)] = 19667, -- Golden Skeleton Key - [GetSpellInfo(3866)] = 3866, -- Stylish Red Shirt - [GetSpellInfo(24902)] = 24902, -- Runed Stygian Belt - [GetSpellInfo(10700)] = 10700, -- Summon Faeling - [GetSpellInfo(7383)] = 7383, -- Water Bubble - [GetSpellInfo(25262)] = 25262, -- Abomination Spit - [GetSpellInfo(26407)] = 26407, -- Festive Red Pant Suit - [GetSpellInfo(30174)] = 30174, -- Riding Turtle - [GetSpellInfo(16598)] = 16598, -- Will of Shahram - [GetSpellInfo(6422)] = 6422, -- Ashcrombe's Teleport - [GetSpellInfo(6501)] = 6501, -- Clam Chowder - [GetSpellInfo(17564)] = 17564, -- Transmute: Water to Undeath - [GetSpellInfo(16993)] = 16993, -- Masterwork Stormhammer - [GetSpellInfo(9147)] = 9147, -- Earthen Leather Shoulders - [GetSpellInfo(2158)] = 2158, -- Fine Leather Boots - [GetSpellInfo(9616)] = 9616, -- Wild Regeneration - [GetSpellInfo(4520)] = 4520, -- Wide Sweep - [GetSpellInfo(27290)] = 27290, -- Increase Reputation - [GetSpellInfo(9966)] = 9966, -- Mithril Scale Shoulders - [GetSpellInfo(11460)] = 11460, -- Elixir of Detect Undead - [GetSpellInfo(1698)] = 1698, -- Shockwave - [GetSpellInfo(16081)] = 16081, -- Arctic Wolf - [GetSpellInfo(13484)] = 13484, -- Plant Gor'tesh Head - [GetSpellInfo(16059)] = 16059, -- Tawny Sabercat - [GetSpellInfo(23707)] = 23707, -- Lava Belt - [GetSpellInfo(16594)] = 16594, -- Crypt Scarabs - [GetSpellInfo(10511)] = 10511, -- Turtle Scale Breastplate - [GetSpellInfo(10258)] = 10258, -- Awaken Vault Warder - [GetSpellInfo(3967)] = 3967, -- Big Iron Bomb - [GetSpellInfo(16745)] = 16745, -- Enchanted Thorium Breastplate - [GetSpellInfo(25688)] = 25688, -- Narain! - [GetSpellInfo(7960)] = 7960, -- Scry on Azrethoc - [GetSpellInfo(3818)] = 3818, -- Cured Heavy Hide - [GetSpellInfo(7101)] = 7101, -- Flame Blast - [GetSpellInfo(22597)] = 22597, -- Nature Mantle of the Dawn - [GetSpellInfo(10799)] = 10799, -- Violet Raptor - [GetSpellInfo(27724)] = 27724, -- Cenarion Herb Bag - [GetSpellInfo(7430)] = 7430, -- Arclight Spanner - [GetSpellInfo(10676)] = 10676, -- Summon Orange Tabby - [GetSpellInfo(22999)] = 22999, -- Defibrillate - [GetSpellInfo(3868)] = 3868, -- Phoenix Gloves - [GetSpellInfo(21048)] = 21048, -- Curse of the Tribes - [GetSpellInfo(18411)] = 18411, -- Frostweave Gloves - [GetSpellInfo(1050)] = 1050, -- Sacrifice - [GetSpellInfo(10520)] = 10520, -- Big Voodoo Robe - [GetSpellInfo(8137)] = 8137, -- Silithid Pox - [GetSpellInfo(16051)] = 16051, -- Barrier of Light - [GetSpellInfo(23313)] = 23313, -- Corrosive Acid - [GetSpellInfo(16570)] = 16570, -- Charged Arcane Bolt - [GetSpellInfo(23124)] = 23124, -- Human Orphan Whistle - [GetSpellInfo(25146)] = 25146, -- Transmute: Elemental Fire - [GetSpellInfo(12075)] = 12075, -- Lavender Mageweave Shirt - [GetSpellInfo(18437)] = 18437, -- Felcloth Boots - [GetSpellInfo(22779)] = 22779, -- Biznicks 247x128 Accurascope - [GetSpellInfo(10650)] = 10650, -- Dragonscale Breastplate - [GetSpellInfo(19564)] = 19564, -- Draw Water Sample - [GetSpellInfo(15591)] = 15591, -- Revive Ringo - [GetSpellInfo(12684)] = 12684, -- Kadrak's Flag - [GetSpellInfo(18416)] = 18416, -- Ghostweave Vest - [GetSpellInfo(1450)] = 1450, -- Arcane Spirit II - [GetSpellInfo(12904)] = 12904, -- Gnomish Ham Radio - [GetSpellInfo(17117)] = 17117, -- Magatha Incendia Powder - [GetSpellInfo(9811)] = 9811, -- Barbaric Iron Shoulders - [GetSpellInfo(13258)] = 13258, -- Summon Goblin Bomb - [GetSpellInfo(23041)] = 23041, -- Call Anathema - [GetSpellInfo(17501)] = 17501, -- Cannon Fire - [GetSpellInfo(27722)] = 27722, -- Sweet Surprise - [GetSpellInfo(26422)] = 26422, -- Large Red Rocket - [GetSpellInfo(3922)] = 3922, -- Handful of Copper Bolts - [GetSpellInfo(10542)] = 10542, -- Tough Scorpid Gloves - [GetSpellInfo(24161)] = 24161, -- Death's Embrace - [GetSpellInfo(19090)] = 19090, -- Stormshroud Shoulders - [GetSpellInfo(28244)] = 28244, -- Icebane Bracers - [GetSpellInfo(10695)] = 10695, -- Summon Dark Whelpling - [GetSpellInfo(25704)] = 25704, -- Smoked Sagefish - [GetSpellInfo(12072)] = 12072, -- Black Mageweave Headband - [GetSpellInfo(24092)] = 24092, -- Bloodvine Leggings - [GetSpellInfo(10677)] = 10677, -- Summon Siamese - [GetSpellInfo(28133)] = 28133, -- Cure Disease - [GetSpellInfo(19799)] = 19799, -- Dark Iron Bomb - [GetSpellInfo(3171)] = 3171, -- Elixir of Wisdom - [GetSpellInfo(9552)] = 9552, -- Searing Flames - [GetSpellInfo(12055)] = 12055, -- Shadoweave Robe - [GetSpellInfo(7054)] = 7054, -- Forsaken Skills - [GetSpellInfo(23430)] = 23430, -- Summon Olive Snapjaw - [GetSpellInfo(20755)] = 20755, -- Create Soulstone - [GetSpellInfo(8782)] = 8782, -- Truefaith Gloves - [GetSpellInfo(16057)] = 16057, -- Place Unforged Seal - [GetSpellInfo(2330)] = 2330, -- Minor Healing Potion - [GetSpellInfo(11456)] = 11456, -- Goblin Rocket Fuel - [GetSpellInfo(556)] = 556, -- Astral Recall - [GetSpellInfo(19793)] = 19793, -- Lifelike Mechanical Toad - [GetSpellInfo(16991)] = 16991, -- Annihilator - [GetSpellInfo(2817)] = 2817, -- Teach Bark of Doom - [GetSpellInfo(9888)] = 9888, -- Healing Touch - [GetSpellInfo(12590)] = 12590, -- Gyromatic Micro-Adjustor - [GetSpellInfo(10876)] = 10876, -- Mana Burn - [GetSpellInfo(16071)] = 16071, -- Curse of the Firebrand - [GetSpellInfo(10947)] = 10947, -- Mind Blast - [GetSpellInfo(11365)] = 11365, -- Bly's Band's Escape - [GetSpellInfo(28785)] = 28785, -- Locust Swarm - [GetSpellInfo(21912)] = 21912, -- Dummy Nuke - [GetSpellInfo(23663)] = 23663, -- Mantle of the Timbermaw - [GetSpellInfo(16801)] = 16801, -- Warosh's Transform - [GetSpellInfo(19089)] = 19089, -- Blue Dragonscale Shoulders - [GetSpellInfo(23233)] = 23233, -- Binding Volume III - [GetSpellInfo(2663)] = 2663, -- Copper Bracers - [GetSpellInfo(3507)] = 3507, -- Golden Scale Leggings - [GetSpellInfo(7901)] = 7901, -- Decayed Agility - [GetSpellInfo(16645)] = 16645, -- Radiant Belt - [GetSpellInfo(8784)] = 8784, -- Green Silk Armor - [GetSpellInfo(28089)] = 28089, -- Polarity Shift - [GetSpellInfo(24914)] = 24914, -- Darkrune Breastplate - [GetSpellInfo(19104)] = 19104, -- Frostsaber Tunic - [GetSpellInfo(12050)] = 12050, -- Black Mageweave Robe - [GetSpellInfo(28995)] = 28995, -- Stoneskin - [GetSpellInfo(18149)] = 18149, -- Volatile Infection - [GetSpellInfo(20853)] = 20853, -- Corehound Boots - [GetSpellInfo(18413)] = 18413, -- Ghostweave Gloves - [GetSpellInfo(6306)] = 6306, -- Acid Splash - [GetSpellInfo(10003)] = 10003, -- The Shatterer - [GetSpellInfo(1536)] = 1536, -- Longshot II - [GetSpellInfo(11763)] = 11763, -- Firebolt - [GetSpellInfo(18407)] = 18407, -- Runecloth Tunic - [GetSpellInfo(6249)] = 6249, -- Opening - [GetSpellInfo(9196)] = 9196, -- Dusky Leather Armor - [GetSpellInfo(9481)] = 9481, -- Holy Smite - [GetSpellInfo(23068)] = 23068, -- Green Firework - [GetSpellInfo(3945)] = 3945, -- Heavy Blasting Powder - [GetSpellInfo(6417)] = 6417, -- Dig Rat Stew - [GetSpellInfo(22421)] = 22421, -- Massive Geyser - [GetSpellInfo(11451)] = 11451, -- Oil of Immolation - [GetSpellInfo(28280)] = 28280, -- Bombard Slime - [GetSpellInfo(12082)] = 12082, -- Shadoweave Boots - [GetSpellInfo(16073)] = 16073, -- Filling - [GetSpellInfo(18540)] = 18540, -- Ritual of Doom - [GetSpellInfo(29335)] = 29335, -- Elderberry Pie - [GetSpellInfo(10544)] = 10544, -- Wild Leather Vest - [GetSpellInfo(10348)] = 10348, -- Tune Up - [GetSpellInfo(2161)] = 2161, -- Embossed Leather Boots - [GetSpellInfo(3116)] = 3116, -- Coarse Weightstone - [GetSpellInfo(7752)] = 7752, -- Slitherskin Mackerel - [GetSpellInfo(22478)] = 22478, -- Intense Pain - [GetSpellInfo(3651)] = 3651, -- Shield of Reflection - [GetSpellInfo(6705)] = 6705, -- Murloc Scale Bracers - [GetSpellInfo(15402)] = 15402, -- Lesser Arcane Amalgamation - [GetSpellInfo(16007)] = 16007, -- Draco-Incarcinatrix 900 - [GetSpellInfo(4286)] = 4286, -- Poisonous Spit - [GetSpellInfo(6620)] = 6620, -- Place Toxic Fogger - [GetSpellInfo(12722)] = 12722, -- Goblin Radio - [GetSpellInfo(3495)] = 3495, -- Golden Iron Destroyer - [GetSpellInfo(13240)] = 13240, -- The Mortar: Reloaded - [GetSpellInfo(18630)] = 18630, -- Heavy Runecloth Bandage - [GetSpellInfo(16994)] = 16994, -- Arcanite Reaper - [GetSpellInfo(21332)] = 21332, -- Aspect of Neptulon - [GetSpellInfo(3780)] = 3780, -- Heavy Armor Kit - [GetSpellInfo(10632)] = 10632, -- Helm of Fire - [GetSpellInfo(8090)] = 8090, -- Bright Baubles - [GetSpellInfo(3971)] = 3971, -- Gnomish Cloaking Device - [GetSpellInfo(10714)] = 10714, -- Summon Black Kingsnake - [GetSpellInfo(2668)] = 2668, -- Rough Bronze Leggings - [GetSpellInfo(12045)] = 12045, -- Simple Linen Boots - [GetSpellInfo(4978)] = 4978, -- Cleanse Wildmane Well - [GetSpellInfo(19051)] = 19051, -- Heavy Scorpid Vest - [GetSpellInfo(3494)] = 3494, -- Solid Iron Maul - [GetSpellInfo(12067)] = 12067, -- Dreamweave Gloves - [GetSpellInfo(4164)] = 4164, -- Throw Rock - [GetSpellInfo(8088)] = 8088, -- Nightcrawlers - [GetSpellInfo(11452)] = 11452, -- Restorative Potion - [GetSpellInfo(17454)] = 17454, -- Unpainted Mechanostrider - [GetSpellInfo(16082)] = 16082, -- Palomino Stallion - [GetSpellInfo(11339)] = 11339, -- Instant Poison V - [GetSpellInfo(16379)] = 16379, -- Ozzie Explodes - [GetSpellInfo(8322)] = 8322, -- Moonglow Vest - [GetSpellInfo(3452)] = 3452, -- Mana Potion - [GetSpellInfo(12078)] = 12078, -- Red Mageweave Shoulders - [GetSpellInfo(28221)] = 28221, -- Polar Bracers - [GetSpellInfo(17639)] = 17639, -- Wail of the Banshee - [GetSpellInfo(10704)] = 10704, -- Summon Tree Frog - [GetSpellInfo(12740)] = 12740, -- Summon Infernal Servant - [GetSpellInfo(20629)] = 20629, -- Corrosive Venom Spit - [GetSpellInfo(7255)] = 7255, -- Holy Protection Potion - [GetSpellInfo(5017)] = 5017, -- Divining Trance - [GetSpellInfo(27723)] = 27723, -- Dark Desire - [GetSpellInfo(2830)] = 2830, -- Sharpen Blade III - [GetSpellInfo(22789)] = 22789, -- Gordok Green Grog - [GetSpellInfo(3015)] = 3015, -- Bombard II - [GetSpellInfo(7934)] = 7934, -- Anti-Venom - [GetSpellInfo(10955)] = 10955, -- Shackle Undead - [GetSpellInfo(22989)] = 22989, -- The Breaking - [GetSpellInfo(10716)] = 10716, -- Summon Brown Snake - [GetSpellInfo(27146)] = 27146, -- Left Piece of Lord Valthalak's Amulet - [GetSpellInfo(21979)] = 21979, -- Create The Pariah's Instructions - [GetSpellInfo(18762)] = 18762, -- Hand of Iruxos - [GetSpellInfo(22844)] = 22844, -- Arcanum of Focus - [GetSpellInfo(11016)] = 11016, -- Soul Bite - [GetSpellInfo(14292)] = 14292, -- Fling Torch - [GetSpellInfo(2545)] = 2545, -- Cooked Crab Claw - [GetSpellInfo(20849)] = 20849, -- Flarecore Gloves - [GetSpellInfo(11454)] = 11454, -- Inlaid Mithril Cylinder - [GetSpellInfo(3376)] = 3376, -- Curiously Tasty Omelet - [GetSpellInfo(3229)] = 3229, -- Quick Bloodlust - [GetSpellInfo(3769)] = 3769, -- Dark Leather Shoulders - [GetSpellInfo(3368)] = 3368, -- Drink Minor Potion - [GetSpellInfo(6278)] = 6278, -- Creeping Mold - [GetSpellInfo(27624)] = 27624, -- Lesser Healing Wave - [GetSpellInfo(3772)] = 3772, -- Green Leather Armor - [GetSpellInfo(3007)] = 3007, -- Longshot III - [GetSpellInfo(3120)] = 3120, -- Sol L - [GetSpellInfo(3237)] = 3237, -- Curse of Thule - [GetSpellInfo(23225)] = 23225, -- Swift Green Mechanostrider - [GetSpellInfo(28242)] = 28242, -- Icebane Breastplate - [GetSpellInfo(17229)] = 17229, -- Winterspring Frostsaber - [GetSpellInfo(10254)] = 10254, -- Stone Dwarf Awaken Visual - [GetSpellInfo(3974)] = 3974, -- Crude Scope - [GetSpellInfo(10570)] = 10570, -- Tough Scorpid Helm - [GetSpellInfo(17950)] = 17950, -- Shadow Portal - [GetSpellInfo(11355)] = 11355, -- Deadly Poison III - [GetSpellInfo(3108)] = 3108, -- Touch of Death - [GetSpellInfo(10710)] = 10710, -- Summon Cottontail Rabbit - [GetSpellInfo(22686)] = 22686, -- Bellowing Roar - [GetSpellInfo(23765)] = 23765, -- Darkmoon Faire Fortune - [GetSpellInfo(13463)] = 13463, -- Summon Bloodpetal Mini Pests - [GetSpellInfo(27642)] = 27642, -- Copy of Increase Reputation - [GetSpellInfo(5174)] = 5174, -- Cookie's Cooking - [GetSpellInfo(12071)] = 12071, -- Shadoweave Gloves - [GetSpellInfo(10550)] = 10550, -- Nightscape Cloak - [GetSpellInfo(6499)] = 6499, -- Boiled Clams - [GetSpellInfo(4961)] = 4961, -- Resupply - [GetSpellInfo(6907)] = 6907, -- Diseased Slime - [GetSpellInfo(23250)] = 23250, -- Swift Brown Wolf - [GetSpellInfo(17161)] = 17161, -- Taking Moon Well Sample - [GetSpellInfo(6974)] = 6974, -- Gnome Camera Connection - [GetSpellInfo(9202)] = 9202, -- Green Whelp Bracers - [GetSpellInfo(12599)] = 12599, -- Mithril Casing - [GetSpellInfo(11402)] = 11402, -- Shay's Bell - [GetSpellInfo(15745)] = 15745, -- Summon Rookery Whelp - [GetSpellInfo(25719)] = 25719, -- Bind Draconic For Dummies - [GetSpellInfo(3373)] = 3373, -- Crocolisk Gumbo - [GetSpellInfo(22869)] = 22869, -- Mooncloth Gloves - [GetSpellInfo(22867)] = 22867, -- Felcloth Gloves - [GetSpellInfo(24696)] = 24696, -- Summon Murky - [GetSpellInfo(22921)] = 22921, -- Girdle of Insight - [GetSpellInfo(8363)] = 8363, -- Parasite - [GetSpellInfo(16973)] = 16973, -- Enchanted Battlehammer - [GetSpellInfo(16657)] = 16657, -- Imperial Plate Boots - [GetSpellInfo(21267)] = 21267, -- Conjure Altar of Summoning - [GetSpellInfo(23304)] = 23304, -- Manna-Enriched Horse Feed - [GetSpellInfo(4055)] = 4055, -- Mechanical Squirrel - [GetSpellInfo(17928)] = 17928, -- Howl of Terror - [GetSpellInfo(12655)] = 12655, -- Enlightenment - [GetSpellInfo(3869)] = 3869, -- Bright Yellow Shirt - [GetSpellInfo(24422)] = 24422, -- Zandalar Signet of Might - [GetSpellInfo(10792)] = 10792, -- Spotted Panther - [GetSpellInfo(19100)] = 19100, -- Heavy Scorpid Shoulders - [GetSpellInfo(19571)] = 19571, -- Destroy Ghost Magnet - [GetSpellInfo(23633)] = 23633, -- Gloves of the Dawn - [GetSpellInfo(22759)] = 22759, -- Flarecore Wraps - [GetSpellInfo(11465)] = 11465, -- Elixir of Greater Intellect - [GetSpellInfo(5219)] = 5219, -- Draw of Thistlenettle - [GetSpellInfo(11024)] = 11024, -- Call of Thund - [GetSpellInfo(22868)] = 22868, -- Inferno Gloves - [GetSpellInfo(9198)] = 9198, -- Frost Leather Cloak - [GetSpellInfo(15856)] = 15856, -- Hot Wolf Ribs - [GetSpellInfo(5401)] = 5401, -- Lizard Bolt - [GetSpellInfo(19877)] = 19877, -- Tranquilizing Shot - [GetSpellInfo(21249)] = 21249, -- Call of the Nether - [GetSpellInfo(3331)] = 3331, -- Silvered Bronze Boots - [GetSpellInfo(16055)] = 16055, -- Nightsaber - [GetSpellInfo(12902)] = 12902, -- Gnomish Net-o-Matic Projector - [GetSpellInfo(1084)] = 1084, -- Firebolt III - [GetSpellInfo(12760)] = 12760, -- Goblin Sapper Charge - [GetSpellInfo(3188)] = 3188, -- Elixir of Ogre's Strength - [GetSpellInfo(3177)] = 3177, -- Elixir of Defense - [GetSpellInfo(15295)] = 15295, -- Dark Iron Shoulders - [GetSpellInfo(9900)] = 9900, -- Sharpen Blade IV - [GetSpellInfo(16056)] = 16056, -- Frostsaber - [GetSpellInfo(7224)] = 7224, -- Steel Weapon Chain - [GetSpellInfo(711)] = 711, -- Hellfire - [GetSpellInfo(26218)] = 26218, -- Mistletoe - [GetSpellInfo(14929)] = 14929, -- Fill Nagmara's Vial - [GetSpellInfo(3112)] = 3112, -- Enhance Blunt Weapon - [GetSpellInfo(3328)] = 3328, -- Rough Bronze Shoulders - [GetSpellInfo(16197)] = 16197, -- Empty Charm Pouch - [GetSpellInfo(16990)] = 16990, -- Arcanite Champion - [GetSpellInfo(24138)] = 24138, -- Bloodsoul Gauntlets - [GetSpellInfo(21848)] = 21848, -- Snowman - [GetSpellInfo(10059)] = 10059, -- Portal: Stormwind - [GetSpellInfo(23239)] = 23239, -- Swift Gray Ram - [GetSpellInfo(16746)] = 16746, -- Invulnerable Mail - [GetSpellInfo(15441)] = 15441, -- Greater Arcane Amalgamation - [GetSpellInfo(17176)] = 17176, -- Panther Cage Key - [GetSpellInfo(3816)] = 3816, -- Cured Light Hide - [GetSpellInfo(471)] = 471, -- Palamino Stallion - [GetSpellInfo(446)] = 446, -- Teleport Cemetary - [GetSpellInfo(4508)] = 4508, -- Discolored Healing Potion - [GetSpellInfo(6421)] = 6421, -- Ashcrombe's Unlock - [GetSpellInfo(12199)] = 12199, -- Summon Ishamuhale - [GetSpellInfo(15855)] = 15855, -- Roast Raptor - [GetSpellInfo(10140)] = 10140, -- Conjure Water - [GetSpellInfo(20627)] = 20627, -- Lightning Breath - [GetSpellInfo(15294)] = 15294, -- Dark Iron Sunderer - [GetSpellInfo(26443)] = 26443, -- Firework Cluster Launcher - [GetSpellInfo(26105)] = 26105, -- Glare - [GetSpellInfo(23242)] = 23242, -- Swift Olive Raptor - [GetSpellInfo(24201)] = 24201, -- Create Rune of the Dawn - [GetSpellInfo(9820)] = 9820, -- Barbaric Iron Gloves - [GetSpellInfo(3276)] = 3276, -- Heavy Linen Bandage - [GetSpellInfo(1)] = 1, -- Word of Recall (OLD) - [GetSpellInfo(13630)] = 13630, -- Scraping - [GetSpellInfo(3398)] = 3398, -- Hot Lion Chops - [GetSpellInfo(6688)] = 6688, -- Red Woolen Bag - [GetSpellInfo(3304)] = 3304, -- Smelt Tin - [GetSpellInfo(9918)] = 9918, -- Solid Sharpening Stone - [GetSpellInfo(16450)] = 16450, -- Summon Smolderweb - [GetSpellInfo(17506)] = 17506, -- Soul Breaker - [GetSpellInfo(25347)] = 25347, -- Deadly Poison V - [GetSpellInfo(3320)] = 3320, -- Rough Grinding Stone - [GetSpellInfo(23677)] = 23677, -- Beasts Deck - [GetSpellInfo(21067)] = 21067, -- Poison Bolt - [GetSpellInfo(10490)] = 10490, -- Comfortable Leather Hat - [GetSpellInfo(27)] = 27, -- Goldshire Portal - [GetSpellInfo(3387)] = 3387, -- Rage of Thule - [GetSpellInfo(15743)] = 15743, -- Flamecrack - [GetSpellInfo(3926)] = 3926, -- Copper Modulator - [GetSpellInfo(28243)] = 28243, -- Icebane Gauntlets - [GetSpellInfo(16648)] = 16648, -- Radiant Breastplate - [GetSpellInfo(21175)] = 21175, -- Spider Sausage - [GetSpellInfo(27587)] = 27587, -- Thick Obsidian Breastplate - [GetSpellInfo(12521)] = 12521, -- Teleport from Azshara Tower - [GetSpellInfo(28023)] = 28023, -- Create Healthstone - [GetSpellInfo(5110)] = 5110, -- Summon Living Flame - [GetSpellInfo(3293)] = 3293, -- Copper Battle Axe - [GetSpellInfo(7079)] = 7079, -- Simple Teleport Other - [GetSpellInfo(22430)] = 22430, -- Refined Scale of Onyxia - [GetSpellInfo(26056)] = 26056, -- Summon Green Qiraji Battle Tank - [GetSpellInfo(7828)] = 7828, -- Rockscale Cod - [GetSpellInfo(17461)] = 17461, -- Black Ram - [GetSpellInfo(25162)] = 25162, -- Summon Disgusting Oozeling - [GetSpellInfo(11459)] = 11459, -- Philosophers' Stone - [GetSpellInfo(3855)] = 3855, -- Spidersilk Boots - [GetSpellInfo(29163)] = 29163, -- Copy of Frostbolt - [GetSpellInfo(12715)] = 12715, -- Goblin Rocket Fuel Recipe - [GetSpellInfo(14008)] = 14008, -- Miblon's Bait - [GetSpellInfo(3843)] = 3843, -- Heavy Woolen Gloves - [GetSpellInfo(29483)] = 29483, -- Might of the Scourge - [GetSpellInfo(4975)] = 4975, -- Cleanse Winterhoof Well - [GetSpellInfo(20589)] = 20589, -- Escape Artist - [GetSpellInfo(16781)] = 16781, -- Combining Charms - [GetSpellInfo(6416)] = 6416, -- Strider Stew - [GetSpellInfo(14327)] = 14327, -- Scare Beast - [GetSpellInfo(17709)] = 17709, -- Summon Zergling - [GetSpellInfo(22717)] = 22717, -- Black War Steed - [GetSpellInfo(3841)] = 3841, -- Green Linen Bracers - [GetSpellInfo(17405)] = 17405, -- Domination - [GetSpellInfo(2159)] = 2159, -- Fine Leather Cloak - [GetSpellInfo(9986)] = 9986, -- Bronze Greatsword - [GetSpellInfo(6521)] = 6521, -- Pearl-clasped Cloak - [GetSpellInfo(6686)] = 6686, -- Red Linen Bag - [GetSpellInfo(12304)] = 12304, -- Drawing Kit - [GetSpellInfo(24136)] = 24136, -- Bloodsoul Breastplate - [GetSpellInfo(3778)] = 3778, -- Gem-studded Leather Belt - [GetSpellInfo(10713)] = 10713, -- Summon Albino Snake - [GetSpellInfo(3508)] = 3508, -- Green Iron Hauberk - [GetSpellInfo(28481)] = 28481, -- Sylvan Crown - [GetSpellInfo(12718)] = 12718, -- Goblin Construction Helmet - [GetSpellInfo(2480)] = 2480, -- Shoot Bow - [GetSpellInfo(28146)] = 28146, -- Copy of Portal: Undercity - [GetSpellInfo(18458)] = 18458, -- Robe of the Void - [GetSpellInfo(21050)] = 21050, -- Melodious Rapture - [GetSpellInfo(11417)] = 11417, -- Portal: Orgrimmar - [GetSpellInfo(19065)] = 19065, -- Runic Leather Bracers - [GetSpellInfo(6272)] = 6272, -- Eye of Yesmur (PT) - [GetSpellInfo(23063)] = 23063, -- Dense Dynamite - [GetSpellInfo(10969)] = 10969, -- Blue Mechanostrider - [GetSpellInfo(3330)] = 3330, -- Silvered Bronze Shoulders - [GetSpellInfo(22593)] = 22593, -- Flame Mantle of the Dawn - [GetSpellInfo(2403)] = 2403, -- Gray Woolen Robe - [GetSpellInfo(8275)] = 8275, -- Poisoned Shot - [GetSpellInfo(18991)] = 18991, -- Green Kodo - [GetSpellInfo(184)] = 184, -- Fire Shield II - [GetSpellInfo(19666)] = 19666, -- Silver Skeleton Key - [GetSpellInfo(17169)] = 17169, -- Summon Carrion Scarab - [GetSpellInfo(15869)] = 15869, -- Superior Healing Ward - [GetSpellInfo(7151)] = 7151, -- Barbaric Shoulders - [GetSpellInfo(25748)] = 25748, -- Poison Stinger - [GetSpellInfo(30001)] = 30001, -- Copy of Fear - [GetSpellInfo(10529)] = 10529, -- Wild Leather Shoulders - [GetSpellInfo(15728)] = 15728, -- Plague Cloud - [GetSpellInfo(19066)] = 19066, -- Frostsaber Boots - [GetSpellInfo(23229)] = 23229, -- Swift Brown Steed - [GetSpellInfo(10679)] = 10679, -- Summon White Kitten - [GetSpellInfo(18417)] = 18417, -- Runecloth Gloves - [GetSpellInfo(9931)] = 9931, -- Mithril Scale Pants - [GetSpellInfo(16596)] = 16596, -- Flames of Shahram - [GetSpellInfo(18159)] = 18159, -- Curse of the Fallen Magram - [GetSpellInfo(10097)] = 10097, -- Smelt Mithril - [GetSpellInfo(15049)] = 15049, -- Summon Robot - [GetSpellInfo(8000)] = 8000, -- Area Burn - [GetSpellInfo(18711)] = 18711, -- Forging - [GetSpellInfo(26417)] = 26417, -- Small Green Rocket - [GetSpellInfo(3864)] = 3864, -- Star Belt - [GetSpellInfo(19062)] = 19062, -- Ironfeather Shoulders - [GetSpellInfo(17155)] = 17155, -- Sprinkling Purified Water - [GetSpellInfo(13564)] = 13564, -- Opening Dark Coffer - [GetSpellInfo(21913)] = 21913, -- Edge of Winter - [GetSpellInfo(25662)] = 25662, -- Copy of Nightfin Soup - [GetSpellInfo(22799)] = 22799, -- King of the Gordok - [GetSpellInfo(11758)] = 11758, -- Dowsing - [GetSpellInfo(17045)] = 17045, -- Dawn's Gambit - [GetSpellInfo(12509)] = 12509, -- Teleport to Azshara Tower - [GetSpellInfo(22434)] = 22434, -- Charged Scale of Onyxia - [GetSpellInfo(16971)] = 16971, -- Huge Thorium Battleaxe - [GetSpellInfo(8366)] = 8366, -- Ironforge Chain - [GetSpellInfo(23507)] = 23507, -- Snake Burst Firework - [GetSpellInfo(26001)] = 26001, -- Reputation - Ahn'Qiraj Temple Boss - [GetSpellInfo(509)] = 509, -- Feeblemind II - [GetSpellInfo(18153)] = 18153, -- Kodo Kombobulator - [GetSpellInfo(15533)] = 15533, -- Stoned - Channel Cast Visual - [GetSpellInfo(9928)] = 9928, -- Heavy Mithril Gauntlet - [GetSpellInfo(9197)] = 9197, -- Green Whelp Armor - [GetSpellInfo(16997)] = 16997, -- Gargoyle Strike - [GetSpellInfo(22923)] = 22923, -- Swift Flight Bracers - [GetSpellInfo(12079)] = 12079, -- Red Mageweave Bag - [GetSpellInfo(18242)] = 18242, -- Hot Smoked Bass - [GetSpellInfo(14814)] = 14814, -- Throw Dark Iron Ale - [GetSpellInfo(3308)] = 3308, -- Smelt Gold - [GetSpellInfo(2160)] = 2160, -- Embossed Leather Vest - [GetSpellInfo(13565)] = 13565, -- Opening Secure Safe - [GetSpellInfo(21950)] = 21950, -- Recite Words of Celebras - [GetSpellInfo(2828)] = 2828, -- Sharpen Blade - [GetSpellInfo(19668)] = 19668, -- Truesilver Skeleton Key - [GetSpellInfo(9010)] = 9010, -- Create Filled Containment Coffer - [GetSpellInfo(16724)] = 16724, -- Whitesoul Helm - [GetSpellInfo(22870)] = 22870, -- Cloak of Warding - [GetSpellInfo(7183)] = 7183, -- Elixir of Minor Defense - [GetSpellInfo(17016)] = 17016, -- Placing Beacon Torch - [GetSpellInfo(5107)] = 5107, -- Opening Booty Chest - [GetSpellInfo(10841)] = 10841, -- Heavy Mageweave Bandage - [GetSpellInfo(11547)] = 11547, -- Drive Nimboya's Laden Pike - [GetSpellInfo(3356)] = 3356, -- Flame Lash - [GetSpellInfo(28615)] = 28615, -- Spike Volley - [GetSpellInfo(10216)] = 10216, -- Flamestrike - [GetSpellInfo(6898)] = 6898, -- White Ram - [GetSpellInfo(11548)] = 11548, -- Summon Spider God - [GetSpellInfo(27572)] = 27572, -- Smitten - [GetSpellInfo(14250)] = 14250, -- Capture Grark - [GetSpellInfo(1849)] = 1849, -- Beast Claws II - [GetSpellInfo(26424)] = 26424, -- Green Rocket Cluster - [GetSpellInfo(3491)] = 3491, -- Big Bronze Knife - [GetSpellInfo(25309)] = 25309, -- Immolate - [GetSpellInfo(7076)] = 7076, -- Summon Tervosh's Minion - [GetSpellInfo(16987)] = 16987, -- Darkspear - [GetSpellInfo(3334)] = 3334, -- Green Iron Boots - [GetSpellInfo(25183)] = 25183, -- Shadow Weakness - [GetSpellInfo(11048)] = 11048, -- Perm. Illusion Bishop Tyriona - [GetSpellInfo(10681)] = 10681, -- Summon Cockatoo - [GetSpellInfo(24365)] = 24365, -- Mageblood Potion - [GetSpellInfo(11416)] = 11416, -- Portal: Ironforge - [GetSpellInfo(23628)] = 23628, -- Heavy Timbermaw Belt - [GetSpellInfo(10798)] = 10798, -- Obsidian Raptor - [GetSpellInfo(8802)] = 8802, -- Crimson Silk Robe - [GetSpellInfo(24703)] = 24703, -- Dreamscale Breastplate - [GetSpellInfo(10675)] = 10675, -- Summon Maine Coon - [GetSpellInfo(6700)] = 6700, -- Dimensional Portal - [GetSpellInfo(7624)] = 7624, -- White Linen Robe - [GetSpellInfo(16336)] = 16336, -- Haunting Phantoms - [GetSpellInfo(15915)] = 15915, -- Spiced Chili Crab - [GetSpellInfo(10228)] = 10228, -- Greater Invisibility - [GetSpellInfo(23653)] = 23653, -- Nightfall - [GetSpellInfo(11443)] = 11443, -- Cripple - [GetSpellInfo(11435)] = 11435, -- Create Mallet of Zul'Farrak - [GetSpellInfo(21646)] = 21646, -- Conjure Circle of Calling - [GetSpellInfo(9092)] = 9092, -- Flesh Eating Worm - [GetSpellInfo(20757)] = 20757, -- Create Soulstone (Major) - [GetSpellInfo(3337)] = 3337, -- Heavy Grinding Stone - [GetSpellInfo(16644)] = 16644, -- Thorium Bracers - [GetSpellInfo(25178)] = 25178, -- Frost Weakness - [GetSpellInfo(5784)] = 5784, -- Summon Felsteed - [GetSpellInfo(19794)] = 19794, -- Spellpower Goggles Xtreme Plus - [GetSpellInfo(2163)] = 2163, -- White Leather Jerkin - [GetSpellInfo(3763)] = 3763, -- Fine Leather Belt - [GetSpellInfo(16084)] = 16084, -- Mottled Red Raptor - [GetSpellInfo(10533)] = 10533, -- Tough Scorpid Bracers - [GetSpellInfo(8677)] = 8677, -- Summon Effect - [GetSpellInfo(21355)] = 21355, -- Planting Guse's Beacon - [GetSpellInfo(9595)] = 9595, -- Attach Shaft to Medallion - [GetSpellInfo(17235)] = 17235, -- Raise Undead Scarab - [GetSpellInfo(15050)] = 15050, -- Psychometry - [GetSpellInfo(28394)] = 28394, -- Reputation - Ratchet +500 - [GetSpellInfo(10568)] = 10568, -- Tough Scorpid Leggings - [GetSpellInfo(30297)] = 30297, -- Heightened Senses - [GetSpellInfo(8348)] = 8348, -- Julie's Blessing - [GetSpellInfo(10793)] = 10793, -- Striped Nightsaber - [GetSpellInfo(7638)] = 7638, -- Potion Toss - [GetSpellInfo(10207)] = 10207, -- Scorch - [GetSpellInfo(2641)] = 2641, -- Dismiss Pet - [GetSpellInfo(1940)] = 1940, -- Rocket Blast - [GetSpellInfo(9208)] = 9208, -- Swift Boots - [GetSpellInfo(22567)] = 22567, -- Summon Ar'lia - [GetSpellInfo(7124)] = 7124, -- Arugal's Gift - [GetSpellInfo(19086)] = 19086, -- Ironfeather Breastplate - [GetSpellInfo(27660)] = 27660, -- Big Bag of Enchantment - [GetSpellInfo(23251)] = 23251, -- Swift Timber Wolf - [GetSpellInfo(468)] = 468, -- White Stallion - [GetSpellInfo(2667)] = 2667, -- Runed Copper Breastplate - [GetSpellInfo(21403)] = 21403, -- Ryson's All Seeing Eye - [GetSpellInfo(10096)] = 10096, -- Shrink - [GetSpellInfo(16562)] = 16562, -- Urok Minions Vanish - [GetSpellInfo(8776)] = 8776, -- Linen Belt - [GetSpellInfo(2840)] = 2840, -- Creeping Anguish - [GetSpellInfo(12806)] = 12806, -- Getting Tide Pool Sample #3 - [GetSpellInfo(3863)] = 3863, -- Spider Belt - [GetSpellInfo(12614)] = 12614, -- Mithril Heavy-bore Rifle - [GetSpellInfo(7078)] = 7078, -- Simple Teleport Group - [GetSpellInfo(9232)] = 9232, -- Scarlet Resurrection - [GetSpellInfo(13524)] = 13524, -- Curse of Stalvan - [GetSpellInfo(3924)] = 3924, -- Copper Tube - [GetSpellInfo(21143)] = 21143, -- Gingerbread Cookie - [GetSpellInfo(22990)] = 22990, -- The Forming - [GetSpellInfo(28207)] = 28207, -- Glacial Vest - [GetSpellInfo(22810)] = 22810, -- Opening - No Text - [GetSpellInfo(9201)] = 9201, -- Dusky Bracers - [GetSpellInfo(11464)] = 11464, -- Invisibility Potion - [GetSpellInfo(28482)] = 28482, -- Sylvan Shoulders - [GetSpellInfo(8489)] = 8489, -- Red Swashbuckler's Shirt - [GetSpellInfo(28487)] = 28487, -- Summon Terky - [GetSpellInfo(20201)] = 20201, -- Arcanite Rod - [GetSpellInfo(10001)] = 10001, -- Big Black Mace - [GetSpellInfo(28224)] = 28224, -- Icy Scale Bracers - [GetSpellInfo(22922)] = 22922, -- Mongoose Boots - [GetSpellInfo(8598)] = 8598, -- Lightning Blast - [GetSpellInfo(16072)] = 16072, -- Purify and Place Food - [GetSpellInfo(12906)] = 12906, -- Gnomish Battle Chicken - [GetSpellInfo(4971)] = 4971, -- Healing Ward - [GetSpellInfo(23012)] = 23012, -- Summon Orphan - [GetSpellInfo(17576)] = 17576, -- Greater Nature Protection Potion - [GetSpellInfo(23071)] = 23071, -- Truesilver Transformer - [GetSpellInfo(2335)] = 2335, -- Swiftness Potion - [GetSpellInfo(17014)] = 17014, -- Bone Shards - [GetSpellInfo(3975)] = 3975, -- Standard Scope - [GetSpellInfo(8762)] = 8762, -- Silk Headband - [GetSpellInfo(6413)] = 6413, -- Scorpid Surprise - [GetSpellInfo(7221)] = 7221, -- Iron Shield Spike - [GetSpellInfo(9858)] = 9858, -- Regrowth - [GetSpellInfo(11448)] = 11448, -- Greater Mana Potion - [GetSpellInfo(18238)] = 18238, -- Spotted Yellowtail - [GetSpellInfo(16138)] = 16138, -- Sharpen Blade V - [GetSpellInfo(19079)] = 19079, -- Stormshroud Armor - [GetSpellInfo(7084)] = 7084, -- Damage Car - [GetSpellInfo(5244)] = 5244, -- Kodo Hide Bag - [GetSpellInfo(6982)] = 6982, -- Gust of Wind - [GetSpellInfo(3757)] = 3757, -- Woolen Bag - [GetSpellInfo(10487)] = 10487, -- Thick Armor Kit - [GetSpellInfo(16742)] = 16742, -- Enchanted Thorium Helm - [GetSpellInfo(12083)] = 12083, -- Stormcloth Headband - [GetSpellInfo(25952)] = 25952, -- Reindeer Dust Effect - [GetSpellInfo(27552)] = 27552, -- Cupid's Arrow - [GetSpellInfo(24885)] = 24885, -- Create Crest of Beckoning: Air - [GetSpellInfo(24221)] = 24221, -- Quest - Teleport Spawn-out - [GetSpellInfo(2741)] = 2741, -- Bronze Axe - [GetSpellInfo(470)] = 470, -- Black Stallion - [GetSpellInfo(6957)] = 6957, -- Frostmane Strength - [GetSpellInfo(16655)] = 16655, -- Fiery Plate Gauntlets - [GetSpellInfo(9456)] = 9456, -- Tharnariun Cure 1 - [GetSpellInfo(25181)] = 25181, -- Arcane Weakness - [GetSpellInfo(15048)] = 15048, -- Summon Bomb - [GetSpellInfo(9912)] = 9912, -- Wrath - [GetSpellInfo(18666)] = 18666, -- Corrupt Redpath - [GetSpellInfo(3779)] = 3779, -- Barbaric Belt - [GetSpellInfo(22681)] = 22681, -- Shadowblink - [GetSpellInfo(10054)] = 10054, -- Conjure Mana Ruby - [GetSpellInfo(8606)] = 8606, -- Summon Cyclonian - [GetSpellInfo(20269)] = 20269, -- Enchanted Gaea Seed - [GetSpellInfo(23312)] = 23312, -- Time Lapse - [GetSpellInfo(5264)] = 5264, -- South Seas Pirate Disguise - [GetSpellInfo(19873)] = 19873, -- Destroy Egg - [GetSpellInfo(19057)] = 19057, -- Armor +40 - [GetSpellInfo(25031)] = 25031, -- Shoot Missile - [GetSpellInfo(2540)] = 2540, -- Roasted Boar Meat - [GetSpellInfo(16613)] = 16613, -- Displacing Temporal Rift - [GetSpellInfo(23431)] = 23431, -- Summon Leatherback Snapjaw - [GetSpellInfo(19059)] = 19059, -- Volcanic Leggings - [GetSpellInfo(6949)] = 6949, -- Weak Frostbolt - [GetSpellInfo(23338)] = 23338, -- Swift Stormsaber - [GetSpellInfo(19055)] = 19055, -- Runic Leather Gauntlets - [GetSpellInfo(16075)] = 16075, -- Throw Axe - [GetSpellInfo(18449)] = 18449, -- Runecloth Shoulders - [GetSpellInfo(3363)] = 3363, -- Summon Riding Gryphon - [GetSpellInfo(6576)] = 6576, -- Intimidating Growl - [GetSpellInfo(28393)] = 28393, -- Reputation - Booty Bay +500 - [GetSpellInfo(24649)] = 24649, -- Thousand Blades - [GetSpellInfo(23666)] = 23666, -- Flarecore Robe - [GetSpellInfo(10796)] = 10796, -- Turquoise Raptor - [GetSpellInfo(19093)] = 19093, -- Onyxia Scale Cloak - [GetSpellInfo(8774)] = 8774, -- Green Silken Shoulders - [GetSpellInfo(9657)] = 9657, -- Shadow Shell - [GetSpellInfo(3930)] = 3930, -- Crafted Heavy Shot - [GetSpellInfo(3207)] = 3207, -- Sol U - [GetSpellInfo(7421)] = 7421, -- Runed Copper Rod - [GetSpellInfo(17580)] = 17580, -- Major Mana Potion - [GetSpellInfo(3921)] = 3921, -- Deprecated Solid Shot - [GetSpellInfo(9771)] = 9771, -- Radiation Bolt - [GetSpellInfo(2399)] = 2399, -- Green Woolen Vest - [GetSpellInfo(22756)] = 22756, -- Sharpen Weapon - Critical - [GetSpellInfo(13262)] = 13262, -- Disenchant - [GetSpellInfo(11202)] = 11202, -- Crippling Poison - [GetSpellInfo(10674)] = 10674, -- Summon Cornish Rex - [GetSpellInfo(11790)] = 11790, -- Poison Cloud - [GetSpellInfo(11963)] = 11963, -- Enfeeble - [GetSpellInfo(690)] = 690, -- Firebolt II - [GetSpellInfo(12062)] = 12062, -- Stormcloth Pants - [GetSpellInfo(23241)] = 23241, -- Swift Blue Raptor - [GetSpellInfo(16642)] = 16642, -- Thorium Armor - [GetSpellInfo(7795)] = 7795, -- Runed Silver Rod - [GetSpellInfo(2645)] = 2645, -- Ghost Wolf - [GetSpellInfo(26423)] = 26423, -- Blue Rocket Cluster - [GetSpellInfo(26087)] = 26087, -- Core Felcloth Bag - [GetSpellInfo(24913)] = 24913, -- Darkrune Helm - [GetSpellInfo(9743)] = 9743, -- Delete Me - [GetSpellInfo(7077)] = 7077, -- Simple Teleport - [GetSpellInfo(3850)] = 3850, -- Heavy Woolen Pants - [GetSpellInfo(18375)] = 18375, -- Aynasha's Arrow - [GetSpellInfo(693)] = 693, -- Create Soulstone (Minor) - [GetSpellInfo(474)] = 474, -- Fumble - [GetSpellInfo(3770)] = 3770, -- Toughened Leather Gloves - [GetSpellInfo(3326)] = 3326, -- Coarse Grinding Stone - [GetSpellInfo(23082)] = 23082, -- Ultra-Flash Shadow Reflector - [GetSpellInfo(427)] = 427, -- Teleport Monastery - [GetSpellInfo(20650)] = 20650, -- Thick Leather - [GetSpellInfo(13399)] = 13399, -- Cultivate Packet of Seeds - [GetSpellInfo(2664)] = 2664, -- Runed Copper Bracers - [GetSpellInfo(3842)] = 3842, -- Handstitched Linen Britches - [GetSpellInfo(17455)] = 17455, -- Purple Mechanostrider - [GetSpellInfo(3562)] = 3562, -- Teleport: Ironforge - [GetSpellInfo(10705)] = 10705, -- Summon Eagle Owl - [GetSpellInfo(3498)] = 3498, -- Massive Iron Axe - [GetSpellInfo(3957)] = 3957, -- Ice Deflector - [GetSpellInfo(15648)] = 15648, -- Summon Corrupted Kitten - [GetSpellInfo(24368)] = 24368, -- Major Troll's Blood Potion - [GetSpellInfo(13548)] = 13548, -- Summon Farm Chicken - [GetSpellInfo(2167)] = 2167, -- Dark Leather Boots - [GetSpellInfo(66)] = 66, -- Lesser Invisibility - [GetSpellInfo(16988)] = 16988, -- Hammer of the Titans - [GetSpellInfo(15664)] = 15664, -- Venom Spit - [GetSpellInfo(1056)] = 1056, -- Slow Poison II - [GetSpellInfo(4980)] = 4980, -- Quick Frost Ward - [GetSpellInfo(11131)] = 11131, -- Icicle - [GetSpellInfo(9157)] = 9157, -- Create Mage's Robe - [GetSpellInfo(7135)] = 7135, -- Dark Leather Pants - [GetSpellInfo(24124)] = 24124, -- Blood Tiger Breastplate - [GetSpellInfo(12900)] = 12900, -- Mobile Alarm - [GetSpellInfo(23079)] = 23079, -- Major Recombobulator - [GetSpellInfo(28898)] = 28898, -- Blessed Wizard Oil - [GetSpellInfo(10482)] = 10482, -- Cured Thick Hide - [GetSpellInfo(16429)] = 16429, -- Piercing Shadow - [GetSpellInfo(10795)] = 10795, -- Ivory Raptor - [GetSpellInfo(7133)] = 7133, -- Fine Leather Pants - [GetSpellInfo(23136)] = 23136, -- Release J'eevee - [GetSpellInfo(5106)] = 5106, -- Crystal Flash - [GetSpellInfo(3115)] = 3115, -- Rough Weightstone - [GetSpellInfo(3230)] = 3230, -- Elixir of Minor Agility - [GetSpellInfo(28739)] = 28739, -- Summon Mr. Wiggles - [GetSpellInfo(11761)] = 11761, -- Scorpid Sample - [GetSpellInfo(8986)] = 8986, -- Summon Illusionary Phantasm - [GetSpellInfo(4526)] = 4526, -- Mass Dispell - [GetSpellInfo(428)] = 428, -- Teleport Moonbrook - [GetSpellInfo(18989)] = 18989, -- Gray Kodo - [GetSpellInfo(3944)] = 3944, -- Flame Deflector - [GetSpellInfo(134)] = 134, -- Fire Shield - [GetSpellInfo(22724)] = 22724, -- Black War Wolf - [GetSpellInfo(23008)] = 23008, -- Powerful Seaforium Charge - [GetSpellInfo(6201)] = 6201, -- Create Healthstone (Minor) - [GetSpellInfo(3407)] = 3407, -- Rune of Opening - [GetSpellInfo(6487)] = 6487, -- Ilkrud's Guardians - [GetSpellInfo(3173)] = 3173, -- Lesser Mana Potion - [GetSpellInfo(16989)] = 16989, -- Planting Banner - [GetSpellInfo(18952)] = 18952, -- Opening Termite Barrel - [GetSpellInfo(10564)] = 10564, -- Tough Scorpid Shoulders - [GetSpellInfo(5407)] = 5407, -- Segra Darkthorn Effect - [GetSpellInfo(20804)] = 20804, -- Triage - [GetSpellInfo(23706)] = 23706, -- Golden Mantle of the Dawn - [GetSpellInfo(8272)] = 8272, -- Mind Tremor - [GetSpellInfo(6458)] = 6458, -- Ornate Spyglass - [GetSpellInfo(23077)] = 23077, -- Gyrofreeze Ice Reflector - [GetSpellInfo(16732)] = 16732, -- Runic Plate Leggings - [GetSpellInfo(3848)] = 3848, -- Double-stitched Woolen Shoulders - [GetSpellInfo(2385)] = 2385, -- Brown Linen Vest - [GetSpellInfo(9513)] = 9513, -- Thistle Tea - [GetSpellInfo(11468)] = 11468, -- Elixir of Dream Vision - [GetSpellInfo(8040)] = 8040, -- Druid's Slumber - [GetSpellInfo(2658)] = 2658, -- Smelt Silver - [GetSpellInfo(24141)] = 24141, -- Darksoul Shoulders - [GetSpellInfo(22727)] = 22727, -- Core Armor Kit - [GetSpellInfo(24302)] = 24302, -- Eternium Fishing Line - [GetSpellInfo(3774)] = 3774, -- Green Leather Belt - [GetSpellInfo(110)] = 110, -- Spell Deflection (NYI) - [GetSpellInfo(3933)] = 3933, -- Small Seaforium Charge - [GetSpellInfo(457)] = 457, -- Feeblemind - [GetSpellInfo(2333)] = 2333, -- Elixir of Lesser Agility - [GetSpellInfo(11792)] = 11792, -- Opening Cage - [GetSpellInfo(18436)] = 18436, -- Robe of Winter Night - [GetSpellInfo(22723)] = 22723, -- Black War Tiger - [GetSpellInfo(18451)] = 18451, -- Felcloth Robe - [GetSpellInfo(26427)] = 26427, -- Large Green Rocket Cluster - [GetSpellInfo(9206)] = 9206, -- Dusky Belt - [GetSpellInfo(7643)] = 7643, -- Greater Adept's Robe - [GetSpellInfo(3175)] = 3175, -- Limited Invulnerability Potion - [GetSpellInfo(7437)] = 7437, -- Break Stuff - [GetSpellInfo(3865)] = 3865, -- Bolt of Mageweave - [GetSpellInfo(11802)] = 11802, -- Dark Iron Land Mine - [GetSpellInfo(17572)] = 17572, -- Purification Potion - [GetSpellInfo(23664)] = 23664, -- Argent Boots - [GetSpellInfo(26403)] = 26403, -- Festive Red Dress - [GetSpellInfo(24399)] = 24399, -- Dark Iron Boots - [GetSpellInfo(8772)] = 8772, -- Crimson Silk Belt - [GetSpellInfo(9461)] = 9461, -- Summon Swamp Ooze - [GetSpellInfo(26298)] = 26298, -- Create Firework Rocket Launcher - [GetSpellInfo(17638)] = 17638, -- Flask of Chromatic Resistance - [GetSpellInfo(16728)] = 16728, -- Helm of the Great Chief - [GetSpellInfo(3307)] = 3307, -- Smelt Iron - [GetSpellInfo(17180)] = 17180, -- Enchanted Thorium - [GetSpellInfo(19561)] = 19561, -- Summon Gnashjaw - [GetSpellInfo(10418)] = 10418, -- Arugal spawn-in spell - [GetSpellInfo(24923)] = 24923, -- Honor Points +398 - [GetSpellInfo(10684)] = 10684, -- Summon Senegal - [GetSpellInfo(3488)] = 3488, -- Felstrom Resurrection - [GetSpellInfo(10619)] = 10619, -- Dragonscale Gauntlets - [GetSpellInfo(24258)] = 24258, -- Quest - Troll Hero Summon Visual - [GetSpellInfo(12081)] = 12081, -- Admiral's Hat - [GetSpellInfo(24194)] = 24194, -- Uther's Tribute - [GetSpellInfo(20549)] = 20549, -- War Stomp - [GetSpellInfo(23509)] = 23509, -- Frostwolf Howler - [GetSpellInfo(23042)] = 23042, -- Call Benediction - [GetSpellInfo(11757)] = 11757, -- Digging for Cobalt - [GetSpellInfo(9070)] = 9070, -- Black Whelp Cloak - [GetSpellInfo(16053)] = 16053, -- Dominion of Soul - [GetSpellInfo(5262)] = 5262, -- Fanatic Blade - [GetSpellInfo(22594)] = 22594, -- Frost Mantle of the Dawn - [GetSpellInfo(11759)] = 11759, -- Basilisk Sample - [GetSpellInfo(4954)] = 4954, -- Break Tool - [GetSpellInfo(18990)] = 18990, -- Brown Kodo - [GetSpellInfo(15119)] = 15119, -- Apply Seduction Gland - [GetSpellInfo(19092)] = 19092, -- Wicked Leather Belt - [GetSpellInfo(16665)] = 16665, -- Runic Plate Boots - [GetSpellInfo(2053)] = 2053, -- Lesser Heal - [GetSpellInfo(18419)] = 18419, -- Felcloth Pants - [GetSpellInfo(25793)] = 25793, -- Demon Summoning Torch - [GetSpellInfo(6471)] = 6471, -- Tiny Iron Key - [GetSpellInfo(3914)] = 3914, -- Brown Linen Pants - [GetSpellInfo(19795)] = 19795, -- Thorium Tube - [GetSpellInfo(9961)] = 9961, -- Mithril Coif - [GetSpellInfo(25030)] = 25030, -- Shoot Rocket - [GetSpellInfo(26656)] = 26656, -- Summon Black Qiraji Battle Tank - [GetSpellInfo(10546)] = 10546, -- Wild Leather Helmet - [GetSpellInfo(10499)] = 10499, -- Nightscape Tunic - [GetSpellInfo(12595)] = 12595, -- Mithril Blunderbuss - [GetSpellInfo(17923)] = 17923, -- Searing Pain - [GetSpellInfo(8812)] = 8812, -- Heal - [GetSpellInfo(18447)] = 18447, -- Mooncloth Vest - [GetSpellInfo(7057)] = 7057, -- Haunting Spirits - [GetSpellInfo(7918)] = 7918, -- Shoot Gun - [GetSpellInfo(9148)] = 9148, -- Pilferer's Gloves - [GetSpellInfo(24242)] = 24242, -- Swift Razzashi Raptor - [GetSpellInfo(7106)] = 7106, -- Dark Restore - [GetSpellInfo(7893)] = 7893, -- Stylish Green Shirt - [GetSpellInfo(7258)] = 7258, -- Frost Protection Potion - [GetSpellInfo(24848)] = 24848, -- Spitfire Breastplate - [GetSpellInfo(8795)] = 8795, -- Azure Shoulders - [GetSpellInfo(11840)] = 11840, -- Summon Edana Hatetalon - [GetSpellInfo(10015)] = 10015, -- Truesilver Champion - [GetSpellInfo(271)] = 271, -- Call of the Void - [GetSpellInfo(867)] = 867, -- Fumble III - [GetSpellInfo(13028)] = 13028, -- Goldthorn Tea - [GetSpellInfo(18976)] = 18976, -- Self Resurrection - [GetSpellInfo(17563)] = 17563, -- Transmute: Undeath to Water - [GetSpellInfo(3294)] = 3294, -- Thick War Axe - [GetSpellInfo(17459)] = 17459, -- Icy Blue Mechanostrider - [GetSpellInfo(29480)] = 29480, -- Fortitude of the Scourge - [GetSpellInfo(3859)] = 3859, -- Azure Silk Vest - [GetSpellInfo(2738)] = 2738, -- Copper Axe - [GetSpellInfo(26010)] = 26010, -- Summon Tranquil Mechanical Yeti - [GetSpellInfo(22721)] = 22721, -- Black War Raptor - [GetSpellInfo(25298)] = 25298, -- Starfire - [GetSpellInfo(2963)] = 2963, -- Bolt of Linen Cloth - [GetSpellInfo(16983)] = 16983, -- Serenity - [GetSpellInfo(9059)] = 9059, -- Handstitched Leather Bracers - [GetSpellInfo(19435)] = 19435, -- Mooncloth Boots - [GetSpellInfo(24421)] = 24421, -- Zandalar Signet of Mojo - [GetSpellInfo(2168)] = 2168, -- Dark Leather Cloak - [GetSpellInfo(3964)] = 3964, -- Deprecated BKP "Impact" Shot - [GetSpellInfo(16992)] = 16992, -- Frostguard - [GetSpellInfo(11760)] = 11760, -- Hyena Sample - [GetSpellInfo(26055)] = 26055, -- Summon Yellow Qiraji Battle Tank - [GetSpellInfo(4075)] = 4075, -- Large Seaforium Charge - [GetSpellInfo(7992)] = 7992, -- Slowing Poison - [GetSpellInfo(13628)] = 13628, -- Runed Golden Rod - [GetSpellInfo(23192)] = 23192, -- Forming Rhok'delar - [GetSpellInfo(3496)] = 3496, -- Moonsteel Broadsword - [GetSpellInfo(3561)] = 3561, -- Teleport: Stormwind - [GetSpellInfo(21939)] = 21939, -- Create Scepter of Celebras - [GetSpellInfo(19074)] = 19074, -- Frostsaber Leggings - [GetSpellInfo(26381)] = 26381, -- Burrow - [GetSpellInfo(16729)] = 16729, -- Lionheart Helm - [GetSpellInfo(19791)] = 19791, -- Thorium Widget - [GetSpellInfo(29333)] = 29333, -- Midsummer Sausage - [GetSpellInfo(2660)] = 2660, -- Rough Sharpening Stone - [GetSpellInfo(3925)] = 3925, -- Rough Boomstick - [GetSpellInfo(19075)] = 19075, -- Heavy Scorpid Leggings - [GetSpellInfo(22866)] = 22866, -- Belt of the Archmage - [GetSpellInfo(8690)] = 8690, -- Hearthstone - [GetSpellInfo(27890)] = 27890, -- Clone - [GetSpellInfo(24024)] = 24024, -- Unstable Concoction - [GetSpellInfo(982)] = 982, -- Revive Pet - [GetSpellInfo(3777)] = 3777, -- Guardian Leather Bracers - [GetSpellInfo(17567)] = 17567, -- Summon Blood Parrot - [GetSpellInfo(9916)] = 9916, -- Steel Breastplate - [GetSpellInfo(9813)] = 9813, -- Barbaric Iron Breastplate - [GetSpellInfo(16629)] = 16629, -- Attuned Dampener - [GetSpellInfo(10709)] = 10709, -- Summon Prairie Dog - [GetSpellInfo(4068)] = 4068, -- Iron Grenade - [GetSpellInfo(10617)] = 10617, -- Release Rageclaw - [GetSpellInfo(20916)] = 20916, -- Mithril Headed Trout - [GetSpellInfo(9993)] = 9993, -- Heavy Mithril Axe - [GetSpellInfo(6905)] = 6905, -- Summon Illusionary Nightmare - [GetSpellInfo(9058)] = 9058, -- Handstitched Leather Cloak - [GetSpellInfo(8686)] = 8686, -- Instant Poison II - [GetSpellInfo(6418)] = 6418, -- Crispy Lizard Tail - [GetSpellInfo(25807)] = 25807, -- Great Heal - [GetSpellInfo(26421)] = 26421, -- Large Green Rocket - [GetSpellInfo(28732)] = 28732, -- Widow's Embrace - [GetSpellInfo(18113)] = 18113, -- Manifestation Cleansing - [GetSpellInfo(2835)] = 2835, -- Deadly Poison - [GetSpellInfo(10837)] = 10837, -- Goblin Land Mine - [GetSpellInfo(26277)] = 26277, -- Elixir of Greater Firepower - [GetSpellInfo(513)] = 513, -- Earth Elemental - [GetSpellInfo(13901)] = 13901, -- Arcane Bolt - [GetSpellInfo(3449)] = 3449, -- Shadow Oil - [GetSpellInfo(15783)] = 15783, -- Blizzard - [GetSpellInfo(25004)] = 25004, -- Throw Nightmare Object - [GetSpellInfo(7821)] = 7821, -- Transform Victim - [GetSpellInfo(3678)] = 3678, -- Focusing - [GetSpellInfo(16643)] = 16643, -- Thorium Belt - [GetSpellInfo(24266)] = 24266, -- Gurubashi Mojo Madness - [GetSpellInfo(19061)] = 19061, -- Living Shoulders - [GetSpellInfo(12346)] = 12346, -- Awaken the Soulflayer - [GetSpellInfo(6656)] = 6656, -- Remote Detonate - [GetSpellInfo(16980)] = 16980, -- Rune Edge - [GetSpellInfo(507)] = 507, -- Fumble II - [GetSpellInfo(8791)] = 8791, -- Crimson Silk Vest - [GetSpellInfo(27589)] = 27589, -- Black Grasp of the Destroyer - [GetSpellInfo(28324)] = 28324, -- Forming Frame of Atiesh - [GetSpellInfo(10849)] = 10849, -- Form of the Moonstalker (no invis) - [GetSpellInfo(5206)] = 5206, -- Plant Seeds - [GetSpellInfo(3505)] = 3505, -- Golden Scale Shoulders - [GetSpellInfo(20737)] = 20737, -- Summon Karang's Banner - [GetSpellInfo(16502)] = 16502, -- Release Winna's Kitten - [GetSpellInfo(10516)] = 10516, -- Nightscape Shoulders - [GetSpellInfo(21066)] = 21066, -- Void Bolt - [GetSpellInfo(19097)] = 19097, -- Devilsaur Leggings - [GetSpellInfo(12260)] = 12260, -- Rough Copper Vest - [GetSpellInfo(23703)] = 23703, -- Might of the Timbermaw - [GetSpellInfo(11343)] = 11343, -- Instant Poison VI - [GetSpellInfo(3758)] = 3758, -- Green Woolen Bag - [GetSpellInfo(697)] = 697, -- Summon Voidwalker - [GetSpellInfo(28461)] = 28461, -- Ironvine Breastplate - [GetSpellInfo(12074)] = 12074, -- Black Mageweave Shoulders - [GetSpellInfo(3206)] = 3206, -- Sol H - [GetSpellInfo(3839)] = 3839, -- Bolt of Silk Cloth - [GetSpellInfo(3756)] = 3756, -- Embossed Leather Gloves - [GetSpellInfo(20873)] = 20873, -- Fiery Chain Shoulders - [GetSpellInfo(15303)] = 15303, -- DEBUG Create Samophlange Manual - [GetSpellInfo(15463)] = 15463, -- Legendary Arcane Amalgamation - [GetSpellInfo(10719)] = 10719, -- Summon Ribbon Snake - [GetSpellInfo(7928)] = 7928, -- Silk Bandage - [GetSpellInfo(443)] = 443, -- Teleport Barracks - [GetSpellInfo(2837)] = 2837, -- Deadly Poison II - [GetSpellInfo(8532)] = 8532, -- Aquadynamic Fish Lens - [GetSpellInfo(11419)] = 11419, -- Portal: Darnassus - [GetSpellInfo(8617)] = 8617, -- Skinning - [GetSpellInfo(17646)] = 17646, -- Summon Onyxia Whelp - [GetSpellInfo(16647)] = 16647, -- Imperial Plate Belt - [GetSpellInfo(26416)] = 26416, -- Small Blue Rocket - [GetSpellInfo(11472)] = 11472, -- Elixir of Giants - [GetSpellInfo(2396)] = 2396, -- Green Linen Shirt - [GetSpellInfo(19071)] = 19071, -- Wicked Leather Headband - [GetSpellInfo(6703)] = 6703, -- Murloc Scale Breastplate - [GetSpellInfo(12719)] = 12719, -- Explosive Arrow - [GetSpellInfo(3429)] = 3429, -- Plague Mind - [GetSpellInfo(877)] = 877, -- Elemental Fury - [GetSpellInfo(18244)] = 18244, -- Poached Sunscale Salmon - [GetSpellInfo(13982)] = 13982, -- Bael'Gar's Fiery Essence - [GetSpellInfo(7761)] = 7761, -- Shared Bonds - [GetSpellInfo(3960)] = 3960, -- Portable Bronze Mortar - [GetSpellInfo(28353)] = 28353, -- Raise Dead - [GetSpellInfo(18559)] = 18559, -- Demon Pick - [GetSpellInfo(9437)] = 9437, -- Placing Bear Trap - [GetSpellInfo(6702)] = 6702, -- Murloc Scale Belt - [GetSpellInfo(23221)] = 23221, -- Swift Frostsaber - [GetSpellInfo(3117)] = 3117, -- Heavy Weightstone - [GetSpellInfo(3659)] = 3659, -- Mage Sight - [GetSpellInfo(20872)] = 20872, -- Fiery Chain Girdle - [GetSpellInfo(16599)] = 16599, -- Blessing of Shahram - [GetSpellInfo(15033)] = 15033, -- Summon Ancient Spirits - [GetSpellInfo(26442)] = 26442, -- Firework Launcher - [GetSpellInfo(3504)] = 3504, -- Green Iron Shoulders - [GetSpellInfo(25037)] = 25037, -- Rumsey Rum Light - [GetSpellInfo(3721)] = 3721, -- Teleport Altar of the Tides - [GetSpellInfo(28891)] = 28891, -- Consecrated Weapon - [GetSpellInfo(3858)] = 3858, -- Shadow Hood - [GetSpellInfo(28148)] = 28148, -- Portal: Karazhan - [GetSpellInfo(24091)] = 24091, -- Bloodvine Vest - [GetSpellInfo(23069)] = 23069, -- EZ-Thro Dynamite II - [GetSpellInfo(19773)] = 19773, -- Elemental Fire - [GetSpellInfo(10013)] = 10013, -- Ebon Shiv - [GetSpellInfo(3332)] = 3332, -- Slow Poison - [GetSpellInfo(19830)] = 19830, -- Arcanite Dragonling - [GetSpellInfo(2675)] = 2675, -- Shining Silver Breastplate - [GetSpellInfo(22906)] = 22906, -- Plunging Blade into Onyxia - [GetSpellInfo(12259)] = 12259, -- Silvered Bronze Leggings - [GetSpellInfo(23629)] = 23629, -- Heavy Timbermaw Boots - [GetSpellInfo(3172)] = 3172, -- Minor Magic Resistance Potion - [GetSpellInfo(10005)] = 10005, -- Dazzling Mithril Rapier - [GetSpellInfo(5213)] = 5213, -- Molten Metal - [GetSpellInfo(10525)] = 10525, -- Tough Scorpid Breastplate - [GetSpellInfo(23123)] = 23123, -- Cairne's Hoofprint - [GetSpellInfo(17015)] = 17015, -- Destroy Tent - [GetSpellInfo(24896)] = 24896, -- Create Scepter of Beckoning: Air - [GetSpellInfo(23486)] = 23486, -- Dimensional Ripper - Everlook - [GetSpellInfo(11537)] = 11537, -- Charge Stave of Equinex - [GetSpellInfo(9920)] = 9920, -- Solid Grinding Stone - [GetSpellInfo(10685)] = 10685, -- Summon Ancona - [GetSpellInfo(17561)] = 17561, -- Transmute: Earth to Water - [GetSpellInfo(27588)] = 27588, -- Light Obsidian Belt - [GetSpellInfo(8797)] = 8797, -- Earthen Silk Belt - [GetSpellInfo(16639)] = 16639, -- Dense Grinding Stone - [GetSpellInfo(2543)] = 2543, -- Westfall Stew - [GetSpellInfo(8334)] = 8334, -- Practice Lock - [GetSpellInfo(17187)] = 17187, -- Transmute: Arcanite - [GetSpellInfo(7181)] = 7181, -- Greater Healing Potion - [GetSpellInfo(20777)] = 20777, -- Ancestral Spirit - [GetSpellInfo(20752)] = 20752, -- Create Soulstone (Lesser) - [GetSpellInfo(10717)] = 10717, -- Summon Crimson Snake - [GetSpellInfo(7487)] = 7487, -- Call Bleak Worg - [GetSpellInfo(12534)] = 12534, -- Flames of Retribution - [GetSpellInfo(26103)] = 26103, -- Sweep - [GetSpellInfo(21728)] = 21728, -- Planting Ichman's Beacon - [GetSpellInfo(25159)] = 25159, -- Call Prismatic Barrier - [GetSpellInfo(17166)] = 17166, -- Release Umi's Yeti - [GetSpellInfo(16597)] = 16597, -- Curse of Shahram - [GetSpellInfo(13895)] = 13895, -- Summon Spawn of Bael'Gar - [GetSpellInfo(4153)] = 4153, -- Guile of the Raptor - [GetSpellInfo(11433)] = 11433, -- Death & Decay - [GetSpellInfo(3776)] = 3776, -- Green Leather Bracers - [GetSpellInfo(968)] = 968, -- Feral Spirit II - [GetSpellInfo(5166)] = 5166, -- Harvest Silithid Egg - [GetSpellInfo(3765)] = 3765, -- Dark Leather Gloves - [GetSpellInfo(3396)] = 3396, -- Corrosive Poison - [GetSpellInfo(23339)] = 23339, -- Wing Buffet - [GetSpellInfo(7837)] = 7837, -- Fire Oil - [GetSpellInfo(15292)] = 15292, -- Dark Iron Pulverizer - [GetSpellInfo(2662)] = 2662, -- Copper Chain Pants - [GetSpellInfo(20530)] = 20530, -- Bind Chapter 2 - [GetSpellInfo(15114)] = 15114, -- Summon Illusionary Dreamwatchers - [GetSpellInfo(8398)] = 8398, -- Frostbolt Volley - [GetSpellInfo(3845)] = 3845, -- Soft-soled Linen Boots - [GetSpellInfo(18809)] = 18809, -- Pyroblast - [GetSpellInfo(6250)] = 6250, -- Fire Cannon - [GetSpellInfo(23453)] = 23453, -- Gnomish Transporter - [GetSpellInfo(12068)] = 12068, -- Stormcloth Vest - [GetSpellInfo(2547)] = 2547, -- Redridge Goulash - [GetSpellInfo(9060)] = 9060, -- Light Leather Quiver - [GetSpellInfo(12624)] = 12624, -- Mithril Mechanical Dragonling - [GetSpellInfo(11661)] = 11661, -- Shadow Bolt - [GetSpellInfo(12460)] = 12460, -- Sniper Scope - [GetSpellInfo(555)] = 555, -- Feral Spirit - [GetSpellInfo(6897)] = 6897, -- Blue Ram - [GetSpellInfo(6692)] = 6692, -- Robes of Arcana - [GetSpellInfo(24377)] = 24377, -- Destroy Bijou - [GetSpellInfo(13229)] = 13229, -- Wound Poison III - [GetSpellInfo(3655)] = 3655, -- Summon Shield Guard - [GetSpellInfo(18446)] = 18446, -- Wizardweave Robe - [GetSpellInfo(3856)] = 3856, -- Spider Silk Slippers - [GetSpellInfo(7639)] = 7639, -- Blue Overalls - [GetSpellInfo(9614)] = 9614, -- Rift Beacon - [GetSpellInfo(18404)] = 18404, -- Frostweave Robe - [GetSpellInfo(7068)] = 7068, -- Veil of Shadow - [GetSpellInfo(15712)] = 15712, -- Linken's Boomerang - [GetSpellInfo(28209)] = 28209, -- Glacial Wrists - [GetSpellInfo(7791)] = 7791, -- Teleport - [GetSpellInfo(7935)] = 7935, -- Strong Anti-Venom - [GetSpellInfo(3871)] = 3871, -- Formal White Shirt - [GetSpellInfo(11654)] = 11654, -- Call of Sul'thraze - [GetSpellInfo(7967)] = 7967, -- Naralex's Nightmare - [GetSpellInfo(12061)] = 12061, -- Orange Mageweave Shirt - [GetSpellInfo(6661)] = 6661, -- Barbaric Harness - [GetSpellInfo(7155)] = 7155, -- CreatureSpecial - [GetSpellInfo(2397)] = 2397, -- Reinforced Linen Cape - [GetSpellInfo(22902)] = 22902, -- Mooncloth Robe - [GetSpellInfo(10699)] = 10699, -- Summon Bronze Whelpling - [GetSpellInfo(14030)] = 14030, -- Hooked Net - [GetSpellInfo(18402)] = 18402, -- Runecloth Belt - [GetSpellInfo(18454)] = 18454, -- Gloves of Spell Mastery - [GetSpellInfo(8286)] = 8286, -- Summon Boar Spirit - [GetSpellInfo(3873)] = 3873, -- Black Swashbuckler's Shirt - [GetSpellInfo(3321)] = 3321, -- Copper Chain Vest - [GetSpellInfo(6517)] = 6517, -- Pearl-handled Dagger - [GetSpellInfo(34)] = 34, -- Teleport Duskwood - [GetSpellInfo(21047)] = 21047, -- Corrosive Acid Spit - [GetSpellInfo(15549)] = 15549, -- Chained Bolt - [GetSpellInfo(1122)] = 1122, -- Inferno - [GetSpellInfo(26425)] = 26425, -- Red Rocket Cluster - [GetSpellInfo(11458)] = 11458, -- Wildvine Potion - [GetSpellInfo(3143)] = 3143, -- Glacial Roar - [GetSpellInfo(17474)] = 17474, -- Find Relic Fragment - [GetSpellInfo(23140)] = 23140, -- J'eevee summons object - [GetSpellInfo(21559)] = 21559, -- Shredder Armor Melt - [GetSpellInfo(22909)] = 22909, -- Eye of Immol'thar - [GetSpellInfo(3319)] = 3319, -- Copper Chain Boots - [GetSpellInfo(24706)] = 24706, -- Toss Stink Bomb - [GetSpellInfo(20693)] = 20693, -- Summon Lost Amulet - [GetSpellInfo(20626)] = 20626, -- Undermine Clam Chowder - [GetSpellInfo(9654)] = 9654, -- Jumping Lightning - [GetSpellInfo(5137)] = 5137, -- Call of the Grave - [GetSpellInfo(15972)] = 15972, -- Glinting Steel Dagger - [GetSpellInfo(8766)] = 8766, -- Azure Silk Belt - [GetSpellInfo(3764)] = 3764, -- Hillman's Leather Gloves - [GetSpellInfo(8919)] = 8919, -- Fill Jennea's Flask - [GetSpellInfo(11480)] = 11480, -- Transmute: Mithril to Truesilver - [GetSpellInfo(5169)] = 5169, -- Defias Disguise - [GetSpellInfo(3371)] = 3371, -- Blood Sausage - [GetSpellInfo(23316)] = 23316, -- Ignite Flesh - [GetSpellInfo(22599)] = 22599, -- Chromatic Mantle of the Dawn - [GetSpellInfo(15748)] = 15748, -- Freeze Rookery Egg - [GetSpellInfo(22647)] = 22647, -- Empower Pet - [GetSpellInfo(20733)] = 20733, -- Black Arrow - [GetSpellInfo(19788)] = 19788, -- Dense Blasting Powder - [GetSpellInfo(8682)] = 8682, -- Fake Shot - [GetSpellInfo(3771)] = 3771, -- Barbaric Gloves - [GetSpellInfo(7955)] = 7955, -- Deviate Scale Belt - [GetSpellInfo(8786)] = 8786, -- Azure Silk Cloak - [GetSpellInfo(21648)] = 21648, -- Call to Ivus - [GetSpellInfo(12151)] = 12151, -- Summon Atal'ai Skeleton - [GetSpellInfo(28614)] = 28614, -- Pointy Spike - [GetSpellInfo(7277)] = 7277, -- Harvest Swarm - [GetSpellInfo(8282)] = 8282, -- Curse of Blood - [GetSpellInfo(27830)] = 27830, -- Persuader - [GetSpellInfo(3851)] = 3851, -- Phoenix Pants - [GetSpellInfo(20874)] = 20874, -- Dark Iron Bracers - [GetSpellInfo(19081)] = 19081, -- Chimeric Vest - [GetSpellInfo(7259)] = 7259, -- Nature Protection Potion - [GetSpellInfo(9744)] = 9744, -- Jarkal's Translation - [GetSpellInfo(24874)] = 24874, -- Create Crest of Beckoning: Fire - [GetSpellInfo(7949)] = 7949, -- Summon Viper - [GetSpellInfo(31364)] = 31364, -- Spice Mortar - [GetSpellInfo(24366)] = 24366, -- Greater Dreamless Sleep Potion - [GetSpellInfo(21652)] = 21652, -- Closing - [GetSpellInfo(1124)] = 1124, -- Hellfire II - [GetSpellInfo(7488)] = 7488, -- Call Slavering Worg - [GetSpellInfo(23665)] = 23665, -- Argent Shoulders - [GetSpellInfo(7951)] = 7951, -- Toxic Spit - [GetSpellInfo(19470)] = 19470, -- Gem of the Serpent - [GetSpellInfo(2542)] = 2542, -- Goretusk Liver Pie - [GetSpellInfo(895)] = 895, -- Fire Elemental - [GetSpellInfo(23228)] = 23228, -- Swift White Steed - [GetSpellInfo(7841)] = 7841, -- Swim Speed Potion - [GetSpellInfo(17636)] = 17636, -- Flask of Distilled Wisdom - [GetSpellInfo(10686)] = 10686, -- Summon Prairie Chicken - [GetSpellInfo(10318)] = 10318, -- Holy Wrath - [GetSpellInfo(3718)] = 3718, -- Syndicate Bomb - [GetSpellInfo(20436)] = 20436, -- Drunken Pit Crew - [GetSpellInfo(19103)] = 19103, -- Runic Leather Shoulders - [GetSpellInfo(1936)] = 1936, -- Teleport Anvilmar - [GetSpellInfo(23231)] = 23231, -- Binding Volume I - [GetSpellInfo(10873)] = 10873, -- Red Mechanostrider - [GetSpellInfo(20876)] = 20876, -- Dark Iron Leggings - [GetSpellInfo(26588)] = 26588, -- Opening Greater Scarab Coffer - [GetSpellInfo(16588)] = 16588, -- Dark Mending - [GetSpellInfo(18410)] = 18410, -- Ghostweave Belt - [GetSpellInfo(19084)] = 19084, -- Devilsaur Gauntlets - [GetSpellInfo(18401)] = 18401, -- Bolt of Runecloth - [GetSpellInfo(24264)] = 24264, -- Extinguish - [GetSpellInfo(7920)] = 7920, -- Mebok Smart Drink - [GetSpellInfo(20875)] = 20875, -- Rumsey Rum - [GetSpellInfo(932)] = 932, -- Replenish Spirit II - [GetSpellInfo(12564)] = 12564, -- Summon Treasure Horde Visual - [GetSpellInfo(24189)] = 24189, -- Force Punch - [GetSpellInfo(9064)] = 9064, -- Rugged Leather Pants - [GetSpellInfo(8804)] = 8804, -- Crimson Silk Gloves - [GetSpellInfo(22927)] = 22927, -- Hide of the Wild - [GetSpellInfo(4962)] = 4962, -- Encasing Webs - [GetSpellInfo(26167)] = 26167, -- Colossal Smash - [GetSpellInfo(10697)] = 10697, -- Summon Crimson Whelpling - [GetSpellInfo(22562)] = 22562, -- Fill Amethyst Phial - [GetSpellInfo(9146)] = 9146, -- Herbalist's Gloves - [GetSpellInfo(15057)] = 15057, -- Mechanical Patch Kit - [GetSpellInfo(18408)] = 18408, -- Cindercloth Vest - [GetSpellInfo(15781)] = 15781, -- Steel Mechanostrider - [GetSpellInfo(12087)] = 12087, -- Stormcloth Shoulders - [GetSpellInfo(21923)] = 21923, -- Elixir of Frost Power - [GetSpellInfo(7364)] = 7364, -- Light Torch - [GetSpellInfo(5668)] = 5668, -- Peasant Disguise - [GetSpellInfo(25314)] = 25314, -- Greater Heal - [GetSpellInfo(12619)] = 12619, -- Hi-Explosive Bomb - [GetSpellInfo(2672)] = 2672, -- Patterned Bronze Bracers - [GetSpellInfo(6758)] = 6758, -- Party Fever - [GetSpellInfo(15293)] = 15293, -- Dark Iron Mail - [GetSpellInfo(4981)] = 4981, -- Inducing Vision - [GetSpellInfo(2336)] = 2336, -- Elixir of Tongues - [GetSpellInfo(2362)] = 2362, -- Create Spellstone - [GetSpellInfo(11477)] = 11477, -- Elixir of Demonslaying - [GetSpellInfo(2659)] = 2659, -- Smelt Bronze - [GetSpellInfo(13899)] = 13899, -- Fire Storm - [GetSpellInfo(22808)] = 22808, -- Elixir of Greater Water Breathing - [GetSpellInfo(24576)] = 24576, -- Chromatic Mount - [GetSpellInfo(10706)] = 10706, -- Summon Hawk Owl - [GetSpellInfo(2673)] = 2673, -- Silvered Bronze Breastplate - [GetSpellInfo(2601)] = 2601, -- Fire Shield III - [GetSpellInfo(2156)] = 2156, -- Light Winter Cloak - [GetSpellInfo(22718)] = 22718, -- Black War Kodo - [GetSpellInfo(3277)] = 3277, -- Wool Bandage - [GetSpellInfo(24239)] = 24239, -- Hammer of Wrath - [GetSpellInfo(28208)] = 28208, -- Glacial Cloak - [GetSpellInfo(849)] = 849, -- Elemental Armor - [GetSpellInfo(10560)] = 10560, -- Big Voodoo Pants - [GetSpellInfo(6693)] = 6693, -- Green Silk Pack - [GetSpellInfo(24140)] = 24140, -- Darksoul Leggings - [GetSpellInfo(30021)] = 30021, -- Crystal Infused Bandage - [GetSpellInfo(16798)] = 16798, -- Enchanting Lullaby - [GetSpellInfo(8809)] = 8809, -- Slave Drain - [GetSpellInfo(5265)] = 5265, -- Stonesplinter Trogg Disguise - [GetSpellInfo(28222)] = 28222, -- Icy Scale Breastplate - [GetSpellInfo(18420)] = 18420, -- Brightcloth Cloak - [GetSpellInfo(24887)] = 24887, -- Create Crest of Beckoning: Earth - [GetSpellInfo(4130)] = 4130, -- Banish Burning Exile - [GetSpellInfo(2329)] = 2329, -- Elixir of Lion's Strength - [GetSpellInfo(13478)] = 13478, -- Opening Relic Coffer - [GetSpellInfo(13583)] = 13583, -- Curse of the Deadwood - [GetSpellInfo(18571)] = 18571, -- Breath - [GetSpellInfo(24891)] = 24891, -- Create Signet of Beckoning: Earth - [GetSpellInfo(17505)] = 17505, -- Curse of Timmy - [GetSpellInfo(9095)] = 9095, -- Cantation of Manifestation - [GetSpellInfo(2576)] = 2576, -- Mining - [GetSpellInfo(3979)] = 3979, -- Accurate Scope - [GetSpellInfo(28305)] = 28305, -- Copy of Great Heal - [GetSpellInfo(5208)] = 5208, -- Poisoned Harpoon - [GetSpellInfo(512)] = 512, -- Chains of Ice - [GetSpellInfo(14227)] = 14227, -- Signing - [GetSpellInfo(26063)] = 26063, -- Ouro Submerge Visual - [GetSpellInfo(8238)] = 8238, -- Savory Deviate Delight - [GetSpellInfo(2831)] = 2831, -- Armor +8 - [GetSpellInfo(30732)] = 30732, -- Worm Sweep - [GetSpellInfo(22846)] = 22846, -- Arcanum of Protection - [GetSpellInfo(12090)] = 12090, -- Stormcloth Boots - [GetSpellInfo(3940)] = 3940, -- Shadow Goggles - [GetSpellInfo(17777)] = 17777, -- Create Commission - [GetSpellInfo(12589)] = 12589, -- Mithril Tube - [GetSpellInfo(16381)] = 16381, -- Summon Rockwing Gargoyles - [GetSpellInfo(10712)] = 10712, -- Summon Spotted Rabbit - [GetSpellInfo(12077)] = 12077, -- Simple Black Dress - [GetSpellInfo(23081)] = 23081, -- Hyper-Radiant Flame Reflector - [GetSpellInfo(7355)] = 7355, -- Stuck - [GetSpellInfo(24962)] = 24962, -- Honor Points +138 - [GetSpellInfo(23675)] = 23675, -- Minigun - [GetSpellInfo(5884)] = 5884, -- Banshee Curse - [GetSpellInfo(6814)] = 6814, -- Sludge Toxin - [GetSpellInfo(17635)] = 17635, -- Flask of the Titans - [GetSpellInfo(3813)] = 3813, -- Small Silk Pack - [GetSpellInfo(2401)] = 2401, -- Woolen Boots - [GetSpellInfo(10850)] = 10850, -- Powerful Smelling Salts - [GetSpellInfo(16664)] = 16664, -- Runic Plate Shoulders - [GetSpellInfo(3421)] = 3421, -- Crippling Poison II - [GetSpellInfo(28462)] = 28462, -- Ironvine Gloves - [GetSpellInfo(8799)] = 8799, -- Crimson Silk Pantaloons - [GetSpellInfo(9987)] = 9987, -- Bronze Battle Axe - [GetSpellInfo(25121)] = 25121, -- Wizard Oil - [GetSpellInfo(21945)] = 21945, -- Green Holiday Shirt - [GetSpellInfo(18831)] = 18831, -- Conjure Lily Root - [GetSpellInfo(6441)] = 6441, -- Explosive Shells - [GetSpellInfo(26299)] = 26299, -- Create Cluster Rocket Launcher - [GetSpellInfo(25840)] = 25840, -- Full Heal - [GetSpellInfo(3372)] = 3372, -- Murloc Fin Soup - [GetSpellInfo(17560)] = 17560, -- Transmute: Fire to Earth - [GetSpellInfo(10507)] = 10507, -- Nightscape Headband - [GetSpellInfo(21097)] = 21097, -- Manastorm - [GetSpellInfo(11437)] = 11437, -- Opening Chest - [GetSpellInfo(9937)] = 9937, -- Mithril Scale Bracers - [GetSpellInfo(6412)] = 6412, -- Kaldorei Spider Kabob - [GetSpellInfo(3333)] = 3333, -- Silvered Bronze Gauntlets - [GetSpellInfo(6624)] = 6624, -- Free Action Potion - [GetSpellInfo(16651)] = 16651, -- Thorium Shield Spike - [GetSpellInfo(24367)] = 24367, -- Living Action Potion - [GetSpellInfo(20513)] = 20513, -- Enchanted Resonite Crystal - [GetSpellInfo(18457)] = 18457, -- Robe of the Archmage - [GetSpellInfo(27871)] = 27871, -- Lightwell - [GetSpellInfo(2657)] = 2657, -- Smelt Copper - [GetSpellInfo(8880)] = 8880, -- Copper Dagger - [GetSpellInfo(8593)] = 8593, -- Symbol of Life - [GetSpellInfo(21154)] = 21154, -- Might of Ragnaros - [GetSpellInfo(18987)] = 18987, -- Create Relic Bundle - [GetSpellInfo(18541)] = 18541, -- Ritual of Doom Effect - [GetSpellInfo(8243)] = 8243, -- Flash Bomb - [GetSpellInfo(12699)] = 12699, -- Summon Screecher Spirit - [GetSpellInfo(5159)] = 5159, -- Melt Ore - [GetSpellInfo(24160)] = 24160, -- Syncretist's Sigil - [GetSpellInfo(19063)] = 19063, -- Chimeric Boots - [GetSpellInfo(3109)] = 3109, -- Presence of Death - [GetSpellInfo(16153)] = 16153, -- Smelt Thorium - [GetSpellInfo(28480)] = 28480, -- Sylvan Vest - [GetSpellInfo(8780)] = 8780, -- Hands of Darkness - [GetSpellInfo(9143)] = 9143, -- Bomb - [GetSpellInfo(17462)] = 17462, -- Red Skeletal Horse - [GetSpellInfo(9995)] = 9995, -- Blue Glittering Axe - [GetSpellInfo(33)] = 33, -- Teleport Westfall - [GetSpellInfo(28304)] = 28304, -- Copy of Healing Wave - [GetSpellInfo(3918)] = 3918, -- Rough Blasting Powder - [GetSpellInfo(28205)] = 28205, -- Glacial Gloves - [GetSpellInfo(10680)] = 10680, -- Summon Cockatiel - [GetSpellInfo(25954)] = 25954, -- Sagefish Delight - [GetSpellInfo(23531)] = 23531, -- Summon Tiny Green Dragon - [GetSpellInfo(23220)] = 23220, -- Swift Dawnsaber - [GetSpellInfo(17496)] = 17496, -- Crest of Retribution - [GetSpellInfo(25783)] = 25783, -- Place Arcanite Buoy - [GetSpellInfo(2539)] = 2539, -- Spiced Wolf Meat - [GetSpellInfo(20041)] = 20041, -- Tammra Sapling - [GetSpellInfo(18658)] = 18658, -- Hibernate - [GetSpellInfo(2670)] = 2670, -- Rough Bronze Cuirass - [GetSpellInfo(25839)] = 25839, -- Mass Healing - [GetSpellInfo(24139)] = 24139, -- Darksoul Breastplate - [GetSpellInfo(24121)] = 24121, -- Primal Batskin Jerkin - [GetSpellInfo(23392)] = 23392, -- Boulder - [GetSpellInfo(2392)] = 2392, -- Red Linen Shirt - [GetSpellInfo(9979)] = 9979, -- Ornate Mithril Boots - [GetSpellInfo(5316)] = 5316, -- Raptor Feather - [GetSpellInfo(16554)] = 16554, -- Toxic Bolt - [GetSpellInfo(24654)] = 24654, -- Blue Dragonscale Leggings - [GetSpellInfo(15125)] = 15125, -- Scarshield Portal - [GetSpellInfo(26428)] = 26428, -- Large Red Rocket Cluster - [GetSpellInfo(3959)] = 3959, -- Discombobulator Ray - [GetSpellInfo(19250)] = 19250, -- Placing Smokey's Explosives - [GetSpellInfo(581)] = 581, -- Winter Wolf - [GetSpellInfo(23193)] = 23193, -- Forming Lok'delar - [GetSpellInfo(4062)] = 4062, -- Heavy Dynamite - [GetSpellInfo(3919)] = 3919, -- Rough Dynamite - [GetSpellInfo(3761)] = 3761, -- Fine Leather Tunic - [GetSpellInfo(11438)] = 11438, -- Join Map Fragments - [GetSpellInfo(20702)] = 20702, -- Summon Treant Allies - [GetSpellInfo(25849)] = 25849, -- Summon Baby Shark - [GetSpellInfo(3205)] = 3205, -- Sol M - [GetSpellInfo(13912)] = 13912, -- Princess Summons Portal - [GetSpellInfo(6518)] = 6518, -- Iridescent Hammer - [GetSpellInfo(3399)] = 3399, -- Tasty Lion Steak - [GetSpellInfo(3511)] = 3511, -- Golden Scale Cuirass - [GetSpellInfo(14810)] = 14810, -- Greater Mystic Wand - [GetSpellInfo(18647)] = 18647, -- Banish - [GetSpellInfo(10007)] = 10007, -- Phantom Blade - [GetSpellInfo(23667)] = 23667, -- Flarecore Leggings - [GetSpellInfo(19067)] = 19067, -- Stormshroud Pants - [GetSpellInfo(24967)] = 24967, -- Gong - [GetSpellInfo(3275)] = 3275, -- Linen Bandage - [GetSpellInfo(10166)] = 10166, -- Khadgar's Unlocking - [GetSpellInfo(28311)] = 28311, -- Slime Bolt - [GetSpellInfo(24163)] = 24163, -- Vodouisant's Vigilant Embrace - [GetSpellInfo(17181)] = 17181, -- Enchanted Leather - [GetSpellInfo(19054)] = 19054, -- Red Dragonscale Breastplate - [GetSpellInfo(10605)] = 10605, -- Chain Lightning - [GetSpellInfo(5781)] = 5781, -- Threatening Growl - [GetSpellInfo(19094)] = 19094, -- Black Dragonscale Shoulders - [GetSpellInfo(12621)] = 12621, -- Mithril Gyro-Shot - [GetSpellInfo(7153)] = 7153, -- Guardian Cloak - [GetSpellInfo(23125)] = 23125, -- Orcish Orphan Whistle - [GetSpellInfo(26426)] = 26426, -- Large Blue Rocket Cluster - [GetSpellInfo(24890)] = 24890, -- Create Signet of Beckoning: Air - [GetSpellInfo(2548)] = 2548, -- Succulent Pork Ribs - [GetSpellInfo(5161)] = 5161, -- Revive Dig Rat - [GetSpellInfo(2153)] = 2153, -- Handstitched Leather Pants - [GetSpellInfo(785)] = 785, -- True Fulfillment - [GetSpellInfo(8362)] = 8362, -- Renew - [GetSpellInfo(25292)] = 25292, -- Holy Light - [GetSpellInfo(26234)] = 26234, -- Submerge Visual - [GetSpellInfo(10396)] = 10396, -- Healing Wave - [GetSpellInfo(9065)] = 9065, -- Light Leather Bracers - [GetSpellInfo(8770)] = 8770, -- Robe of Power - [GetSpellInfo(12189)] = 12189, -- Summon Echeyakee - [GetSpellInfo(22813)] = 22813, -- Gordok Ogre Suit - [GetSpellInfo(3862)] = 3862, -- Icy Cloak - [GetSpellInfo(16978)] = 16978, -- Blazing Rapier - [GetSpellInfo(18405)] = 18405, -- Runecloth Bag - [GetSpellInfo(9269)] = 9269, -- Gnomish Universal Remote - [GetSpellInfo(6529)] = 6529, -- Opening Benedict's Chest - [GetSpellInfo(17618)] = 17618, -- Summon Risen Lackey - [GetSpellInfo(29334)] = 29334, -- Toasted Smorc - [GetSpellInfo(19815)] = 19815, -- Delicate Arcanite Converter - [GetSpellInfo(14125)] = 14125, -- Opening Secret Safe - [GetSpellInfo(8139)] = 8139, -- Fevered Fatigue - [GetSpellInfo(11605)] = 11605, -- Slam - [GetSpellInfo(16590)] = 16590, -- Summon Zombie - [GetSpellInfo(2386)] = 2386, -- Linen Boots - [GetSpellInfo(16967)] = 16967, -- Inlaid Thorium Hammer - [GetSpellInfo(24846)] = 24846, -- Spitfire Bracers - [GetSpellInfo(3950)] = 3950, -- Big Bronze Bomb - [GetSpellInfo(10346)] = 10346, -- Machine Gun - [GetSpellInfo(18422)] = 18422, -- Cloak of Fire - [GetSpellInfo(26011)] = 26011, -- Tranquil Mechanical Yeti - [GetSpellInfo(19091)] = 19091, -- Runic Leather Pants - [GetSpellInfo(16984)] = 16984, -- Volcanic Hammer - [GetSpellInfo(23650)] = 23650, -- Ebon Hand - [GetSpellInfo(7098)] = 7098, -- Curse of Mending - [GetSpellInfo(8681)] = 8681, -- Instant Poison - [GetSpellInfo(24122)] = 24122, -- Primal Batskin Gloves - [GetSpellInfo(3233)] = 3233, -- Evil Eye - [GetSpellInfo(25841)] = 25841, -- Prayer of Elune - [GetSpellInfo(17551)] = 17551, -- Stonescale Oil - [GetSpellInfo(18969)] = 18969, -- Taelan Death - [GetSpellInfo(21180)] = 21180, -- Summon Thunderstrike - [GetSpellInfo(3436)] = 3436, -- Wandering Plague - [GetSpellInfo(16869)] = 16869, -- Ice Tomb - [GetSpellInfo(12716)] = 12716, -- Goblin Mortar - [GetSpellInfo(28697)] = 28697, -- Forgiveness - [GetSpellInfo(26279)] = 26279, -- Stormshroud Gloves - [GetSpellInfo(14871)] = 14871, -- Shadow Bolt Misfire - [GetSpellInfo(22924)] = 22924, -- Grasping Vines - [GetSpellInfo(18974)] = 18974, -- Summon Lunaclaw - [GetSpellInfo(27720)] = 27720, -- Buttermilk Delight - [GetSpellInfo(7892)] = 7892, -- Stylish Blue Shirt - [GetSpellInfo(2737)] = 2737, -- Copper Mace - [GetSpellInfo(24314)] = 24314, -- Threatening Gaze - [GetSpellInfo(8912)] = 8912, -- Forge Verigan's Fist - [GetSpellInfo(17557)] = 17557, -- Elixir of Brute Force - [GetSpellInfo(22926)] = 22926, -- Chromatic Cloak - [GetSpellInfo(455)] = 455, -- Replenish Spirit - [GetSpellInfo(25659)] = 25659, -- Dirge's Kickin' Chimaerok Chops - [GetSpellInfo(24940)] = 24940, -- Black Whelp Tunic - [GetSpellInfo(11534)] = 11534, -- Leper Cure! - [GetSpellInfo(14887)] = 14887, -- Shadow Bolt Volley - [GetSpellInfo(3324)] = 3324, -- Runed Copper Pants - [GetSpellInfo(2671)] = 2671, -- Rough Bronze Bracers - [GetSpellInfo(5395)] = 5395, -- Death Capsule - [GetSpellInfo(18434)] = 18434, -- Cindercloth Pants - [GetSpellInfo(15647)] = 15647, -- Summon Common Kitten - [GetSpellInfo(25722)] = 25722, -- Rumsey Rum Dark - [GetSpellInfo(17952)] = 17952, -- Create Firestone (Greater) - [GetSpellInfo(445)] = 445, -- Teleport Darkshire - [GetSpellInfo(8760)] = 8760, -- Azure Silk Hood - [GetSpellInfo(9968)] = 9968, -- Heavy Mithril Boots - [GetSpellInfo(24123)] = 24123, -- Primal Batskin Bracers - [GetSpellInfo(6115)] = 6115, -- Far Sight (PT) - [GetSpellInfo(6894)] = 6894, -- Death Bed - [GetSpellInfo(7257)] = 7257, -- Fire Protection Potion - [GetSpellInfo(20770)] = 20770, -- Resurrection - [GetSpellInfo(3121)] = 3121, -- Kev - [GetSpellInfo(17465)] = 17465, -- Green Skeletal Warhorse - [GetSpellInfo(20854)] = 20854, -- Molten Helm - [GetSpellInfo(14380)] = 14380, -- Truesilver Rod - [GetSpellInfo(2162)] = 2162, -- Embossed Leather Cloak - [GetSpellInfo(12044)] = 12044, -- Simple Linen Pants - [GetSpellInfo(11410)] = 11410, -- Whirling Barrage - [GetSpellInfo(1090)] = 1090, -- Sleep - [GetSpellInfo(23151)] = 23151, -- Balance of Light and Shadow - [GetSpellInfo(2152)] = 2152, -- Light Armor Kit - [GetSpellInfo(27608)] = 27608, -- Flash Heal - [GetSpellInfo(6257)] = 6257, -- Torch Toss - [GetSpellInfo(8277)] = 8277, -- Voodoo Hex - [GetSpellInfo(20748)] = 20748, -- Rebirth - [GetSpellInfo(14379)] = 14379, -- Golden Rod - [GetSpellInfo(22761)] = 22761, -- Runn Tum Tuber Surprise - [GetSpellInfo(7630)] = 7630, -- Blue Linen Vest - [GetSpellInfo(24964)] = 24964, -- Honor Points +378 - [GetSpellInfo(23636)] = 23636, -- Dark Iron Helm - [GetSpellInfo(19943)] = 19943, -- Flash of Light - [GetSpellInfo(18702)] = 18702, -- Curse of the Darkmaster - [GetSpellInfo(15863)] = 15863, -- Carrion Surprise - [GetSpellInfo(16531)] = 16531, -- Summon Frail Skeleton - [GetSpellInfo(17231)] = 17231, -- Summon Illusory Wraith - [GetSpellInfo(16663)] = 16663, -- Imperial Plate Chest - [GetSpellInfo(3297)] = 3297, -- Mighty Iron Hammer - [GetSpellInfo(4506)] = 4506, -- CHU's QUEST SPELL - [GetSpellInfo(18424)] = 18424, -- Frostweave Pants - [GetSpellInfo(12667)] = 12667, -- Soul Consumption - [GetSpellInfo(27721)] = 27721, -- Very Berry Cream - [GetSpellInfo(7279)] = 7279, -- Black Sludge - [GetSpellInfo(17570)] = 17570, -- Greater Stoneshield Potion - [GetSpellInfo(4239)] = 4239, -- Activating Defenses - [GetSpellInfo(2387)] = 2387, -- Linen Cloak - [GetSpellInfo(21100)] = 21100, -- Conjure Elegant Letter - [GetSpellInfo(23067)] = 23067, -- Blue Firework - [GetSpellInfo(19072)] = 19072, -- Runic Leather Belt - [GetSpellInfo(5280)] = 5280, -- Razor Mane - [GetSpellInfo(18245)] = 18245, -- Lobster Stew - [GetSpellInfo(12591)] = 12591, -- Unstable Trigger - [GetSpellInfo(10459)] = 10459, -- Sacrifice Spinneret - [GetSpellInfo(25316)] = 25316, -- Prayer of Healing - [GetSpellInfo(9052)] = 9052, -- Fill Deino's Flask - [GetSpellInfo(5512)] = 5512, -- Fill Phial - [GetSpellInfo(4066)] = 4066, -- Small Bronze Bomb - [GetSpellInfo(16168)] = 16168, -- Flame Buffet - [GetSpellInfo(9636)] = 9636, -- Summon Swamp Spirit - [GetSpellInfo(6695)] = 6695, -- Black Silk Pack - [GetSpellInfo(19101)] = 19101, -- Volcanic Shoulders - [GetSpellInfo(21425)] = 21425, -- Ryson's Eye in the Sky - [GetSpellInfo(6414)] = 6414, -- Roasted Kodo Meat - [GetSpellInfo(27662)] = 27662, -- Throw Cupid's Dart - [GetSpellInfo(15933)] = 15933, -- Monster Omelet - [GetSpellInfo(19800)] = 19800, -- Thorium Shells - [GetSpellInfo(23662)] = 23662, -- Wisdom of the Timbermaw - [GetSpellInfo(23680)] = 23680, -- Portals Deck - [GetSpellInfo(19774)] = 19774, -- Summon Ragnaros - [GetSpellInfo(3969)] = 3969, -- Mechanical Dragonling - [GetSpellInfo(9921)] = 9921, -- Solid Weightstone - [GetSpellInfo(24093)] = 24093, -- Bloodvine Boots - [GetSpellInfo(9985)] = 9985, -- Bronze Warhammer - [GetSpellInfo(8211)] = 8211, -- Chain Burn - [GetSpellInfo(28220)] = 28220, -- Polar Gloves - [GetSpellInfo(7623)] = 7623, -- Brown Linen Robe - [GetSpellInfo(23243)] = 23243, -- Swift Orange Raptor - [GetSpellInfo(25150)] = 25150, -- Molten Rain - [GetSpellInfo(7149)] = 7149, -- Barbaric Leggings - [GetSpellInfo(2546)] = 2546, -- Dry Pork Ribs - [GetSpellInfo(3569)] = 3569, -- Smelt Steel - [GetSpellInfo(19814)] = 19814, -- Masterwork Target Dummy - [GetSpellInfo(8793)] = 8793, -- Crimson Silk Shoulders - [GetSpellInfo(10344)] = 10344, -- Armor +32 - [GetSpellInfo(12046)] = 12046, -- Simple Kilt - [GetSpellInfo(9074)] = 9074, -- Nimble Leather Gloves - [GetSpellInfo(12092)] = 12092, -- Dreamweave Circlet - [GetSpellInfo(23004)] = 23004, -- Summon Alarm-o-Bot - [GetSpellInfo(29116)] = 29116, -- Toast Smorc - [GetSpellInfo(9268)] = 9268, -- Teleport to Darnassus - Event - [GetSpellInfo(21161)] = 21161, -- Sulfuron Hammer - [GetSpellInfo(11397)] = 11397, -- Diseased Shot - [GetSpellInfo(3243)] = 3243, -- Life Harvest - [GetSpellInfo(18421)] = 18421, -- Wizardweave Leggings - [GetSpellInfo(4979)] = 4979, -- Quick Flame Ward - [GetSpellInfo(3954)] = 3954, -- Moonsight Rifle - [GetSpellInfo(3767)] = 3767, -- Hillman's Belt - [GetSpellInfo(25808)] = 25808, -- Dispel - [GetSpellInfo(20568)] = 20568, -- Ragnaros Emerge - [GetSpellInfo(18453)] = 18453, -- Felcloth Shoulders - [GetSpellInfo(14532)] = 14532, -- Creeper Venom - [GetSpellInfo(10149)] = 10149, -- Fireball - [GetSpellInfo(3493)] = 3493, -- Jade Serpentblade - [GetSpellInfo(12808)] = 12808, -- Getting Tide Pool Sample #4 - [GetSpellInfo(15296)] = 15296, -- Dark Iron Plate - [GetSpellInfo(12759)] = 12759, -- Gnomish Death Ray - [GetSpellInfo(23000)] = 23000, -- Ez-Thro Dynamite - [GetSpellInfo(18450)] = 18450, -- Wizardweave Turban - [GetSpellInfo(3204)] = 3204, -- Sapper Explode - [GetSpellInfo(9783)] = 9783, -- Mithril Spurs - [GetSpellInfo(9194)] = 9194, -- Heavy Leather Ammo Pouch - [GetSpellInfo(8089)] = 8089, -- Aquadynamic Fish Attractor - [GetSpellInfo(17680)] = 17680, -- Spirit Spawn-out - [GetSpellInfo(7994)] = 7994, -- Nullify Mana - [GetSpellInfo(3929)] = 3929, -- Coarse Blasting Powder - [GetSpellInfo(8352)] = 8352, -- Adjust Attitude - [GetSpellInfo(3953)] = 3953, -- Bronze Framework - [GetSpellInfo(7953)] = 7953, -- Deviate Scale Cloak - [GetSpellInfo(8001)] = 8001, -- Placing Pendant - [GetSpellInfo(23061)] = 23061, -- Fix Ritual Node - [GetSpellInfo(4097)] = 4097, -- Raptor Hide Belt - [GetSpellInfo(24897)] = 24897, -- Create Scepter of Beckoning: Earth - [GetSpellInfo(22661)] = 22661, -- Enervate - [GetSpellInfo(10702)] = 10702, -- Summon Island Frog - [GetSpellInfo(12421)] = 12421, -- Mithril Frag Bomb - [GetSpellInfo(16960)] = 16960, -- Thorium Greatsword - [GetSpellInfo(30081)] = 30081, -- Retching Plague - [GetSpellInfo(22313)] = 22313, -- Purple Hands - [GetSpellInfo(16660)] = 16660, -- Dawnbringer Shoulders - [GetSpellInfo(28473)] = 28473, -- Bramblewood Boots - [GetSpellInfo(3753)] = 3753, -- Handstitched Leather Belt - [GetSpellInfo(12607)] = 12607, -- Catseye Ultra Goggles - [GetSpellInfo(17556)] = 17556, -- Major Healing Potion - [GetSpellInfo(6310)] = 6310, -- Divining Scroll Spell - [GetSpellInfo(11730)] = 11730, -- Create Healthstone (Major) - [GetSpellInfo(3563)] = 3563, -- Teleport: Undercity - [GetSpellInfo(20897)] = 20897, -- Dark Iron Destroyer - [GetSpellInfo(18455)] = 18455, -- Bottomless Bag - [GetSpellInfo(15865)] = 15865, -- Mystery Stew - [GetSpellInfo(11513)] = 11513, -- Empty Phial - [GetSpellInfo(3915)] = 3915, -- Brown Linen Shirt - [GetSpellInfo(2602)] = 2602, -- Fire Shield IV - [GetSpellInfo(28463)] = 28463, -- Ironvine Belt - [GetSpellInfo(3961)] = 3961, -- Gyrochronatom - [GetSpellInfo(3296)] = 3296, -- Heavy Bronze Mace - [GetSpellInfo(6535)] = 6535, -- Lightning Cloud - [GetSpellInfo(18241)] = 18241, -- Filet of Redgill - [GetSpellInfo(12049)] = 12049, -- Black Mageweave Leggings - [GetSpellInfo(12594)] = 12594, -- Fire Goggles - [GetSpellInfo(12073)] = 12073, -- Black Mageweave Boots - [GetSpellInfo(461)] = 461, -- Righteous Flame On - [GetSpellInfo(15649)] = 15649, -- Collect Corrupted Water - [GetSpellInfo(1179)] = 1179, -- Beast Claws - [GetSpellInfo(1453)] = 1453, -- Arcane Spirit V - [GetSpellInfo(10326)] = 10326, -- Turn Undead - [GetSpellInfo(21953)] = 21953, -- The Feast of Winter Veil - [GetSpellInfo(3947)] = 3947, -- Crafted Solid Shot - [GetSpellInfo(3817)] = 3817, -- Cured Medium Hide - [GetSpellInfo(8901)] = 8901, -- Gas Bomb - [GetSpellInfo(3497)] = 3497, -- Frost Tiger Blade - [GetSpellInfo(16069)] = 16069, -- Nefarius Attack 001 - [GetSpellInfo(15628)] = 15628, -- Pet Bombling - [GetSpellInfo(24960)] = 24960, -- Honor Points +50 - [GetSpellInfo(8483)] = 8483, -- White Swashbuckler's Shirt - [GetSpellInfo(16995)] = 16995, -- Heartseeker - [GetSpellInfo(6354)] = 6354, -- Venom's Bane - [GetSpellInfo(27794)] = 27794, -- Cleave - [GetSpellInfo(2389)] = 2389, -- Red Linen Robe - [GetSpellInfo(9935)] = 9935, -- Steel Plate Helm - [GetSpellInfo(26085)] = 26085, -- Soul Pouch - [GetSpellInfo(16662)] = 16662, -- Thorium Leggings - [GetSpellInfo(12086)] = 12086, -- Shadoweave Mask - [GetSpellInfo(6626)] = 6626, -- Set NG-5 Charge (Blue) - [GetSpellInfo(28474)] = 28474, -- Bramblewood Belt - [GetSpellInfo(17924)] = 17924, -- Soul Fire - [GetSpellInfo(23489)] = 23489, -- Ultrasafe Transporter - Gadgetzan - [GetSpellInfo(9795)] = 9795, -- Talvash's Necklace Repair - [GetSpellInfo(11017)] = 11017, -- Summon Witherbark Felhunter - [GetSpellInfo(9145)] = 9145, -- Fletcher's Gloves - [GetSpellInfo(28352)] = 28352, -- Breath of Sargeras - [GetSpellInfo(6199)] = 6199, -- Nostalgia - [GetSpellInfo(19068)] = 19068, -- Warbear Harness - [GetSpellInfo(7218)] = 7218, -- Weapon Counterweight - [GetSpellInfo(5026)] = 5026, -- Create Water of the Seers - [GetSpellInfo(7489)] = 7489, -- Call Lupine Horror - [GetSpellInfo(15207)] = 15207, -- Lightning Bolt - [GetSpellInfo(10531)] = 10531, -- Big Voodoo Mask - [GetSpellInfo(15276)] = 15276, -- Opening Bar Door - [GetSpellInfo(16659)] = 16659, -- Radiant Circlet - [GetSpellInfo(3176)] = 3176, -- Strong Troll's Blood Potion - [GetSpellInfo(9612)] = 9612, -- Ink Spray - [GetSpellInfo(24961)] = 24961, -- Honor Points +82 - [GetSpellInfo(9220)] = 9220, -- "Plucky" Resumes Chicken Form - [GetSpellInfo(7762)] = 7762, -- Summon Gunther's Visage - [GetSpellInfo(3131)] = 3131, -- Frost Breath - [GetSpellInfo(25311)] = 25311, -- Corruption - [GetSpellInfo(26137)] = 26137, -- Rotate Trigger - [GetSpellInfo(24898)] = 24898, -- Create Scepter of Beckoning: Water - [GetSpellInfo(19098)] = 19098, -- Wicked Leather Armor - [GetSpellInfo(698)] = 698, -- Ritual of Summoning - [GetSpellInfo(7633)] = 7633, -- Blue Linen Robe - [GetSpellInfo(16731)] = 16731, -- Runic Breastplate - [GetSpellInfo(11021)] = 11021, -- Flamespit - [GetSpellInfo(10718)] = 10718, -- Summon Green Water Snake - [GetSpellInfo(6899)] = 6899, -- Brown Ram - [GetSpellInfo(12899)] = 12899, -- Gnomish Shrink Ray - [GetSpellInfo(10701)] = 10701, -- Summon Dart Frog - [GetSpellInfo(11449)] = 11449, -- Elixir of Agility - [GetSpellInfo(20648)] = 20648, -- Medium Leather - [GetSpellInfo(3552)] = 3552, -- Conjure Mana Jade - [GetSpellInfo(15118)] = 15118, -- Place Threshadon Carcass - [GetSpellInfo(19076)] = 19076, -- Volcanic Breastplate - [GetSpellInfo(23248)] = 23248, -- Great Gray Kodo - [GetSpellInfo(21358)] = 21358, -- Aqual Quintessence - Dowse Molten Core Rune - [GetSpellInfo(12717)] = 12717, -- Goblin Mining Helmet - [GetSpellInfo(1540)] = 1540, -- Volley - [GetSpellInfo(28354)] = 28354, -- Exorcise Atiesh - [GetSpellInfo(2832)] = 2832, -- Armor +16 - [GetSpellInfo(3932)] = 3932, -- Target Dummy - [GetSpellInfo(24357)] = 24357, -- Bloodvine Lens - [GetSpellInfo(2674)] = 2674, -- Heavy Sharpening Stone - [GetSpellInfo(9172)] = 9172, -- Lift Seal - [GetSpellInfo(3450)] = 3450, -- Elixir of Fortitude - [GetSpellInfo(21371)] = 21371, -- Planting Mulverick's Beacon - [GetSpellInfo(3566)] = 3566, -- Teleport: Thunder Bluff - [GetSpellInfo(3937)] = 3937, -- Large Copper Bomb - [GetSpellInfo(23190)] = 23190, -- Heavy Leather Ball - [GetSpellInfo(23428)] = 23428, -- Summon Albino Snapjaw - [GetSpellInfo(10566)] = 10566, -- Wild Leather Boots - [GetSpellInfo(5514)] = 5514, -- Darken Vision - [GetSpellInfo(2169)] = 2169, -- Dark Leather Tunic - [GetSpellInfo(18444)] = 18444, -- Runecloth Headband - [GetSpellInfo(16646)] = 16646, -- Imperial Plate Shoulders - [GetSpellInfo(29059)] = 29059, -- Skeletal Steed - [GetSpellInfo(17632)] = 17632, -- Alchemist's Stone - [GetSpellInfo(18412)] = 18412, -- Cindercloth Gloves - [GetSpellInfo(18441)] = 18441, -- Ghostweave Pants - [GetSpellInfo(8552)] = 8552, -- Curse of Weakness - [GetSpellInfo(18239)] = 18239, -- Cooked Glossy Mightfish - [GetSpellInfo(18438)] = 18438, -- Runecloth Pants - [GetSpellInfo(6755)] = 6755, -- Tell Joke - [GetSpellInfo(3773)] = 3773, -- Guardian Armor - [GetSpellInfo(3965)] = 3965, -- Advanced Target Dummy - [GetSpellInfo(12064)] = 12064, -- Orange Martial Shirt - [GetSpellInfo(9980)] = 9980, -- Ornate Mithril Helm - [GetSpellInfo(18247)] = 18247, -- Baked Salmon - [GetSpellInfo(15935)] = 15935, -- Crispy Bat Wing - [GetSpellInfo(28740)] = 28740, -- Summon Whiskers - [GetSpellInfo(3650)] = 3650, -- Sling Mud - [GetSpellInfo(1096)] = 1096, -- Firebolt IV - [GetSpellInfo(3762)] = 3762, -- Hillman's Leather Vest - [GetSpellInfo(6270)] = 6270, -- Serpentine Cleansing - [GetSpellInfo(26181)] = 26181, -- Strike - [GetSpellInfo(15633)] = 15633, -- Lil' Smoky - [GetSpellInfo(11450)] = 11450, -- Elixir of Greater Defense - [GetSpellInfo(22790)] = 22790, -- Kreeg's Stout Beatdown - [GetSpellInfo(7395)] = 7395, -- Deadmines Dynamite - [GetSpellInfo(11461)] = 11461, -- Arcane Elixir - [GetSpellInfo(28223)] = 28223, -- Icy Scale Gauntlets - [GetSpellInfo(23238)] = 23238, -- Swift Brown Ram - [GetSpellInfo(3938)] = 3938, -- Bronze Tube - [GetSpellInfo(12069)] = 12069, -- Cindercloth Robe - [GetSpellInfo(23187)] = 23187, -- Frost Burn - [GetSpellInfo(19064)] = 19064, -- Heavy Scorpid Gauntlets - [GetSpellInfo(28163)] = 28163, -- Ice Guard - [GetSpellInfo(4132)] = 4132, -- Banish Thundering Exile - [GetSpellInfo(9207)] = 9207, -- Dusky Boots - [GetSpellInfo(25158)] = 25158, -- Time Stop - [GetSpellInfo(7954)] = 7954, -- Deviate Scale Gloves - [GetSpellInfo(11457)] = 11457, -- Superior Healing Potion - [GetSpellInfo(26054)] = 26054, -- Summon Red Qiraji Battle Tank - [GetSpellInfo(9079)] = 9079, -- Create Rift - [GetSpellInfo(10869)] = 10869, -- Summon Embers - [GetSpellInfo(14891)] = 14891, -- Smelt Dark Iron - [GetSpellInfo(26134)] = 26134, -- Eye Beam - [GetSpellInfo(2368)] = 2368, -- Herb Gathering - [GetSpellInfo(19080)] = 19080, -- Warbear Woolies - [GetSpellInfo(16)] = 16, -- Fear (NYI) - [GetSpellInfo(11420)] = 11420, -- Portal: Thunder Bluff - [GetSpellInfo(19720)] = 19720, -- Combine Pendants - [GetSpellInfo(9926)] = 9926, -- Heavy Mithril Shoulder - [GetSpellInfo(12512)] = 12512, -- Kalaran Conjures Torch - [GetSpellInfo(25953)] = 25953, -- Summon Blue Qiraji Battle Tank - [GetSpellInfo(28806)] = 28806, -- Toss Fuel on Bonfire - [GetSpellInfo(24903)] = 24903, -- Runed Stygian Boots - [GetSpellInfo(8394)] = 8394, -- Striped Frostsaber - [GetSpellInfo(21884)] = 21884, -- Collect Orange Crystal Liquid - [GetSpellInfo(16649)] = 16649, -- Imperial Plate Bracers - [GetSpellInfo(18115)] = 18115, -- Viewing Room Student Transform - Effect - [GetSpellInfo(1538)] = 1538, -- Charging - [GetSpellInfo(21960)] = 21960, -- Manifest Spirit - [GetSpellInfo(2665)] = 2665, -- Coarse Sharpening Stone - [GetSpellInfo(3133)] = 3133, -- Beast Claws III - [GetSpellInfo(15066)] = 15066, -- Create PX83-Enigmatron - [GetSpellInfo(5252)] = 5252, -- Voidwalker Guardian - [GetSpellInfo(3958)] = 3958, -- Iron Strut - [GetSpellInfo(4977)] = 4977, -- Cleanse Thunderhorn Well - [GetSpellInfo(10673)] = 10673, -- Summon Bombay - [GetSpellInfo(10720)] = 10720, -- Summon Scarlet Snake - [GetSpellInfo(22967)] = 22967, -- Smelt Elementium - [GetSpellInfo(23432)] = 23432, -- Summon Hawksbill Snapjaw - [GetSpellInfo(15973)] = 15973, -- Searing Golden Blade - [GetSpellInfo(8604)] = 8604, -- Herb Baked Egg - [GetSpellInfo(19069)] = 19069, -- Plant Magic Beans - [GetSpellInfo(9489)] = 9489, -- Create Scrying Bowl - [GetSpellInfo(23096)] = 23096, -- Alarm-O-Bot - [GetSpellInfo(12554)] = 12554, -- Summon Treasure Horde - [GetSpellInfo(9457)] = 9457, -- Tharnariun's Heal - [GetSpellInfo(5268)] = 5268, -- Dark Iron Dwarf Disguise - [GetSpellInfo(6196)] = 6196, -- Far Sight - [GetSpellInfo(16970)] = 16970, -- Dawn's Edge - [GetSpellInfo(17481)] = 17481, -- Deathcharger - [GetSpellInfo(6654)] = 6654, -- Brown Wolf - [GetSpellInfo(15910)] = 15910, -- Heavy Kodo Stew - [GetSpellInfo(23240)] = 23240, -- Swift White Ram - [GetSpellInfo(15495)] = 15495, -- Explosive Shot - [GetSpellInfo(15699)] = 15699, -- Filling Empty Jar - [GetSpellInfo(13702)] = 13702, -- Runed Truesilver Rod - [GetSpellInfo(24892)] = 24892, -- Create Signet of Beckoning: Water - [GetSpellInfo(23811)] = 23811, -- Summon Jubling - [GetSpellInfo(11476)] = 11476, -- Elixir of Shadow Power - [GetSpellInfo(24137)] = 24137, -- Bloodsoul Shoulders - [GetSpellInfo(2402)] = 2402, -- Woolen Cape - } +ns.decrease = { +} - ns.channelled = { - -- MISC - [GetSpellInfo(746)] = { 7, 746 }, -- First Aid - [GetSpellInfo(13278)] = { 4, 13278 }, -- Gnomish Death Ray - [GetSpellInfo(20577)] = { 10, 20577 }, -- Cannibalize - [GetSpellInfo(10797)] = { 6, 10797 }, -- Starshards +ns.delay = { +} - -- DRUID - [GetSpellInfo(17401)] = { 9.5, 17401 }, -- Hurricane - [GetSpellInfo(740)] = { 9.5, 740 }, -- Tranquility +ns.CC = { +} - -- HUNTER - [GetSpellInfo(6197)] = { 60, 6197 }, -- Eagle Eye - [GetSpellInfo(1002)] = { 60, 1002 }, -- Eyes of the Beast - [GetSpellInfo(1510)] = { 6, 1510 }, -- Volley - [GetSpellInfo(136)] = { 10, 136 }, -- Mend Pet +ns.talentdecrease = { +} - -- MAGE - [GetSpellInfo(7268)] = { 2.25, 7268, }, -- Arcane Missile - [GetSpellInfo(5143)] = { 4.5, 5143, }, -- Arcane Missiles - [GetSpellInfo(10)] = { 7.5, 10 }, -- Blizzard - [GetSpellInfo(12051)] = { 8, 12051 }, -- Evocation - - -- PRIEST - [GetSpellInfo(15407)] = { 3, 15407 }, -- Mind Flay - [GetSpellInfo(2096)] = { 60, 2096 }, -- Mind Vision - [GetSpellInfo(605)] = { 3, 605 }, -- Mind Control - - -- WARLOCK - [GetSpellInfo(126)] = { 45, 126 }, -- Eye of Kilrogg - [GetSpellInfo(689)] = { 4.5, 689 }, -- Drain Life - [GetSpellInfo(5138)] = { 4.5, 5138 }, -- Drain Mana - [GetSpellInfo(1120)] = { 14.5, 1120 }, -- Drain Soul - [GetSpellInfo(5740)] = { 7.5, 5740 }, -- Rain of Fire - [GetSpellInfo(1949)] = { 15, 1949 }, -- Hellfire - [GetSpellInfo(755)] = { 10, 755 }, -- Health Funnel - } - - ns.decrease = { - -- WARLOCK - [1714] = 50, -- Curse of Tongues Rank 1 - [11719] = 60, -- Curse of Tongues Rank 2 - -- ROGUE - [5760] = 40, -- Mind-Numbing Poison Rank 1 - [8692] = 50, -- Mind-Numbing Poison Rank 2 - [25810] = 50, -- Mind-Numbing Poison Rank 2 incorrect? - [11398] = 60, -- Mind-Numbing Poison Rank 3 - -- ITEMS - [17331] = 10, -- Fang of the Crystal Spider - } - - ns.delay = { - -- WARLOCK - [GetSpellInfo(1714)] = 60, -- Curse of Tongues - [GetSpellInfo(1098)] = 30, -- Enslave Demon - - -- ROGUE - [GetSpellInfo(5760)] = 60, -- Mind-Numbing Poison - - -- ITEMS - [GetSpellInfo(17331)] = 10, -- Fang of the Crystal Spider - - -- NPCS - [GetSpellInfo(7127)] = 20, -- Wavering Will - [GetSpellInfo(7102)] = 25, -- Contagion of Rot - [GetSpellInfo(3603)] = 35, -- Distracting Pain - [GetSpellInfo(8140)] = 50, -- Befuddlement - [GetSpellInfo(8272)] = 20, -- Mind Tremor - [GetSpellInfo(12255)] = 15, -- Curse of Tuten'kash - [GetSpellInfo(10651)] = 20, -- Curse of the Eye - [GetSpellInfo(14538)] = 35, -- Aural Shock - [GetSpellInfo(22247)] = 80, -- Suppression Aura - [GetSpellInfo(22642)] = 50, -- Brood Power: Bronze - [GetSpellInfo(23153)] = 50, -- Brood Power: Blue - [GetSpellInfo(24415)] = 50, -- Slow - [GetSpellInfo(19365)] = 50, -- Ancient Dread - [GetSpellInfo(28732)] = 25, -- Widow's Embrace - [GetSpellInfo(22909)] = 50, -- Eye of Immol'thar - } - - ns.CC = { - [GetSpellInfo(5211)] = 1, -- Bash - [GetSpellInfo(24394)] = 1, -- Intimidation - [GetSpellInfo(853)] = 1, -- Hammer of Justice - [GetSpellInfo(22703)] = 1, -- Inferno Effect (Summon Infernal) - [GetSpellInfo(408)] = 1, -- Kidney Shot - [GetSpellInfo(12809)] = 1, -- Concussion Blow - [GetSpellInfo(20253)] = 1, -- Intercept Stun - [GetSpellInfo(20549)] = 1, -- War Stomp - [GetSpellInfo(2637)] = 1, -- Hibernate - [GetSpellInfo(3355)] = 1, -- Freezing Trap - [GetSpellInfo(19386)] = 1, -- Wyvern Sting - [GetSpellInfo(118)] = 1, -- Polymorph - [GetSpellInfo(28271)] = 1, -- Polymorph: Turtle - [GetSpellInfo(28272)] = 1, -- Polymorph: Pig - [GetSpellInfo(20066)] = 1, -- Repentance - [GetSpellInfo(1776)] = 1, -- Gouge - [GetSpellInfo(6770)] = 1, -- Sap - [GetSpellInfo(1513)] = 1, -- Scare Beast - [GetSpellInfo(8122)] = 1, -- Psychic Scream - [GetSpellInfo(2094)] = 1, -- Blind - [GetSpellInfo(5782)] = 1, -- Fear - [GetSpellInfo(5484)] = 1, -- Howl of Terror - [GetSpellInfo(6358)] = 1, -- Seduction - [GetSpellInfo(5246)] = 1, -- Intimidating Shout - [GetSpellInfo(6789)] = 1, -- Death Coil - [GetSpellInfo(9005)] = 1, -- Pounce - [GetSpellInfo(1833)] = 1, -- Cheap Shot - [GetSpellInfo(16922)] = 1, -- Improved Starfire - [GetSpellInfo(19410)] = 1, -- Improved Concussive Shot - [GetSpellInfo(12355)] = 1, -- Impact - [GetSpellInfo(20170)] = 1, -- Seal of Justice Stun - [GetSpellInfo(15269)] = 1, -- Blackout - [GetSpellInfo(18093)] = 1, -- Pyroclasm - [GetSpellInfo(12798)] = 1, -- Revenge Stun - [GetSpellInfo(5530)] = 1, -- Mace Stun - [GetSpellInfo(19503)] = 1, -- Scatter Shot - [GetSpellInfo(605)] = 1, -- Mind Control - [GetSpellInfo(7922)] = 1, -- Charge Stun - [GetSpellInfo(18469)] = 1, -- Counterspell - Silenced - [GetSpellInfo(15487)] = 1, -- Silence - [GetSpellInfo(18425)] = 1, -- Kick - Silenced - [GetSpellInfo(24259)] = 1, -- Spell Lock - [GetSpellInfo(18498)] = 1, -- Shield Bash - Silenced - - -- ITEMS - [GetSpellInfo(13327)] = 1, -- Reckless Charge - [GetSpellInfo(1090)] = 1, -- Sleep - [GetSpellInfo(5134)] = 1, -- Flash Bomb Fear - [GetSpellInfo(19821)] = 1, -- Arcane Bomb Silence - [GetSpellInfo(4068)] = 1, -- Iron Grenade - [GetSpellInfo(19769)] = 1, -- Thorium Grenade - [GetSpellInfo(13808)] = 1, -- M73 Frag Grenade - [GetSpellInfo(4069)] = 1, -- Big Iron Bomb - [GetSpellInfo(12543)] = 1, -- Hi-Explosive Bomb - [GetSpellInfo(4064)] = 1, -- Rough Copper Bomb - [GetSpellInfo(12421)] = 1, -- Mithril Frag Bomb - [GetSpellInfo(19784)] = 1, -- Dark Iron Bomb - [GetSpellInfo(4067)] = 1, -- Big Bronze Bomb - [GetSpellInfo(4066)] = 1, -- Small Bronze Bomb - [GetSpellInfo(4065)] = 1, -- Large Copper Bomb - [GetSpellInfo(13237)] = 1, -- Goblin Mortar - [GetSpellInfo(835)] = 1, -- Tidal Charm - [GetSpellInfo(13181)] = 1, -- Gnomish Mind Control Cap - [GetSpellInfo(12562)] = 1, -- The Big One - [GetSpellInfo(15283)] = 1, -- Stunning Blow (Weapon Proc) - [GetSpellInfo(56)] = 1, -- Stun (Weapon Proc) - [GetSpellInfo(26108)] = 1, -- Glimpse of Madness - } - - ns.talentdecrease = { - [GetSpellInfo(403)] = 1, -- Lightning Bolt - [GetSpellInfo(421)] = 1, -- Chain Lightning - [GetSpellInfo(6353)] = 2, -- Soul Fire - [GetSpellInfo(116)] = .5, -- Frostbolt - [GetSpellInfo(133)] = .5, -- Fireball - [GetSpellInfo(686)] = .5, -- Shadow Bolt - [GetSpellInfo(348)] = .5, -- Immolate - [GetSpellInfo(331)] = .5, -- Healing Wave - [GetSpellInfo(585)] = .5, -- Smite - [GetSpellInfo(14914)] = .5, -- Holy Fire - [GetSpellInfo(2054)] = .5, -- Heal - [GetSpellInfo(25314)] = .5, -- Greater Heal - [GetSpellInfo(8129)] = .5, -- Mana Burn - [GetSpellInfo(5176)] = .5, -- Wrath - [GetSpellInfo(2912)] = .5, -- Starfire - [GetSpellInfo(5185)] = .5, -- Healing Touch - [GetSpellInfo(2645)] = 2, -- Ghost Wolf - [GetSpellInfo(691)] = 4, -- Summon Felhunter - [GetSpellInfo(688)] = 4, -- Summon Imp - [GetSpellInfo(697)] = 4, -- Summon Voidwalker - [GetSpellInfo(712)] = 4, -- Summon Succubus - } - - ns.auras = { - -- misc - ['Flee'] = 10, - ['Reckless Charge'] = 12, - ['Sleep'] = 12, - ['Tidal Charm'] = 3, - -- blackwing lair - ['Burning Adrenaline'] = 20, - -- molten core - ['Living Bomb'] = 8, - -- engineering - ['Iron Grenade'] = 3, - ['Net-o-Matic'] = 10, - ['Thorium Grenade'] = 3, - -- druid - ['Hibernate'] = 40, - -- hunter - ['Freezing Trap'] = 20, - ['Scare Beast'] = 20, - -- mage - ['Polymorph'] = 50, - ['Polymorph: Pig'] = 50, - ['Polymorph: Turtle'] = 50, - ['Frostbolt'] = 7, - ['Frost Nova'] = 8, - ['Frostbite'] = 5, - -- paladin - ['Hammer of Justice'] = 6, - ['Repentance'] = 6, - -- priest - ['Mind Control'] = 3, - ['Mind Vision'] = 60, - ['Psychic Scream'] = 8, - -- rogue - ['Blind'] = 10, - ['Cheap Shot'] = 5, - ['Gouge'] = 4, - ['Kidney Shot'] = 6, - ['Sap'] = 11, - -- warlock - ['Curse of Exhaustion'] = 12, - ['Curse of Tongues'] = 30, - ['Death Coil'] = 3, - ['Drain Mana'] = 5, - ['Fear'] = 20, - ['Howl of Terror'] = 15, - -- warrior - ['Charge Stun'] = 1, - ['Intercept Stun'] = 3, - } - - - -- +ns.auras = { +} diff --git a/core/text.lua b/core/text.lua index 8d4526a..c3100ef 100755 --- a/core/text.lua +++ b/core/text.lua @@ -1,101 +1,78 @@ +local _, ns = ... +local FONT_REGULAR = 'Interface\\AddOns\\modui\\font\\NotoSans-Regular.ttf' +local FONT_BOLD = 'Interface\\AddOns\\modui\\font\\NotoSans-Bold.ttf' - local _, ns = ... +ns.FONT_REGULAR = FONT_REGULAR +ns.FONT_BOLD = FONT_BOLD - local FONT_REGULAR = 'Interface\\AddOns\\modui\\font\\NotoSans-Regular.ttf' - local FONT_BOLD = 'Interface\\AddOns\\modui\\font\\NotoSans-Bold.ttf' +local strings = { + ['warnings'] = { + RaidWarningFrameSlot1, + RaidWarningFrameSlot2, + RaidBossEmoteFrameSlot1, + RaidBossEmoteFrameSlot2 + }, + ['zone'] = { + ZoneTextString, + SubZoneTextString, + PVPInfoTextString, + PVPArenaTextString + }, + ['map'] = { + WorldMapFrameAreaLabel, + WorldMapFrameAreaDescription, + WorldMapFrameAreaPetLevels + }, + ['toast'] = { + BNToastFrameTopLine, + BNToastFrameMiddleLine, + BNToastFrameBottomLine, + BNToastFrameDoubleLine + }, + ['tooltip'] = { + GameTooltipTextLeft1 + }, +} - ns.FONT_REGULAR = FONT_REGULAR - ns.FONT_BOLD = FONT_BOLD +local iterate = function(v, callback) + local i, j = next(v, nil) + while i do + callback(j) + i, j = next(v, i) + end +end - local strings = { - ['warnings'] = { - RaidWarningFrameSlot1, - RaidWarningFrameSlot2, - RaidBossEmoteFrameSlot1, - RaidBossEmoteFrameSlot2 - }, - ['zone'] = { - ZoneTextString, - SubZoneTextString, - PVPInfoTextString, - PVPArenaTextString - }, - ['map'] = { - WorldMapFrameAreaLabel, - WorldMapFrameAreaDescription, - WorldMapFrameAreaPetLevels - }, - ['toast'] = { - BNToastFrameTopLine, - BNToastFrameMiddleLine, - BNToastFrameBottomLine, - BNToastFrameDoubleLine - }, - ['tooltip'] = { - GameTooltipTextLeft1 - }, - } - - local iterate = function(v, callback) - local i, j = next(v, nil) - while i do - callback(j) - i, j = next(v, i) - end - end - - for n, v in pairs(strings) do - if n == 'zone' or n == 'warnings' then - iterate(v, function(t) - t:SetFont(FONT_BOLD, 7) - t:SetShadowOffset(1, -1.25) - t:SetShadowColor(0, 0, 0, 1) - end) - elseif n == 'map' then - iterate(v, function(t) - t:SetFont(FONT_BOLD, 30) - t:SetShadowOffset(1, -1.25) - t:SetShadowColor(0, 0, 0, 1) - end) - elseif n == 'toast' then - iterate(v, function(t) - if t == BNToastFrameTopLine then t:SetJustifyH'CENTER' end - t:SetFont(t == BNToastFrameTopLine and FONT_BOLD or FONT_REGULAR, - t == BNToastFrameTopLine and 13 or 10) - t:SetShadowOffset(1, -1.25) - t:SetShadowColor(0, 0, 0, 1) - end) - elseif n == 'tooltip' then - iterate(v, function(t) - t:SetFont(FONT_REGULAR, 13) - t:SetShadowOffset(1, -1.25) - t:SetShadowColor(0, 0, 0, 1) - end) - elseif n == 'common' then - iterate(v, function(t) - t:SetFont(FONT_REGULAR, 13) - end) - end - end - - -- font objects - local t = CreateFont'modMenuFont' - t:SetFont(STANDARD_TEXT_FONT, 12) - - local t = CreateFont'modNameFont' - t:SetFont([[Fonts\skurri.ttf]], 14) - t:SetShadowOffset(1, -1) - t:SetShadowColor(0, 0, 0) - - local t = CreateFont'modNameFontSmall' - t:SetFont([[Fonts\skurri.ttf]], 10) - t:SetShadowOffset(1, -1) - t:SetShadowColor(0, 0, 0) - - local t = CreateFont'modAuraFont' - t:SetFont([[Fonts\skurri.ttf]], 14, 'THICKOUTLINE') - t:SetShadowOffset(0, 0) - - - -- +for n, v in pairs(strings) do + if n == 'zone' or n == 'warnings' then + iterate(v, function(t) + t:SetFont(FONT_BOLD, 7) + t:SetShadowOffset(1, -1.25) + t:SetShadowColor(0, 0, 0, 1) + end) + elseif n == 'map' then + iterate(v, function(t) + t:SetFont(FONT_BOLD, 30) + t:SetShadowOffset(1, -1.25) + t:SetShadowColor(0, 0, 0, 1) + end) + elseif n == 'toast' then + iterate(v, function(t) + if t == BNToastFrameTopLine then t:SetJustifyH'CENTER' end + t:SetFont(t == BNToastFrameTopLine and FONT_BOLD or FONT_REGULAR, + t == BNToastFrameTopLine and 13 or 10) + t:SetShadowOffset(1, -1.25) + t:SetShadowColor(0, 0, 0, 1) + end) + elseif n == 'tooltip' then + iterate(v, function(t) + t:SetFont(FONT_REGULAR, 13) + t:SetShadowOffset(1, -1.25) + t:SetShadowColor(0, 0, 0, 1) + end) + elseif n == 'common' then + iterate(v, function(t) + t:SetFont(FONT_REGULAR, 13) + end) + end +end diff --git a/core/transform.lua b/core/transform.lua index b54c3fd..d0a6e98 100755 --- a/core/transform.lua +++ b/core/transform.lua @@ -1,74 +1,69 @@ +local _, ns = ... +local events = { + 'UI_ERROR_MESSAGE', + 'GOSSIP_SHOW' +} - local _, ns = ... +local tip = CreateFrame('GAMETOOLTIP', 'modmount', nil, 'GameTooltipTemplate') +tip:SetOwner(UIParent, 'ANCHOR_NONE') - local events = { - 'UI_ERROR_MESSAGE', - 'GOSSIP_SHOW' - } - - local tip = CreateFrame('GAMETOOLTIP', 'modmount', nil, 'GameTooltipTemplate') - tip:SetOwner(UIParent, 'ANCHOR_NONE') - - local AddAutoDismount = function() - for i = -1, 16 do - local j = GetPlayerBuff(i) - tip:ClearLines() - tip:SetPlayerBuff(j) - local t = _G['modmountTextLeft2']:GetText() - if t then - local _, _, speed = string.find(t, 'Increases speed by (.+)%%') - if speed then CancelPlayerBuff(i) return end - end +local AddAutoDismount = function() + for i = -1, 16 do + local j = GetPlayerBuff(i) + tip:ClearLines() + tip:SetPlayerBuff(j) + local t = _G['modmountTextLeft2']:GetText() + if t then + local _, _, speed = string.find(t, 'Increases speed by (.+)%%') + if speed then CancelPlayerBuff(i) return end end end +end - local AddAutoFishing = function() - for bag = 0, NUM_BAG_SLOTS do - for slot = 1, GetContainerNumSlots(bag) do - local link = GetContainerItemLink(bag, slot) - if link then - local _, _, istring = string.find(link, '|H(.+)|h') - local n = GetItemInfo(istring) - if n and (string.find(n, 'Fishing Pole') or string.find(n, 'FC-5000')) then - UseContainerItem(bag, slot) - print'|cff4c8d00Your Fishing Pole has been equipped.|r' - break - end +local AddAutoFishing = function() + for bag = 0, NUM_BAG_SLOTS do + for slot = 1, GetContainerNumSlots(bag) do + local link = GetContainerItemLink(bag, slot) + if link then + local _, _, istring = string.find(link, '|H(.+)|h') + local n = GetItemInfo(istring) + if n and (string.find(n, 'Fishing Pole') or string.find(n, 'FC-5000')) then + UseContainerItem(bag, slot) + print'|cff4c8d00Your Fishing Pole has been equipped.|r' + break end end end end +end - local AddAutoShapeshift = function() - for i = 1, GetNumShapeshiftForms() do - local _, name, active = GetShapeshiftFormInfo(i) - if active ~= nil then - CastShapeshiftForm(i) - break - end +local AddAutoShapeshift = function() + for i = 1, GetNumShapeshiftForms() do + local _, name, active = GetShapeshiftFormInfo(i) + if active ~= nil then + CastShapeshiftForm(i) + break end end +end - local OnEvent = function(self, event, t) - if event =='UI_ERROR_MESSAGE' then - if string.find(t, 'mounted') - or string.find(t, 'while silenced') then - AddAutoDismount() - elseif string.find(t, 'Fishing Pole') then - AddAutoFishing() - elseif string.find(t, 'shapeshift') then - AddAutoShapeshift() - end - else - local _, g1 = GetGossipOptions() - if g1 == 'taxi' then AddAutoDismount() end +local OnEvent = function(self, event, t) + if event =='UI_ERROR_MESSAGE' then + if string.find(t, 'mounted') + or string.find(t, 'while silenced') then + AddAutoDismount() + elseif string.find(t, 'Fishing Pole') then + AddAutoFishing() + elseif string.find(t, 'shapeshift') then + AddAutoShapeshift() end + else + local _, g1 = GetGossipOptions() + if g1 == 'taxi' then AddAutoDismount() end end +end - local e = CreateFrame'Frame' - for _, v in pairs(events) do e:RegisterEvent(v) end - e:SetScript('OnEvent', OnEvent) - - - -- +local e = CreateFrame'Frame' +for _, v in pairs(events) do e:RegisterEvent(v) end +e:SetScript('OnEvent', OnEvent) diff --git a/core/var.lua b/core/var.lua index 7df9ae7..41dabae 100755 --- a/core/var.lua +++ b/core/var.lua @@ -1,94 +1,117 @@ +local _, ns = ... +-- TODO: +-- combat text (todo) +-- formatting +-- modifiers on strings +-- style +-- url +-- pvp +-- raid - local _, ns = ... +MODUI_VAR = { + ['elements'] = { + all = true, + aura = { + enable = true, + statusbars = true, + values = true, + }, + chat = { + enable = true, + events = true, + style = true, + url = true, + sysmsg = false, -- objective text goes in chat window + colornames = true, + }, + ecastbar = { + enable = true, + }, + error = { + enable = true, + quick = true, + }, + mainbar = { + enable = true, + keypress = true, + xp = true, + horiz = false, + micromenubutton = true, + bagbutton = true, + }, + nameplate = { + enable = true, + aura = true, + combo = true, + friendlyclass = false, + totem = true, + }, + onebag = { + enable = true, + greys = true, + }, + statusbar = { + health = {r = 0, g = 1, b = 0}, + mana = {r = 0, g = 0, b = 1}, + rage = {r = 1, g = 0, b = 0}, + focus = {r = 1, g = .5, b = .25}, + energy = {r = 1, g = 1, b = 0}, + }, + tooltip = { + enable = true, + mouseanchor = false, + disablefade = false, + }, + tracker = { + enable = true, + }, + unit = { + enable = true, + castbar = true, + player = true, + target = true, + party = true, + tot = true, + pet = true, + auras = true, + vcolour = true, + rcolour = true, + }, + talentbuilds = { + enable = false, + } + }, + ['statusbar'] = { + smooth = true, + }, + ['theme'] = {r = 0, g = 0, b = 0}, + ['theme_bu'] = {r = .4, g = .4, b = .4}, +} +MODUI_VAR_DEFAULTS = MODUI_VAR - -- TODO: - -- combat text (todo) - -- formatting - -- modifiers on strings - -- style - -- url - -- pvp - -- raid +local OnEvent = function(self, event, addon) + -- Copies default values to the saved variables + -- This makes sure existing saved variables get newly added options + local function MergeTable(source, destination) + if destination == nil then + destination = {} + end - MODUI_VAR = { - ['elements'] = { - all = true, - aura = { - enable = true, - statusbars = true, - values = true, - }, - chat = { - enable = true, - events = true, - style = true, - url = true, - sysmsg = false, -- objective text goes in chat window - colornames = true, - }, - ecastbar = { - enable = true, - }, - error = { - enable = true, - quick = true, - }, - mainbar = { - enable = true, - keypress = true, - xp = true, - horiz = false, - }, - nameplate = { - enable = true, - aura = true, - combo = true, - friendlyclass = false, - totem = true, - }, - onebag = { - enable = true, - greys = true, - }, - statusbar = { - health = {r = 0, g = 1, b = 0}, - mana = {r = 0, g = 0, b = 1}, - rage = {r = 1, g = 0, b = 0}, - focus = {r = 1, g = .5, b = .25}, - energy = {r = 1, g = 1, b = 0}, - }, - tooltip = { - enable = true, - mouseanchor = false, - disablefade = false, - }, - tracker = { - enable = true, - }, - unit = { - enable = true, - castbar = true, - player = true, - target = true, - party = true, - tot = true, - pet = true, - auras = true, - vcolour = true, - rcolour = true, - }, - talentbuilds = { - enable = false, - } - }, - ['statusbar'] = { - smooth = true, - }, - ['theme'] = {r = 0, g = 0, b = 0}, - ['theme_bu'] = {r = .4, g = .4, b = .4}, - } - MODUI_VAR_DEFAULTS = MODUI_VAR + for key, value in pairs(source) do + if type(value) == 'table' then + destination[key] = MergeTable(value, destination[key]) + elseif destination[key] == nil then + destination[key] = value + end + end + return destination + end - -- + MODUI_VAR = MergeTable(MODUI_VAR_DEFAULTS, MODUI_VAR) +end + +local e = CreateFrame'Frame' +e:RegisterEvent'VARIABLES_LOADED' +e:SetScript('OnEvent', OnEvent) diff --git a/libraries/LibClassicCasterino/LibClassicCasterino.lua b/libraries/LibClassicCasterino/LibClassicCasterino.lua deleted file mode 100755 index f26e9e2..0000000 --- a/libraries/LibClassicCasterino/LibClassicCasterino.lua +++ /dev/null @@ -1,3269 +0,0 @@ ---[================[ -LibClassicCasterino -Author: d87 ---]================] - - -local MAJOR, MINOR = "LibClassicCasterino", 10 -local lib = LibStub:NewLibrary(MAJOR, MINOR) -if not lib then return end - - -lib.callbacks = lib.callbacks or LibStub("CallbackHandler-1.0"):New(lib) - -lib.frame = lib.frame or CreateFrame("Frame") - -local f = lib.frame -local callbacks = lib.callbacks - -lib.casters = lib.casters or {} -- setmetatable({}, { __mode = "v" }) -local casters = lib.casters - --- local guidsToPurge = {} - -local UnitGUID = UnitGUID -local bit_band = bit.band -local GetTime = GetTime -local CastingInfo = CastingInfo -local ChannelInfo = ChannelInfo - -local COMBATLOG_OBJECT_TYPE_PLAYER = COMBATLOG_OBJECT_TYPE_PLAYER -local classCasts -local classChannels -local talentDecreased -local FireToUnits - -f:SetScript("OnEvent", function(self, event, ...) - return self[event](self, event, ...) -end) - - -local spellNameToID = {} -local NPCspellNameToID = {} -local NPCSpells - -local castTimeCache = {} -local castTimeCacheStartTimes = setmetatable({}, { __mode = "v" }) - ---[[ -function DUMPCASTS() - local castedSpells = {} - local counter = 0 - for id=1,40000 do - local name, _, texture, castTime = GetSpellInfo(id) - 136235 -- interface/icons/temp.blp -- Samwise Didier Icon aka missing icon - if name and castTime > 500 and texture ~= 136235 then - castedSpells[id] = true - counter = counter + 1 - end - end - print(counter) - NugHealthDB.LCDDUMP = castedSpells -end -]] - -local refreshCastTable = function(tbl, ...) - local numArgs = select("#", ...) - for i=1, numArgs do - tbl[i] = select(i, ...) - end -end - -local makeCastUID = function(guid, spellName) - local _, _, _, _, _, npcID = strsplit("-", guid); - npcID = npcID or "Unknown" - return npcID..spellName -end - -local function CastStart(srcGUID, castType, spellName, spellID, overrideCastTime ) - local _, _, icon, castTime = GetSpellInfo(spellID) - if castType == "CHANNEL" then - castTime = classChannels[spellID]*1000 - local decreased = talentDecreased[spellID] - if decreased then - castTime = castTime - decreased - end - end - if overrideCastTime then - castTime = overrideCastTime - end - local now = GetTime()*1000 - local startTime = now - local endTime = now + castTime - local currentCast = casters[srcGUID] - - if currentCast then - refreshCastTable(currentCast, castType, spellName, icon, startTime, endTime, spellID ) - else - casters[srcGUID] = { castType, spellName, icon, startTime, endTime, spellID } - end - - - if castType == "CAST" then - FireToUnits("UNIT_SPELLCAST_START", srcGUID) - else - FireToUnits("UNIT_SPELLCAST_CHANNEL_START", srcGUID) - end -end - -local function CastStop(srcGUID, castType, suffix ) - local currentCast = casters[srcGUID] - if currentCast then - castType = castType or currentCast[1] - - casters[srcGUID] = nil - - if castType == "CAST" then - local event = "UNIT_SPELLCAST_"..suffix - FireToUnits(event, srcGUID) - else - FireToUnits("UNIT_SPELLCAST_CHANNEL_STOP", srcGUID) - end - end -end - -function f:COMBAT_LOG_EVENT_UNFILTERED(event) - - local timestamp, eventType, hideCaster, - srcGUID, srcName, srcFlags, srcFlags2, - dstGUID, dstName, dstFlags, dstFlags2, - spellID, spellName, arg3, arg4, arg5 = CombatLogGetCurrentEventInfo() - - local isSrcPlayer = bit_band(srcFlags, COMBATLOG_OBJECT_TYPE_PLAYER) > 0 - if isSrcPlayer and spellID == 0 then - spellID = spellNameToID[spellName] - end - if eventType == "SPELL_CAST_START" then - if isSrcPlayer then - local isCasting = classCasts[spellID] - if isCasting then - CastStart(srcGUID, "CAST", spellName, spellID) - end - else - local castUID = makeCastUID(srcGUID, spellName) - local cachedTime = castTimeCache[castUID] - local spellID = NPCspellNameToID[spellName] -- just for the icon - if not spellID then - spellID = 2050 - end - if cachedTime then - CastStart(srcGUID, "CAST", spellName, spellID, cachedTime*1000) - else - castTimeCacheStartTimes[srcGUID..castUID] = GetTime() - CastStart(srcGUID, "CAST", spellName, spellID, 1500) -- using default 1.5s cast time for now - end - end - elseif eventType == "SPELL_CAST_FAILED" then - - CastStop(srcGUID, "CAST", "FAILED") - - elseif eventType == "SPELL_CAST_SUCCESS" then - if isSrcPlayer and classChannels[spellID] then - -- SPELL_CAST_SUCCESS can come right after AURA_APPLIED, so ignoring it - return - end - if not isSrcPlayer then - local castUID = makeCastUID(srcGUID, spellName) - local cachedTime = castTimeCache[castUID] - if not cachedTime then - local restoredStartTime = castTimeCacheStartTimes[srcGUID..castUID] - if restoredStartTime then - local now = GetTime() - local castTime = now - restoredStartTime - if castTime < 10 then - castTimeCache[castUID] = castTime - end - end - end - end - CastStop(srcGUID, nil, "STOP") - - elseif eventType == "SPELL_INTERRUPT" then - - CastStop(dstGUID, nil, "INTERRUPTED") - elseif eventType == "UNIT_DIED" then - CastStop(dstGUID, nil, "FAILED") - - elseif eventType == "SPELL_AURA_APPLIED" or - eventType == "SPELL_AURA_REFRESH" or - eventType == "SPELL_AURA_APPLIED_DOSE" - then - if isSrcPlayer then - local isChanneling = classChannels[spellID] - if isChanneling then - CastStart(srcGUID, "CHANNEL", spellName, spellID) - end - end - elseif eventType == "SPELL_AURA_REMOVED" then - if isSrcPlayer then - local isChanneling = classChannels[spellID] - if isChanneling then - CastStop(srcGUID, "CHANNEL", "STOP") - end - end - end - -end - --- local castTimeIncreases = { --- [1714] = 60, -- Curse of Tongues (60%) --- [5760] = 60, -- Mind-Numbing Poison (60%) --- } -local function IsSlowedDown(unit) - for i=1,16 do - local name, _, _, _, _, _, _, _, _, spellID = UnitAura(unit, i, "HARMFUL") - if not name then return end - if spellID == 1714 or spellID == 5760 then - return true - end - end -end - -function lib:UnitCastingInfo(unit) - if unit == "player" then return CastingInfo() end - local guid = UnitGUID(unit) - local cast = casters[guid] - if cast then - local castType, name, icon, startTimeMS, endTimeMS, spellID = unpack(cast) - if IsSlowedDown(unit) then - local duration = endTimeMS - startTimeMS - endTimeMS = startTimeMS + duration * 1.6 - end - if castType == "CAST" and endTimeMS > GetTime()*1000 then - local castID = nil - return name, nil, icon, startTimeMS, endTimeMS, nil, castID, false, spellID - end - end -end - -function lib:UnitChannelInfo(unit) - if unit == "player" then return ChannelInfo() end - local guid = UnitGUID(unit) - local cast = casters[guid] - if cast then - local castType, name, icon, startTimeMS, endTimeMS, spellID = unpack(cast) - -- Curse of Tongues doesn't matter that much for channels, skipping - if castType == "CHANNEL" and endTimeMS > GetTime()*1000 then - return name, nil, icon, startTimeMS, endTimeMS, nil, false, spellID - end - end -end - - -local Passthrough = function(self, event, unit) - if unit == "player" then - callbacks:Fire(event, unit) - end -end -f.UNIT_SPELLCAST_START = Passthrough -f.UNIT_SPELLCAST_DELAYED = Passthrough -f.UNIT_SPELLCAST_STOP = Passthrough -f.UNIT_SPELLCAST_FAILED = Passthrough -f.UNIT_SPELLCAST_INTERRUPTED = Passthrough -f.UNIT_SPELLCAST_CHANNEL_START = Passthrough -f.UNIT_SPELLCAST_CHANNEL_UPDATE = Passthrough -f.UNIT_SPELLCAST_CHANNEL_STOP = Passthrough - -function callbacks.OnUsed() - f:RegisterEvent("COMBAT_LOG_EVENT_UNFILTERED") - - f:RegisterEvent("UNIT_SPELLCAST_START") - f:RegisterEvent("UNIT_SPELLCAST_DELAYED") - f:RegisterEvent("UNIT_SPELLCAST_STOP") - f:RegisterEvent("UNIT_SPELLCAST_FAILED") - f:RegisterEvent("UNIT_SPELLCAST_INTERRUPTED") - f:RegisterEvent("UNIT_SPELLCAST_CHANNEL_START") - f:RegisterEvent("UNIT_SPELLCAST_CHANNEL_UPDATE") - f:RegisterEvent("UNIT_SPELLCAST_CHANNEL_STOP") - - -- for unit lookup - f:RegisterEvent("GROUP_ROSTER_UPDATE") - f:RegisterEvent("NAME_PLATE_UNIT_ADDED") - f:RegisterEvent("NAME_PLATE_UNIT_REMOVED") -end - -function callbacks.OnUnused() - f:UnregisterAllEvents() -end - -talentDecreased = { - [25311] = 0.8, -- Corruption (while leveling) - [17924] = 2, -- Soul Fire - [25307] = 0.5, -- Shadow Bolt - [25309] = 0.5, -- Immolate - [691] = 4, -- Summon Felhunter - [688] = 4, -- Summon Imp - [697] = 4, -- Summon Voidwalker - [712] = 4, -- Summon Succubus - - [15208] = 1, -- Lightning Bolt - [10605] = 1, -- Chain Lightning - [25357] = 0.5, -- Healing Wave - [2645] = 2, -- Ghost Wolf - - [25304] = 0.5, -- Frostbolt - [25306] = 0.5, -- Fireball - - [10934] = 0.5, -- Smite - [15261] = 0.5, -- Holy Fire - [6064] = 0.5, -- Heal - [25314] = 0.5, -- Greater Heal - [10876] = 0.5, -- Mana Burn - - [9912] = 0.5, -- Wrath - [25298] = 0.5, -- Starfire - [25297] = 0.5, -- Healing Touch -} - -classCasts = { - [25311] = 2, -- Corruption - [6215] = 1.5, -- Fear - [17928] = 2, -- Howl of Terror - [18647] = 1.5, -- Banish - [6366] = 3, -- Create Firestone (Lesser) - [17951] = 3, -- Create Firestone - [17952] = 3, -- Create Firestone (Greater) - [17953] = 3, -- Create Firestone (Major) - [28023] = 3, -- Create Healthstone - [11729] = 3, -- Create Healthstone (Greater) - [6202] = 3, -- Create Healthstone (Lesser) - [11730] = 3, -- Create Healthstone (Major) - [6201] = 3, -- Create Healthstone (Minor) - [20755] = 3, -- Create Soulstone - [20756] = 3, -- Create Soulstone (Greater) - [20752] = 3, -- Create Soulstone (Lesser) - [20757] = 3, -- Create Soulstone (Major) - [693] = 3, -- Create Soulstone (Minor) - [2362] = 5, -- Create Spellstone - [17727] = 5, -- Create Spellstone (Greater) - [17728] = 5, -- Create Spellstone (Major) - [11726] = 3, -- Enslave Demon - [126] = 5, -- Eye of Kilrogg - [1122] = 2, -- Inferno - [23161] = 3, -- Summon Dreadsteed - [5784] = 3, -- Summon Felsteed - [691] = 10, -- Summon Felhunter - [688] = 10, -- Summon Imp - [697] = 10, -- Summon Voidwalker - [712] = 10, -- Summon Succubus - [25309] = 2, -- Immolate - [17923] = 1.5, -- Searing Pain - [25307] = 3, -- Shadow Bolt - [17924] = 4, -- Soul Fire - - [9853] = 1.5, -- Entangling Roots - [18658] = 1.5, -- Hibernate - [9901] = 1.5, -- Soothe Animal - [25298] = 3.5, -- Starfire - [18960] = 10, -- Teleport: Moonglade - [9912] = 2, -- Wrath - [25297] = 3.5, -- Healing Touch - [20748] = 2, -- Rebirth - [9858] = 2, -- Regrowth - - [28612] = 3, -- Conjure Food - [759] = 3, -- Conjure Mana Agate - [10053] = 3, -- Conjure Mana Citrine - [3552] = 3, -- Conjure Mana Jade - [10054] = 3, -- Conjure Mana Ruby - [10140] = 3, -- Conjure Water - [12826] = 1.5, -- Polymorph - [28270] = 1.5, -- Polymorph: Cow - [25306] = 3.5, -- Fireball - [10216] = 3, -- Flamestrike - [10207] = 1.5, -- Scorch - [25304] = 3, -- Frostbolt - - [10876] = 3, -- Mana Burn - [10955] = 1.5, -- Shackle Undead - [10917] = 1.5, -- Flash Heal - [25314] = 3, -- Greater Heal - [6064] = 3, -- Heal - [15261] = 3.5, -- Holy Fire - [2053] = 2.5, -- Lesser Heal - [25316] = 3, -- Prayer of Healing - [20770] = 10, -- Resurrection - [10934] = 2.5, -- Smite - [10947] = 1.5, -- Mind Blast - [10912] = 3, -- Mind Control - - [19943] = 1.5, -- Flash of Light - [24239] = 1, -- Hammer of Wrath - [25292] = 2.5, -- Holy Light - [10318] = 2, -- Holy Wrath - [20773] = 10, -- Redemption - [23214] = 3, -- Summon Charger - [13819] = 3, -- Summon Warhorse - [10326] = 1.5, -- Turn Undead - - [10605] = 2.5, -- Chain Lightning - [15208] = 3, -- Lightning Bolt - [556] = 10, -- Astral Recall - [6196] = 2, -- Far Sight - [2645] = 3, -- Ghost Wolf - [20777] = 10, -- Ancestral Spirit - [10623] = 2.5, -- Chain Heal - [25357] = 3, -- Healing Wave - [10468] = 1.5, -- Lesser Healing Wave - - [1842] = 2, -- Disarm Trap - -- missing poison creation - - [11605] = 1.5, -- Slam - - [20904] = 3, -- Aimed Shot - [1002] = 2, -- Eyes of the Beast - [2641] = 5, -- Dismiss pet - [982] = 10, -- Revive Pet - [14327] = 1.5, -- Scare Beast - - [8690] = 10, -- Hearthstone - [4068] = 1, -- Iron Grenade - - -- Munts do not generate SPELL_CAST_START - -- [8394] = 3, -- Striped Frostsaber - -- [10793] = 3, -- Striped Nightsaber -} - -classChannels = { - [746] = 6, -- First Aid - [13278] = 4, -- Gnomish Death Ray - [20577] = 10, -- Cannibalize - [19305] = 6, -- Starshards - - -- DRUID - [17402] = 9.5, -- Hurricane - [9863] = 9.5, -- Tranquility - - -- HUNTER - [6197] = 60, -- Eagle Eye - [13544] = 5, -- Mend Pet - [1515] = 20, -- Tame Beast - [1002] = 60, -- Eyes of the Beast - [14295] = 6, -- Volley - - -- MAGE - [25345] = 5, -- Arcane Missiles - [10187] = 8, -- Blizzard - [12051] = 8, -- Evocation - - -- PRIEST - [18807] = 3, -- Mind Flay - [2096] = 60, -- Mind Vision - [10912] = 3, -- Mind Control - - -- WARLOCK - [126] = 45, -- Eye of Kilrogg - [11700] = 4.5, -- Drain Life - [11704] = 4.5, -- Drain Mana - [11675] = 14.5, -- Drain Soul - [11678] = 7.5, -- Rain of Fire - [11684] = 15, -- Hellfire - [11695] = 10, -- Health Funnel -} - -for id in pairs(classCasts) do - spellNameToID[GetSpellInfo(id)] = id - -- AddSpellNameRecognition(id) -end -for id in pairs(classChannels) do - spellNameToID[GetSpellInfo(id)] = id - -- AddSpellNameRecognition(id) -end - -local partyGUIDtoUnit = {} -local raidGUIDtoUnit = {} -local nameplateGUIDtoUnit = {} -local commonUnits = { - -- "player", - "target", - "targettarget", - "pet", -} - -function f:NAME_PLATE_UNIT_ADDED(event, unit) - local unitGUID = UnitGUID(unit) - nameplateGUIDtoUnit[unitGUID] = unit -end - - -function f:NAME_PLATE_UNIT_REMOVED(event, unit) - local unitGUID = UnitGUID(unit) -- Unit still exists at this point - nameplateGUIDtoUnit[unitGUID] = nil -end - -function f:GROUP_ROSTER_UPDATE() - table.wipe(partyGUIDtoUnit) - table.wipe(raidGUIDtoUnit) - if IsInGroup() then - for i=1,4 do - local unit = "party"..i - local guid = UnitGUID(unit) - if guid then - partyGUIDtoUnit[guid] = unit - end - end - end - if IsInRaid() then - for i=1,40 do - local unit = "raid"..i - local guid = UnitGUID(unit) - if guid then - raidGUIDtoUnit[guid] = unit - end - end - end -end - -FireToUnits = function(event, guid, ...) - for _, unit in ipairs(commonUnits) do - if UnitGUID(unit) == guid then - callbacks:Fire(event, unit, ...) - end - end - - local partyUnit = partyGUIDtoUnit[guid] - if partyUnit then - callbacks:Fire(event, partyUnit, ...) - end - - local raidUnit = raidGUIDtoUnit[guid] - if raidUnit then - callbacks:Fire(event, raidUnit, ...) - end - - local nameplateUnit = nameplateGUIDtoUnit[guid] - if nameplateUnit then - callbacks:Fire(event, nameplateUnit, ...) - end -end - - -if lib.NPCSpellsTimer then - lib.NPCSpellsTimer:Cancel() -end - -local prevID -local counter = 0 -local function processNPCSpellTable() - counter = 0 - local index, id = next(NPCSpells, prevID) - while (id and counter < 150) do - NPCspellNameToID[GetSpellInfo(id)] = id - - counter = counter + 1 - prevID = index - index, id = next(NPCSpells, prevID) - end - if (id) then - C_Timer.After(1, processNPCSpellTable) - end -end -lib.NPCSpellsTimer = C_Timer.NewTimer(6.5, processNPCSpellTable) - -NPCSpells = { - 10215, - 16587, - 16651, - 20874, - 16971, - 10695, - 7428, - 30152, - 7588, - 15238, - 11399, - 11431, - 7828, - 23242, - 7892, - 15910, - 8004, - 11975, - 16102, - 12039, - 12071, - 12167, - 20299, - 20427, - 513, - 16588, - 4165, - 20811, - 20875, - 25034, - 529, - 21067, - 21131, - 8552, - 8712, - 547, - 8776, - 555, - 8936, - 569, - 9224, - 4629, - 581, - 585, - 587, - 591, - 2371, - 13607, - 2387, - 2395, - 9672, - 27658, - 27722, - 13895, - 9928, - 4981, - 19980, - 14119, - 635, - 2547, - 639, - 10248, - 2579, - 647, - 5189, - 20876, - 16973, - 2667, - 17293, - 10792, - 17613, - 2739, - 11016, - 11048, - 693, - 15207, - 697, - 2795, - 5605, - 18445, - 707, - 2835, - 711, - 11400, - 22924, - 5781, - 23308, - 15783, - 735, - 27659, - 23628, - 19725, - 16071, - 19981, - 12072, - 28299, - 759, - 3067, - 3075, - 3083, - 3091, - 16590, - 6213, - 3115, - 8489, - 25292, - 8617, - 17294, - 8681, - 6405, - 6421, - 8809, - 6469, - 8873, - 8905, - 6517, - 3275, - 26444, - 3323, - 3331, - 837, - 6725, - 13480, - 6757, - 3387, - 9481, - 9513, - 13640, - 855, - 857, - 3443, - 6917, - 867, - 6949, - 3491, - 3507, - 9961, - 9993, - 24141, - 7077, - 3563, - 895, - 7221, - 16655, - 3635, - 25037, - 913, - 915, - 25357, - 17231, - 10697, - 10793, - 939, - 15048, - 943, - 11017, - 15208, - 26381, - 26445, - 11209, - 959, - 3843, - 3851, - 3859, - 22798, - 11433, - 18831, - 15592, - 7861, - 23310, - 7893, - 27725, - 8005, - 16072, - 12073, - 4067, - 20431, - 1026, - 16528, - 16656, - 8362, - 16784, - 12521, - 1062, - 8618, - 12745, - 8682, - 1090, - 1094, - 1098, - 1106, - 30093, - 8938, - 1122, - 9002, - 13225, - 22415, - 18448, - 18576, - 22799, - 22991, - 9482, - 23247, - 4950, - 24399, - 5110, - 5174, - 16657, - 20816, - 29134, - 5270, - 17169, - 10698, - 25807, - 17745, - 15049, - 26063, - 11082, - 15241, - 15305, - 22480, - 18449, - 11338, - 15497, - 5782, - 1450, - 23248, - 23312, - 15785, - 23632, - 12074, - 24208, - 20433, - 16402, - 16594, - 16658, - 8363, - 8395, - 12522, - 6278, - 16978, - 6310, - 6358, - 6422, - 17618, - 6470, - 6518, - 9003, - 13226, - 6630, - 13322, - 13482, - 6758, - 9483, - 13642, - 23249, - 23313, - 9739, - 9771, - 6950, - 19666, - 6982, - 9931, - 9995, - 14122, - 10059, - 20434, - 16531, - 10347, - 16659, - 24913, - 25297, - 1842, - 17235, - 10699, - 10795, - 10955, - 15114, - 15242, - 7638, - 18451, - 11339, - 15498, - 15530, - 7782, - 23250, - 11659, - 23442, - 19667, - 2006, - 2010, - 12075, - 8102, - 24274, - 20435, - 2052, - 2060, - 20627, - 16596, - 16660, - 8364, - 12491, - 12523, - 16980, - 25298, - 21331, - 12747, - 8780, - 8812, - 8940, - 9004, - 13227, - 13323, - 13419, - 22867, - 9484, - 23187, - 2396, - 9612, - 13899, - 13931, - 19860, - 9964, - 28242, - 28306, - 24275, - 2540, - 2548, - 14379, - 5159, - 10348, - 16661, - 16725, - 2660, - 2668, - 10700, - 10796, - 2740, - 2812, - 18453, - 11340, - 2860, - 15659, - 2908, - 11660, - 23508, - 2948, - 15915, - 19669, - 16075, - 12044, - 12076, - 3068, - 3084, - 3092, - 6199, - 6215, - 8365, - 12492, - 3132, - 3140, - 29331, - 12684, - 21397, - 8717, - 25748, - 6471, - 6487, - 8941, - 6535, - 3276, - 3292, - 13228, - 6631, - 3324, - 3332, - 22677, - 3356, - 3364, - 3372, - 13548, - 9485, - 13612, - 13644, - 3420, - 9613, - 3436, - 23509, - 13836, - 13868, - 6951, - 27860, - 3492, - 9901, - 9933, - 9997, - 28244, - 7079, - 3564, - 14380, - 20630, - 7223, - 16663, - 20822, - 3636, - 3644, - 3652, - 16983, - 29332, - 10605, - 7383, - 10701, - 10733, - 17559, - 3748, - 26069, - 11021, - 11085, - 18199, - 7639, - 7655, - 3844, - 3852, - 3860, - 3868, - 7751, - 22870, - 7799, - 7863, - 11661, - 11725, - 23510, - 23638, - 15980, - 19863, - 12045, - 8087, - 8103, - 4068, - 16, - 16408, - 8238, - 16600, - 16664, - 16728, - 8398, - 12525, - 16984, - 21143, - 12653, - 8686, - 17496, - 17560, - 8814, - 26006, - 26070, - 26134, - 4520, - 13229, - 18392, - 18456, - 18584, - 13421, - 13485, - 22999, - 23063, - 9614, - 23639, - 13901, - 13933, - 27990, - 19864, - 9966, - 20312, - 16409, - 20568, - 10318, - 5176, - 16665, - 16729, - 16985, - 21144, - 10702, - 10798, - 17561, - 21848, - 26071, - 15117, - 22168, - 15245, - 18457, - 11342, - 22744, - 15533, - 23000, - 11534, - 5784, - 27287, - 11726, - 15853, - 11790, - 19865, - 24024, - 12046, - 12078, - 28311, - 20313, - 20377, - 16410, - 16730, - 8399, - 12526, - 25112, - 16986, - 29335, - 25304, - 8687, - 17434, - 25688, - 17562, - 21913, - 26072, - 18138, - 13230, - 13262, - 6648, - 18458, - 6728, - 22937, - 13582, - 13646, - 27608, - 9743, - 27992, - 9935, - 20314, - 20378, - 7224, - 16667, - 16731, - 16795, - 7288, - 16987, - 10703, - 17435, - 10799, - 17563, - 17883, - 15118, - 11343, - 7752, - 15534, - 22938, - 7800, - 15662, - 7896, - 7928, - 7960, - 15982, - 8008, - 19867, - 12047, - 12079, - 8104, - 20315, - 20379, - 2053, - 2061, - 8272, - 4153, - 20763, - 16732, - 8400, - 16988, - 12655, - 17180, - 21403, - 8688, - 17564, - 21787, - 8880, - 17820, - 9200, - 9232, - 13519, - 9456, - 13583, - 2389, - 2397, - 9616, - 19484, - 13935, - 19868, - 9968, - 24091, - 10096, - 2541, - 2549, - 16413, - 5161, - 5177, - 20764, - 5273, - 2645, - 25307, - 2661, - 10704, - 10768, - 5401, - 17565, - 2741, - 11024, - 18205, - 2837, - 15535, - 11568, - 27291, - 2941, - 3013, - 6041, - 20317, - 20381, - 16367, - 8209, - 3085, - 3093, - 6201, - 3109, - 3117, - 16798, - 12528, - 8465, - 16990, - 12624, - 8593, - 3205, - 17566, - 3229, - 3237, - 6521, - 17950, - 3277, - 3293, - 3325, - 3333, - 22749, - 22813, - 3373, - 6777, - 9489, - 13648, - 3421, - 3429, - 6905, - 3477, - 3493, - 3501, - 9937, - 10001, - 7081, - 20318, - 20382, - 16415, - 3605, - 20702, - 20830, - 16799, - 7289, - 16991, - 25309, - 10673, - 10705, - 17503, - 17567, - 7481, - 10961, - 17951, - 7641, - 22430, - 18399, - 3845, - 3861, - 15472, - 7753, - 15536, - 7801, - 7817, - 15664, - 15728, - 11665, - 15792, - 11729, - 15856, - 11921, - 11985, - 12049, - 12081, - 8105, - 4061, - 4069, - 20319, - 16336, - 24670, - 20831, - 8402, - 66, - 16992, - 8690, - 8786, - 17952, - 4506, - 18656, - 1179, - 13617, - 13745, - 13841, - 13905, - 13937, - 4954, - 14033, - 9970, - 20320, - 20384, - 10258, - 10322, - 5178, - 25055, - 16993, - 25311, - 10674, - 10706, - 17505, - 30046, - 15057, - 30174, - 17953, - 18081, - 1403, - 18401, - 18657, - 11410, - 15537, - 11538, - 15665, - 1451, - 23392, - 11730, - 11762, - 27871, - 11922, - 16081, - 12050, - 12082, - 20321, - 20385, - 16418, - 8275, - 6202, - 12466, - 20897, - 16866, - 12562, - 16994, - 8595, - 8691, - 17506, - 6490, - 18082, - 18402, - 26656, - 18658, - 13522, - 6778, - 13746, - 9811, - 9875, - 14034, - 10003, - 7098, - 28448, - 20322, - 20386, - 7162, - 16419, - 113, - 20770, - 10451, - 16995, - 17187, - 10675, - 10707, - 116, - 7434, - 25953, - 10963, - 118, - 18211, - 22434, - 18403, - 7754, - 11443, - 7786, - 7802, - 7818, - 15730, - 11667, - 15794, - 11763, - 7962, - 7978, - 7994, - 11923, - 16082, - 126, - 12083, - 8106, - 8138, - 20323, - 12243, - 2054, - 20707, - 16868, - 21027, - 133, - 8532, - 134, - 8596, - 12883, - 8820, - 25954, - 8980, - 4539, - 143, - 18404, - 145, - 18596, - 22883, - 22947, - 2366, - 2406, - 13939, - 9876, - 4971, - 9972, - 2542, - 20388, - 10228, - 10324, - 5179, - 5195, - 14515, - 10452, - 16869, - 5275, - 2662, - 10676, - 10708, - 5403, - 21668, - 10964, - 172, - 18149, - 26403, - 5627, - 2838, - 11444, - 2878, - 11604, - 11668, - 184, - 23652, - 11892, - 19877, - 19941, - 12052, - 12084, - 20389, - 3070, - 24612, - 8245, - 8277, - 3110, - 12468, - 20901, - 25124, - 25316, - 8693, - 3206, - 17510, - 8789, - 8949, - 205, - 18086, - 3294, - 18214, - 22373, - 6635, - 3326, - 3334, - 22757, - 13524, - 9461, - 3398, - 13620, - 13748, - 23461, - 6907, - 23653, - 9813, - 3494, - 3502, - 19942, - 10005, - 20326, - 14292, - 3606, - 20902, - 25125, - 7355, - 10677, - 10709, - 3718, - 14900, - 10837, - 10869, - 3750, - 10933, - 10965, - 26085, - 15124, - 7643, - 18407, - 22566, - 3854, - 3862, - 7739, - 7755, - 7771, - 15668, - 11605, - 7867, - 7931, - 11829, - 16084, - 19943, - 12053, - 12085, - 4054, - 4062, - 8139, - 20327, - 16340, - 4094, - 8246, - 16552, - 8342, - 16744, - 8406, - 25126, - 21159, - 8598, - 271, - 8694, - 8758, - 25958, - 8950, - 18088, - 13237, - 18408, - 22567, - 22695, - 22759, - 13653, - 9654, - 9750, - 9814, - 13941, - 19816, - 9942, - 9974, - 20008, - 24359, - 10166, - 14293, - 10326, - 5180, - 5196, - 16745, - 20904, - 25127, - 5276, - 331, - 332, - 10678, - 10710, - 21544, - 339, - 21736, - 10934, - 5484, - 26087, - 15125, - 18089, - 348, - 18217, - 18409, - 5676, - 15797, - 5884, - 23592, - 16053, - 20009, - 12086, - 6060, - 20201, - 20329, - 20393, - 24680, - 16554, - 20777, - 16746, - 6252, - 25128, - 21097, - 21161, - 17194, - 6412, - 25704, - 403, - 25960, - 8951, - 22313, - 9143, - 18410, - 22761, - 421, - 6780, - 13622, - 9591, - 19434, - 13846, - 13878, - 9879, - 10007, - 7068, - 7084, - 7132, - 20394, - 14326, - 20714, - 10391, - 455, - 29160, - 457, - 458, - 459, - 17195, - 10679, - 10711, - 7420, - 7484, - 17707, - 470, - 471, - 472, - 474, - 15254, - 18411, - 11479, - 27241, - 491, - 15734, - 11671, - 19435, - 7948, - 11895, - 19755, - 12055, - 12087, - 507, - 12151, - 509, - 20395, - 12279, - 2055, - 4141, - 12471, - 8408, - 4221, - 25130, - 21099, - 536, - 8600, - 25514, - 8760, - 17708, - 556, - 21931, - 26218, - 18412, - 578, - 18540, - 13399, - 13463, - 18796, - 13527, - 23083, - 596, - 598, - 13687, - 23339, - 606, - 13815, - 13943, - 9912, - 14103, - 2543, - 20396, - 14327, - 16429, - 2575, - 10328, - 20716, - 10392, - 5213, - 2663, - 10680, - 10712, - 17453, - 10840, - 17709, - 25963, - 686, - 15095, - 690, - 692, - 698, - 700, - 18413, - 2823, - 18541, - 710, - 712, - 11416, - 11480, - 18989, - 724, - 11672, - 15799, - 15863, - 2951, - 19821, - 3007, - 12056, - 12088, - 16247, - 12248, - 12280, - 3079, - 3087, - 3095, - 20717, - 25004, - 29163, - 3143, - 3207, - 8793, - 6461, - 25964, - 3263, - 818, - 9081, - 6637, - 6653, - 3335, - 6717, - 13464, - 13528, - 18990, - 9657, - 6909, - 6925, - 19566, - 6957, - 3495, - 14008, - 3511, - 10009, - 20078, - 7101, - 20270, - 3567, - 20398, - 3583, - 3607, - 7277, - 3655, - 10681, - 10713, - 7421, - 930, - 932, - 10841, - 10873, - 25965, - 10969, - 15128, - 18159, - 7629, - 7645, - 18351, - 18415, - 3847, - 3855, - 3863, - 968, - 11417, - 7821, - 7853, - 984, - 7901, - 990, - 7949, - 996, - 1002, - 16056, - 19887, - 20015, - 12089, - 4055, - 28461, - 20399, - 8282, - 24942, - 12505, - 12537, - 29229, - 1064, - 25262, - 4286, - 1084, - 1088, - 12825, - 8762, - 8858, - 1112, - 21935, - 1124, - 22127, - 4526, - 18416, - 13529, - 18992, - 13657, - 13689, - 9658, - 13817, - 23663, - 9818, - 13945, - 4974, - 20016, - 28270, - 24239, - 10138, - 28526, - 20400, - 16497, - 16561, - 20720, - 20848, - 5262, - 17009, - 25263, - 17137, - 10682, - 10714, - 17393, - 10842, - 10874, - 25967, - 18417, - 18609, - 11418, - 23088, - 1452, - 11642, - 15801, - 27567, - 15865, - 11802, - 23664, - 11962, - 19889, - 20017, - 12090, - 16249, - 28463, - 20401, - 1536, - 1540, - 16498, - 8283, - 6222, - 20849, - 6254, - 6270, - 17138, - 6350, - 6366, - 21425, - 6414, - 12890, - 25968, - 6510, - 8955, - 6638, - 18418, - 22705, - 13530, - 23089, - 6814, - 6894, - 27632, - 13882, - 19890, - 9979, - 10011, - 28272, - 10139, - 20402, - 1804, - 10395, - 25073, - 17203, - 10683, - 10715, - 17459, - 7454, - 10875, - 25969, - 17843, - 26097, - 11067, - 11131, - 7630, - 1916, - 18419, - 11355, - 11419, - 27057, - 23090, - 11643, - 15802, - 7918, - 7934, - 23666, - 11899, - 16058, - 12059, - 12091, - 24242, - 16250, - 8142, - 20403, - 28785, - 16564, - 8348, - 8444, - 2120, - 21171, - 12667, - 8604, - 17460, - 8764, - 30001, - 25970, - 26098, - 8988, - 18420, - 22643, - 27058, - 2368, - 23091, - 9532, - 13659, - 13819, - 23667, - 13915, - 9852, - 9916, - 9980, - 20020, - 10140, - 2544, - 20404, - 2576, - 16565, - 16629, - 10396, - 24947, - 20916, - 17141, - 2664, - 10684, - 10716, - 17461, - 10844, - 10876, - 25971, - 15067, - 5567, - 26419, - 18421, - 2824, - 11356, - 11420, - 27059, - 15611, - 11548, - 23220, - 2912, - 11836, - 19701, - 23860, - 16059, - 12060, - 12092, - 6063, - 6127, - 3072, - 3080, - 3088, - 3096, - 6223, - 3120, - 6255, - 8445, - 17142, - 6351, - 6415, - 8797, - 6463, - 25972, - 3256, - 3264, - 9053, - 3296, - 3320, - 3328, - 6671, - 22709, - 3368, - 3376, - 3400, - 3408, - 23221, - 13692, - 27572, - 3472, - 9853, - 3496, - 3504, - 28148, - 10013, - 3552, - 10205, - 3584, - 20790, - 7279, - 7295, - 7359, - 3696, - 10717, - 7439, - 3728, - 7487, - 25973, - 15228, - 15292, - 3840, - 3848, - 3856, - 3864, - 3872, - 22902, - 7791, - 15612, - 23094, - 7855, - 7919, - 7935, - 7951, - 7967, - 27829, - 23862, - 16060, - 24054, - 20023, - 12093, - 4064, - 24374, - 20407, - 20535, - 8286, - 20791, - 12509, - 8446, - 21047, - 21175, - 8606, - 4320, - 17464, - 8766, - 25974, - 26102, - 30732, - 30156, - 30096, - 30091, - 18424, - 9472, - 30047, - 16742, - 29334, - 29333, - 13501, - 5272, - 28995, - 18153, - 28739, - 13661, - 13693, - 7489, - 8467, - 28505, - 28487, - 9758, - 28482, - 13917, - 23799, - 6297, - 4960, - 9950, - 3693, - 14109, - 20698, - 28462, - 461, - 28328, - 28305, - 10206, - 28304, - 20536, - 6651, - 28286, - 16633, - 20792, - 28271, - 28243, - 25079, - 5264, - 5280, - 28210, - 10622, - 28209, - 10686, - 10718, - 28208, - 17465, - 28207, - 28205, - 28146, - 28133, - 15037, - 28089, - 5504, - 1096, - 27891, - 18105, - 27890, - 15261, - 15293, - 27870, - 21160, - 22945, - 3243, - 11358, - 27830, - 27794, - 15549, - 27760, - 27724, - 27723, - 27721, - 23224, - 9435, - 27660, - 3503, - 27637, - 15869, - 27624, - 15933, - 27831, - 23800, - 19769, - 28023, - 27588, - 18440, - 12062, - 5186, - 6064, - 4065, - 27527, - 27106, - 27100, - 16381, - 27098, - 24696, - 16570, - 26616, - 20793, - 19851, - 4983, - 12542, - 16168, - 26437, - 26436, - 26435, - 8607, - 17274, - 12766, - 26434, - 6416, - 26433, - 8799, - 26432, - 26431, - 25976, - 21945, - 26430, - 26429, - 26407, - 9055, - 12066, - 23246, - 26298, - 24093, - 6656, - 26192, - 26103, - 26086, - 13438, - 3108, - 26055, - 16724, - 20035, - 26010, - 23161, - 23225, - 25985, - 691, - 25983, - 6896, - 13822, - 20819, - 25981, - 27832, - 23801, - 25979, - 24139, - 25183, - 9983, - 10015, - 25966, - 25962, - 25961, - 7120, - 25959, - 10207, - 25849, - 25841, - 25839, - 25808, - 25804, - 20794, - 25722, - 25664, - 25081, - 20821, - 7328, - 23316, - 10623, - 25424, - 10687, - 10719, - 16006, - 25347, - 25314, - 25306, - 7488, - 10911, - 25977, - 25181, - 25180, - 25178, - 25177, - 25162, - 15230, - 15262, - 15294, - 18363, - 25146, - 25129, - 20829, - 7728, - 22336, - 23085, - 7776, - 23391, - 25082, - 23098, - 25080, - 25078, - 25074, - 25072, - 25054, - 25052, - 27641, - 7952, - 11839, - 25030, - 8000, - 8016, - 25018, - 16094, - 24997, - 12063, - 24995, - 16969, - 24314, - 24914, - 24912, - 24903, - 24902, - 24901, - 8256, - 24801, - 24706, - 8352, - 24668, - 4209, - 12543, - 2121, - 16652, - 24418, - 24358, - 24334, - 23102, - 24209, - 24189, - 8736, - 8768, - 8800, - 24173, - 24140, - 25978, - 24138, - 10329, - 24136, - 26234, - 18108, - 24092, - 24011, - 7395, - 23954, - 5274, - 23804, - 13375, - 23803, - 13439, - 23802, - 13503, - 23787, - 2369, - 23665, - 13631, - 2393, - 13695, - 23662, - 23650, - 23637, - 19452, - 23636, - 13887, - 23633, - 9856, - 9888, - 9920, - 9952, - 23629, - 20028, - 23531, - 23530, - 6413, - 10144, - 2545, - 3336, - 10771, - 5137, - 2577, - 5169, - 5185, - 2601, - 3570, - 8153, - 25083, - 5265, - 2641, - 23381, - 23338, - 2665, - 2673, - 10720, - 17405, - 25659, - 23315, - 23314, - 10880, - 10912, - 2737, - 23309, - 5505, - 23252, - 23251, - 26299, - 23243, - 15263, - 15295, - 23241, - 15119, - 23239, - 23238, - 2841, - 15451, - 23228, - 23227, - 23223, - 5761, - 15647, - 19069, - 5809, - 15743, - 23222, - 23219, - 23214, - 23206, - 23189, - 15935, - 19645, - 15999, - 16031, - 23130, - 19862, - 20773, - 20029, - 12096, - 24252, - 23093, - 23092, - 23087, - 6129, - 3073, - 3081, - 23086, - 3097, - 3105, - 20797, - 3121, - 6257, - 25084, - 23084, - 6305, - 17086, - 23030, - 6353, - 23013, - 23012, - 22990, - 6417, - 22989, - 22949, - 3233, - 22946, - 25980, - 22909, - 22876, - 22869, - 22868, - 22866, - 3297, - 18238, - 22796, - 3321, - 22790, - 3337, - 18166, - 22717, - 13440, - 22750, - 6753, - 13536, - 9473, - 22724, - 9744, - 23229, - 3513, - 20405, - 7448, - 6897, - 22718, - 22710, - 22686, - 22678, - 13952, - 9889, - 3505, - 19902, - 9985, - 7057, - 3537, - 22665, - 22662, - 7121, - 22661, - 22651, - 22539, - 22478, - 22458, - 22425, - 16639, - 22421, - 22414, - 22357, - 25085, - 3657, - 22334, - 22275, - 22167, - 13900, - 3697, - 10721, - 22048, - 21971, - 7457, - 10849, - 10881, - 17727, - 15040, - 8791, - 17919, - 16080, - 3695, - 18111, - 15232, - 18239, - 15296, - 21807, - 18431, - 3849, - 3857, - 7729, - 7745, - 7761, - 21667, - 7793, - 21565, - 15648, - 21559, - 7857, - 21549, - 21402, - 21369, - 19391, - 21367, - 5514, - 21162, - 27837, - 21096, - 19775, - 21073, - 12001, - 21072, - 20031, - 21071, - 21068, - 8129, - 21066, - 19774, - 21048, - 20903, - 20543, - 4130, - 20900, - 16640, - 20890, - 10696, - 16083, - 25086, - 16960, - 20827, - 20826, - 20825, - 20824, - 12737, - 8674, - 20823, - 25662, - 8770, - 8802, - 20820, - 17728, - 25982, - 20817, - 17920, - 8994, - 20815, - 18112, - 20813, - 18240, - 15859, - 5188, - 17509, - 3210, - 18560, - 22719, - 6576, - 3694, - 20787, - 20776, - 9474, - 23103, - 20772, - 20765, - 20762, - 20757, - 20756, - 20755, - 20752, - 13857, - 20748, - 20747, - 9858, - 20742, - 4962, - 9954, - 9986, - 20032, - 5026, - 20739, - 20733, - 28478, - 20696, - 5106, - 20695, - 20692, - 20685, - 16965, - 16641, - 20800, - 20669, - 10466, - 20665, - 5266, - 20657, - 20656, - 20629, - 20626, - 20012, - 20609, - 20604, - 17473, - 20565, - 10850, - 2672, - 20432, - 10946, - 20430, - 17921, - 20429, - 1385, - 20428, - 20426, - 15265, - 11202, - 18617, - 20408, - 20406, - 5666, - 22720, - 20397, - 20392, - 20391, - 15585, - 20390, - 20387, - 20383, - 1453, - 3065, - 3069, - 5669, - 8366, - 3133, - 18439, - 6296, - 11986, - 14106, - 16033, - 17140, - 6352, - 15267, - 20033, - 1513, - 10685, - 20324, - 8782, - 19859, - 12258, - 24576, - 16450, - 8259, - 20316, - 16642, - 20801, - 6632, - 11341, - 6274, - 8483, - 6306, - 11357, - 16597, - 3361, - 13321, - 3377, - 20296, - 6418, - 17196, - 3397, - 13628, - 20051, - 25984, - 26048, - 17922, - 20014, - 15979, - 13948, - 3497, - 18242, - 6626, - 4961, - 18434, - 11981, - 6690, - 22721, - 13442, - 12061, - 18818, - 13538, - 12077, - 20030, - 20026, - 20025, - 13698, - 3565, - 20024, - 13794, - 19750, - 13858, - 13890, - 10254, - 16502, - 16662, - 3658, - 8367, - 9987, - 20034, - 14146, - 28352, - 7106, - 28480, - 10179, - 20006, - 7408, - 20013, - 20610, - 17462, - 16643, - 20802, - 10435, - 10467, - 3729, - 3733, - 468, - 20011, - 20010, - 3506, - 1849, - 19982, - 7426, - 10787, - 14914, - 17229, - 7648, - 10915, - 10947, - 21954, - 17923, - 8368, - 19970, - 3841, - 15234, - 15266, - 19968, - 3869, - 18435, - 3873, - 14807, - 22722, - 9487, - 19940, - 19939, - 15586, - 7992, - 23106, - 19874, - 8040, - 19873, - 8088, - 19866, - 27585, - 18327, - 15906, - 512, - 15970, - 18163, - 2005, - 19861, - 16098, - 19971, - 12067, - 15253, - 19848, - 14621, - 28481, - 17273, - 12259, - 2050, - 18438, - 4131, - 8292, - 12419, - 8356, - 6620, - 548, - 8784, - 21059, - 19772, - 8912, - 12675, - 19668, - 12739, - 579, - 580, - 15453, - 8772, - 8804, - 16601, - 10688, - 30081, - 9488, - 17924, - 2386, - 9552, - 18960, - 9092, - 13219, - 17450, - 605, - 9220, - 18500, - 18564, - 22723, - 12064, - 17454, - 18991, - 2362, - 2538, - 2546, - 13635, - 2394, - 18702, - 9636, - 2738, - 27586, - 18763, - 2742, - 18809, - 8401, - 23811, - 18647, - 18241, - 9956, - 19972, - 20036, - 2670, - 1056, - 18444, - 10148, - 10180, - 20420, - 20484, - 28738, - 2578, - 10340, - 16645, - 2602, - 10436, - 10468, - 688, - 5267, - 5506, - 21188, - 17157, - 2666, - 2674, - 695, - 7633, - 5395, - 701, - 17501, - 705, - 10916, - 15043, - 7769, - 18455, - 7865, - 18454, - 18452, - 18450, - 18245, - 7929, - 18447, - 18437, - 18446, - 9857, - 18629, - 5699, - 9921, - 3018, - 15587, - 5763, - 8089, - 7788, - 8137, - 10145, - 15779, - 23428, - 27587, - 3066, - 3074, - 16412, - 14847, - 3086, - 3094, - 19845, - 16099, - 19973, - 12068, - 18436, - 10945, - 18423, - 18422, - 8010, - 12260, - 16390, - 3082, - 3090, - 8293, - 16646, - 20805, - 29059, - 5208, - 18414, - 3146, - 6530, - 3278, - 17158, - 8613, - 12740, - 8677, - 18405, - 6419, - 6650, - 3330, - 877, - 14053, - 8901, - 13028, - 849, - 8090, - 18244, - 18243, - 6898, - 18246, - 6627, - 15855, - 9221, - 18502, - 13380, - 18630, - 22789, - 3370, - 6755, - 4979, - 12065, - 885, - 3562, - 9573, - 13700, - 3566, - 23429, - 6899, - 20380, - 13860, - 7322, - 8211, - 5187, - 3498, - 19846, - 9957, - 19974, - 5219, - 10053, - 8435, - 3722, - 10149, - 10181, - 28612, - 3586, - 28740, - 1050, - 20678, - 16647, - 20806, - 14532, - 928, - 3650, - 16967, - 15264, - 2539, - 1042, - 3690, - 17287, - 3866, - 3870, - 10789, - 3561, - 7794, - 3064, - 10917, - 982, - 17639, - 9795, - 597, - 1004, - 9939, - 26373, - 18247, - 12098, - 4066, - 3842, - 3850, - 3858, - 11365, - 11397, - 17463, - 7779, - 7795, - 17458, - 7827, - 17456, - 7859, - 17455, - 15780, - 23430, - 27589, - 19463, - 6499, - 19903, - 15972, - 17290, - 15575, - 19847, - 24006, - 19975, - 12069, - 28293, - 17204, - 8131, - 20295, - 13378, - 17181, - 12824, - 16997, - 4132, - 20297, - 4164, - 20807, - 24966, - 8422, - 12549, - 3515, - 19886, - 2671, - 2675, - 7443, - 7451, - 16788, - 7483, - 16783, - 8774, - 8806, - 1366, - 30021, - 16726, - 26054, - 17928, - 7418, - 16654, - 16653, - 1464, - 26438, - 16648, - 18376, - 9222, - 16644, - 11988, - 3015, - 16599, - 10165, - 16598, - 1538, - 13626, - 12826, - 13637, - 9574, - 16533, - 3211, - 23431, - 27590, - 9734, - 6500, - 13140, - 3295, - 13220, - 19784, - 9926, - 4980, - 3319, - 16055, - 10054, - 3359, - 3363, - 10150, - 3371, - 16741, - 3611, - 1698, - 3399, - 20680, - 16649, - 20808, - 20872, - 25031, - 5252, - 5268, - 7124, - 3071, - 25351, - 8407, - 7437, - 1980, - 3651, - 17481, - 5269, - 10854, - 15861, - 21832, - 10790, - 21960, - 16396, - 22088, - 8778, - 3815, - 18406, - 26439, - 3871, - 7748, - 18441, - 15596, - 5668, - 11366, - 15493, - 15495, - 2008, - 6741, - 8092, - 15653, - 10151, - 23240, - 15050, - 15781, - 23432, - 14887, - 14871, - 14810, - 6501, - 15973, - 14809, - 14200, - 19849, - 16101, - 13947, - 12070, - 13912, - 2392, - 7054, - 12198, - 13898, - 2480, - 13663, - 7213, - 13655, - 6196, - 16650, - 7389, - 20873, - 8423, - 9918, - 16970, - 18442, - 2840, - 17162, - 12524, - 12742, - 8679, - 12421, - 9945, - 3016, - 12199, - 9820, - 17738, - 8903, - 26056, - 3116, - 8394, - 12080, - 3204, - 9095, - 26440, - 8986, - 12058, - 9223, - 12048, - 6692, - 11963, - 6766, - 3396, - 6918, - 3488, - 3500, - 3508, - 11993, - 9575, - 13702, - 7078, - 7222, - 8331, - 6654, - 27720, - 10960, - 8795, - 8939, - 10788, - 7766, - 9959, - 15800, - 24137, - 7076, - 10216, - 6639, - 20298, - 2637, - 15066, -} \ No newline at end of file diff --git a/libraries/LibClassicDurations/LibClassicDurations.xml b/libraries/LibClassicDurations/LibClassicDurations.xml deleted file mode 100755 index 4934790..0000000 --- a/libraries/LibClassicDurations/LibClassicDurations.xml +++ /dev/null @@ -1,7 +0,0 @@ - -