Release v9.7.3
This commit is contained in:
+4
-1
@@ -1,6 +1,6 @@
|
||||
# Changelog
|
||||
|
||||
## v9.7.2
|
||||
## v9.7.3
|
||||
|
||||
### New Features
|
||||
- **[Database]** Implemented **Ebonhold Database Module**.
|
||||
@@ -37,3 +37,6 @@
|
||||
- **Instance Filter**: Arrow explicitly hides if the target is in a different instance.
|
||||
- **[Map]** Fixed an issue where completed quest icons would persist on the map (`RequestMapUpdate` logic).
|
||||
- **[Database]** Updated `wotlkNpcDB.lua` with scraped spawn data for 12 key beast NPCs in Terokkar Forest to ensure accuracy.
|
||||
- **[Arrow]** Fixed a nil function error for `_CollectObjective` when processing incomplete quests.
|
||||
- **[Arrow]** Fixed syntax issues that prevented `QuestieArrow` module from initializing correctly.
|
||||
- **[Database]** Fixed a runtime crash in `ZoneDB` when encountering maps with no AreaId mapping (e.g., Kalimdor).
|
||||
|
||||
+16
-18
@@ -96,7 +96,8 @@ function ZoneDB:GetAreaIdByUiMapId(uiMapId)
|
||||
|
||||
-- Only print if debug is enabled.
|
||||
if Questie.db.profile.debugEnabled then
|
||||
Questie:Error("[ZoneDB:GetAreaIdByUiMapId] : ", "UiMapId", uiMapId, "has multiple AreaIds:", foundId, areaId)
|
||||
Questie:Error("[ZoneDB:GetAreaIdByUiMapId] : ", "UiMapId", uiMapId, "has multiple AreaIds:", foundId,
|
||||
areaId)
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -115,15 +116,20 @@ function ZoneDB:GetAreaIdByUiMapId(uiMapId)
|
||||
local mapInfo = C_Map.GetMapInfo(uiMapId)
|
||||
local areaName = C_Map.GetAreaInfo(areaId)
|
||||
if mapInfo and mapInfo.name == areaName then
|
||||
Questie:Debug(Questie.DEBUG_DEVELOP, "[ZoneDB:GetAreaIdByUiMapId] : ", "Found AreaId", areaName, ":", areaId, "for UiMapId", mapInfo.name, ":", uiMapId, "by name")
|
||||
Questie:Debug(Questie.DEBUG_DEVELOP, "[ZoneDB:GetAreaIdByUiMapId] : ", "Found AreaId", areaName, ":",
|
||||
areaId, "for UiMapId", mapInfo.name, ":", uiMapId, "by name")
|
||||
return areaId
|
||||
end
|
||||
end
|
||||
error("No AreaId found for UiMapId: " .. uiMapId .. ":" .. C_Map.GetMapInfo(uiMapId).name)
|
||||
if Questie.db.profile.debugEnabled then
|
||||
Questie:Debug(Questie.DEBUG_CRITICAL,
|
||||
"No AreaId found for UiMapId: " ..
|
||||
uiMapId .. ":" .. (C_Map.GetMapInfo(uiMapId) and C_Map.GetMapInfo(uiMapId).name or "nil"))
|
||||
end
|
||||
return nil
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
---@param areaId AreaId
|
||||
function ZoneDB:GetDungeonLocation(areaId)
|
||||
return dungeonLocations[areaId]
|
||||
@@ -154,7 +160,6 @@ function ZoneDB:GetParentZoneId(areaId)
|
||||
return dungeonParentZones[areaId] or subZoneToParentZone[areaId]
|
||||
end
|
||||
|
||||
|
||||
-- We keep localized variables outside of the function only used by GetZonesWithQuests
|
||||
do
|
||||
-- This is for yielding
|
||||
@@ -163,29 +168,26 @@ do
|
||||
|
||||
--Keep yield here as there is potentially a case where this wants to be run outside of a coroutine
|
||||
|
||||
---@param yield boolean?
|
||||
---@return table
|
||||
function ZoneDB:GetZonesWithQuests(yield)
|
||||
---@param yield boolean?
|
||||
---@return table
|
||||
function ZoneDB:GetZonesWithQuests(yield)
|
||||
local count = 0
|
||||
|
||||
local function ProcessQuestId(questId)
|
||||
if (not QuestieCorrections.hiddenQuests[questId]) then
|
||||
if QuestiePlayer.HasRequiredRace(QuestieDB.QueryQuestSingle(questId, "requiredRaces"))
|
||||
and QuestiePlayer.HasRequiredClass(QuestieDB.QueryQuestSingle(questId, "requiredClasses")) then
|
||||
|
||||
local zoneOrSort = QuestieDB.QueryQuestSingle(questId, "zoneOrSort")
|
||||
local requiredSkill = QuestieDB.QueryQuestSingle(questId, "requiredSkill")
|
||||
|
||||
if type(requiredSkill) == "table"
|
||||
and requiredSkill[1]
|
||||
and requiredSkill[1] ~= QuestieProfessions.professionKeys.RIDING then
|
||||
|
||||
local sortId = QuestieProfessions:GetSortIdByProfessionId(requiredSkill[1])
|
||||
zoneOrSort = sortId or QuestieDB.sortKeys.SPECIAL
|
||||
|
||||
if (not zoneMap[zoneOrSort]) then zoneMap[zoneOrSort] = {} end
|
||||
zoneMap[zoneOrSort][questId] = true
|
||||
|
||||
elseif type(zoneOrSort) == "number" and zoneOrSort > 0 then
|
||||
local parentZoneId = ZoneDB:GetParentZoneId(zoneOrSort)
|
||||
|
||||
@@ -196,11 +198,9 @@ function ZoneDB:GetZonesWithQuests(yield)
|
||||
if (not zoneMap[zoneOrSort]) then zoneMap[zoneOrSort] = {} end
|
||||
zoneMap[zoneOrSort][questId] = true
|
||||
end
|
||||
|
||||
elseif type(zoneOrSort) == "number" and _ZoneDB:IsSpecialQuest(zoneOrSort) then
|
||||
if (not zoneMap[zoneOrSort]) then zoneMap[zoneOrSort] = {} end
|
||||
zoneMap[zoneOrSort][questId] = true
|
||||
|
||||
else
|
||||
local startedBy = QuestieDB.QueryQuestSingle(questId, "startedBy")
|
||||
if startedBy then
|
||||
@@ -243,7 +243,7 @@ function ZoneDB:GetZonesWithQuests(yield)
|
||||
if yield then coroutine.yield() end
|
||||
zoneMap = _ZoneDB:SplitSeasonalQuests()
|
||||
return zoneMap
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
@@ -354,8 +354,6 @@ function ZoneDB:GetRelevantZones()
|
||||
return zones
|
||||
end
|
||||
|
||||
|
||||
|
||||
----- Tests -----
|
||||
|
||||
function _ZoneDB:RunTests()
|
||||
@@ -373,9 +371,9 @@ function _ZoneDB:RunTests()
|
||||
if map.mapType ~= Enum.UIMapType.World and map.mapType ~= Enum.UIMapType.Continent and map.mapType ~= Enum.UIMapType.Cosmic then
|
||||
local success, result = pcall(ZoneDB.GetAreaIdByUiMapId, ZoneDB, map.mapID)
|
||||
if not success and not buggedMaps[map.mapID] then
|
||||
Questie:Error("[ZoneDBTests] ZoneDB.GetAreaIdByUiMapId fails for " .. map.name .. " (" .. map.mapID .. "). Result: " .. result)
|
||||
Questie:Error("[ZoneDBTests] ZoneDB.GetAreaIdByUiMapId fails for " ..
|
||||
map.name .. " (" .. map.mapID .. "). Result: " .. result)
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
Questie:Debug(Questie.DEBUG_CRITICAL, "[" .. Questie:Colorize("ZoneDBTests", "yellow") .. "] Testing ZoneDB done")
|
||||
|
||||
@@ -547,6 +547,7 @@ function QuestieArrow:UpdateNearestTargets()
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
if finisher.waypoints then
|
||||
for zone, waypoints in pairs(finisher.waypoints) do
|
||||
-- Auto Logic: Hide distant quests (different zone)
|
||||
@@ -596,6 +597,7 @@ function QuestieArrow:UpdateNearestTargets()
|
||||
|
||||
return
|
||||
end
|
||||
end
|
||||
|
||||
local function _CollectObjective(objective)
|
||||
if not objective or not objective.spawnList then
|
||||
@@ -645,7 +647,8 @@ function QuestieArrow:UpdateNearestTargets()
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
|
||||
if quest.Objectives then
|
||||
for _, objective in pairs(quest.Objectives) do
|
||||
|
||||
+1
-1
@@ -6,7 +6,7 @@
|
||||
## Notes-esES: Ayundante de misión
|
||||
## Notes-ptBR: Ajudante de missão
|
||||
## Notes-frFR: Assistant de quête
|
||||
## Version: 9.7.2 beta
|
||||
## Version: 9.7.3
|
||||
## RequiredDeps:
|
||||
## OptionalDeps: Ace3, CallbackHandler-1.0, HereBeDragons, LibDataBroker-1.1, LibDBIcon-1.0, LibSharedMedia-3.0, LibStub, LibUIDropDownMenu
|
||||
## SavedVariables: QuestieConfig
|
||||
|
||||
Reference in New Issue
Block a user