From 117888cdb0c564f2ab1e5878cd50ad26dc2000fb Mon Sep 17 00:00:00 2001 From: Sumsebrum Date: Sat, 15 Jul 2023 14:31:46 +0200 Subject: [PATCH] wow 30402 update libs + fix taint issue --- .gitignore | 1 + Gladdy.lua | 52 +++++++++++-------- Gladdy.toc | 2 +- Gladdy_BCC.toc | 2 +- Gladdy_Wrath.toc | 6 +-- .../AceConfigDialog-3.0.lua | 13 ++++- .../AceConfigRegistry-3.0.lua | 5 +- Libs/AceDB-3.0/AceDB-3.0.lua | 6 +-- Libs/AceDBOptions-3.0/AceDBOptions-3.0.lua | 48 ++++++++--------- .../CallbackHandler-1.0.lua | 13 ++--- Libs/DRList-1.0/DRList-1.0.lua | 34 ++++++------ Libs/DRList-1.0/DRList-1.0.toc | 16 +++++- Libs/DRList-1.0/Spells.lua | 15 ++++-- 13 files changed, 122 insertions(+), 91 deletions(-) diff --git a/.gitignore b/.gitignore index deb3cb1..9b1e641 100644 --- a/.gitignore +++ b/.gitignore @@ -6,5 +6,6 @@ BuffLib Ace-Libs Images_Raw Gladdy_old +DoNotCommit untracked Gladdy_TW \ No newline at end of file diff --git a/Gladdy.lua b/Gladdy.lua index 933092f..988cb65 100644 --- a/Gladdy.lua +++ b/Gladdy.lua @@ -13,7 +13,6 @@ local CreateFrame = CreateFrame local DEFAULT_CHAT_FRAME = DEFAULT_CHAT_FRAME local IsAddOnLoaded = IsAddOnLoaded local GetBattlefieldStatus = GetBattlefieldStatus -local IsActiveBattlefieldArena = IsActiveBattlefieldArena local IsInInstance = IsInInstance local GetNumArenaOpponents = GetNumArenaOpponents local RELEASE_TYPES = { alpha = "Alpha", beta = "Beta", release = "Release"} @@ -433,23 +432,22 @@ end function Gladdy:UPDATE_BATTLEFIELD_STATUS(_, index) local status, mapName, instanceID, levelRangeMin, levelRangeMax, teamSize, isRankedArena, suspendedQueue, bool, queueType = GetBattlefieldStatus(index) local instanceType = select(2, IsInInstance()) - Gladdy:Debug("INFO", "UPDATE_BATTLEFIELD_STATUS", instanceType, status, teamSize) + self:Debug("INFO", "UPDATE_BATTLEFIELD_STATUS", instanceType, status, teamSize) if ((instanceType == "arena" or GetNumArenaOpponents() > 0) and status == "active" and teamSize > 0) then self.curBracket = teamSize self:JoinedArena() + elseif status == "active" then + if self.db.hideBlizzard == "always" then + self:BlizzArenaSetAlpha(0) + else + self:BlizzArenaSetAlpha(1) + end end end function Gladdy:PLAYER_REGEN_ENABLED() if self.showFrame then - self:UpdateFrame() - if self.startTest then - self:Test() - self.startTest = nil - end - self.frame:Show() - self:SendMessage("JOINED_ARENA") - self.showFrame = nil + self:InitFrames() end if self.hideFrame then self:Reset() @@ -481,8 +479,8 @@ function Gladdy:Reset() for unit in pairs(self.buttons) do self:ResetUnit(unit) end - if Gladdy.db.hideBlizzard == "never" or Gladdy.db.hideBlizzard == "arena" then - Gladdy:BlizzArenaSetAlpha(1) + if self.db.hideBlizzard == "never" or self.db.hideBlizzard == "arena" then + self:BlizzArenaSetAlpha(1) end end @@ -525,6 +523,16 @@ end --------------------------- function Gladdy:JoinedArena() + if InCombatLockdown() then + self:Print("Gladdy frames show as soon as you leave combat") + self.showFrame = true + else + self:InitFrames() + end +end + +function Gladdy:InitFrames() + self.showFrame = nil if not self.curBracket then self.curBracket = 2 end @@ -535,19 +543,21 @@ function Gladdy:JoinedArena() end end - if InCombatLockdown() then - Gladdy:Print("Gladdy frames show as soon as you leave combat") - self.showFrame = true - else - self:UpdateFrame() - self.frame:Show() - self:SendMessage("JOINED_ARENA") + self:UpdateFrame() + if self.startTest then + self:Test() + self.startTest = nil end + self.frame:Show() + self:SendMessage("JOINED_ARENA") + for i=1, self.curBracket do self.buttons["arena" .. i]:SetAlpha(1) end - if Gladdy.db.hideBlizzard == "arena" or Gladdy.db.hideBlizzard == "always" then - Gladdy:BlizzArenaSetAlpha(0) + if self.db.hideBlizzard == "arena" or self.db.hideBlizzard == "always" then + self:BlizzArenaSetAlpha(0) + else + self:BlizzArenaSetAlpha(1) end end diff --git a/Gladdy.toc b/Gladdy.toc index d60fd9a..c9067ad 100644 --- a/Gladdy.toc +++ b/Gladdy.toc @@ -1,5 +1,5 @@ ## Title: Gladdy |cFFFF0000 game client not supported|r -## Version: 2.23-Release +## Version: 2.24-Release ## Notes: The most powerful arena AddOn for WoW Classic TBC/WotLK ## Author: XiconQoo, DnB_Junkee, Knall ## X-Email: contact me on discord Knall#1751 diff --git a/Gladdy_BCC.toc b/Gladdy_BCC.toc index ad601c8..af162a9 100644 --- a/Gladdy_BCC.toc +++ b/Gladdy_BCC.toc @@ -1,6 +1,6 @@ ## Interface: 20504 ## Title: Gladdy - TBC -## Version: 2.23-Release +## Version: 2.24-Release ## Notes: The most powerful arena AddOn for WoW 2.5.4 ## Author: XiconQoo, DnB_Junkee, Knall ## X-Email: contact me on discord Knall#1751 diff --git a/Gladdy_Wrath.toc b/Gladdy_Wrath.toc index db1ddd0..5720984 100644 --- a/Gladdy_Wrath.toc +++ b/Gladdy_Wrath.toc @@ -1,7 +1,7 @@ -## Interface: 30401 +## Interface: 30402 ## Title: Gladdy - WotLK -## Version: 2.23-Release -## Notes: The most powerful arena AddOn for WoW 3.4.0 +## Version: 2.24-Release +## Notes: The most powerful arena AddOn for WoW 3.4.2 ## Author: XiconQoo, DnB_Junkee, Knall ## X-Email: contact me on discord Knall#1751 ## X-Curse-Project-ID: 482332 diff --git a/Libs/AceConfig-3.0/AceConfigDialog-3.0/AceConfigDialog-3.0.lua b/Libs/AceConfig-3.0/AceConfigDialog-3.0/AceConfigDialog-3.0.lua index 4649c73..11254eb 100644 --- a/Libs/AceConfig-3.0/AceConfigDialog-3.0/AceConfigDialog-3.0.lua +++ b/Libs/AceConfig-3.0/AceConfigDialog-3.0/AceConfigDialog-3.0.lua @@ -1,13 +1,13 @@ --- AceConfigDialog-3.0 generates AceGUI-3.0 based windows based on option tables. -- @class file -- @name AceConfigDialog-3.0 --- @release $Id: AceConfigDialog-3.0.lua 1292 2022-09-29 08:00:11Z nevcairiel $ +-- @release $Id: AceConfigDialog-3.0.lua 1296 2022-11-04 18:50:10Z nevcairiel $ local LibStub = LibStub local gui = LibStub("AceGUI-3.0") local reg = LibStub("AceConfigRegistry-3.0") -local MAJOR, MINOR = "AceConfigDialog-3.0", 85 +local MAJOR, MINOR = "AceConfigDialog-3.0", 86 local AceConfigDialog, oldminor = LibStub:NewLibrary(MAJOR, MINOR) if not AceConfigDialog then return end @@ -147,6 +147,7 @@ local stringIsLiteral = { width = true, image = true, fontSize = true, + tooltipHyperlink = true } --Is Never a function or method @@ -501,6 +502,14 @@ local function OptionOnMouseOver(widget, event) local tooltip = AceConfigDialog.tooltip tooltip:SetOwner(widget.frame, "ANCHOR_TOPRIGHT") + + local tooltipHyperlink = GetOptionsMemberValue("tooltipHyperlink", opt, options, path, appName) + if tooltipHyperlink then + tooltip:SetHyperlink(tooltipHyperlink) + tooltip:Show() + return + end + local name = GetOptionsMemberValue("name", opt, options, path, appName) local desc = GetOptionsMemberValue("desc", opt, options, path, appName) local usage = GetOptionsMemberValue("usage", opt, options, path, appName) diff --git a/Libs/AceConfig-3.0/AceConfigRegistry-3.0/AceConfigRegistry-3.0.lua b/Libs/AceConfig-3.0/AceConfigRegistry-3.0/AceConfigRegistry-3.0.lua index f8d9225..e0f5962 100644 --- a/Libs/AceConfig-3.0/AceConfigRegistry-3.0/AceConfigRegistry-3.0.lua +++ b/Libs/AceConfig-3.0/AceConfigRegistry-3.0/AceConfigRegistry-3.0.lua @@ -8,10 +8,10 @@ -- :IterateOptionsTables() (and :GetOptionsTable() if only given one argument) return a function reference that the requesting config handling addon must call with valid "uiType", "uiName". -- @class file -- @name AceConfigRegistry-3.0 --- @release $Id: AceConfigRegistry-3.0.lua 1207 2019-06-23 12:08:33Z nevcairiel $ +-- @release $Id: AceConfigRegistry-3.0.lua 1296 2022-11-04 18:50:10Z nevcairiel $ local CallbackHandler = LibStub("CallbackHandler-1.0") -local MAJOR, MINOR = "AceConfigRegistry-3.0", 20 +local MAJOR, MINOR = "AceConfigRegistry-3.0", 21 local AceConfigRegistry = LibStub:NewLibrary(MAJOR, MINOR) if not AceConfigRegistry then return end @@ -83,6 +83,7 @@ local basekeys={ dialogHidden=optmethodbool, dropdownHidden=optmethodbool, cmdHidden=optmethodbool, + tooltipHyperlink=optstringfunc, icon=optstringnumberfunc, iconCoords=optmethodtable, handler=opttable, diff --git a/Libs/AceDB-3.0/AceDB-3.0.lua b/Libs/AceDB-3.0/AceDB-3.0.lua index 804cf2b..a8e306a 100644 --- a/Libs/AceDB-3.0/AceDB-3.0.lua +++ b/Libs/AceDB-3.0/AceDB-3.0.lua @@ -40,8 +40,8 @@ -- end -- @class file -- @name AceDB-3.0.lua --- @release $Id: AceDB-3.0.lua 1284 2022-09-25 09:15:30Z nevcairiel $ -local ACEDB_MAJOR, ACEDB_MINOR = "AceDB-3.0", 27 +-- @release $Id: AceDB-3.0.lua 1306 2023-06-23 14:55:09Z nevcairiel $ +local ACEDB_MAJOR, ACEDB_MINOR = "AceDB-3.0", 28 local AceDB = LibStub:NewLibrary(ACEDB_MAJOR, ACEDB_MINOR) if not AceDB then return end -- No upgrade needed @@ -260,7 +260,7 @@ local factionrealmKey = factionKey .. " - " .. realmKey local localeKey = GetLocale():lower() local regionTable = { "US", "KR", "EU", "TW", "CN" } -local regionKey = regionTable[GetCurrentRegion()] +local regionKey = regionTable[GetCurrentRegion()] or GetCurrentRegionName() or "TR" local factionrealmregionKey = factionrealmKey .. " - " .. regionKey -- Actual database initialization function diff --git a/Libs/AceDBOptions-3.0/AceDBOptions-3.0.lua b/Libs/AceDBOptions-3.0/AceDBOptions-3.0.lua index 9029c66..46a85bf 100644 --- a/Libs/AceDBOptions-3.0/AceDBOptions-3.0.lua +++ b/Libs/AceDBOptions-3.0/AceDBOptions-3.0.lua @@ -1,7 +1,7 @@ --- AceDBOptions-3.0 provides a universal AceConfig options screen for managing AceDB-3.0 profiles. -- @class file -- @name AceDBOptions-3.0 --- @release $Id: AceDBOptions-3.0.lua 1284 2022-09-25 09:15:30Z nevcairiel $ +-- @release $Id: AceDBOptions-3.0.lua 1304 2023-05-19 19:50:10Z nevcairiel $ local ACEDBO_MAJOR, ACEDBO_MINOR = "AceDBOptions-3.0", 15 local AceDBOptions = LibStub:NewLibrary(ACEDBO_MAJOR, ACEDBO_MINOR) @@ -84,25 +84,25 @@ elseif LOCALE == "frFR" then L["reset_desc"] = "Réinitialise le profil actuel au cas où votre configuration est corrompue ou si vous voulez tout simplement faire table rase." L["reset_sub"] = "Réinitialise le profil actuel avec les paramètres par défaut." elseif LOCALE == "koKR" then - L["choose"] = "저장 중인 프로필" - L["choose_desc"] = "입력창에 새로운 이름을 입력하거나 저장 중인 프로필 중 하나를 선택하여 새로운 프로필을 만들 수 있습니다." + L["choose"] = "기존 프로필" + L["choose_desc"] = "편집 상자에 이름을 입력하여 새로운 프로필을 만들거나 이미 존재하는 프로필 중 하나를 선택할 수 있습니다." L["choose_sub"] = "현재 이용할 수 있는 프로필 중 하나를 선택합니다." - L["copy"] = "복사해오기" - L["copy_desc"] = "현재 사용 중인 프로필에 선택한 프로필의 설정을 복사합니다." + L["copy"] = "복사해 올 프로필" + L["copy_desc"] = "기존 프로필의 설정을 현재 활성화된 프로필로 복사합니다." L["current"] = "현재 프로필:" L["default"] = "기본값" L["delete"] = "프로필 삭제" - L["delete_confirm"] = "정말로 선택한 프로필을 삭제할까요?" - L["delete_desc"] = "저장 공간 절약과 SavedVariables 파일의 정리를 위해 데이터베이스에서 사용하지 않는 프로필을 삭제하세요." - L["delete_sub"] = "데이터베이스의 프로필을 삭제합니다." - L["intro"] = "활성 데이터베이스 프로필을 변경할 수 있고, 각 캐릭터 별로 다른 설정을 할 수 있습니다." + L["delete_confirm"] = "선택한 프로필을 삭제하시겠습니까?" + L["delete_desc"] = "데이터베이스에서 기존 프로필과 사용하지 않는 프로필을 삭제하여 공간을 절약하고 SavedVariables 파일을 정리합니다." + L["delete_sub"] = "데이터베이스에서 프로필을 삭제합니다." + L["intro"] = "활성 데이터베이스 프로필을 변경할 수 있으며, 모든 캐릭터마다 서로 다른 설정을 지정할 수 있습니다." L["new"] = "새로운 프로필" - L["new_sub"] = "새로운 프로필을 만듭니다." + L["new_sub"] = "비어 있는 프로필을 새로 만듭니다." L["profiles"] = "프로필" L["profiles_sub"] = "프로필 관리" - L["reset"] = "프로필 초기화" - L["reset_desc"] = "설정이 깨졌거나 처음부터 다시 설정을 원하는 경우, 현재 프로필을 기본값으로 초기화하세요." - L["reset_sub"] = "현재 프로필을 기본값으로 초기화합니다" + L["reset"] = "프로필 재설정" + L["reset_desc"] = "구성이 손상되었거나 처음부터 다시 시작하고 싶은 경우 현재 프로필을 기본값으로 재설정하세요." + L["reset_sub"] = "현재 프로필을 기본값으로 재설정합니다" elseif LOCALE == "esES" or LOCALE == "esMX" then L["choose"] = "Perfiles existentes" L["choose_desc"] = "Puedes crear un nuevo perfil introduciendo un nombre en el recuadro o puedes seleccionar un perfil de los ya existentes." @@ -166,31 +166,31 @@ elseif LOCALE == "zhCN" then elseif LOCALE == "ruRU" then L["choose"] = "Существующие профили" L["choose_desc"] = "Вы можете создать новый профиль, введя название в поле ввода, или выбрать один из уже существующих профилей." - L["choose_sub"] = "Выбор одиного из уже доступных профилей" + L["choose_sub"] = "Выбор одного из уже доступных профилей." L["copy"] = "Скопировать из" - L["copy_desc"] = "Скопировать настройки из выбранного профиля в активный." + L["copy_desc"] = "Копирование настроек из выбранного профиля в активный." L["current"] = "Текущий профиль:" L["default"] = "По умолчанию" L["delete"] = "Удалить профиль" - L["delete_confirm"] = "Вы уверены, что вы хотите удалить выбранный профиль?" - L["delete_desc"] = "Удалить существующий и неиспользуемый профиль из БД для сохранения места, и очистить SavedVariables файл." - L["delete_sub"] = "Удаление профиля из БД" - L["intro"] = "Изменяя активный профиль, вы можете задать различные настройки модификаций для каждого персонажа." + L["delete_confirm"] = "Вы уверены, что хотите удалить выбранный профиль?" + L["delete_desc"] = "Удаление существующего и неиспользуемого профиля из базы данных для сохранения места, и очистка файла SavedVariables." + L["delete_sub"] = "Удаление профиля из базы данных." + L["intro"] = "Изменяя активный профиль, Вы можете задать разные настройки для каждого персонажа." L["new"] = "Новый" - L["new_sub"] = "Создать новый чистый профиль" + L["new_sub"] = "Создание нового чистого профиля." L["profiles"] = "Профили" L["profiles_sub"] = "Управление профилями" - L["reset"] = "Сброс профиля" - L["reset_desc"] = "Сбросить текущий профиль к стандартным настройкам, если ваша конфигурация испорчена или вы хотите настроить всё заново." + L["reset"] = "Сбросить профиль" + L["reset_desc"] = "Сброс текущего профиля к стандартным настройкам, если Ваша конфигурация испорчена или Вы хотите настроить все заново." L["reset_sub"] = "Сброс текущего профиля на стандартный" elseif LOCALE == "itIT" then L["choose"] = "Profili Esistenti" L["choose_desc"] = "Puoi creare un nuovo profilo digitando il nome della casella di testo, oppure scegliendone uno tra i profili già esistenti." L["choose_sub"] = "Seleziona uno dei profili attualmente disponibili." L["copy"] = "Copia Da" - L["copy_desc"] = "Copia le impostazioni da un profilo esistente, nel profilo attivo in questo momento." + L["copy_desc"] = "Copia le impostazioni da un profilo esistente nel profilo attivo in questo momento." L["current"] = "Profilo Attivo:" - L["default"] = "Standard" + L["default"] = "Predefinito" L["delete"] = "Cancella un Profilo" L["delete_confirm"] = "Sei sicuro di voler cancellare il profilo selezionato?" L["delete_desc"] = "Cancella i profili non utilizzati dal database per risparmiare spazio e mantenere puliti i file di configurazione SavedVariables." diff --git a/Libs/CallbackHandler-1.0/CallbackHandler-1.0.lua b/Libs/CallbackHandler-1.0/CallbackHandler-1.0.lua index a791159..6b32193 100644 --- a/Libs/CallbackHandler-1.0/CallbackHandler-1.0.lua +++ b/Libs/CallbackHandler-1.0/CallbackHandler-1.0.lua @@ -1,5 +1,5 @@ ---[[ $Id: CallbackHandler-1.0.lua 1284 2022-09-25 09:15:30Z nevcairiel $ ]] -local MAJOR, MINOR = "CallbackHandler-1.0", 7 +--[[ $Id: CallbackHandler-1.0.lua 1298 2022-12-12 15:10:10Z nevcairiel $ ]] +local MAJOR, MINOR = "CallbackHandler-1.0", 8 local CallbackHandler = LibStub:NewLibrary(MAJOR, MINOR) if not CallbackHandler then return end -- No upgrade needed @@ -7,21 +7,16 @@ if not CallbackHandler then return end -- No upgrade needed local meta = {__index = function(tbl, key) tbl[key] = {} return tbl[key] end} -- Lua APIs -local error = error +local securecallfunction, error = securecallfunction, error local setmetatable, rawget = setmetatable, rawget local next, select, pairs, type, tostring = next, select, pairs, type, tostring -local xpcall = xpcall - -local function errorhandler(err) - return geterrorhandler()(err) -end local function Dispatch(handlers, ...) local index, method = next(handlers) if not method then return end repeat - xpcall(method, errorhandler, ...) + securecallfunction(method, ...) index, method = next(handlers, index) until not method end diff --git a/Libs/DRList-1.0/DRList-1.0.lua b/Libs/DRList-1.0/DRList-1.0.lua index cfe677a..af7bc27 100644 --- a/Libs/DRList-1.0/DRList-1.0.lua +++ b/Libs/DRList-1.0/DRList-1.0.lua @@ -9,7 +9,7 @@ License: MIT --- DRList-1.0 -- @module DRList-1.0 -local MAJOR, MINOR = "DRList-1.0", 49 -- Don't forget to change this in Spells.lua aswell! +local MAJOR, MINOR = "DRList-1.0", 54 -- Don't forget to change this in Spells.lua aswell! local Lib = assert(LibStub, MAJOR .. " requires LibStub."):NewLibrary(MAJOR, MINOR) if not Lib then return end -- already loaded @@ -30,7 +30,7 @@ L["TAUNTS"] = "Taunts" L["FEARS"] = "Fears" L["RANDOM_ROOTS"] = "Random roots" L["RANDOM_STUNS"] = "Random stuns" -L["OPENER_STUN"] = "Opener Stuns" +L["OPENER_STUN"] = "Opener stuns" L["HORROR"] = "Horrors" L["SCATTERS"] = "Scatters" L["SLEEPS"] = GetSpellInfo(1090) or "Sleep" @@ -62,8 +62,7 @@ elseif locale == "frFR" then L["STUNS"] = "Etourdissements" L["TAUNTS"] = "Provocations" elseif locale == "itIT" then - -- Categories - + --@localization(locale="itIT", namespace="Categories", format="lua_additive_table", handle-unlocalized="ignore")@ elseif locale == "koKR" then L["DISORIENTS"] = "방향 감각 상실" L["INCAPACITATES"] = "행동 불가" @@ -72,8 +71,7 @@ elseif locale == "koKR" then L["SILENCES"] = "침묵" L["STUNS"] = "기절" elseif locale == "ptBR" then - -- Categories - + --@localization(locale="ptBR", namespace="Categories", format="lua_additive_table", handle-unlocalized="ignore")@ elseif locale == "ruRU" then L["DISARMS"] = "Разоружение" L["DISORIENTS"] = "Дезориентация" @@ -137,24 +135,24 @@ Lib.gameExpansion = ({ -- How long it takes for a DR to expire, in seconds. Lib.resetTimes = { retail = { - ["default"] = 18.5, -- 18 sec + 0.5 latency - ["npc"] = 23, -- Against mobs it seems to last slightly longer, depending on server load + ["default"] = 18.5, -- static 18 sec + 0.5 latency + ["npc"] = 21, -- Against mobs it seems to last slightly longer, depending on server load ["knockback"] = 10.5, -- Knockbacks are immediately immune and only DRs for 10s }, classic = { ["default"] = 20, -- dynamic between 15 and 20s - ["npc"] = 23, + ["npc"] = 21, }, tbc = { ["default"] = 20, -- dynamic between 15 and 20s - ["npc"] = 23, + ["npc"] = 21, }, wotlk = { ["default"] = 20, -- dynamic between 15 and 20s - ["npc"] = 23, + ["npc"] = 21, }, } @@ -221,13 +219,12 @@ Lib.categoryNames = { } -- Categories that have DR against normal mobs. --- Note that this is only for normal mobs on retail. Special mobs or pets have DR on all categories, +-- Note that for retail some special mobs have DR on all categories, -- see UnitClassification() and UnitIsQuestBoss(). Lib.categoriesPvE = { retail = { - ["taunt"] = L.TAUNTS, -- Lib.categoryNames.retail.taunt + ["taunt"] = L.TAUNTS, ["stun"] = L.STUNS, - ["root"] = L.ROOTS, }, classic = { @@ -294,9 +291,9 @@ function Lib:GetCategories() return Lib.categoryNames[Lib.gameExpansion] end ---- Get table of all categories that DRs in PvE only. +--- Get table of all categories that DRs in PvE. -- Key is unlocalized name used for API functions, value is localized name used for UI. --- Note that this is only for normal mobs on retail. Special mobs or pets have DR on all categories, +-- Note that for retail some special mobs have DR on all categories, -- see UnitClassification() and UnitIsQuestBoss(). -- Tip: you can combine :GetPvECategories() and :IterateSpellsByCategory() to get spellIDs only for PvE aswell. -- @treturn table {string=string} @@ -339,7 +336,7 @@ function Lib:GetCategoryLocalization(category) end --- Check if a category has DR against mobs. --- Note that this is only for normal mobs on retail. Special mobs or pets have DR on all categories, +-- Note that for retail some special mobs have DR on all categories, you need to check for this yourself; -- see UnitClassification() and UnitIsQuestBoss(). -- @tparam string category Unlocalized category name -- @treturn bool @@ -380,7 +377,6 @@ do --- Iterate through the spells of a given category. -- @tparam string category Unlocalized category name -- @usage for spellID in DRList:IterateSpellsByCategory("root") do print(spellID) end - -- @warning Slow function, do not use for frequent combat related stuff unless you cache results. -- @return Iterator function function Lib:IterateSpellsByCategory(category) assert(Lib.categoryNames[Lib.gameExpansion][category], "invalid category") @@ -393,6 +389,6 @@ Lib.GetCategoryName = Lib.GetCategoryLocalization Lib.IsPVE = Lib.IsPvECategory Lib.NextDR = Lib.GetNextDR Lib.GetSpellCategory = Lib.GetCategoryBySpellID -Lib.IterateSpells = Lib.IterateSpellsByCategory Lib.RESET_TIME = Lib.resetTimes[Lib.gameExpansion].default Lib.pveDR = Lib.categoriesPvE +Lib.IterateSpells = function(cat) if cat then return Lib.IterateSpellsByCategory(cat) else return next, Lib.spellList end end diff --git a/Libs/DRList-1.0/DRList-1.0.toc b/Libs/DRList-1.0/DRList-1.0.toc index b3d948b..5d4e3c2 100644 --- a/Libs/DRList-1.0/DRList-1.0.toc +++ b/Libs/DRList-1.0/DRList-1.0.toc @@ -1,6 +1,10 @@ -## Interface: 100002 +## Interface: 100105 +## Interface-Classic: 11403 +## Interface-BCC: 20504 +## Interface-Wrath: 30402 +## IconTexture: Interface\Icons\Spell_nature_heavypolymorph1 ## Title: Lib: DRList-1.0 -## Version: v1.3.8 +## Version: @project-version@ ## X-Category: Library ## X-License: MIT ## X-Curse-Project-ID: 315757 @@ -11,3 +15,11 @@ libs\LibStub\LibStub.lua #@end-no-lib-strip@ DRList-1.0.xml + +#@do-not-package@ +tests\engine.lua +tests\test-retail.lua +tests\test-classic.lua +tests\test-tbc.lua +tests\test-wotlk.lua +#@end-do-not-package@ diff --git a/Libs/DRList-1.0/Spells.lua b/Libs/DRList-1.0/Spells.lua index 3f4a705..7ebf546 100644 --- a/Libs/DRList-1.0/Spells.lua +++ b/Libs/DRList-1.0/Spells.lua @@ -1,4 +1,4 @@ -local MAJOR, MINOR = "DRList-1.0", 49 -- Don't forget to change this in DRList-1.0.lua aswell! +local MAJOR, MINOR = "DRList-1.0", 54 -- Don't forget to change this in DRList-1.0.lua aswell! local Lib = LibStub(MAJOR) if Lib.spellListVersion and Lib.spellListVersion >= MINOR then return @@ -17,7 +17,7 @@ if Lib.gameExpansion == "retail" then [1513] = "disorient", -- Scare Beast [31661] = "disorient", -- Dragon's Breath [198909] = "disorient", -- Song of Chi-ji - [202274] = "disorient", -- Incendiary Brew + [202274] = "disorient", -- Hot Trub [105421] = "disorient", -- Blinding Light [10326] = "disorient", -- Turn Evil [205364] = "disorient", -- Dominate Mind @@ -26,6 +26,7 @@ if Lib.gameExpansion == "retail" then [226943] = "disorient", -- Mind Bomb [2094] = "disorient", -- Blind [118699] = "disorient", -- Fear + [130616] = "disorient", -- Fear (Horrify) [5484] = "disorient", -- Howl of Terror [261589] = "disorient", -- Seduction (Grimoire of Sacrifice) [6358] = "disorient", -- Seduction (Succubus) @@ -85,6 +86,7 @@ if Lib.gameExpansion == "retail" then [47476] = "silence", -- Strangulate [204490] = "silence", -- Sigil of Silence -- [78675] = "silence", -- Solar Beam (has no DR) + [410065] = "silence", -- Reactive Resin [202933] = "silence", -- Spider Sting [356727] = "silence", -- Spider Venom [354831] = "silence", -- Wailing Arrow 1 @@ -169,6 +171,7 @@ if Lib.gameExpansion == "retail" then [64695] = "root", -- Earthgrab (Totem effect) -- [356738] = "root", -- Earth Unleashed (doesn't seem to DR) [285515] = "root", -- Surge of Power + [199042] = "root", -- Thunderstruck (Protection PvP Talent) --[356356] = "root", -- Warbringer TODO: has DR? [39965] = "root", -- Frost Grenade (Item) [75148] = "root", -- Embersilk Net (Item) @@ -176,6 +179,8 @@ if Lib.gameExpansion == "retail" then [268966] = "root", -- Hooked Deep Sea Net (Item) [209749] = "disarm", -- Faerie Swarm (Balance Honor Talent) + [407032] = "disarm", -- Sticky Tar Bomb 1 + [407031] = "disarm", -- Sticky Tar Bomb 2 [207777] = "disarm", -- Dismantle [233759] = "disarm", -- Grapple Weapon [236077] = "disarm", -- Disarm @@ -528,6 +533,7 @@ elseif Lib.gameExpansion == "wotlk" then [9853] = "root", -- Entangling Roots (Rank 6) [26989] = "root", -- Entangling Roots (Rank 7) [53308] = "root", -- Entangling Roots (Rank 8) + [65857] = "root", -- Entangling Roots (Rank 8) (TODO: Not sure which ID is correct) [19975] = "root", -- Nature's Grasp (Rank 1) [19974] = "root", -- Nature's Grasp (Rank 2) [19973] = "root", -- Nature's Grasp (Rank 3) @@ -535,7 +541,8 @@ elseif Lib.gameExpansion == "wotlk" then [19971] = "root", -- Nature's Grasp (Rank 5) [19970] = "root", -- Nature's Grasp (Rank 6) [27010] = "root", -- Nature's Grasp (Rank 7) - [53312] = "root", -- Nature's Grasp (Rank 8) + [53313] = "root", -- Nature's Grasp (Rank 8) + [66070] = "root", -- Nature's Grasp (Rank 8) (TODO: Not sure which ID is correct) [50245] = "root", -- Pin (Rank 1) [53544] = "root", -- Pin (Rank 2) [53545] = "root", -- Pin (Rank 3) @@ -549,6 +556,7 @@ elseif Lib.gameExpansion == "wotlk" then [10230] = "root", -- Frost Nova (Rank 4) [27088] = "root", -- Frost Nova (Rank 5) [42917] = "root", -- Frost Nova (Rank 6) + [64695] = "root", -- Earthgrab [39965] = "root", -- Frost Grenade (Item) [63685] = "root", -- Freeze (Frost Shock) [55536] = "root", -- Frostweave Net (Item) @@ -626,7 +634,6 @@ elseif Lib.gameExpansion == "wotlk" then [27067] = "counterattack", -- Counterattack 4 [48998] = "counterattack", -- Counterattack 5 [48999] = "counterattack", -- Counterattack 6 - --Storm, Earth and Fire has no DR } elseif Lib.gameExpansion == "classic" then