fix(arrow): Sunstrider zoneId 3431, rotation CW, collection distance, native map pins
- zoneId detection: accept 3430 OR 3431 OR uiMapId 1241 (4 locations) - SetRotation is CW-positive: rotAngle=relative (was -relative) - Collection functions: override target->1241 when player on Sunstrider - NPC 15281: spawn zone 1241 (not 3430) for correct coord space - _ResolveMapUiMapId: removed 1241->1941 redirect - zoneDB: added areaIdToUiMapId[1241]=1241 - Updated CHANGELOG, README, docs
This commit is contained in:
@@ -120,7 +120,23 @@ monster = function(npcId, objective)
|
||||
end
|
||||
|
||||
local name = QuestieDB.QueryNPCSingle(npcId, "name")
|
||||
if (not name) then
|
||||
if not name or name == "" then
|
||||
-- Last resort: extract NPC name from objective description text.
|
||||
-- This mirrors the name-parsing logic in the killcredit function.
|
||||
if objective then
|
||||
local desc = objective.Description or objective.text
|
||||
if desc then
|
||||
name = desc:match("^%d+/%d+%s+(.+)$") or desc:match("^(.-):%s*%d+/%d+$")
|
||||
if not name then
|
||||
name = desc:gsub("%d+/%d+", ""):gsub("[:!?,.%(%)%[%]]", ""):gsub("^%s+", ""):gsub("%s+$", "")
|
||||
end
|
||||
if name and name ~= "" then
|
||||
Questie:Debug(Questie.DEBUG_DEVELOP, "[monster] Using objective description as name fallback for NPC:", npcId, name)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
if not name or name == "" then
|
||||
Questie:Debug(Questie.DEBUG_CRITICAL, "Name missing for NPC:", npcId)
|
||||
return nil
|
||||
end
|
||||
@@ -131,6 +147,25 @@ monster = function(npcId, objective)
|
||||
spawns = {}
|
||||
end
|
||||
|
||||
-- Learner safety net: when prioritizeMyData is enabled and the Learner has
|
||||
-- verified spawn data for this NPC, prefer it over compiled DB spawns.
|
||||
-- This catches edge cases where the npcDataOverrides chain doesn't fully
|
||||
-- replace retail positions (e.g. format migration gaps, timing issues).
|
||||
if Questie.IsAscension and Questie.dbLearner and Questie.dbLearner.global then
|
||||
local ld = Questie.dbLearner.global
|
||||
if ld.settings and ld.settings.prioritizeMyData then
|
||||
local learnedNpc = ld.npcs and ld.npcs[npcId]
|
||||
if learnedNpc then
|
||||
local learnedSpawns = learnedNpc[7]
|
||||
local threshold = ld.settings.minConfidencePins or 1
|
||||
if learnedSpawns and next(learnedSpawns) and learnedNpc.mc and learnedNpc.mc >= threshold then
|
||||
Questie:Debug(Questie.DEBUG_DEVELOP, "[monster] Preferring learned spawns for NPC:", npcId, "(mc=" .. tostring(learnedNpc.mc) .. ")")
|
||||
spawns = learnedSpawns
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
local rank = QuestieDB.QueryNPCSingle(npcId, "rank")
|
||||
|
||||
local enableSpawns = not QuestieCorrections.questNPCBlacklist[npcId]
|
||||
|
||||
Reference in New Issue
Block a user