You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

188 lines
5.1 KiB

--The tooltip data of some items, though C_Item.IsItemDataCached returns true, may be incomplete (missing effect descriptions), so we have to create our own cache
local _, addon = ...
local ItemCacheUtil = {};
addon.ItemCacheUtil = ItemCacheUtil;
local CachedItemIDs = {};
local type = type;
local RequestLoadItemDataByItemLocation = C_Item.RequestLoadItemData;
local RequestLoadItemDataByID = C_Item.RequestLoadItemDataByID;
local GetItemID = C_Item.GetItemID;
local GetItemInfoInstant = GetItemInfoInstant;
function ItemCacheUtil:IsItemDataCached(item)
if type(item) == "number" then
if CachedItemIDs[item] then
return true
end
CachedItemIDs[item] = true;
RequestLoadItemDataByID(item);
elseif type(item) == "table" then --itemLocation
local itemID = GetItemID(item);
if not itemID then return end
if CachedItemIDs[itemID] then
return true
end
CachedItemIDs[itemID] = true;
RequestLoadItemDataByItemLocation(item);
else --itemlink
local itemID = GetItemInfoInstant(item);
if not itemID then return end
if CachedItemIDs[itemID] then
return true
end
CachedItemIDs[itemID] = true;
RequestLoadItemDataByID(item);
end
return false
end
---- Debug Test Find Quest Item And Its Quest
--[[
function NarciDebug_GetQuestTitles()
if not NarcissusTestDB then
NarcissusTestDB = {};
end
if not NarcissusTestDB.questTitles then
NarcissusTestDB.questTitles = {};
end
local db = NarcissusTestDB.questTitles;
local IsWorldQuest = C_QuestLog.IsWorldQuest;
local IsQuestTask = C_QuestLog.IsQuestTask;
local IsQuestFlaggedCompleted = C_QuestLog.IsQuestFlaggedCompleted;
local GetTitleForQuestID = C_QuestLog.GetTitleForQuestID;
local GetQuestExpansion = GetQuestExpansion;
local tinsert = table.insert;
local targetExpansion = 9;
local questID, title, expansionID;
local offset = 76000; --74378
local total = 0;
for i = 1, 14000 do
questID = offset - i;
if not db[questID] then
if not (IsQuestTask(questID) or IsWorldQuest(questID)) then
expansionID = GetQuestExpansion(questID);
if expansionID == targetExpansion and (not IsQuestFlaggedCompleted(questID)) then
title = GetTitleForQuestID(questID);
if title and title ~= "" then
total = total + 1;
db[questID] = title;
if total <= 100 then
print(questID, GetQuestExpansion(questID), title);
end
end
end
end
end
end
print("New Total: "..total);
end
function NarciDebug_GetQuestItems()
if not NarcissusTestDB then
NarcissusTestDB = {};
end
if not NarcissusTestDB.questItems then
NarcissusTestDB.questItems = {};
end
local db = NarcissusTestDB.questItems;
local GetItemInfoInstant = GetItemInfoInstant;
local _, classID;
local total = 0;
for itemID = 179921, 223716 do
_, _, _, _, _, classID = GetItemInfoInstant(itemID);
if classID and classID == 12 then
if not db[itemID] then
db[itemID] = true;
total = total + 1;
end
end
end
print("Quest Items: "..total)
end
function NarciDebug_GetQuestItemNames()
if not (NarcissusTestDB and NarcissusTestDB.questItems) then
return
end
if not NarcissusTestDB.questItemNames then
NarcissusTestDB.questItemNames = {};
end
local db = NarcissusTestDB.questItemNames;
local GetItemNameByID = C_Item.GetItemNameByID;
local name;
local total = 0;
for itemID in pairs(NarcissusTestDB.questItems) do
if not db[itemID] then
name = GetItemNameByID(itemID);
if name and name ~= "" then
db[itemID] = name;
total = total + 1;
end
end
end
print("New Names: "..total);
end
local KNOWN_ITEMS = {};
do
local knownItems = {
198475, 198626, 198543, 199841, 199840, 199843, 199842, 199895, 199893, 198540,
};
for _, itemID in ipairs(knownItems) do
KNOWN_ITEMS[itemID] = true;
end
end
function NarciDebug_FindSameNames()
local itemNames = NarcissusTestDB.questItemNames
local questNames = {};
for questID, name in pairs(NarcissusTestDB.questTitles) do
questNames[name] = questID;
end
local idMatch = {};
for itemID, name in pairs(itemNames) do
if questNames[name] then
table.insert(idMatch, itemID);
end
end
table.sort(idMatch);
local name;
for _, itemID in ipairs(idMatch) do
if not KNOWN_ITEMS[itemID] then
name = itemNames[itemID];
print(itemID, questNames[name], name);
end
end
end
--]]