chore: stage all pending changes (DB cleanup, corrections, compiler, init, plugin API)
This commit is contained in:
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -1,211 +0,0 @@
|
||||
---@class HardcoreBlacklist
|
||||
local HardcoreBlacklist = QuestieLoader:CreateModule("HardcoreBlacklist")
|
||||
|
||||
|
||||
---@return table<QuestId, boolean>
|
||||
function HardcoreBlacklist:Load()
|
||||
return {
|
||||
[5892] = true, -- Irondeep Supplies
|
||||
[5893] = true, -- Coldtooth Supplies
|
||||
[6741] = true, -- More Booty!
|
||||
[6781] = true, -- More Armor Scraps
|
||||
[6801] = true, -- Lokholar the Ice Lord
|
||||
[6825] = true, -- Call of Air - Guse's Fleet
|
||||
[6826] = true, -- Call of Air - Jeztor's Fleet
|
||||
[6827] = true, -- Call of Air - Mulverick's Fleet
|
||||
[6846] = true, -- Begin the Attack!
|
||||
[6847] = true, -- Master Ryson's All Seeing Eye
|
||||
[6848] = true, -- Master Ryson's All Seeing Eye
|
||||
[6861] = true, -- Zinfizzlex's Portable Shredder Unit
|
||||
[6862] = true, -- Zinfizzlex's Portable Shredder Unit
|
||||
[6881] = true, -- Ivus the Forest Lord
|
||||
[6901] = true, -- Launch the Attack!
|
||||
[6941] = true, -- Call of Air - Vipore's Fleet
|
||||
[6942] = true, -- Call of Air - Slidore's Fleet
|
||||
[6943] = true, -- Call of Air - Ichman's Fleet
|
||||
[6982] = true, -- Coldtooth Supplies
|
||||
[6985] = true, -- Irondeep Supplies
|
||||
[7001] = true, -- Empty Stables
|
||||
[7002] = true, -- Ram Hide Harnesses
|
||||
[7026] = true, -- Ram Riding Harnesses
|
||||
[7027] = true, -- Empty Stables
|
||||
[7081] = true, -- Alterac Valley Graveyards
|
||||
[7082] = true, -- The Graveyards of Alterac
|
||||
[7101] = true, -- Towers and Bunkers
|
||||
[7102] = true, -- Towers and Bunkers
|
||||
[7121] = true, -- The Quartermaster
|
||||
[7122] = true, -- Capture a Mine
|
||||
[7123] = true, -- Speak with our Quartermaster
|
||||
[7124] = true, -- Capture a Mine
|
||||
[7141] = true, -- The Battle of Alterac
|
||||
[7142] = true, -- The Battle for Alterac
|
||||
[7161] = true, -- Proving Grounds
|
||||
[7162] = true, -- Proving Grounds
|
||||
[7163] = true, -- Rise and Be Recognized
|
||||
[7164] = true, -- Honored Amongst the Clan
|
||||
[7165] = true, -- Earned Reverence
|
||||
[7166] = true, -- Legendary Heroes
|
||||
[7167] = true, -- The Eye of Command
|
||||
[7168] = true, -- Rise and Be Recognized
|
||||
[7169] = true, -- Honored Amongst the Guard
|
||||
[7170] = true, -- Earned Reverence
|
||||
[7171] = true, -- Legendary Heroes
|
||||
[7172] = true, -- The Eye of Command
|
||||
[7181] = true, -- The Legend of Korrak
|
||||
[7202] = true, -- Korrak the Bloodrager
|
||||
[7221] = true, -- Speak with Prospector Stonehewer
|
||||
[7222] = true, -- Speak with Voggah Deathgrip
|
||||
[7223] = true, -- Armor Scraps
|
||||
[7224] = true, -- Enemy Booty
|
||||
[7241] = true, -- In Defense of Frostwolf
|
||||
[7261] = true, -- The Sovereign Imperative
|
||||
[7281] = true, -- Brotherly Love
|
||||
[7282] = true, -- Brotherly Love
|
||||
[7301] = true, -- Fallen Sky Lords
|
||||
[7302] = true, -- Fallen Sky Lords
|
||||
[7361] = true, -- Favor Amongst the Darkspear
|
||||
[7362] = true, -- Ally of the Tauren
|
||||
[7363] = true, -- The Human Condition
|
||||
[7364] = true, -- Gnomeregan Bounty
|
||||
[7365] = true, -- Staghelm's Requiem
|
||||
[7366] = true, -- The Archbishop's Mercy
|
||||
[7367] = true, -- Defusing the Threat
|
||||
[7368] = true, -- Defusing the Threat
|
||||
[7381] = true, -- The Return of Korrak
|
||||
[7382] = true, -- Korrak the Everliving
|
||||
[7385] = true, -- A Gallon of Blood
|
||||
[7386] = true, -- Crystal Cluster
|
||||
[7401] = true, -- WANTED: Dwarves!
|
||||
[7402] = true, -- WANTED: Orcs!
|
||||
[7421] = true, -- Darkspear Defense
|
||||
[7422] = true, -- Tuft it Out
|
||||
[7423] = true, -- I've Got A Fever For More Bone Chips
|
||||
[7424] = true, -- What the Hoof?
|
||||
[7425] = true, -- Staghelm's Mojo Jamboree
|
||||
[7426] = true, -- One Man's Love
|
||||
[7427] = true, -- Wanted: MORE DWARVES!
|
||||
[7428] = true, -- Wanted: MORE ORCS!
|
||||
[7788] = true, -- Vanquish the Invaders!
|
||||
[7789] = true, -- Quell the Silverwing Usurpers
|
||||
[7871] = true, -- Vanquish the Invaders!
|
||||
[7872] = true, -- Vanquish the Invaders!
|
||||
[7873] = true, -- Vanquish the Invaders!
|
||||
[7874] = true, -- Quell the Silverwing Usurpers
|
||||
[7875] = true, -- Quell the Silverwing Usurpers
|
||||
[7876] = true, -- Quell the Silverwing Usurpers
|
||||
[7886] = true, -- Talismans of Merit
|
||||
[7887] = true, -- Talismans of Merit
|
||||
[7888] = true, -- Talismans of Merit
|
||||
[7921] = true, -- Talismans of Merit
|
||||
[7922] = true, -- Mark of Honor
|
||||
[7923] = true, -- Mark of Honor
|
||||
[7924] = true, -- Mark of Honor
|
||||
[7925] = true, -- Mark of Honor
|
||||
[8001] = true, -- Warsong Outriders <NYI> <TXT>
|
||||
[8002] = true, -- Silverwing Sentinels <NYI> <TXT>
|
||||
[8080] = true, -- Arathi Basin Resources!
|
||||
[8081] = true, -- More Resource Crates
|
||||
[8105] = true, -- The Battle for Arathi Basin!
|
||||
[8114] = true, -- Control Four Bases
|
||||
[8115] = true, -- Control Five Bases
|
||||
[8120] = true, -- The Battle for Arathi Basin!
|
||||
[8121] = true, -- Take Four Bases
|
||||
[8122] = true, -- Take Five Bases
|
||||
[8123] = true, -- Cut Arathor Supply Lines
|
||||
[8124] = true, -- More Resource Crates
|
||||
[8154] = true, -- Arathi Basin Resources!
|
||||
[8155] = true, -- Arathi Basin Resources!
|
||||
[8156] = true, -- Arathi Basin Resources!
|
||||
[8157] = true, -- More Resource Crates
|
||||
[8158] = true, -- More Resource Crates
|
||||
[8159] = true, -- More Resource Crates
|
||||
[8160] = true, -- Cut Arathor Supply Lines
|
||||
[8161] = true, -- Cut Arathor Supply Lines
|
||||
[8162] = true, -- Cut Arathor Supply Lines
|
||||
[8163] = true, -- More Resource Crates
|
||||
[8164] = true, -- More Resource Crates
|
||||
[8165] = true, -- More Resource Crates
|
||||
[8166] = true, -- The Battle for Arathi Basin!
|
||||
[8167] = true, -- The Battle for Arathi Basin!
|
||||
[8168] = true, -- The Battle for Arathi Basin!
|
||||
[8169] = true, -- The Battle for Arathi Basin!
|
||||
[8170] = true, -- The Battle for Arathi Basin!
|
||||
[8171] = true, -- The Battle for Arathi Basin!
|
||||
[8260] = true, -- Arathor Basic Care Package
|
||||
[8261] = true, -- Arathor Standard Care Package
|
||||
[8262] = true, -- Arathor Advanced Care Package
|
||||
[8263] = true, -- Defiler's Basic Care Package
|
||||
[8264] = true, -- Defiler's Standard Care Package
|
||||
[8265] = true, -- Defiler's Advanced Care Package
|
||||
[8266] = true, -- Ribbons of Sacrifice
|
||||
[8267] = true, -- Ribbons of Sacrifice
|
||||
[8268] = true, -- Ribbons of Sacrifice
|
||||
[8269] = true, -- Ribbons of Sacrifice
|
||||
[8271] = true, -- Hero of the Stormpike
|
||||
[8272] = true, -- Hero of the Frostwolf
|
||||
[8289] = true, -- Talismans of Merit
|
||||
[8290] = true, -- Vanquish the Invaders
|
||||
[8291] = true, -- Vanquish the Invaders!
|
||||
[8292] = true, -- Talismans of Merit
|
||||
[8293] = true, -- Mark of Honor
|
||||
[8294] = true, -- Quell the Silverwing Usurpers
|
||||
[8295] = true, -- Quell the Silverwing Usurpers
|
||||
[8296] = true, -- Mark of Honor
|
||||
[8297] = true, -- Arathi Basin Resources!
|
||||
[8298] = true, -- More Resource Crates
|
||||
[8299] = true, -- Cut Arathor Supply Lines
|
||||
[8300] = true, -- More Resource Crates
|
||||
[8368] = true, -- Battle of Warsong Gulch
|
||||
[8367] = true, -- For Great Honor
|
||||
[8369] = true, -- Invaders of Alterac Valley
|
||||
[8370] = true, -- Conquering Arathi Basin
|
||||
[8371] = true, -- Concerted Efforts
|
||||
[8372] = true, -- Fight for Warsong Gulch
|
||||
[8374] = true, -- Claiming Arathi Basin
|
||||
[8375] = true, -- Remember Alterac Valley
|
||||
[8383] = true, -- Remember Alterac Valley
|
||||
[8384] = true, -- Claiming Arathi Basin
|
||||
[8385] = true, -- Concerted Efforts
|
||||
[8386] = true, -- Fight for Warsong Gulch
|
||||
[8387] = true, -- Invaders of Alterac Valley
|
||||
[8388] = true, -- For Great Honor
|
||||
[8389] = true, -- Battle of Warsong Gulch
|
||||
[8390] = true, -- Conquering Arathi Basin
|
||||
[8391] = true, -- Claiming Arathi Basin
|
||||
[8392] = true, -- Claiming Arathi Basin
|
||||
[8393] = true, -- Claiming Arathi Basin
|
||||
[8394] = true, -- Claiming Arathi Basin
|
||||
[8395] = true, -- Claiming Arathi Basin
|
||||
[8396] = true, -- Claiming Arathi Basin
|
||||
[8397] = true, -- Claiming Arathi Basin
|
||||
[8398] = true, -- Claiming Arathi Basin
|
||||
[8399] = true, -- Fight for Warsong Gulch
|
||||
[8400] = true, -- Fight for Warsong Gulch
|
||||
[8401] = true, -- Fight for Warsong Gulch
|
||||
[8402] = true, -- Fight for Warsong Gulch
|
||||
[8403] = true, -- Fight for Warsong Gulch
|
||||
[8404] = true, -- Fight for Warsong Gulch
|
||||
[8405] = true, -- Fight for Warsong Gulch
|
||||
[8406] = true, -- Fight for Warsong Gulch
|
||||
[8407] = true, -- Fight for Warsong Gulch
|
||||
[8408] = true, -- Fight for Warsong Gulch
|
||||
[8426] = true, -- Battle of Warsong Gulch
|
||||
[8427] = true, -- Battle of Warsong Gulch
|
||||
[8428] = true, -- Battle of Warsong Gulch
|
||||
[8429] = true, -- Battle of Warsong Gulch
|
||||
[8430] = true, -- Battle of Warsong Gulch
|
||||
[8431] = true, -- Battle of Warsong Gulch
|
||||
[8432] = true, -- Battle of Warsong Gulch
|
||||
[8433] = true, -- Battle of Warsong Gulch
|
||||
[8434] = true, -- Battle of Warsong Gulch
|
||||
[8435] = true, -- Battle of Warsong Gulch
|
||||
[8436] = true, -- Conquering Arathi Basin
|
||||
[8437] = true, -- Conquering Arathi Basin
|
||||
[8438] = true, -- Conquering Arathi Basin
|
||||
[8439] = true, -- Conquering Arathi Basin
|
||||
[8440] = true, -- Conquering Arathi Basin
|
||||
[8441] = true, -- Conquering Arathi Basin
|
||||
[8442] = true, -- Conquering Arathi Basin
|
||||
[8443] = true, -- Conquering Arathi Basin
|
||||
}
|
||||
end
|
||||
@@ -17,10 +17,6 @@ local QuestieQuestBlacklist = QuestieLoader:ImportModule("QuestieQuestBlacklist"
|
||||
local QuestieNPCBlacklist = QuestieLoader:ImportModule("QuestieNPCBlacklist")
|
||||
---@type QuestieItemBlacklist
|
||||
local QuestieItemBlacklist = QuestieLoader:ImportModule("QuestieItemBlacklist")
|
||||
---@type HardcoreBlacklist
|
||||
local HardcoreBlacklist = QuestieLoader:ImportModule("HardcoreBlacklist")
|
||||
---@type SeasonOfDiscovery
|
||||
local SeasonOfDiscovery = QuestieLoader:ImportModule("SeasonOfDiscovery")
|
||||
|
||||
---@type QuestieQuestFixes
|
||||
local QuestieQuestFixes = QuestieLoader:ImportModule("QuestieQuestFixes")
|
||||
@@ -79,8 +75,6 @@ QuestieCorrections.TBC_ONLY = 1 -- Hide only in TBC
|
||||
QuestieCorrections.CLASSIC_ONLY = 2 -- Hide only in Classic
|
||||
QuestieCorrections.WOTLK_ONLY = 3 -- Hide only in Wotlk
|
||||
QuestieCorrections.TBC_AND_WOTLK = 4 -- Hide in TBC and Wotlk
|
||||
QuestieCorrections.SOD_ONLY = 5 -- Hide when *not* Season of Discovery; use for SoD-only quests
|
||||
QuestieCorrections.HIDE_SOD = 6 -- Hide when Season of Discovery; use to hide quests that are not available in SoD
|
||||
QuestieCorrections.CLASSIC_AND_TBC = 7 -- Hide in both Classic and TBC
|
||||
|
||||
QuestieCorrections.killCreditObjectiveFirst = {} -- Only used for TBC quests
|
||||
@@ -93,7 +87,6 @@ local function filterExpansion(values)
|
||||
local isClassic = Questie.IsClassic
|
||||
local isTBC = Questie.IsTBC
|
||||
local isWotlk = Questie.IsWotlk
|
||||
local isSoD = Questie.IsSoD
|
||||
for k, v in pairs(values) do
|
||||
if v == QuestieCorrections.WOTLK_ONLY then
|
||||
if isWotlk then
|
||||
@@ -119,18 +112,6 @@ local function filterExpansion(values)
|
||||
else
|
||||
values[k] = nil
|
||||
end
|
||||
elseif v == QuestieCorrections.SOD_ONLY then
|
||||
if not isSoD then
|
||||
values[k] = true
|
||||
else
|
||||
values[k] = nil
|
||||
end
|
||||
elseif v == QuestieCorrections.HIDE_SOD then
|
||||
if isSoD then
|
||||
values[k] = true
|
||||
else
|
||||
values[k] = nil
|
||||
end
|
||||
elseif v == QuestieCorrections.CLASSIC_AND_TBC then
|
||||
if isClassic or isTBC then
|
||||
values[k] = true
|
||||
@@ -188,11 +169,6 @@ do
|
||||
addOverride(QuestieDB.objectDataOverrides, QuestieWotlkObjectFixes:LoadFactionFixes())
|
||||
end
|
||||
|
||||
-- Season of Discovery Corrections
|
||||
if Questie.IsSoD then
|
||||
addOverride(QuestieDB.questDataOverrides, SeasonOfDiscovery:LoadFactionQuestFixes())
|
||||
end
|
||||
|
||||
QuestieCorrections.questItemBlacklist = filterExpansion(QuestieItemBlacklist:Load())
|
||||
QuestieCorrections.questNPCBlacklist = filterExpansion(QuestieNPCBlacklist:Load())
|
||||
QuestieCorrections.hiddenQuests = filterExpansion(QuestieQuestBlacklist:Load())
|
||||
@@ -218,13 +194,6 @@ do
|
||||
end
|
||||
end
|
||||
|
||||
-- Hardcore Blacklist
|
||||
if (Questie.IsHardcore) then
|
||||
for id, _ in pairs(HardcoreBlacklist:Load()) do
|
||||
QuestieCorrections.hiddenQuests[id] = true
|
||||
end
|
||||
end
|
||||
|
||||
if QuestieCompat.Is335 then QuestieCompat.LoadBlacklists() end
|
||||
|
||||
if Questie.db.profile.showEventQuests then
|
||||
@@ -245,6 +214,7 @@ end
|
||||
---@param noOverwrites true? Do not overwrite existing values
|
||||
---@param noNewEntries true? Do not create new entries in the database
|
||||
local _LoadCorrections = function(databaseTableName, corrections, reversedKeys, validationTables, noOverwrites, noNewEntries)
|
||||
if not QuestieDB[databaseTableName] then return end
|
||||
for id, data in pairs(corrections) do
|
||||
for key, value in pairs(data) do
|
||||
-- Create the id if missing unless noNewEntries is set
|
||||
@@ -271,39 +241,30 @@ end
|
||||
|
||||
---@param validationTables table? Only used by the CI validation scripts to validate the corrections against the original database values and find irrelevant corrections
|
||||
function QuestieCorrections:Initialize(validationTables)
|
||||
QuestieQuestFixes:LoadMissingQuests()
|
||||
if QuestieQuestFixes and QuestieQuestFixes.LoadMissingQuests then
|
||||
QuestieQuestFixes:LoadMissingQuests()
|
||||
end
|
||||
|
||||
-- Classic Corrections
|
||||
_LoadCorrections("questData", QuestieClassicQuestReputationFixes:Load(), QuestieDB.questKeysReversed, validationTables)
|
||||
_LoadCorrections("questData", QuestieQuestFixes:Load(), QuestieDB.questKeysReversed, validationTables)
|
||||
_LoadCorrections("npcData", QuestieNPCFixes:Load(), QuestieDB.npcKeysReversed, validationTables)
|
||||
_LoadCorrections("itemData", QuestieItemFixes:Load(), QuestieDB.itemKeysReversed, validationTables)
|
||||
_LoadCorrections("objectData", QuestieObjectFixes:Load(), QuestieDB.objectKeysReversed, validationTables)
|
||||
if QuestieClassicQuestReputationFixes then _LoadCorrections("questData", QuestieClassicQuestReputationFixes:Load(), QuestieDB.questKeysReversed, validationTables) end
|
||||
if QuestieQuestFixes then _LoadCorrections("questData", QuestieQuestFixes:Load(), QuestieDB.questKeysReversed, validationTables) end
|
||||
if QuestieNPCFixes then _LoadCorrections("npcData", QuestieNPCFixes:Load(), QuestieDB.npcKeysReversed, validationTables) end
|
||||
if QuestieItemFixes then _LoadCorrections("itemData", QuestieItemFixes:Load(), QuestieDB.itemKeysReversed, validationTables) end
|
||||
if QuestieObjectFixes then _LoadCorrections("objectData", QuestieObjectFixes:Load(), QuestieDB.objectKeysReversed, validationTables) end
|
||||
|
||||
if Questie.IsTBC or Questie.IsWotlk then
|
||||
_LoadCorrections("questData", QuestieTBCQuestFixes:Load(), QuestieDB.questKeysReversed, validationTables)
|
||||
_LoadCorrections("npcData", QuestieTBCNpcFixes:Load(), QuestieDB.npcKeysReversed, validationTables)
|
||||
_LoadCorrections("itemData", QuestieTBCItemFixes:Load(), QuestieDB.itemKeysReversed, validationTables)
|
||||
_LoadCorrections("objectData", QuestieTBCObjectFixes:Load(), QuestieDB.objectKeysReversed, validationTables)
|
||||
if Questie.IsTBC or Questie.IsWotlk or QuestieCompat.Is335 then
|
||||
if QuestieTBCQuestFixes then _LoadCorrections("questData", QuestieTBCQuestFixes:Load(), QuestieDB.questKeysReversed, validationTables) end
|
||||
if QuestieTBCNpcFixes then _LoadCorrections("npcData", QuestieTBCNpcFixes:Load(), QuestieDB.npcKeysReversed, validationTables) end
|
||||
if QuestieTBCItemFixes then _LoadCorrections("itemData", QuestieTBCItemFixes:Load(), QuestieDB.itemKeysReversed, validationTables) end
|
||||
if QuestieTBCObjectFixes then _LoadCorrections("objectData", QuestieTBCObjectFixes:Load(), QuestieDB.objectKeysReversed, validationTables) end
|
||||
end
|
||||
|
||||
if Questie.IsWotlk then
|
||||
_LoadCorrections("questData", QuestieWotlkQuestFixes:Load(), QuestieDB.questKeysReversed, validationTables)
|
||||
_LoadCorrections("npcData", QuestieWotlkNpcFixes:LoadAutomatics(), QuestieDB.npcKeysReversed, validationTables)
|
||||
_LoadCorrections("npcData", QuestieWotlkNpcFixes:Load(), QuestieDB.npcKeysReversed, validationTables)
|
||||
_LoadCorrections("itemData", QuestieWotlkItemFixes:Load(), QuestieDB.itemKeysReversed, validationTables)
|
||||
_LoadCorrections("objectData", QuestieWotlkObjectFixes:Load(), QuestieDB.objectKeysReversed, validationTables)
|
||||
end
|
||||
|
||||
if Questie.IsSoD then
|
||||
_LoadCorrections("questData", SeasonOfDiscovery:LoadBaseQuests(), QuestieDB.questKeysReversed, validationTables)
|
||||
_LoadCorrections("questData", SeasonOfDiscovery:LoadQuests(), QuestieDB.questKeysReversed, validationTables)
|
||||
_LoadCorrections("npcData", SeasonOfDiscovery:LoadBaseNPCs(), QuestieDB.npcKeysReversed, validationTables)
|
||||
_LoadCorrections("npcData", SeasonOfDiscovery:LoadNPCs(), QuestieDB.npcKeysReversed, validationTables)
|
||||
_LoadCorrections("itemData", SeasonOfDiscovery:LoadBaseItems(), QuestieDB.itemKeysReversed, validationTables)
|
||||
_LoadCorrections("itemData", SeasonOfDiscovery:LoadItems(), QuestieDB.itemKeysReversed, validationTables)
|
||||
_LoadCorrections("objectData", SeasonOfDiscovery:LoadBaseObjects(), QuestieDB.objectKeysReversed, validationTables)
|
||||
_LoadCorrections("objectData", SeasonOfDiscovery:LoadObjects(), QuestieDB.objectKeysReversed, validationTables)
|
||||
if Questie.IsWotlk or QuestieCompat.Is335 then
|
||||
if QuestieWotlkQuestFixes then _LoadCorrections("questData", QuestieWotlkQuestFixes:Load(), QuestieDB.questKeysReversed, validationTables) end
|
||||
if QuestieWotlkNpcFixes then _LoadCorrections("npcData", QuestieWotlkNpcFixes:LoadAutomatics(), QuestieDB.npcKeysReversed, validationTables) end
|
||||
if QuestieWotlkNpcFixes then _LoadCorrections("npcData", QuestieWotlkNpcFixes:Load(), QuestieDB.npcKeysReversed, validationTables) end
|
||||
if QuestieWotlkItemFixes then _LoadCorrections("itemData", QuestieWotlkItemFixes:Load(), QuestieDB.itemKeysReversed, validationTables) end
|
||||
if QuestieWotlkObjectFixes then _LoadCorrections("objectData", QuestieWotlkObjectFixes:Load(), QuestieDB.objectKeysReversed, validationTables) end
|
||||
end
|
||||
|
||||
--- Corrections that apply to all versions
|
||||
@@ -312,6 +273,7 @@ function QuestieCorrections:Initialize(validationTables)
|
||||
if QuestieCompat.Is335 then QuestieCompat.LoadCorrections(_LoadCorrections, validationTables) end
|
||||
|
||||
local patchCount = 0
|
||||
if type(QuestieDB.questData) == "table" then
|
||||
for _, quest in pairs(QuestieDB.questData) do
|
||||
if (not quest[QuestieDB.questKeys.requiredRaces]) or quest[QuestieDB.questKeys.requiredRaces] == 0 then
|
||||
-- check against questgiver
|
||||
@@ -349,6 +311,7 @@ function QuestieCorrections:Initialize(validationTables)
|
||||
end
|
||||
end
|
||||
end
|
||||
end -- type(questData) == "table"
|
||||
|
||||
QuestieCorrections:MinimalInit()
|
||||
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,532 +0,0 @@
|
||||
---@type QuestieQuestBlacklist
|
||||
local QuestieQuestBlacklist = QuestieLoader:ImportModule("QuestieQuestBlacklist")
|
||||
|
||||
local currentPhase = 5 -- TODO: Use API function which hopefully will come in the future
|
||||
|
||||
-- This function blacklists any quests in phases LATER than the currentPhase value
|
||||
-- so in Phase 1, quests in phases 2+ are blacklisted, in phase 2, phases 3+ are blacklisted, etc
|
||||
-- Phase 1 is omitted, because everything not in this list is supposed to be available in Phase 1
|
||||
local questsToBlacklistBySoMPhase = {
|
||||
[1] = {}, -- Phase 1 - Regular Phase 1 + Dire Maul + Tier 0.5 quests (this is required for counting, but should stay empty)
|
||||
[2] = { -- Phase 2 - World Bosses
|
||||
},
|
||||
[3] = { -- Phase 3 - BWL + Darkmoon Faire
|
||||
[7761] = true, -- Blackhand's Command BWL pre quest
|
||||
[7787] = true,
|
||||
-- Darkmoon Faire quests
|
||||
[7902] = true,
|
||||
[7903] = true,
|
||||
[8222] = true,
|
||||
[7901] = true,
|
||||
[7899] = true,
|
||||
[7940] = true,
|
||||
[7900] = true,
|
||||
[7907] = true,
|
||||
[7927] = true,
|
||||
[7929] = true,
|
||||
[7928] = true,
|
||||
[7946] = true,
|
||||
[8223] = true,
|
||||
[7934] = true,
|
||||
[7981] = true,
|
||||
[7943] = true,
|
||||
[7894] = true,
|
||||
[7933] = true,
|
||||
[7898] = true,
|
||||
[7885] = true,
|
||||
[7942] = true,
|
||||
[7883] = true,
|
||||
[7892] = true,
|
||||
[7937] = true,
|
||||
[7939] = true,
|
||||
[7893] = true,
|
||||
[7891] = true,
|
||||
[7896] = true,
|
||||
[7884] = true,
|
||||
[7882] = true,
|
||||
[7897] = true,
|
||||
[7895] = true,
|
||||
[7941] = true,
|
||||
[7881] = true,
|
||||
[7890] = true,
|
||||
[7889] = true,
|
||||
[7945] = true,
|
||||
[7935] = true,
|
||||
[7938] = true,
|
||||
[7944] = true,
|
||||
[7932] = true,
|
||||
[7930] = true,
|
||||
[7931] = true,
|
||||
[7936] = true,
|
||||
[9249] = true,
|
||||
[10939] = true,
|
||||
[10940] = true,
|
||||
[10941] = true,
|
||||
-----------------
|
||||
},
|
||||
[4] = { -- Phase 4 - Zul'Gurub
|
||||
[8411] = true,
|
||||
[8056] = true,
|
||||
[8057] = true,
|
||||
[8064] = true,
|
||||
[8065] = true,
|
||||
[8074] = true,
|
||||
[8075] = true,
|
||||
[8110] = true,
|
||||
[8111] = true,
|
||||
[8112] = true,
|
||||
[8113] = true,
|
||||
[8116] = true,
|
||||
[8117] = true,
|
||||
[8118] = true,
|
||||
[8119] = true,
|
||||
[8041] = true,
|
||||
[8042] = true,
|
||||
[8043] = true,
|
||||
[8044] = true,
|
||||
[8045] = true,
|
||||
[8046] = true,
|
||||
[8047] = true,
|
||||
[8048] = true,
|
||||
[8049] = true,
|
||||
[8050] = true,
|
||||
[8051] = true,
|
||||
[8052] = true,
|
||||
[8053] = true,
|
||||
[8054] = true,
|
||||
[8055] = true,
|
||||
[8058] = true,
|
||||
[8059] = true,
|
||||
[8060] = true,
|
||||
[8061] = true,
|
||||
[8062] = true,
|
||||
[8063] = true,
|
||||
[8066] = true,
|
||||
[8067] = true,
|
||||
[8068] = true,
|
||||
[8069] = true,
|
||||
[8070] = true,
|
||||
[8071] = true,
|
||||
[8072] = true,
|
||||
[8073] = true,
|
||||
[8076] = true,
|
||||
[8077] = true,
|
||||
[8078] = true,
|
||||
[8079] = true,
|
||||
[8101] = true,
|
||||
[8102] = true,
|
||||
[8103] = true,
|
||||
[8104] = true,
|
||||
[8106] = true,
|
||||
[8107] = true,
|
||||
[8108] = true,
|
||||
[8109] = true,
|
||||
[8141] = true,
|
||||
[8142] = true,
|
||||
[8143] = true,
|
||||
[8144] = true,
|
||||
[8145] = true,
|
||||
[8146] = true,
|
||||
[8147] = true,
|
||||
[8148] = true,
|
||||
[8184] = true,
|
||||
[8185] = true,
|
||||
[8186] = true,
|
||||
[8187] = true,
|
||||
[8188] = true,
|
||||
[8189] = true,
|
||||
[8190] = true,
|
||||
[8191] = true,
|
||||
[8192] = true,
|
||||
[8195] = true,
|
||||
[8196] = true,
|
||||
[8201] = true,
|
||||
[8227] = true,
|
||||
[8238] = true,
|
||||
[8239] = true,
|
||||
[8240] = true,
|
||||
[8243] = true,
|
||||
[8246] = true,
|
||||
[8446] = true,
|
||||
[8447] = true,
|
||||
[9208] = true,
|
||||
[9209] = true,
|
||||
[9210] = true,
|
||||
[8307] = true,
|
||||
[8313] = true,
|
||||
[8317] = true,
|
||||
[8282] = true,
|
||||
[8278] = true,
|
||||
[8323] = true,
|
||||
[8324] = true,
|
||||
[8275] = true,
|
||||
[8309] = true,
|
||||
[8310] = true,
|
||||
[8315] = true,
|
||||
[8319] = true,
|
||||
[8341] = true,
|
||||
[8342] = true,
|
||||
[8343] = true,
|
||||
[8331] = true,
|
||||
[8332] = true,
|
||||
[8333] = true,
|
||||
[8306] = true,
|
||||
[8321] = true,
|
||||
[8362] = true,
|
||||
[8364] = true,
|
||||
[9248] = true,
|
||||
[8281] = true,
|
||||
[8285] = true,
|
||||
[8279] = true,
|
||||
[8287] = true,
|
||||
[8314] = true,
|
||||
},
|
||||
[5] = { -- Phase 5 - AQ
|
||||
[8277] = true,
|
||||
[8280] = true,
|
||||
[8283] = true,
|
||||
[8284] = true,
|
||||
[8304] = true,
|
||||
[8318] = true,
|
||||
[8320] = true,
|
||||
[8361] = true,
|
||||
[8276] = true,
|
||||
[8747] = true,
|
||||
[8748] = true,
|
||||
[8749] = true,
|
||||
[8750] = true,
|
||||
[8752] = true,
|
||||
[8753] = true,
|
||||
[8754] = true,
|
||||
[8755] = true,
|
||||
[8757] = true,
|
||||
[8758] = true,
|
||||
[8759] = true,
|
||||
[8760] = true,
|
||||
[8800] = true,
|
||||
[8751] = true,
|
||||
[8756] = true,
|
||||
[8761] = true,
|
||||
[8801] = true,
|
||||
[8802] = true,
|
||||
[8764] = true,
|
||||
[8765] = true,
|
||||
[8766] = true,
|
||||
[8620] = true,
|
||||
[8621] = true,
|
||||
[8622] = true,
|
||||
[8623] = true,
|
||||
[8624] = true,
|
||||
[8625] = true,
|
||||
[8626] = true,
|
||||
[8627] = true,
|
||||
[8628] = true,
|
||||
[8629] = true,
|
||||
[8630] = true,
|
||||
[8631] = true,
|
||||
[8632] = true,
|
||||
[8633] = true,
|
||||
[8634] = true,
|
||||
[8637] = true,
|
||||
[8638] = true,
|
||||
[8639] = true,
|
||||
[8640] = true,
|
||||
[8641] = true,
|
||||
[8655] = true,
|
||||
[8656] = true,
|
||||
[8657] = true,
|
||||
[8658] = true,
|
||||
[8659] = true,
|
||||
[8660] = true,
|
||||
[8661] = true,
|
||||
[8662] = true,
|
||||
[8663] = true,
|
||||
[8664] = true,
|
||||
[8665] = true,
|
||||
[8666] = true,
|
||||
[8667] = true,
|
||||
[8668] = true,
|
||||
[8669] = true,
|
||||
[8689] = true,
|
||||
[8690] = true,
|
||||
[8691] = true,
|
||||
[8692] = true,
|
||||
[8693] = true,
|
||||
[8694] = true,
|
||||
[8695] = true,
|
||||
[8696] = true,
|
||||
[8697] = true,
|
||||
[8698] = true,
|
||||
[8699] = true,
|
||||
[8700] = true,
|
||||
[8701] = true,
|
||||
[8702] = true,
|
||||
[8703] = true,
|
||||
[8704] = true,
|
||||
[8705] = true,
|
||||
[8706] = true,
|
||||
[8707] = true,
|
||||
[8708] = true,
|
||||
[8709] = true,
|
||||
[8710] = true,
|
||||
[8711] = true,
|
||||
[8712] = true,
|
||||
[8728] = true,
|
||||
[8729] = true,
|
||||
[8730] = true,
|
||||
[8733] = true,
|
||||
[8734] = true,
|
||||
[8735] = true,
|
||||
[8736] = true,
|
||||
[8741] = true,
|
||||
[8742] = true,
|
||||
[8743] = true,
|
||||
[8745] = true,
|
||||
[8783] = true,
|
||||
[8784] = true,
|
||||
[8789] = true,
|
||||
[8790] = true,
|
||||
[8791] = true,
|
||||
[8602] = true,
|
||||
[8603] = true,
|
||||
[8606] = true,
|
||||
[8592] = true,
|
||||
[8593] = true,
|
||||
[8594] = true,
|
||||
[8595] = true,
|
||||
[8596] = true,
|
||||
[8597] = true,
|
||||
[8598] = true,
|
||||
[8599] = true,
|
||||
[8584] = true,
|
||||
[8585] = true,
|
||||
[8586] = true,
|
||||
[8587] = true,
|
||||
[8555] = true,
|
||||
[8556] = true,
|
||||
[8557] = true,
|
||||
[8558] = true,
|
||||
[8559] = true,
|
||||
[8560] = true,
|
||||
[8561] = true,
|
||||
[8562] = true,
|
||||
[8572] = true,
|
||||
[8573] = true,
|
||||
[8574] = true,
|
||||
[8575] = true,
|
||||
[8576] = true,
|
||||
[8577] = true,
|
||||
[8578] = true,
|
||||
[8496] = true,
|
||||
[8579] = true,
|
||||
[8544] = true,
|
||||
[8519] = true,
|
||||
[8856] = true,
|
||||
[8829] = true,
|
||||
[8497] = true,
|
||||
[8804] = true,
|
||||
[8805] = true,
|
||||
[8536] = true,
|
||||
[8857] = true,
|
||||
[8498] = true,
|
||||
[8806] = true,
|
||||
[8308] = true,
|
||||
[8858] = true,
|
||||
[8859] = true,
|
||||
[8807] = true,
|
||||
[8771] = true,
|
||||
[8773] = true,
|
||||
[8775] = true,
|
||||
[8777] = true,
|
||||
[8809] = true,
|
||||
[8787] = true,
|
||||
[8785] = true,
|
||||
[8538] = true,
|
||||
[8534] = true,
|
||||
[8738] = true,
|
||||
[8502] = true,
|
||||
[8537] = true,
|
||||
[8539] = true,
|
||||
[8786] = true,
|
||||
[8737] = true,
|
||||
[8687] = true,
|
||||
[8739] = true,
|
||||
[8501] = true,
|
||||
[8535] = true,
|
||||
[8808] = true,
|
||||
[8810] = true,
|
||||
[8740] = true,
|
||||
[8381] = true,
|
||||
[8779] = true,
|
||||
[8540] = true,
|
||||
[8541] = true,
|
||||
[8778] = true,
|
||||
[8780] = true,
|
||||
[8781] = true,
|
||||
[8782] = true,
|
||||
[8770] = true,
|
||||
[8772] = true,
|
||||
[8774] = true,
|
||||
[8776] = true,
|
||||
[8316] = true,
|
||||
[9023] = true,
|
||||
[8382] = true,
|
||||
[8286] = true,
|
||||
[8288] = true,
|
||||
[8301] = true,
|
||||
[8302] = true,
|
||||
[8303] = true,
|
||||
[8305] = true,
|
||||
[8548] = true,
|
||||
[8818] = true,
|
||||
[8817] = true,
|
||||
[8816] = true,
|
||||
[8815] = true,
|
||||
[8814] = true,
|
||||
[8820] = true,
|
||||
[8826] = true,
|
||||
[8825] = true,
|
||||
[8824] = true,
|
||||
[8823] = true,
|
||||
[8822] = true,
|
||||
[8821] = true,
|
||||
[8819] = true,
|
||||
},
|
||||
[6] = { --Phase 6 - Naxxramas
|
||||
[9085] = true,
|
||||
[9142] = true,
|
||||
[9165] = true,
|
||||
[9141] = true,
|
||||
[9033] = true,
|
||||
[9034] = true,
|
||||
[9036] = true,
|
||||
[9037] = true,
|
||||
[9038] = true,
|
||||
[9039] = true,
|
||||
[9040] = true,
|
||||
[9041] = true,
|
||||
[9042] = true,
|
||||
[9043] = true,
|
||||
[9044] = true,
|
||||
[9045] = true,
|
||||
[9046] = true,
|
||||
[9047] = true,
|
||||
[9048] = true,
|
||||
[9049] = true,
|
||||
[9050] = true,
|
||||
[9054] = true,
|
||||
[9055] = true,
|
||||
[9056] = true,
|
||||
[9057] = true,
|
||||
[9058] = true,
|
||||
[9059] = true,
|
||||
[9060] = true,
|
||||
[9061] = true,
|
||||
[9068] = true,
|
||||
[9069] = true,
|
||||
[9070] = true,
|
||||
[9071] = true,
|
||||
[9072] = true,
|
||||
[9073] = true,
|
||||
[9074] = true,
|
||||
[9075] = true,
|
||||
[9077] = true,
|
||||
[9078] = true,
|
||||
[9079] = true,
|
||||
[9080] = true,
|
||||
[9081] = true,
|
||||
[9082] = true,
|
||||
[9083] = true,
|
||||
[9084] = true,
|
||||
[9086] = true,
|
||||
[9087] = true,
|
||||
[9088] = true,
|
||||
[9089] = true,
|
||||
[9090] = true,
|
||||
[9091] = true,
|
||||
[9092] = true,
|
||||
[9093] = true,
|
||||
[9095] = true,
|
||||
[9096] = true,
|
||||
[9097] = true,
|
||||
[9098] = true,
|
||||
[9099] = true,
|
||||
[9100] = true,
|
||||
[9101] = true,
|
||||
[9102] = true,
|
||||
[9103] = true,
|
||||
[9104] = true,
|
||||
[9105] = true,
|
||||
[9106] = true,
|
||||
[9107] = true,
|
||||
[9108] = true,
|
||||
[9109] = true,
|
||||
[9110] = true,
|
||||
[9111] = true,
|
||||
[9112] = true,
|
||||
[9113] = true,
|
||||
[9114] = true,
|
||||
[9115] = true,
|
||||
[9116] = true,
|
||||
[9117] = true,
|
||||
[9118] = true,
|
||||
[9120] = true,
|
||||
[9121] = true,
|
||||
[9122] = true,
|
||||
[9123] = true,
|
||||
[9124] = true,
|
||||
[9125] = true,
|
||||
[9126] = true,
|
||||
[9127] = true,
|
||||
[9128] = true,
|
||||
[9129] = true,
|
||||
[9131] = true,
|
||||
[9132] = true,
|
||||
[9136] = true,
|
||||
[9137] = true,
|
||||
[9153] = true,
|
||||
[9211] = true,
|
||||
[9213] = true,
|
||||
[9221] = true,
|
||||
[9222] = true,
|
||||
[9223] = true,
|
||||
[9224] = true,
|
||||
[9225] = true,
|
||||
[9226] = true,
|
||||
[9227] = true,
|
||||
[9228] = true,
|
||||
[9229] = true,
|
||||
[9230] = true,
|
||||
[9232] = true,
|
||||
[9233] = true,
|
||||
[9234] = true,
|
||||
[9235] = true,
|
||||
[9236] = true,
|
||||
[9237] = true,
|
||||
[9238] = true,
|
||||
[9239] = true,
|
||||
[9240] = true,
|
||||
[9241] = true,
|
||||
[9242] = true,
|
||||
[9243] = true,
|
||||
[9244] = true,
|
||||
[9245] = true,
|
||||
[9246] = true,
|
||||
[9250] = true,
|
||||
[9251] = true,
|
||||
-- Silithus/EPL PvP
|
||||
[9248] = true,
|
||||
[9422] = true,
|
||||
[9415] = true,
|
||||
[9419] = true,
|
||||
[9416] = true,
|
||||
},
|
||||
}
|
||||
|
||||
---@return table<number, table<number, boolean>> @All quests that should be blacklisted separated by phase
|
||||
function QuestieQuestBlacklist:GetSoMQuestsToBlacklist()
|
||||
for phase = 1, currentPhase do
|
||||
questsToBlacklistBySoMPhase[phase] = {} -- empty table instead of nil to keep table size
|
||||
end
|
||||
return questsToBlacklistBySoMPhase
|
||||
end
|
||||
@@ -16,6 +16,7 @@ local l10n = QuestieLoader:ImportModule("l10n")
|
||||
-- https://github.com/Questie/Questie/wiki/Corrections
|
||||
|
||||
function QuestieQuestFixes:LoadMissingQuests()
|
||||
if not QuestieDB.questData then return end
|
||||
QuestieDB.questData[5640] = {} -- Desperate Prayer
|
||||
QuestieDB.questData[5678] = {} -- Arcane Feedback
|
||||
|
||||
|
||||
@@ -1,174 +0,0 @@
|
||||
---@type SeasonOfDiscovery
|
||||
local SeasonOfDiscovery = QuestieLoader:ImportModule("SeasonOfDiscovery")
|
||||
---@type QuestieDB
|
||||
local QuestieDB = QuestieLoader:ImportModule("QuestieDB")
|
||||
|
||||
function SeasonOfDiscovery:LoadItems()
|
||||
local itemKeys = QuestieDB.itemKeys
|
||||
local itemClasses = QuestieDB.itemClasses
|
||||
|
||||
return {
|
||||
[5359] = { -- Lorgalis Manuscript
|
||||
[itemKeys.relatedQuests] = {78923}, -- SoD Knowledge in the Deeps
|
||||
},
|
||||
[5881] = { -- Head of Kelris
|
||||
[itemKeys.relatedQuests] = {78921,78922}, -- SoD Blackfathom Villainy A,H
|
||||
[itemKeys.npcDrops] = {209678}, -- now drops from raid version of npc
|
||||
},
|
||||
[5952] = { -- Corrupted Brain Stem
|
||||
[itemKeys.relatedQuests] = {78926}, -- SoD Researching the Corruption
|
||||
[itemKeys.npcDrops] = {216660, 4788, 4789, 4803, 4802, 4805, 4807, 4799, 4798, 204645, 216662, 4831, 216659, 216661, 204068}, -- now drops from raid version of npc
|
||||
},
|
||||
[204806] = { -- Rune of Victory Rush
|
||||
[itemKeys.npcDrops] = {706,946,1986},
|
||||
},
|
||||
[205944] = { -- Reciprocal Epiphany
|
||||
[itemKeys.npcDrops] = {204937},
|
||||
},
|
||||
[206157] = { -- Seaforium Mining Charge
|
||||
[itemKeys.objectDrops] = {403041},
|
||||
},
|
||||
[206170] = { -- Windfury Cone
|
||||
[itemKeys.objectDrops] = {403105},
|
||||
},
|
||||
[206264] = { -- Rune of Inspiration
|
||||
[itemKeys.npcDrops] = {204937},
|
||||
},
|
||||
[206469] = { -- Prairie Flower
|
||||
[itemKeys.objectDrops] = {403718},
|
||||
},
|
||||
[208085] = { -- Scarlet Lieutenant Signet Ring
|
||||
[itemKeys.npcDrops] = {1662,1664,1665},
|
||||
},
|
||||
[208609] = { -- Glade Flower
|
||||
[itemKeys.objectDrops] = {407247},
|
||||
},
|
||||
[208612] = { -- Severed Spider Head
|
||||
[itemKeys.npcDrops] = {1998,1999,2000,2001},
|
||||
},
|
||||
[208689] = { -- Ferocious Idol
|
||||
[itemKeys.npcDrops] = {98,117,500,1972,6788},
|
||||
},
|
||||
[208771] = { -- Rune of Blade Dance
|
||||
[itemKeys.objectDrops] = {407453,408718,414532},
|
||||
},
|
||||
[208772] = { -- Rune of Saber Slash
|
||||
[itemKeys.objectDrops] = {407457,407731,409131,414624},
|
||||
},
|
||||
[209693] = { -- Alliance Blackfathom Pearl
|
||||
[itemKeys.relatedQuests] = {78916},
|
||||
[itemKeys.startQuest] = 78916,
|
||||
},
|
||||
[209846] = { -- Secrets of the Dreamers
|
||||
[itemKeys.objectDrops] = {409692},
|
||||
},
|
||||
[210026] = { -- Symbol of the Third Owl
|
||||
[itemKeys.objectDrops] = {409942,409949},
|
||||
},
|
||||
[210044] = { -- Symbol of the First Owl
|
||||
[itemKeys.objectDrops] = {410220},
|
||||
},
|
||||
[210055] = { -- Hillsbrad Human Bones
|
||||
[itemKeys.npcDrops] = {2265,2266,2267,2268,2360,2387},
|
||||
},
|
||||
[210195] = { -- Unbalanced Idol
|
||||
[itemKeys.npcDrops] = {1769,1770,1779},
|
||||
},
|
||||
[210589] = { -- Echo of the Ancestors
|
||||
[itemKeys.npcDrops] = {204937},
|
||||
},
|
||||
[210955] = { -- Scarlet Initiate's Uniform
|
||||
[itemKeys.objectDrops] = {412147},
|
||||
},
|
||||
[211452] = { -- Horde Blackfathom Pearl
|
||||
[itemKeys.relatedQuests] = {78917},
|
||||
[itemKeys.startQuest] = 78917,
|
||||
},
|
||||
[211454] = { -- Horde Strange Water Globe (starts Baron Aquanis)
|
||||
[itemKeys.relatedQuests] = {78920},
|
||||
[itemKeys.startQuest] = 78920,
|
||||
},
|
||||
[211818] = { -- Alliance Strange Water Globe (required for but does not start Baron Aquanis)
|
||||
[itemKeys.relatedQuests] = {79099},
|
||||
[itemKeys.startQuest] = nil,
|
||||
},
|
||||
[212347] = { -- Illari's Key
|
||||
[itemKeys.npcDrops] = {215655},
|
||||
},
|
||||
[213446] = { -- Tarnished Prayer Bead III
|
||||
[itemKeys.npcDrops] = {2552,2553,2554,2555,2556,2557,2562,2564,2566,2569,2570,2572,2573,2574,2575,2586,2587,2588,2589,2590,2618,2619,4062},
|
||||
},
|
||||
[215376] = { -- Crusader's Mace
|
||||
[itemKeys.npcDrops] = {4281,4283,4286,4287,4288,4289,4290,4291,4292,4293,4294,4295,4296,4297,4298,4299,4300,4301,4302,4303,4306,4540},
|
||||
},
|
||||
[216635] = { -- Spent Voidcore
|
||||
[itemKeys.npcDrops] = {5335,5336,5337},
|
||||
},
|
||||
[216946] = { -- Glittering Dalaran Relic
|
||||
[itemKeys.npcDrops] = {900000},
|
||||
},
|
||||
[216947] = { -- Whirring Dalaran Relic
|
||||
[itemKeys.npcDrops] = {900001},
|
||||
},
|
||||
[216948] = { -- Odd Dalaran Relic
|
||||
[itemKeys.npcDrops] = {900002},
|
||||
},
|
||||
[216949] = { -- Heavy Dalaran Relic
|
||||
[itemKeys.npcDrops] = {900003},
|
||||
},
|
||||
[216950] = { -- Creepy Dalaran Relic
|
||||
[itemKeys.npcDrops] = {900004},
|
||||
},
|
||||
[216951] = { -- Slippery Dalaran Relic
|
||||
[itemKeys.npcDrops] = {900005},
|
||||
},
|
||||
[219759] = { -- Charla's Field Report
|
||||
[itemKeys.npcDrops] = {221472},
|
||||
},
|
||||
[219770] = { -- Gemeron's Field Report
|
||||
[itemKeys.npcDrops] = {221482},
|
||||
},
|
||||
[219771] = { -- Thandros' Field Report
|
||||
[itemKeys.npcDrops] = {221484},
|
||||
},
|
||||
[219772] = { -- Fallia's Field Report
|
||||
[itemKeys.npcDrops] = {221483},
|
||||
},
|
||||
[219776] = { -- Intelligence Report: Vul'gol Ogre Mound
|
||||
[itemKeys.npcDrops] = {221222},
|
||||
},
|
||||
[219778] = { -- Intelligence Report: Rotting Orchard
|
||||
[itemKeys.npcDrops] = {221221},
|
||||
},
|
||||
[219803] = { -- Intelligence Report: Yorgen Farmstead
|
||||
[itemKeys.npcDrops] = {221220},
|
||||
},
|
||||
[219924] = { -- Intelligence Report: Forest Song
|
||||
[itemKeys.npcDrops] = {221271},
|
||||
},
|
||||
[219925] = { -- Intelligence Report: Satyrnaar
|
||||
[itemKeys.npcDrops] = {221272},
|
||||
},
|
||||
[219926] = { -- Intelligence Report: Warsong Lumber Camp
|
||||
[itemKeys.npcDrops] = {221273},
|
||||
},
|
||||
[219928] = { -- Intelligence Report: Agol'watha
|
||||
[itemKeys.npcDrops] = {221353},
|
||||
},
|
||||
[219937] = { -- Intelligence Report: Shaol'watha
|
||||
[itemKeys.npcDrops] = {221352},
|
||||
},
|
||||
[219938] = { -- Intelligence Report: Skulk Rock
|
||||
[itemKeys.npcDrops] = {221351},
|
||||
},
|
||||
[219957] = { -- Intelligence Report: Oneiros
|
||||
[itemKeys.npcDrops] = {221401},
|
||||
},
|
||||
[219958] = { -- Intelligence Report: Twin Colossals
|
||||
[itemKeys.npcDrops] = {221402},
|
||||
},
|
||||
[219959] = { -- Intelligence Report: Ruins of Ravenwind
|
||||
[itemKeys.npcDrops] = {221404},
|
||||
},
|
||||
}
|
||||
end
|
||||
@@ -1,714 +0,0 @@
|
||||
---@type SeasonOfDiscovery
|
||||
local SeasonOfDiscovery = QuestieLoader:ImportModule("SeasonOfDiscovery")
|
||||
---@type QuestieDB
|
||||
local QuestieDB = QuestieLoader:ImportModule("QuestieDB")
|
||||
---@type ZoneDB
|
||||
local ZoneDB = QuestieLoader:ImportModule("ZoneDB")
|
||||
|
||||
function SeasonOfDiscovery:LoadNPCs()
|
||||
local npcKeys = QuestieDB.npcKeys
|
||||
local zoneIDs = ZoneDB.zoneIDs
|
||||
local npcFlags = QuestieDB.npcFlags
|
||||
local waypointPresets = QuestieDB.waypointPresets
|
||||
|
||||
return {
|
||||
[15076] = { -- Zandalarian Emissary
|
||||
[npcKeys.spawns] = {
|
||||
[zoneIDs.STRANGLETHORN_VALE] = {{27.2, 77.0},{39.5, 5.0}},
|
||||
},
|
||||
},
|
||||
[202060] = { -- Frozen Murloc
|
||||
[npcKeys.spawns] = {
|
||||
[zoneIDs.ELWYNN_FOREST] = {{76.8, 51.4}},
|
||||
[zoneIDs.TIRISFAL_GLADES] = {{66.4, 40.2}},
|
||||
},
|
||||
},
|
||||
[202699] = { -- Baron Aquanis
|
||||
[npcKeys.spawns] = {
|
||||
[zoneIDs.BLACKFATHOM_DEEPS] = {{-1, -1}},
|
||||
},
|
||||
[npcKeys.zoneID] = zoneIDs.BLACKFATHOM_DEEPS,
|
||||
},
|
||||
[203079] = { -- Wandering Swordsman
|
||||
[npcKeys.spawns] = {
|
||||
[1] = {{53.5, 47.5}},
|
||||
[12] = {{24.6, 75.2},{38.6, 75.2}},
|
||||
[14] = {{36, 47.4},{41, 49.4},{55.8, 38.4},{56.6, 26.6}},
|
||||
[141] = {{39.6, 37.6},{39.8, 69.4},{43.8, 77},{54.8, 66},{62.6, 71.8}},
|
||||
[215] = {{40.4, 53.2},{45.6, 36.4},{60.2, 67.4}},
|
||||
},
|
||||
},
|
||||
[203226] = { -- Viktoria Woods
|
||||
[npcKeys.spawns] = {
|
||||
[zoneIDs.STORMWIND_CITY] = {{69.6, 50.6}},
|
||||
},
|
||||
},
|
||||
[203475] = { -- Liv Bradford
|
||||
[npcKeys.spawns] = {
|
||||
[zoneIDs.STORMWIND_CITY] = {{22.4, 64.4}},
|
||||
},
|
||||
},
|
||||
[203478] = { -- Stuart
|
||||
[npcKeys.spawns] = {
|
||||
[zoneIDs.STORMWIND_CITY] = {{22.6, 54.2}},
|
||||
},
|
||||
},
|
||||
[204068] = { -- Lady Sarevess
|
||||
[npcKeys.spawns] = {
|
||||
[zoneIDs.BLACKFATHOM_DEEPS] = {{-1, -1}},
|
||||
},
|
||||
[npcKeys.zoneID] = zoneIDs.BLACKFATHOM_DEEPS,
|
||||
},
|
||||
[204070] = { -- Soboz
|
||||
[npcKeys.spawns] = {
|
||||
[1] = {{42, 36.6}},
|
||||
[14] = {{67.4, 89.2}},
|
||||
[1497] = {{24.6, 40.6}},
|
||||
[1519] = {{25, 77.6}},
|
||||
},
|
||||
},
|
||||
[204827] = { -- Adventurer's Remains
|
||||
[npcKeys.spawns] = {
|
||||
[zoneIDs.DUN_MOROGH] = {{43, 49.4}},
|
||||
[zoneIDs.ELWYNN_FOREST] = {{52.2, 84.4}},
|
||||
[zoneIDs.DUROTAR] = {{48, 79.4}},
|
||||
[zoneIDs.TELDRASSIL] = {{33.6, 35.4}},
|
||||
[zoneIDs.MULGORE] = {{60.4, 33.4}},
|
||||
},
|
||||
},
|
||||
[204989] = { -- Wounded Adventurer
|
||||
[npcKeys.spawns] = {
|
||||
[zoneIDs.ELWYNN_FOREST] = {{61.8, 47.6}},
|
||||
},
|
||||
},
|
||||
[204503] = { -- Dead Acolyte
|
||||
[npcKeys.spawns] = {
|
||||
[zoneIDs.ELWYNN_FOREST] = {{56.4, 57.8}},
|
||||
},
|
||||
},
|
||||
[205153] = { -- Ada Gelhardt
|
||||
[npcKeys.spawns] = {
|
||||
[zoneIDs.DUSKWOOD] = {{4.4, 28.2}},
|
||||
},
|
||||
},
|
||||
[205278] = { -- Brother Romulus
|
||||
[npcKeys.spawns] = {
|
||||
[zoneIDs.STORMWIND_CITY] = {{38.4, 27.4}},
|
||||
},
|
||||
},
|
||||
[205382] = { -- Mokwa
|
||||
[npcKeys.spawns] = {
|
||||
[zoneIDs.MULGORE] = {{35.8, 57.2}},
|
||||
},
|
||||
},
|
||||
[206248] = { -- Wooden Effigy
|
||||
[npcKeys.spawns] = {
|
||||
[zoneIDs.TELDRASSIL] = {{66.8, 58}},
|
||||
[zoneIDs.MULGORE] = {{37.4, 49.6}},
|
||||
},
|
||||
},
|
||||
[207515] = { -- Lurkmane
|
||||
[npcKeys.spawns] = {
|
||||
[zoneIDs.MULGORE] = {{30.6, 61.2}},
|
||||
},
|
||||
},
|
||||
[207577] = { -- Lunar Stone
|
||||
[npcKeys.spawns] = {
|
||||
[zoneIDs.TELDRASSIL] = {{52.8, 79.8}},
|
||||
[zoneIDs.MULGORE] = {{35.2, 69.6}},
|
||||
},
|
||||
},
|
||||
[207743] = { -- Netali Proudwind
|
||||
[npcKeys.spawns] = {
|
||||
[zoneIDs.THUNDER_BLUFF] = {{28.6, 18.2}},
|
||||
},
|
||||
},
|
||||
[207754] = { -- Mooart
|
||||
[npcKeys.spawns] = {
|
||||
[zoneIDs.THUNDER_BLUFF] = {{26.6,19.8}},
|
||||
},
|
||||
},
|
||||
[207957] = { -- Vahi Bonesplitter
|
||||
[npcKeys.spawns] = {
|
||||
[zoneIDs.DUROTAR] = {{53, 43.4}},
|
||||
},
|
||||
},
|
||||
[208023] = { -- Gru'ark
|
||||
[npcKeys.spawns] = {
|
||||
[zoneIDs.ORGRIMMAR] = {{58.8, 53.6}},
|
||||
},
|
||||
},
|
||||
[208124] = { -- Raluk
|
||||
[npcKeys.spawns] = {
|
||||
[zoneIDs.DUROTAR] = {{68.6, 71.6}},
|
||||
},
|
||||
},
|
||||
[208196] = { -- Gillgar
|
||||
[npcKeys.spawns] = {
|
||||
[zoneIDs.TIRISFAL_GLADES] = {{28.4, 46.8}},
|
||||
},
|
||||
},
|
||||
[208275] = { -- Frozen Makrura
|
||||
[npcKeys.spawns] = {
|
||||
[zoneIDs.DUROTAR] = {{58.6, 45.6}},
|
||||
},
|
||||
},
|
||||
[208619] = { -- Dorac Graves
|
||||
[npcKeys.spawns] = {
|
||||
[zoneIDs.TIRISFAL_GLADES] = {{47.2, 71.2}},
|
||||
},
|
||||
},
|
||||
[208638] = { -- Fyodi
|
||||
[npcKeys.spawns] = {
|
||||
[zoneIDs.DUN_MOROGH] = {{35.4,37.4},{30.4,41.2}},
|
||||
},
|
||||
},
|
||||
[208652] = { -- Junni Steelpass
|
||||
[npcKeys.spawns] = {
|
||||
[zoneIDs.DUN_MOROGH] = {{46.4, 53.2}},
|
||||
},
|
||||
},
|
||||
[208711] = { -- Toby
|
||||
[npcKeys.spawns] = {
|
||||
[zoneIDs.DUN_MOROGH] = {{63.6, 50.2}},
|
||||
},
|
||||
},
|
||||
[208752] = { -- Frozen Trogg
|
||||
[npcKeys.spawns] = {
|
||||
[zoneIDs.DUN_MOROGH] = {{69.2, 58.2}},
|
||||
},
|
||||
},
|
||||
[208802] = { -- Wounded Adventurer
|
||||
[npcKeys.spawns] = {
|
||||
[zoneIDs.DUN_MOROGH] = {{25.4, 43.6}},
|
||||
},
|
||||
},
|
||||
[208812] = { -- Jorul
|
||||
[npcKeys.spawns] = {
|
||||
[zoneIDs.DUN_MOROGH] = {{37.8, 42.4}},
|
||||
},
|
||||
},
|
||||
[208919] = { -- Blueheart
|
||||
[npcKeys.spawns] = {
|
||||
[zoneIDs.TIRISFAL_GLADES] = {{61.6, 51.4}},
|
||||
},
|
||||
},
|
||||
[208927] = { -- Dead Acolyte
|
||||
[npcKeys.spawns] = {
|
||||
[zoneIDs.TIRISFAL_GLADES] = {{76.4, 44.8}},
|
||||
},
|
||||
},
|
||||
[209004] = { -- Bruart
|
||||
[npcKeys.spawns] = {
|
||||
[zoneIDs.IRONFORGE] = {{71.2, 73.2}},
|
||||
},
|
||||
},
|
||||
[209524] = { -- Patrolling Cheetah
|
||||
[npcKeys.spawns] = {
|
||||
[zoneIDs.THE_BARRENS] = {{44.4, 55.4}},
|
||||
},
|
||||
},
|
||||
[209607] = { -- Lieutenant Stonebrew
|
||||
[npcKeys.spawns] = {
|
||||
[zoneIDs.THE_BARRENS] = {},
|
||||
},
|
||||
},
|
||||
[209608] = { -- Delwynna
|
||||
[npcKeys.spawns] = {
|
||||
[zoneIDs.DARNASSUS] = {{63.4, 22}},
|
||||
},
|
||||
},
|
||||
[209678] = { -- Twilight Lord Kelris
|
||||
[npcKeys.spawns] = {
|
||||
[zoneIDs.BLACKFATHOM_DEEPS] = {{-1, -1}},
|
||||
},
|
||||
[npcKeys.zoneID] = zoneIDs.BLACKFATHOM_DEEPS,
|
||||
},
|
||||
[209742] = { -- Desert Mirage
|
||||
[npcKeys.spawns] = {
|
||||
[zoneIDs.THE_BARRENS] = {{57.6, 35.8}},
|
||||
},
|
||||
},
|
||||
[209797] = { -- Bruuz
|
||||
[npcKeys.spawns] = {
|
||||
[zoneIDs.THE_BARRENS] = {{64.8, 39.8}},
|
||||
},
|
||||
},
|
||||
[209872] = { -- Syllart
|
||||
[npcKeys.spawns] = {
|
||||
[zoneIDs.TELDRASSIL] = {{56.6, 57.8}},
|
||||
},
|
||||
},
|
||||
[209908] = { -- Heretic Idol
|
||||
[npcKeys.spawns] = {
|
||||
[zoneIDs.LOCH_MODAN] = {{71.8, 27.0}},
|
||||
},
|
||||
},
|
||||
[209928] = { -- Mowgh
|
||||
[npcKeys.spawns] = {
|
||||
[zoneIDs.TELDRASSIL] = {{48.0, 31.6}},
|
||||
},
|
||||
},
|
||||
[209948] = { -- Relaeron
|
||||
[npcKeys.spawns] = {
|
||||
[zoneIDs.DARNASSUS] = {{39.2, 9.0}},
|
||||
},
|
||||
},
|
||||
[209954] = { -- Demonic Remains
|
||||
[npcKeys.spawns] = {
|
||||
[zoneIDs.LOCH_MODAN] = {{72.6, 68.8}},
|
||||
},
|
||||
},
|
||||
[209958] = { -- Graix
|
||||
[npcKeys.spawns] = {
|
||||
[zoneIDs.LOCH_MODAN] = {{72.6, 68.8}},
|
||||
},
|
||||
},
|
||||
[210107] = { -- Kackle
|
||||
[npcKeys.spawns] = {
|
||||
[zoneIDs.LOCH_MODAN] = {{55.0, 55.4}},
|
||||
},
|
||||
},
|
||||
[210451] = { -- Lady Sedorax
|
||||
[npcKeys.spawns] = {
|
||||
[zoneIDs.DARKSHORE] = {{55.4, 36.6}},
|
||||
},
|
||||
},
|
||||
[210482] = { -- Paxnozz
|
||||
[npcKeys.spawns] = {
|
||||
[zoneIDs.DARKSHORE] = {{47.8, 16.0}},
|
||||
},
|
||||
},
|
||||
[210483] = { -- Aggressive Squashling
|
||||
[npcKeys.spawns] = {
|
||||
[zoneIDs.WESTFALL] = {{51.2, 22.3},{54, 31.8},{44.6, 35.2},{38.4, 52.5},{62.5, 61.1}},
|
||||
},
|
||||
},
|
||||
[210533] = { -- Silverspur
|
||||
[npcKeys.spawns] = {
|
||||
[zoneIDs.WESTFALL] = {{35.6, 38.4}},
|
||||
},
|
||||
},
|
||||
[210537] = { -- Undying Laborer
|
||||
[npcKeys.spawns] = {
|
||||
[zoneIDs.WESTFALL] = {{44.9, 24},{31.5, 45}},
|
||||
},
|
||||
},
|
||||
[210549] = { -- Defias Scout
|
||||
[npcKeys.spawns] = {
|
||||
[zoneIDs.WESTFALL] = {{51.2, 46.8},{51.6, 55.6}},
|
||||
},
|
||||
},
|
||||
[210845] = { -- Jixo Madrocket
|
||||
[npcKeys.spawns] = {
|
||||
[zoneIDs.STONETALON_MOUNTAINS] = {{59.2, 62.4}},
|
||||
},
|
||||
},
|
||||
[210995] = { -- Alonso
|
||||
[npcKeys.spawns] = {
|
||||
[zoneIDs.ASHENVALE] = {{43.4, 70.4}},
|
||||
},
|
||||
},
|
||||
[211022] = { -- Owen Thadd
|
||||
[npcKeys.spawns] = {
|
||||
[zoneIDs.UNDERCITY] = {{73.4, 33}},
|
||||
},
|
||||
[npcKeys.friendlyToFaction] = "H",
|
||||
},
|
||||
[211033] = { -- Garion Wendell
|
||||
[npcKeys.spawns] = {
|
||||
[zoneIDs.STORMWIND_CITY] = {{37.8, 80.2}},
|
||||
},
|
||||
[npcKeys.friendlyToFaction] = "A",
|
||||
},
|
||||
[211146] = { -- Lost Adventurer
|
||||
[npcKeys.spawns] = {
|
||||
[zoneIDs.SILVERPINE_FOREST] = {},
|
||||
},
|
||||
},
|
||||
[211736] = { -- Grizzled Protector
|
||||
[npcKeys.spawns] = {
|
||||
[zoneIDs.SILVERPINE_FOREST] = {},
|
||||
},
|
||||
},
|
||||
[211951] = { -- Koartul
|
||||
[npcKeys.spawns] = {
|
||||
[zoneIDs.HILLSBRAD_FOOTHILLS] = {{60.8, 31.8}},
|
||||
},
|
||||
},
|
||||
[211965] = { -- Carrodin
|
||||
[npcKeys.spawns] = {
|
||||
[zoneIDs.WETLANDS] = {{46.6, 65.6}},
|
||||
},
|
||||
},
|
||||
[211200] = { -- Agon
|
||||
[npcKeys.spawns] = {
|
||||
[zoneIDs.DUSKWOOD] = {{65.1, 23.7}},
|
||||
},
|
||||
},
|
||||
[212261] = { -- Awakened Lich
|
||||
[npcKeys.spawns] = {},
|
||||
},
|
||||
[212694] = { -- Hirzek
|
||||
[npcKeys.spawns] = {
|
||||
[zoneIDs.THE_BARRENS] = {{43.2, 78.6}},
|
||||
},
|
||||
},
|
||||
[212699] = { -- Silverwing Archer
|
||||
[npcKeys.spawns] = {
|
||||
[zoneIDs.ASHENVALE] = {{28.6, 27.4},{51.2, 55.6},{59, 72.4},{73.6, 74.4}},
|
||||
},
|
||||
},
|
||||
[212703] = { -- Silverwing Dryad
|
||||
[npcKeys.spawns] = {
|
||||
[zoneIDs.ASHENVALE] = {{28.6, 27.4},{51.2, 55.6},{59, 72.4},{73.6, 74.4}},
|
||||
},
|
||||
},
|
||||
[212706] = { -- Silverwing Druid
|
||||
[npcKeys.spawns] = {
|
||||
[zoneIDs.ASHENVALE] = {{28.6, 27.4},{51.2, 55.6},{59, 72.4},{73.6, 74.4}},
|
||||
},
|
||||
},
|
||||
[212707] = { -- Larodar
|
||||
[npcKeys.spawns] = {
|
||||
[zoneIDs.ASHENVALE] = {{51.6, 54.6}},
|
||||
},
|
||||
},
|
||||
[212727] = { -- Warsong Grunt
|
||||
[npcKeys.spawns] = {
|
||||
[zoneIDs.ASHENVALE] = {{21.8, 38.6},{40.2, 65.2},{54, 54.6},{69.4, 62.4}},
|
||||
},
|
||||
},
|
||||
[212728] = { -- Warsong Raider
|
||||
[npcKeys.spawns] = {
|
||||
[zoneIDs.ASHENVALE] = {{21.8, 38.6},{40.2, 65.2},{54, 54.6},{69.4, 62.4}},
|
||||
},
|
||||
},
|
||||
[212729] = { -- Warsong Shaman
|
||||
[npcKeys.spawns] = {
|
||||
[zoneIDs.ASHENVALE] = {{21.8, 38.6},{40.2, 65.2},{54, 54.6},{69.4, 62.4}},
|
||||
},
|
||||
},
|
||||
[212730] = { -- Tojara
|
||||
[npcKeys.spawns] = {
|
||||
[zoneIDs.ASHENVALE] = {{53.6, 54.2}},
|
||||
},
|
||||
},
|
||||
[212801] = { -- Jubei
|
||||
[npcKeys.spawns] = {
|
||||
[zoneIDs.ASHENVALE] = {{21.6, 36.4}},
|
||||
},
|
||||
},
|
||||
[212802] = { -- Moogul the Sly
|
||||
[npcKeys.spawns] = {
|
||||
[zoneIDs.ASHENVALE] = {{70.2, 62.8}},
|
||||
},
|
||||
},
|
||||
[212803] = { -- Ceredwyn
|
||||
[npcKeys.spawns] = {
|
||||
[zoneIDs.ASHENVALE] = {{73.4, 73.4}},
|
||||
},
|
||||
},
|
||||
[212804] = { -- Centrius
|
||||
[npcKeys.spawns] = {
|
||||
[zoneIDs.ASHENVALE] = {{28.6, 27.8}},
|
||||
},
|
||||
},
|
||||
[212809] = { -- Wailing Spirit
|
||||
[npcKeys.spawns] = {
|
||||
[zoneIDs.SILVERPINE_FOREST] = {{59.6, 71.4}},
|
||||
},
|
||||
},
|
||||
[212837] = { -- Primordial Anomaly
|
||||
[npcKeys.spawns] = {
|
||||
[zoneIDs.STONETALON_MOUNTAINS] = {{32.6, 67.6}},
|
||||
},
|
||||
},
|
||||
[212969] = { -- Kazragore
|
||||
[npcKeys.spawns] = {
|
||||
[zoneIDs.ASHENVALE] = {{39.4, 67.2}},
|
||||
},
|
||||
},
|
||||
[212970] = { -- Felore Moonray
|
||||
[npcKeys.spawns] = {
|
||||
[zoneIDs.ASHENVALE] = {{59.8, 72.4}},
|
||||
},
|
||||
},
|
||||
[213077] = { -- Elaine Compton
|
||||
[npcKeys.spawns] = {
|
||||
[zoneIDs.STORMWIND_CITY] = {{54.4, 61.2}},
|
||||
},
|
||||
[npcKeys.friendlyToFaction] = "A",
|
||||
},
|
||||
[214070] = { -- Jornah
|
||||
[npcKeys.spawns] = {
|
||||
[zoneIDs.ORGRIMMAR] = {{51.4, 63.8}},
|
||||
},
|
||||
[npcKeys.friendlyToFaction] = "H",
|
||||
},
|
||||
[214096] = { -- Dokimi
|
||||
[npcKeys.spawns] = {
|
||||
[zoneIDs.THUNDER_BLUFF] = {{39.2, 53.4}},
|
||||
},
|
||||
[npcKeys.friendlyToFaction] = "H",
|
||||
},
|
||||
[214098] = { -- Gishah
|
||||
[npcKeys.spawns] = {
|
||||
[zoneIDs.UNDERCITY] = {{64, 39.2}},
|
||||
},
|
||||
[npcKeys.friendlyToFaction] = "H",
|
||||
},
|
||||
[214099] = { -- Tamelyn Aldridge
|
||||
[npcKeys.spawns] = {
|
||||
[zoneIDs.IRONFORGE] = {{24.4, 67.6}},
|
||||
},
|
||||
[npcKeys.friendlyToFaction] = "A",
|
||||
},
|
||||
[214101] = { -- Marcy Baker
|
||||
[npcKeys.spawns] = {
|
||||
[zoneIDs.DARNASSUS] = {{59.8, 56.4}},
|
||||
},
|
||||
[npcKeys.friendlyToFaction] = "A",
|
||||
},
|
||||
[214456] = { -- Dro'zem the Blasphemous
|
||||
[npcKeys.spawns] = {
|
||||
[zoneIDs.REDRIDGE_MOUNTAINS] = {{35.4, 8.6},{64.2, 45.8},{77.4, 69.4}},
|
||||
},
|
||||
},
|
||||
[214519] = { -- Incinerator Gar'im
|
||||
[npcKeys.spawns] = {
|
||||
[zoneIDs.REDRIDGE_MOUNTAINS] = {{77.6, 85.8}},
|
||||
},
|
||||
},
|
||||
[215850] = { -- Raszel Ander
|
||||
[npcKeys.friendlyToFaction] = "AH",
|
||||
},
|
||||
[216289] = { -- Orokai
|
||||
[npcKeys.spawns] = {
|
||||
[zoneIDs.MOONGLADE] = {{41.2, 43.6}},
|
||||
},
|
||||
},
|
||||
[216902] = { -- Wulmort Jinglepocket
|
||||
[npcKeys.spawns] = {
|
||||
[zoneIDs.IRONFORGE] = {{33.7, 67.23}},
|
||||
},
|
||||
[npcKeys.friendlyToFaction] = "AH",
|
||||
},
|
||||
[216915] = { -- Strange Snowman
|
||||
[npcKeys.spawns] = {
|
||||
[zoneIDs.ALTERAC_MOUNTAINS]={{35.43, 72.45}},
|
||||
},
|
||||
},
|
||||
[216924] = { -- Kaymard Copperpinch
|
||||
[npcKeys.spawns] = {
|
||||
[zoneIDs.ORGRIMMAR] = {{53.3, 66.47}},
|
||||
},
|
||||
[npcKeys.friendlyToFaction] = "AH",
|
||||
},
|
||||
[217392] = {
|
||||
[npcKeys.spawns] = {
|
||||
[zoneIDs.DESOLACE]={{56.4, 21.8}},
|
||||
},
|
||||
},
|
||||
[217669] = { -- Scorched Screeching Roguefeather
|
||||
[npcKeys.spawns] = {
|
||||
[zoneIDs.THOUSAND_NEEDLES] = {{26.4, 46.4}},
|
||||
},
|
||||
},
|
||||
[217683] = {
|
||||
[npcKeys.zoneID] = zoneIDs.THOUSAND_NEEDLES,
|
||||
[npcKeys.spawns] = {
|
||||
[zoneIDs.THOUSAND_NEEDLES] = {{39.4,42}},
|
||||
},
|
||||
},
|
||||
[217703] = { -- Singed Highperch Consort
|
||||
[npcKeys.friendlyToFaction] = "H",
|
||||
[npcKeys.spawns] = {
|
||||
[zoneIDs.THOUSAND_NEEDLES] = {{10.4, 40.2}},
|
||||
},
|
||||
},
|
||||
[217706] = { -- Kazragore
|
||||
[npcKeys.friendlyToFaction] = "H",
|
||||
[npcKeys.spawns] = {
|
||||
[zoneIDs.ASHENVALE] = {{74.0, 60.6}},
|
||||
},
|
||||
},
|
||||
[217707] = { -- Felore Moonray
|
||||
[npcKeys.friendlyToFaction] = "A",
|
||||
},
|
||||
[217711] = { -- Seared Needles Cougar
|
||||
[npcKeys.spawns] = {
|
||||
[zoneIDs.THOUSAND_NEEDLES] = {{23.4, 23.4}},
|
||||
},
|
||||
},
|
||||
[217412] = { -- Amaryllis Webb
|
||||
[npcKeys.spawns] = {
|
||||
[zoneIDs.SWAMP_OF_SORROWS] = {{25.2, 54.6}},
|
||||
},
|
||||
},
|
||||
[217588] = { -- Arbor Tarantula
|
||||
[npcKeys.spawns] = {
|
||||
[zoneIDs.STRANGLETHORN_VALE] = {{45.2, 19.6}},
|
||||
},
|
||||
},
|
||||
[217589] = { -- Hay Weevil
|
||||
[npcKeys.spawns] = {
|
||||
[zoneIDs.ARATHI_HIGHLANDS] = {{30.8, 28.6},{54.2, 38.6},{61.2, 55.4}},
|
||||
},
|
||||
},
|
||||
[217590] = { -- Flesh Picker
|
||||
[npcKeys.spawns] = {
|
||||
[zoneIDs.DESOLACE] = {{51.4, 59.8}},
|
||||
},
|
||||
},
|
||||
[218115] = { -- Mai'zin
|
||||
[npcKeys.spawns] = {
|
||||
[zoneIDs.STRANGLETHORN_VALE] = {{31.2, 48.4}},
|
||||
},
|
||||
},
|
||||
[218160] = { -- Aeonas the Vindicated
|
||||
[npcKeys.spawns] = {
|
||||
[zoneIDs.STORMWIND_CITY] = {{37.4, 31.8}},
|
||||
},
|
||||
},
|
||||
[218237] = { -- Wirdal Wondergear
|
||||
[npcKeys.friendlyToFaction] = "AH",
|
||||
[npcKeys.zoneID] = zoneIDs.FERALAS,
|
||||
[npcKeys.spawns] = {
|
||||
[zoneIDs.FERALAS] = {{84.2,43.8}},
|
||||
},
|
||||
},
|
||||
[218931] = { -- Dark Rider Deadwind Pass
|
||||
[npcKeys.zoneID] = zoneIDs.DEADWIND_PASS,
|
||||
[npcKeys.spawns] = {
|
||||
[zoneIDs.DEADWIND_PASS] = {{43,29}},
|
||||
},
|
||||
},
|
||||
[221210] = { -- Kroll Mountainshade
|
||||
[npcKeys.spawns] = {
|
||||
[zoneIDs.DUSKWOOD] = {{66.11, 69.28}},
|
||||
},
|
||||
},
|
||||
[221215] = { -- Alara Grovemender
|
||||
[npcKeys.spawns] = {
|
||||
[zoneIDs.DUSKWOOD] = {{49.15, 77.55}},
|
||||
},
|
||||
},
|
||||
[221216] = { -- Elenora Marshwalker
|
||||
[npcKeys.spawns] = {
|
||||
[zoneIDs.DUSKWOOD] = {{32.39, 69.48}},
|
||||
},
|
||||
},
|
||||
[221268] = { -- Doran Dreambough
|
||||
[npcKeys.spawns] = {
|
||||
[zoneIDs.ASHENVALE] = {{87.23, 43.56}},
|
||||
},
|
||||
},
|
||||
[221269] = { -- Maseara Autumnmoon
|
||||
[npcKeys.spawns] = {
|
||||
[zoneIDs.ASHENVALE] = {{81.2, 50.5}},
|
||||
},
|
||||
},
|
||||
[221270] = { -- Alyssian Windcaller
|
||||
[npcKeys.spawns] = {
|
||||
[zoneIDs.ASHENVALE] = {{92, 54.0}},
|
||||
},
|
||||
},
|
||||
[221335] = { -- Elianar Shadowdrinker
|
||||
[npcKeys.spawns] = {
|
||||
[zoneIDs.THE_HINTERLANDS] = {{53.47, 39.05}},
|
||||
},
|
||||
},
|
||||
[221336] = { -- Serlina Starbright
|
||||
[npcKeys.spawns] = {
|
||||
[zoneIDs.THE_HINTERLANDS] = {{71.11, 47.98}},
|
||||
},
|
||||
},
|
||||
[221337] = { -- Veanna Cloudsleeper
|
||||
[npcKeys.spawns] = {
|
||||
[zoneIDs.THE_HINTERLANDS] = {{57.29, 42.80}},
|
||||
},
|
||||
},
|
||||
[221395] = { -- Mellias Earthtender
|
||||
[npcKeys.spawns] = {
|
||||
[zoneIDs.FERALAS] = {{49.65, 15.35}},
|
||||
},
|
||||
},
|
||||
[221398] = { -- Nerene Brooksinger
|
||||
[npcKeys.spawns] = {
|
||||
[zoneIDs.FERALAS] = {{46.00, 16.50}},
|
||||
},
|
||||
},
|
||||
[221399] = { -- Jamniss Treemender
|
||||
[npcKeys.spawns] = {
|
||||
[zoneIDs.FERALAS] = {{40.62, 8.08}},
|
||||
},
|
||||
},
|
||||
[221484] = { -- Scout Thandros
|
||||
[npcKeys.spawns] = {
|
||||
[zoneIDs.FERALAS] = {{51.06,10.54}},
|
||||
},
|
||||
},
|
||||
[222188] = { -- Shadowy Figure
|
||||
[npcKeys.spawns] = {
|
||||
[zoneIDs.MOONGLADE] = {{52.12,40.89}},
|
||||
},
|
||||
},
|
||||
|
||||
-- fake NPCs
|
||||
[900000] = {
|
||||
[npcKeys.name] = "Dark Rider",
|
||||
[npcKeys.minLevel] = 41,
|
||||
[npcKeys.maxLevel] = 41,
|
||||
[npcKeys.zoneID] = zoneIDs.DUSKWOOD,
|
||||
[npcKeys.spawns] = {
|
||||
[zoneIDs.DUSKWOOD] = {{23,47}},
|
||||
},
|
||||
},
|
||||
[900001] = {
|
||||
[npcKeys.name] = "Dark Rider",
|
||||
[npcKeys.minLevel] = 41,
|
||||
[npcKeys.maxLevel] = 41,
|
||||
[npcKeys.zoneID] = zoneIDs.ARATHI_HIGHLANDS,
|
||||
[npcKeys.spawns] = {
|
||||
[zoneIDs.ARATHI_HIGHLANDS] = {{60,40}},
|
||||
},
|
||||
},
|
||||
[900002] = {
|
||||
[npcKeys.name] = "Dark Rider",
|
||||
[npcKeys.minLevel] = 41,
|
||||
[npcKeys.maxLevel] = 41,
|
||||
[npcKeys.zoneID] = zoneIDs.SWAMP_OF_SORROWS,
|
||||
[npcKeys.spawns] = {
|
||||
[zoneIDs.SWAMP_OF_SORROWS] = {{69,28}},
|
||||
},
|
||||
},
|
||||
[900003] = {
|
||||
[npcKeys.name] = "Dark Rider",
|
||||
[npcKeys.minLevel] = 41,
|
||||
[npcKeys.maxLevel] = 41,
|
||||
[npcKeys.zoneID] = zoneIDs.THE_BARRENS,
|
||||
[npcKeys.spawns] = {
|
||||
[zoneIDs.THE_BARRENS] = {{52,36}},
|
||||
},
|
||||
},
|
||||
[900004] = {
|
||||
[npcKeys.name] = "Dark Rider",
|
||||
[npcKeys.minLevel] = 41,
|
||||
[npcKeys.maxLevel] = 41,
|
||||
[npcKeys.zoneID] = zoneIDs.DESOLACE,
|
||||
[npcKeys.spawns] = {
|
||||
[zoneIDs.DESOLACE] = {{65,25}},
|
||||
},
|
||||
},
|
||||
[900005] = {
|
||||
[npcKeys.name] = "Dark Rider",
|
||||
[npcKeys.minLevel] = 41,
|
||||
[npcKeys.maxLevel] = 41,
|
||||
[npcKeys.zoneID] = zoneIDs.BADLANDS,
|
||||
[npcKeys.spawns] = {
|
||||
[zoneIDs.BADLANDS] = {{58,54}},
|
||||
},
|
||||
},
|
||||
}
|
||||
end
|
||||
@@ -1,474 +0,0 @@
|
||||
---@type SeasonOfDiscovery
|
||||
local SeasonOfDiscovery = QuestieLoader:ImportModule("SeasonOfDiscovery")
|
||||
---@type QuestieDB
|
||||
local QuestieDB = QuestieLoader:ImportModule("QuestieDB")
|
||||
---@type ZoneDB
|
||||
local ZoneDB = QuestieLoader:ImportModule("ZoneDB")
|
||||
|
||||
function SeasonOfDiscovery:LoadObjects()
|
||||
local objectKeys = QuestieDB.objectKeys
|
||||
local zoneIDs = ZoneDB.zoneIDs
|
||||
|
||||
return {
|
||||
[386675] = { -- Buried Treasure
|
||||
[objectKeys.zoneID] = zoneIDs.DUN_MOROGH,
|
||||
[objectKeys.spawns] = {
|
||||
[zoneIDs.DUN_MOROGH] = {{46.96,43.73}},
|
||||
},
|
||||
},
|
||||
[386691] = { -- Library Book
|
||||
[objectKeys.spawns] = {
|
||||
[zoneIDs.IRONFORGE] = {{76, 10.4}},
|
||||
},
|
||||
},
|
||||
[386777] = { -- Dusty Chest Stormwind
|
||||
[objectKeys.spawns] = {
|
||||
[zoneIDs.STORMWIND_CITY] = {{61.9, 29.3}},
|
||||
},
|
||||
},
|
||||
[402215] = { -- Charred Note
|
||||
[objectKeys.zoneID] = zoneIDs.STORMWIND_CITY,
|
||||
[objectKeys.spawns] = {
|
||||
[zoneIDs.STORMWIND_CITY] = {{33,24.7}},
|
||||
},
|
||||
},
|
||||
[403041] = { -- Blasting Supplies
|
||||
[objectKeys.zoneID] = zoneIDs.MULGORE,
|
||||
[objectKeys.spawns] = {
|
||||
[zoneIDs.MULGORE] = {{63.8,44.1}},
|
||||
},
|
||||
},
|
||||
[403105] = { -- Windfury Cone
|
||||
[objectKeys.zoneID] = zoneIDs.MULGORE,
|
||||
[objectKeys.spawns] = {
|
||||
[zoneIDs.MULGORE] = {{31.2,22.8},{31,26.4},{32.4,27.6},{35,13.6},{38.2,9},{39.6,7},{51,7.2},{55.2,12},{55.8,16}},
|
||||
},
|
||||
},
|
||||
[403718] = { -- Prairie Flower
|
||||
[objectKeys.zoneID] = zoneIDs.MULGORE,
|
||||
[objectKeys.spawns] = {
|
||||
[zoneIDs.MULGORE] = {{37.81, 65.45},{38.17, 57.14},{39.85, 51.63},{41.39, 63.2},{45.01, 46.77},{50.97, 46.03},{51.77, 67.3},{53.29, 63.13},{54.31, 58.05},{58.41, 66.64},{58.85, 51.32}},
|
||||
},
|
||||
},
|
||||
[404352] = { -- Artifact Storage Mulgore
|
||||
[objectKeys.zoneID] = zoneIDs.MULGORE,
|
||||
[objectKeys.spawns] = {
|
||||
[zoneIDs.MULGORE] = {{31.6, 49.4}},
|
||||
},
|
||||
},
|
||||
[405201] = { -- Shipwreck Cache Tirisfal Glades
|
||||
[objectKeys.spawns] = {
|
||||
[zoneIDs.TIRISFAL_GLADES] = {{66.7, 24.6}},
|
||||
},
|
||||
},
|
||||
[405946] = { -- Dusty Chest
|
||||
[objectKeys.zoneID] = zoneIDs.IRONFORGE,
|
||||
[objectKeys.spawns] = {
|
||||
[zoneIDs.IRONFORGE] = {{52.0, 13.6}},
|
||||
},
|
||||
},
|
||||
[406736] = { -- Lost Stash
|
||||
[objectKeys.spawns] = {
|
||||
[zoneIDs.TIRISFAL_GLADES] = {{24.7, 59.4}},
|
||||
},
|
||||
},
|
||||
[407117] = { -- Abandoned Snapjaw Nest
|
||||
[objectKeys.zoneID] = zoneIDs.THE_BARRENS,
|
||||
[objectKeys.spawns] = {
|
||||
[zoneIDs.THE_BARRENS] = {{44,22}},
|
||||
},
|
||||
},
|
||||
[407120] = { -- Empty Snapjaw Nest
|
||||
[objectKeys.zoneID] = zoneIDs.THE_BARRENS,
|
||||
[objectKeys.spawns] = {
|
||||
[zoneIDs.THE_BARRENS] = {{48,40}},
|
||||
},
|
||||
},
|
||||
[407247] = { -- Glade Flower
|
||||
[objectKeys.zoneID] = zoneIDs.TELDRASSIL,
|
||||
[objectKeys.spawns] = {
|
||||
[zoneIDs.TELDRASSIL] = {{57.06, 65.57},{58.05, 73.19},{59.63, 60.05},{61.09, 54.02},{63.88, 64.90},{64.89, 54.77},{65.64, 59.22},{66.56, 51.55},{67.36, 64.15},{69.56, 55.75}},
|
||||
},
|
||||
},
|
||||
[407289] = { -- Horde Warbanner
|
||||
[objectKeys.zoneID] = zoneIDs.THE_BARRENS,
|
||||
[objectKeys.spawns] = {
|
||||
[zoneIDs.THE_BARRENS] = {{52.2,31.1}},
|
||||
},
|
||||
},
|
||||
[407291] = { -- Alliance Warbanner
|
||||
[objectKeys.zoneID] = zoneIDs.THE_BARRENS,
|
||||
[objectKeys.spawns] = {
|
||||
[zoneIDs.THE_BARRENS] = {{62.55,56.31}},
|
||||
},
|
||||
},
|
||||
[407453] = { -- Southsea Loot Stash
|
||||
[objectKeys.zoneID] = zoneIDs.THE_BARRENS,
|
||||
[objectKeys.spawns] = {
|
||||
[zoneIDs.THE_BARRENS] = {{61.81,45.84}},
|
||||
},
|
||||
},
|
||||
[407454] = { -- Gunpowder Keg
|
||||
[objectKeys.zoneID] = zoneIDs.THE_BARRENS,
|
||||
[objectKeys.spawns] = {
|
||||
[zoneIDs.THE_BARRENS] = {{61.78,45.8}},
|
||||
},
|
||||
},
|
||||
[407457] = { -- Stable Hand's Trunk
|
||||
[objectKeys.zoneID] = zoneIDs.THE_BARRENS,
|
||||
[objectKeys.spawns] = {
|
||||
[zoneIDs.THE_BARRENS] = {{61.3, 54.1}},
|
||||
},
|
||||
},
|
||||
[407505] = { -- Etched Carving
|
||||
[objectKeys.zoneID] = zoneIDs.THE_BARRENS,
|
||||
[objectKeys.spawns] = {
|
||||
[zoneIDs.THE_BARRENS] = {{45,79}},
|
||||
},
|
||||
},
|
||||
[407731] = { -- Stonemason's Toolbox
|
||||
[objectKeys.zoneID] = zoneIDs.LOCH_MODAN,
|
||||
[objectKeys.spawns] = {
|
||||
[zoneIDs.LOCH_MODAN] = {{46.5, 12.7}},
|
||||
},
|
||||
},
|
||||
[407734] = { -- Gnarlpine Cache
|
||||
[objectKeys.spawns] = {
|
||||
[zoneIDs.TELDRASSIL] = {{44.1, 61.2}},
|
||||
},
|
||||
},
|
||||
[407844] = { -- Libram of Blessings
|
||||
[objectKeys.spawns] = {
|
||||
[zoneIDs.LOCH_MODAN] = {{35.8, 49.5}},
|
||||
},
|
||||
},
|
||||
[407850] = { -- Sunken Reliquary
|
||||
[objectKeys.spawns] = {
|
||||
[zoneIDs.LOCH_MODAN] = {{36.8, 91.4}},
|
||||
},
|
||||
},
|
||||
[407918] = { -- Empty Trophy Display
|
||||
[objectKeys.spawns] = {
|
||||
[zoneIDs.LOCH_MODAN] = {{83.6, 65.5}},
|
||||
},
|
||||
},
|
||||
[408004] = { -- Tangled Blight Pile
|
||||
[objectKeys.spawns] = {
|
||||
[zoneIDs.LOCH_MODAN] = {{71.7, 21.4}},
|
||||
},
|
||||
},
|
||||
[408718] = { -- Equipment Stash
|
||||
[objectKeys.zoneID] = zoneIDs.WESTFALL,
|
||||
[objectKeys.spawns] = {
|
||||
[zoneIDs.WESTFALL] = {{40.8,80.24}},
|
||||
},
|
||||
},
|
||||
[408799] = { -- Idol of the Deep
|
||||
[objectKeys.zoneID] = zoneIDs.WESTFALL,
|
||||
[objectKeys.spawns] = {
|
||||
[zoneIDs.WESTFALL] = {{26,69.5}},
|
||||
},
|
||||
},
|
||||
[409289] = { -- Strange Orb
|
||||
[objectKeys.spawns] = {
|
||||
[zoneIDs.DARKSHORE] = {{56.2, 26.4},},
|
||||
},
|
||||
},
|
||||
[409311] = {
|
||||
[objectKeys.spawns] = {
|
||||
[zoneIDs.ASHENVALE] = {{89.4, 77.1}},
|
||||
},
|
||||
},
|
||||
[409562] = { -- Spellbook
|
||||
[objectKeys.spawns] = {
|
||||
[zoneIDs.WESTFALL] = {{45.4, 70.4}},
|
||||
},
|
||||
},
|
||||
[409692] = { -- Scrolls
|
||||
[objectKeys.zoneID] = zoneIDs.THE_BARRENS,
|
||||
[objectKeys.spawns] = {
|
||||
[zoneIDs.THE_BARRENS] = {{49.3,33.5}},
|
||||
},
|
||||
},
|
||||
[409731] = { -- Scrolls
|
||||
[objectKeys.spawns] = {
|
||||
[zoneIDs.LOCH_MODAN] = {{77.4, 14}},
|
||||
},
|
||||
},
|
||||
[409735] = { -- Spellbook
|
||||
[objectKeys.spawns] = {
|
||||
[zoneIDs.DUSKWOOD] = {{16.7, 28.4}},
|
||||
},
|
||||
},
|
||||
[409942] = { -- Twin Owl Statue
|
||||
[objectKeys.spawns] = {
|
||||
[zoneIDs.HILLSBRAD_FOOTHILLS] = {{36.9, 76.1}},
|
||||
},
|
||||
},
|
||||
[409949] = { -- Twin Owl Statue
|
||||
[objectKeys.spawns] = {
|
||||
[zoneIDs.HILLSBRAD_FOOTHILLS] = {{54.0, 83.0}},
|
||||
},
|
||||
},
|
||||
[410020] = { -- Owl Statue
|
||||
[objectKeys.spawns] = {
|
||||
[zoneIDs.ASHENVALE] = {{87.0, 43.2}},
|
||||
},
|
||||
},
|
||||
[410089] = { -- Owl Statue
|
||||
[objectKeys.spawns] = {
|
||||
[zoneIDs.DUSKWOOD] = {{49.5, 33.8}},
|
||||
},
|
||||
},
|
||||
[410847] = { -- Rusty Safe Western Plaguelands
|
||||
[objectKeys.zoneID] = zoneIDs.WESTERN_PLAGUELANDS,
|
||||
[objectKeys.spawns] = {
|
||||
[zoneIDs.WESTERN_PLAGUELANDS] = {{59.5, 84.5}},
|
||||
},
|
||||
},
|
||||
[411328] = { -- Slumbering Bones
|
||||
[objectKeys.zoneID] = zoneIDs.DUSKWOOD,
|
||||
[objectKeys.spawns] = {
|
||||
[zoneIDs.DUSKWOOD] = {{17,37.6}},
|
||||
},
|
||||
},
|
||||
[411674] = { -- Prophecy of a King's Demise
|
||||
[objectKeys.spawns] = {
|
||||
[130] = {{65.8, 23.4}},
|
||||
},
|
||||
},
|
||||
[412147] = { -- Supply Locker
|
||||
[objectKeys.zoneID] = zoneIDs.TIRISFAL_GLADES,
|
||||
[objectKeys.spawns] = {
|
||||
[zoneIDs.TIRISFAL_GLADES] = {{81.18,32.12}},
|
||||
},
|
||||
},
|
||||
[414658] = { -- Rubble
|
||||
[objectKeys.zoneID] = zoneIDs.HILLSBRAD_FOOTHILLS,
|
||||
[objectKeys.spawns] = {
|
||||
[zoneIDs.HILLSBRAD_FOOTHILLS] = {{79.7, 40.9}},
|
||||
},
|
||||
},
|
||||
[415107] = {
|
||||
[objectKeys.spawns] = {
|
||||
[zoneIDs.WESTFALL] = {{37.4, 50.7}},
|
||||
},
|
||||
},
|
||||
[419741] = { -- Sacrificial Altar
|
||||
[objectKeys.zoneID] = zoneIDs.DESOLACE,
|
||||
[objectKeys.spawns] = {
|
||||
[zoneIDs.DESOLACE] = {{81.4,79.8}},
|
||||
},
|
||||
},
|
||||
[420055] = { -- Rowboat
|
||||
[objectKeys.zoneID] = zoneIDs.ARATHI_HIGHLANDS,
|
||||
[objectKeys.spawns] = {
|
||||
[zoneIDs.ARATHI_HIGHLANDS] = {{53.7,91.9}},
|
||||
[zoneIDs.WETLANDS] = {{58.31,6.94}},
|
||||
},
|
||||
},
|
||||
[422895] = {
|
||||
[objectKeys.zoneID] = zoneIDs.DESOLACE,
|
||||
[objectKeys.spawns] = {
|
||||
[zoneIDs.DESOLACE] = {{39,57}},
|
||||
},
|
||||
},
|
||||
[423898] = { -- Mysterious Book
|
||||
[objectKeys.zoneID] = zoneIDs.DESOLACE,
|
||||
[objectKeys.spawns] = {
|
||||
[zoneIDs.DESOLACE] = {{55,26.2}},
|
||||
},
|
||||
},
|
||||
[424074] = { -- Quadrangulation Beacon 001
|
||||
[objectKeys.zoneID] = zoneIDs.DUSTWALLOW_MARSH,
|
||||
[objectKeys.spawns] = {
|
||||
[zoneIDs.DUSTWALLOW_MARSH] = {{58.6, 13.0}},
|
||||
},
|
||||
},
|
||||
[424075] = { -- Quadrangulation Beacon 002
|
||||
[objectKeys.zoneID] = zoneIDs.DESOLACE,
|
||||
[objectKeys.spawns] = {
|
||||
[zoneIDs.DESOLACE] = {{32.0, 72.7}},
|
||||
},
|
||||
},
|
||||
[424076] = { -- Quadrangulation Beacon 003
|
||||
[objectKeys.zoneID] = zoneIDs.TANARIS,
|
||||
[objectKeys.spawns] = {
|
||||
[zoneIDs.TANARIS] = {{37.8, 27.3}},
|
||||
},
|
||||
},
|
||||
[424077] = { -- Quadrangulation Beacon 004
|
||||
[objectKeys.zoneID] = zoneIDs.FERALAS,
|
||||
[objectKeys.spawns] = {
|
||||
[zoneIDs.FERALAS] = {{29.3, 93.8}},
|
||||
},
|
||||
},
|
||||
[424082] = {
|
||||
[objectKeys.spawns] = {},
|
||||
},
|
||||
[424264] = { -- Grave
|
||||
[objectKeys.spawns] = {
|
||||
[zoneIDs.DUSTWALLOW_MARSH] = {{63.7, 42.4}},
|
||||
},
|
||||
},
|
||||
[424265] = { -- Grave
|
||||
[objectKeys.zoneID] = zoneIDs.SWAMP_OF_SORROWS,
|
||||
[objectKeys.spawns] = {
|
||||
[zoneIDs.SWAMP_OF_SORROWS] = {{16.8,53.8}},
|
||||
},
|
||||
},
|
||||
[424266] = { -- Grave
|
||||
[objectKeys.zoneID] = zoneIDs.SCARLET_MONASTERY,
|
||||
[objectKeys.spawns] = {
|
||||
[zoneIDs.SCARLET_MONASTERY] = {{-1,-1}},
|
||||
},
|
||||
},
|
||||
[424267] = { -- Grave
|
||||
[objectKeys.zoneID] = zoneIDs.ARATHI_HIGHLANDS,
|
||||
[objectKeys.spawns] = {
|
||||
[zoneIDs.ARATHI_HIGHLANDS] = {{62,54}},
|
||||
},
|
||||
},
|
||||
[441848] = { -- Small Burrow
|
||||
[objectKeys.zoneID] = zoneIDs.STRANGLETHORN_VALE,
|
||||
[objectKeys.spawns] = {
|
||||
[zoneIDs.STRANGLETHORN_VALE] = {{40.75,85.72}},
|
||||
},
|
||||
},
|
||||
|
||||
-- fake ID - no clue yet what the correct ones are
|
||||
[450000] = {
|
||||
[objectKeys.name] = "Arcane Shard",
|
||||
[objectKeys.zoneID] = zoneIDs.ASHENVALE,
|
||||
[objectKeys.spawns] = {
|
||||
[zoneIDs.ASHENVALE] = {{13.1,24.8},{13,15},{14,19}},
|
||||
},
|
||||
},
|
||||
[450001] = {
|
||||
[objectKeys.name] = "The Lessons of Ta'zo",
|
||||
[objectKeys.zoneID] = zoneIDs.ORGRIMMAR,
|
||||
[objectKeys.spawns] = {
|
||||
[zoneIDs.ORGRIMMAR] = {{38.7,78.4}},
|
||||
},
|
||||
},
|
||||
[450002] = {
|
||||
[objectKeys.name] = "Medusa Statue",
|
||||
[objectKeys.zoneID] = zoneIDs.WESTFALL,
|
||||
[objectKeys.spawns] = {
|
||||
[zoneIDs.WESTFALL] = {{26,70}},
|
||||
},
|
||||
},
|
||||
[450003] = {
|
||||
[objectKeys.name] = "Thistlefur Dreamcatcher",
|
||||
[objectKeys.zoneID] = zoneIDs.ASHENVALE,
|
||||
[objectKeys.spawns] = {
|
||||
[zoneIDs.ASHENVALE] = {{38,26}},
|
||||
},
|
||||
},
|
||||
[450004] = {
|
||||
[objectKeys.name] = "Wishing Well",
|
||||
[objectKeys.zoneID] = zoneIDs.LOCH_MODAN,
|
||||
[objectKeys.spawns] = {
|
||||
[zoneIDs.ASHENVALE] = {{36.4,19.6}},
|
||||
},
|
||||
},
|
||||
[450005] = {
|
||||
[objectKeys.name] = "Buried Treasure",
|
||||
[objectKeys.zoneID] = zoneIDs.ELWYNN_FOREST,
|
||||
[objectKeys.spawns] = {
|
||||
[zoneIDs.ELWYNN_FOREST] = {{80.3, 79.1}},
|
||||
},
|
||||
},
|
||||
[450006] = {
|
||||
[objectKeys.name] = "Buried Treasure",
|
||||
[objectKeys.zoneID] = zoneIDs.DUROTAR,
|
||||
[objectKeys.spawns] = {
|
||||
[zoneIDs.DUROTAR] = {{62.1, 94.8}},
|
||||
},
|
||||
},
|
||||
[450007] = {
|
||||
[objectKeys.name] = "Buried Treasure",
|
||||
[objectKeys.zoneID] = zoneIDs.TIRISFAL_GLADES,
|
||||
[objectKeys.spawns] = {
|
||||
[zoneIDs.TIRISFAL_GLADES] = {{52.9, 54}},
|
||||
},
|
||||
},
|
||||
[450008] = {
|
||||
[objectKeys.name] = "Buried Treasure",
|
||||
[objectKeys.zoneID] = zoneIDs.TELDRASSIL,
|
||||
[objectKeys.spawns] = {
|
||||
[zoneIDs.TELDRASSIL] = {{55.3, 90.8}},
|
||||
},
|
||||
},
|
||||
[450009] = {
|
||||
[objectKeys.name] = "Secluded Grave",
|
||||
[objectKeys.zoneID] = zoneIDs.DUSKWOOD,
|
||||
[objectKeys.spawns] = {
|
||||
[zoneIDs.DUSKWOOD] = {{90.9,30.5}},
|
||||
},
|
||||
},
|
||||
[450010] = {
|
||||
[objectKeys.name] = "Raven Hill Statue",
|
||||
[objectKeys.zoneID] = zoneIDs.DUSKWOOD,
|
||||
[objectKeys.spawns] = {
|
||||
[zoneIDs.DUSKWOOD] = {{19.9,45.5}},
|
||||
},
|
||||
},
|
||||
[450011] = {
|
||||
[objectKeys.name] = "Galvanic Icon",
|
||||
[objectKeys.zoneID] = zoneIDs.DUROTAR,
|
||||
[objectKeys.spawns] = {
|
||||
[zoneIDs.DUROTAR] = {{38.01, 35.53},{53.36, 50.48},{51.78, 56.39},{36.95, 45.53},{56.53, 28.37},{39.43, 50.06}},
|
||||
},
|
||||
},
|
||||
[450012] = {
|
||||
[objectKeys.name] = "Galvanic Icon",
|
||||
[objectKeys.zoneID] = zoneIDs.MULGORE,
|
||||
[objectKeys.spawns] = {
|
||||
[zoneIDs.MULGORE] = {{54.07, 55.82},{36.3, 9.8},{37.5, 52.5},{41.65, 55.98},{37.99, 60.04}},
|
||||
},
|
||||
},
|
||||
[450013] = {
|
||||
[objectKeys.name] = "Beastly Effigy",
|
||||
[objectKeys.zoneID] = zoneIDs.THOUSAND_NEEDLES,
|
||||
[objectKeys.spawns] = {
|
||||
[zoneIDs.THOUSAND_NEEDLES] = {{69.0, 55.0}},
|
||||
},
|
||||
},
|
||||
[450014] = {
|
||||
[objectKeys.name] = "Witherbark Gong",
|
||||
[objectKeys.zoneID] = zoneIDs.ARATHI_HIGHLANDS,
|
||||
[objectKeys.spawns] = {
|
||||
[zoneIDs.ARATHI_HIGHLANDS] = {{69.33, 81.50}},
|
||||
},
|
||||
},
|
||||
[450015] = {
|
||||
[objectKeys.name] = "Satyrweed Bulb Location",
|
||||
[objectKeys.zoneID] = zoneIDs.DESOLACE,
|
||||
[objectKeys.spawns] = {
|
||||
[zoneIDs.DESOLACE] = {{70.0, 70.0}},
|
||||
},
|
||||
},
|
||||
[450016] = {
|
||||
[objectKeys.name] = "Strahnbrad Bellows",
|
||||
[objectKeys.zoneID] = zoneIDs.ALTERAC_MOUNTAINS,
|
||||
[objectKeys.spawns] = {
|
||||
[zoneIDs.ALTERAC_MOUNTAINS] = {{60.0, 46.4}},
|
||||
},
|
||||
},
|
||||
[450017] = {
|
||||
[objectKeys.name] = "Crate",
|
||||
[objectKeys.zoneID] = zoneIDs.MOONGLADE,
|
||||
[objectKeys.spawns] = {
|
||||
[zoneIDs.MOONGLADE] = {{55.6,66.5}},
|
||||
},
|
||||
},
|
||||
[450018] = {
|
||||
[objectKeys.name] = "Soft Soil",
|
||||
[objectKeys.zoneID] = zoneIDs.ARATHI_HIGHLANDS,
|
||||
[objectKeys.spawns] = {
|
||||
[zoneIDs.ARATHI_HIGHLANDS] = {{34,44}},
|
||||
},
|
||||
},
|
||||
}
|
||||
end
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,4 +1,4 @@
|
||||
---@class QuestieTBCQuestFixes
|
||||
---@class QuestieTBCQuestFixes
|
||||
local QuestieTBCQuestFixes = QuestieLoader:CreateModule("QuestieTBCQuestFixes")
|
||||
local _QuestieTBCQuestFixes = {}
|
||||
|
||||
@@ -5295,6 +5295,7 @@ function QuestieTBCQuestFixes:Load()
|
||||
end
|
||||
|
||||
function _QuestieTBCQuestFixes:InsertMissingQuestIds()
|
||||
if not QuestieDB.questData then return end
|
||||
QuestieDB.questData[12192] = {} -- This One Time, When I Was Drunk... (Horde)
|
||||
QuestieDB.questData[12420] = {} -- Brew of the Month Club (Alliance)
|
||||
QuestieDB.questData[12421] = {} -- Brew of the Month Club (Horde)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
---@class QuestieWotlkItemFixes
|
||||
---@class QuestieWotlkItemFixes
|
||||
local QuestieWotlkItemFixes = QuestieLoader:CreateModule("QuestieWotlkItemFixes")
|
||||
local _QuestieWotlkItemFixes = {}
|
||||
|
||||
@@ -734,6 +734,7 @@ function QuestieWotlkItemFixes:Load()
|
||||
end
|
||||
|
||||
function _QuestieWotlkItemFixes:InsertMissingItemIds()
|
||||
if not QuestieDB.itemData then return end
|
||||
-- Boost quest items
|
||||
QuestieDB.itemData[199335] = {} -- Teleport Scroll: Menethil Harbor
|
||||
QuestieDB.itemData[199336] = {} -- Teleport Scroll: Stormwind Harbor
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
---@class QuestieWotlkQuestFixes
|
||||
---@class QuestieWotlkQuestFixes
|
||||
local QuestieWotlkQuestFixes = QuestieLoader:CreateModule("QuestieWotlkQuestFixes")
|
||||
local _QuestieWotlkQuestFixes = {}
|
||||
|
||||
@@ -7049,6 +7049,7 @@ function QuestieWotlkQuestFixes:Load()
|
||||
end
|
||||
|
||||
function _QuestieWotlkQuestFixes:InsertMissingQuestIds()
|
||||
if not QuestieDB.questData then return end
|
||||
|
||||
-- Alliance boosted quests
|
||||
QuestieDB.questData[70395] = {} -- A New Beginning
|
||||
|
||||
+34
-6
@@ -1166,8 +1166,30 @@ function QuestieDB.GetQuest(questId) -- /dump QuestieDB.GetQuest(867)
|
||||
if questId == 0 then
|
||||
Questie:Error("[QuestieDB.GetQuest] rawdata is nil for questID:", questId)
|
||||
print(debugstack())
|
||||
return nil
|
||||
end
|
||||
return nil
|
||||
-- Build a minimal live-fallback quest from the quest log so the tracker still works
|
||||
local logEntry = QuestLogCache.GetQuest(questId)
|
||||
if not logEntry then return nil end
|
||||
local fallback = {
|
||||
Id = questId,
|
||||
name = logEntry.title or tostring(questId),
|
||||
level = logEntry.level or 0,
|
||||
questLevel = logEntry.level or 0,
|
||||
requiredLevel = 0,
|
||||
zoneOrSort = 0,
|
||||
questFlags = 0,
|
||||
specialFlags = 0,
|
||||
Starts = { CreatureStarts = {}, ObjectStarts = {}, ItemStarts = {} },
|
||||
Finisher = { Type = "monster", Id = 0, Name = "" },
|
||||
Objectives = {},
|
||||
ObjectiveData = {},
|
||||
ExtraObjectives= {},
|
||||
_isLogFallback = true,
|
||||
isComplete = (logEntry.isComplete == 1),
|
||||
}
|
||||
_QuestieDB.questCache[questId] = fallback
|
||||
return fallback
|
||||
end
|
||||
|
||||
---@class Quest
|
||||
@@ -1435,10 +1457,14 @@ function QuestieDB.GetQuest(questId) -- /dump QuestieDB.GetQuest(867)
|
||||
local spawnList = {}
|
||||
|
||||
for _, ref in pairs(o[5]) do
|
||||
for k, v in pairs(_QuestieQuest.objectiveSpawnListCallTable[ref[1]](ref[2], specialObjective)) do
|
||||
-- we want to be able to override the icon in the corrections (e.g. Questie.ICON_TYPE_OBJECT on objects instead of Questie.ICON_TYPE_LOOT)
|
||||
v.Icon = o[2]
|
||||
spawnList[k] = v
|
||||
local callFn = _QuestieQuest.objectiveSpawnListCallTable[ref[1]]
|
||||
local spawnResult = callFn and callFn(ref[2], specialObjective)
|
||||
if spawnResult then
|
||||
for k, v in pairs(spawnResult) do
|
||||
-- we want to be able to override the icon in the corrections (e.g. Questie.ICON_TYPE_OBJECT on objects instead of Questie.ICON_TYPE_LOOT)
|
||||
v.Icon = o[2]
|
||||
spawnList[k] = v
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -1712,7 +1738,9 @@ function _QuestieDB:DeleteGatheringNodes()
|
||||
local objectSpawnsKey = QuestieDB.objectKeys.spawns
|
||||
for i=1, #prune do
|
||||
local id = prune[i]
|
||||
QuestieDB.objectData[id][objectSpawnsKey] = nil
|
||||
if QuestieDB.objectData[id] then
|
||||
QuestieDB.objectData[id][objectSpawnsKey] = nil
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large
Load Diff
+37
-18
@@ -345,13 +345,23 @@ readers["extraobjectives"] = function(stream)
|
||||
if count > 0 then
|
||||
local ret = {}
|
||||
for i=1,count do
|
||||
ret[i] = {
|
||||
local entry = {
|
||||
readers["spawnlist"](stream),
|
||||
stream:ReadInt24(),
|
||||
stream:ReadShortString(),
|
||||
stream:ReadInt24(),
|
||||
readers["reflist"](stream)
|
||||
}
|
||||
local condCount = stream:ReadByte()
|
||||
if condCount > 0 then
|
||||
local conds = {}
|
||||
for _=1,condCount do
|
||||
local k = stream:ReadShortString()
|
||||
conds[k] = stream:ReadInt24()
|
||||
end
|
||||
entry[6] = conds
|
||||
end
|
||||
ret[i] = entry
|
||||
end
|
||||
return ret
|
||||
end
|
||||
@@ -663,6 +673,18 @@ QuestieDBCompiler.writers = {
|
||||
stream:WriteShortString(data[3]) -- description
|
||||
stream:WriteInt24(data[4] or 0) -- objective index (or 0)
|
||||
QuestieDBCompiler.writers["reflist"](stream, data[5] or {})
|
||||
local conds = data[6]
|
||||
if type(conds) == "table" then
|
||||
local n = 0
|
||||
for _ in pairs(conds) do n = n + 1 end
|
||||
stream:WriteByte(n)
|
||||
for k, v in pairs(conds) do
|
||||
stream:WriteShortString(k)
|
||||
stream:WriteInt24(v)
|
||||
end
|
||||
else
|
||||
stream:WriteByte(0)
|
||||
end
|
||||
end
|
||||
else
|
||||
stream:WriteByte(0)
|
||||
@@ -792,6 +814,11 @@ skippers["extraobjectives"] = function(stream)
|
||||
stream._pointer = stream:ReadShort() + stream._pointer
|
||||
stream._pointer = stream._pointer + 3
|
||||
reflistSkipper(stream)
|
||||
local condCount = stream:ReadByte()
|
||||
for _=1,condCount do
|
||||
stream._pointer = stream:ReadShort() + stream._pointer -- skip ShortString key
|
||||
stream._pointer = stream._pointer + 3 -- skip Int24 value
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -1029,6 +1056,14 @@ function QuestieDBCompiler:Compile()
|
||||
return
|
||||
end
|
||||
|
||||
local hasData = type(QuestieDB.questData) == "string"
|
||||
or type(QuestieDB.questData) == "table"
|
||||
or (type(QuestieDB.questDataOverrides) == "table" and next(QuestieDB.questDataOverrides) ~= nil)
|
||||
if not hasData then
|
||||
Questie:Print("|cFFFF4444[Questie-X]|r No database plugin loaded. Install a DB plugin for your server — see Options \226\134\146 Database.")
|
||||
return
|
||||
end
|
||||
|
||||
QuestieDBCompiler._isCompiling = true -- some unknown addon that is popular in china causes player_logged_in event to fire many times which triggers db compile multiple times
|
||||
|
||||
QuestieDBCompiler.startTime = GetTime()
|
||||
@@ -1087,10 +1122,6 @@ function QuestieDBCompiler:ValidateNPCs()
|
||||
elseif type(a) == "table" then
|
||||
if not equals(a, (b or {})) then
|
||||
Questie:Warning("Nonmatching table at " .. key .. " " .. id .. " for ID: ".. npcId)
|
||||
DevTools_Dump({
|
||||
["Compiled Table:"] = a,
|
||||
["Base Table:"] = b
|
||||
})
|
||||
return
|
||||
end
|
||||
end
|
||||
@@ -1135,10 +1166,6 @@ function QuestieDBCompiler:ValidateObjects()
|
||||
elseif type(a) == "table" then
|
||||
if not equals(a, (b or {})) then
|
||||
Questie:Warning("Nonmatching table at " .. key .. " " .. id .. " for ID: ".. objectId)
|
||||
DevTools_Dump({
|
||||
["Compiled Table:"] = a,
|
||||
["Base Table:"] = b
|
||||
})
|
||||
return
|
||||
end
|
||||
end
|
||||
@@ -1252,10 +1279,6 @@ function QuestieDBCompiler:ValidateItems()
|
||||
elseif type(a) == "table" then
|
||||
if not equals(a, (b or {})) then
|
||||
Questie:Warning("Nonmatching table at " .. key .. " " .. id .. " for ID: ".. itemId)
|
||||
DevTools_Dump({
|
||||
["Compiled Table:"] = a,
|
||||
["Base Table:"] = b
|
||||
})
|
||||
return
|
||||
end
|
||||
end
|
||||
@@ -1291,7 +1314,7 @@ function QuestieDBCompiler:ValidateQuests()
|
||||
local function getTbcLevel(questLevel, requiredLevel, playerLevel)
|
||||
if (questLevel == -1) then
|
||||
local level = playerLevel
|
||||
if (requiredLevel > level) then
|
||||
if (requiredLevel and requiredLevel > level) then
|
||||
questLevel = requiredLevel;
|
||||
else
|
||||
questLevel = level;
|
||||
@@ -1349,10 +1372,6 @@ function QuestieDBCompiler:ValidateQuests()
|
||||
|
||||
if not equals(a, (b or {})) then
|
||||
Questie:Warning("Nonmatching table at " .. key .. " " .. id .. " for ID: ".. questId)
|
||||
DevTools_Dump({
|
||||
["Compiled Table:"] = a,
|
||||
["Base Table:"] = b
|
||||
})
|
||||
return
|
||||
end
|
||||
end
|
||||
|
||||
@@ -122,3 +122,5 @@ QuestieDB._itemAdapterQueryOrder = {}
|
||||
for key, id in pairs(QuestieDB.itemKeys) do
|
||||
QuestieDB._itemAdapterQueryOrder[id] = key
|
||||
end
|
||||
|
||||
-- itemData is nil until a DB plugin sets it
|
||||
|
||||
@@ -95,3 +95,5 @@ QuestieDB._npcAdapterQueryOrder = {}
|
||||
for key, id in pairs(QuestieDB.npcKeys) do
|
||||
QuestieDB._npcAdapterQueryOrder[id] = key
|
||||
end
|
||||
|
||||
-- npcData is nil until a DB plugin sets it
|
||||
|
||||
@@ -38,3 +38,5 @@ QuestieDB._objectAdapterQueryOrder = {}
|
||||
for key, id in pairs(QuestieDB.objectKeys) do
|
||||
QuestieDB._objectAdapterQueryOrder[id] = key
|
||||
end
|
||||
|
||||
-- objectData is nil until a DB plugin sets it
|
||||
|
||||
@@ -126,3 +126,6 @@ QuestieDB._questAdapterQueryOrder = {}
|
||||
for key, id in pairs(QuestieDB.questKeys) do
|
||||
QuestieDB._questAdapterQueryOrder[id] = key
|
||||
end
|
||||
|
||||
-- questData is nil until a DB plugin sets it (e.g. Questie-X-WotLKDB)
|
||||
-- LoadDatabase checks truthiness before calling loadstring; {} would be truthy and crash it
|
||||
|
||||
@@ -253,6 +253,7 @@ end
|
||||
---@param level number @The quest level
|
||||
---@param blizzLike boolean @True = [40+], false/nil = [40D/R]
|
||||
function QuestieLib:GetQuestString(questId, name, level, blizzLike)
|
||||
if not name then return tostring(questId) end
|
||||
local questType, questTag = QuestieDB.GetQuestTagInfo(questId)
|
||||
|
||||
if questType and questTag then
|
||||
|
||||
@@ -106,10 +106,10 @@ end
|
||||
|
||||
-- The only public class except for Questie
|
||||
---@class QuestieLoader
|
||||
QuestieLoader = {}
|
||||
QuestieLoader = QuestieLoader or {}
|
||||
|
||||
|
||||
local modules = {}
|
||||
local modules = (QuestieLoader._modules) or {}
|
||||
|
||||
QuestieLoader._modules = modules -- store reference so modules can be iterated for profiling
|
||||
|
||||
|
||||
@@ -2,6 +2,20 @@
|
||||
local QuestiePluginAPI = QuestieLoader:CreateModule("QuestiePluginAPI")
|
||||
|
||||
QuestiePluginAPI.registeredPlugins = {}
|
||||
QuestiePluginAPI.loadedDBFlavor = nil -- set by the first DB plugin that calls FinishLoading
|
||||
|
||||
--- Returns true if at least one DB plugin has fully loaded.
|
||||
---@return boolean
|
||||
function QuestiePluginAPI:IsAnyPluginLoaded()
|
||||
for _ in pairs(self.registeredPlugins) do return true end
|
||||
return false
|
||||
end
|
||||
|
||||
--- Returns the flavor key of the loaded DB plugin ("WotLK", "Classic", "TBC", "Turtle", "Ascension", etc.)
|
||||
---@return string|nil
|
||||
function QuestiePluginAPI:GetLoadedFlavor()
|
||||
return self.loadedDBFlavor
|
||||
end
|
||||
|
||||
---@class QuestiePlugin
|
||||
local QuestiePlugin = {}
|
||||
@@ -181,7 +195,8 @@ function QuestiePlugin:InjectUiMapData(customUiMapData)
|
||||
end
|
||||
|
||||
--- Signals that the plugin has finished loading. This automatically cleans up necessary caches.
|
||||
function QuestiePlugin:FinishLoading()
|
||||
---@param flavorKey string|nil Optional flavor label e.g. "WotLK", "Classic", "Turtle"
|
||||
function QuestiePlugin:FinishLoading(flavorKey)
|
||||
local QuestieDB = QuestieLoader:ImportModule("QuestieDB")
|
||||
if not QuestieDB then
|
||||
Questie:Debug(Questie.DEBUG_CRITICAL, "[QuestiePluginAPI] Plugin '" .. self.name .. "' FinishLoading failed: QuestieDB module not found.")
|
||||
@@ -195,5 +210,40 @@ function QuestiePlugin:FinishLoading()
|
||||
if QuestieDB.autoBlacklist then
|
||||
QuestieDB.autoBlacklist = {}
|
||||
end
|
||||
|
||||
if flavorKey then
|
||||
QuestiePluginAPI.loadedDBFlavor = flavorKey
|
||||
elseif not QuestiePluginAPI.loadedDBFlavor then
|
||||
QuestiePluginAPI.loadedDBFlavor = self.name
|
||||
end
|
||||
|
||||
Questie:Debug(Questie.DEBUG_INFO, "[QuestiePluginAPI] Plugin '" .. self.name .. "' finished loading successfully.")
|
||||
end
|
||||
|
||||
--- Injects XP-per-level data used by QuestieXP. The table must be keyed by level number.
|
||||
---@param xpTable table { [level] = xp_required, ... }
|
||||
function QuestiePlugin:InjectXpData(xpTable)
|
||||
if type(xpTable) ~= "table" then return end
|
||||
local QuestXP = QuestieLoader:ImportModule("QuestieXP")
|
||||
if not QuestXP then
|
||||
Questie:Debug(Questie.DEBUG_DEVELOP, "[QuestiePluginAPI] Plugin '" .. self.name .. "': InjectXpData — QuestieXP module not loaded, skipping.")
|
||||
return
|
||||
end
|
||||
QuestXP.db = xpTable
|
||||
Questie:Debug(Questie.DEBUG_DEVELOP, "[QuestiePluginAPI] Plugin '" .. self.name .. "' injected XP data (" .. tostring(#xpTable) .. " levels).")
|
||||
end
|
||||
|
||||
--- Applies expansion-specific correction tables that are stored in QuestieDB
|
||||
--- correction globals (set by correction files loaded by the plugin TOC).
|
||||
--- Call this AFTER InjectDatabase calls and BEFORE FinishLoading.
|
||||
function QuestiePlugin:InjectCorrections()
|
||||
local QuestieCorrections = QuestieLoader:ImportModule("QuestieCorrections")
|
||||
if not QuestieCorrections then
|
||||
Questie:Debug(Questie.DEBUG_DEVELOP, "[QuestiePluginAPI] Plugin '" .. self.name .. "': InjectCorrections — QuestieCorrections module not loaded, skipping.")
|
||||
return
|
||||
end
|
||||
if QuestieCorrections.ApplyAll then
|
||||
QuestieCorrections:ApplyAll()
|
||||
end
|
||||
Questie:Debug(Questie.DEBUG_DEVELOP, "[QuestiePluginAPI] Plugin '" .. self.name .. "' applied corrections.")
|
||||
end
|
||||
|
||||
@@ -978,6 +978,11 @@ function QuestieQuest:UpdateObjectiveNotes(quest)
|
||||
return
|
||||
end
|
||||
|
||||
-- Fallback quests have no static DB data; their objectives are managed in PopulateQuestLogInfo
|
||||
if quest._isLogFallback then
|
||||
return
|
||||
end
|
||||
|
||||
Questie:Debug(Questie.DEBUG_INFO, "[QuestieQuest] UpdateObjectiveNotes:", quest.Id)
|
||||
for objectiveIndex, objective in pairs(quest.Objectives) do
|
||||
local result, err = xpcall(QuestieQuest.PopulateObjective, ERR_FUNCTION, QuestieQuest, quest, objectiveIndex,
|
||||
@@ -988,7 +993,7 @@ function QuestieQuest:UpdateObjectiveNotes(quest)
|
||||
end
|
||||
end
|
||||
|
||||
if next(quest.SpecialObjectives) then
|
||||
if quest.SpecialObjectives and next(quest.SpecialObjectives) then
|
||||
for _, objective in pairs(quest.SpecialObjectives) do
|
||||
local result, err = xpcall(QuestieQuest.PopulateObjective, ERR_FUNCTION, QuestieQuest, quest, 0, objective,
|
||||
true)
|
||||
@@ -1639,7 +1644,27 @@ function QuestieQuest:PopulateQuestLogInfo(quest)
|
||||
-- Live fallback quests (no static DB entry) manage their own Objectives.
|
||||
-- Their per-objective Update() functions read directly from QuestLogCache.
|
||||
if quest._isLogFallback then
|
||||
-- Seed objectives from QuestLogCache on first call
|
||||
if not next(quest.Objectives) then
|
||||
local cachedObjectives = QuestLogCache.GetQuestObjectives(quest.Id)
|
||||
if cachedObjectives then
|
||||
for index, obj in pairs(cachedObjectives) do
|
||||
quest.Objectives[index] = {
|
||||
questId = quest.Id,
|
||||
Index = index,
|
||||
Description = obj.text or "",
|
||||
Type = obj.type or "monster",
|
||||
Collected = obj.numFulfilled or 0,
|
||||
Needed = obj.numRequired or 0,
|
||||
Completed = obj.finished or false,
|
||||
isUpdated = false,
|
||||
Update = _QuestieQuest.ObjectiveUpdate,
|
||||
}
|
||||
end
|
||||
end
|
||||
end
|
||||
for _, obj in pairs(quest.Objectives) do
|
||||
obj.isUpdated = false
|
||||
obj:Update()
|
||||
end
|
||||
return true
|
||||
|
||||
@@ -67,7 +67,10 @@ killcredit = function(npcId, objective, objectiveData)
|
||||
local ret = {}
|
||||
for npcIdIndex = 1, #objectiveData.IdList do
|
||||
local killCreditNpcId = objectiveData.IdList[npcIdIndex]
|
||||
ret[killCreditNpcId] = monster(killCreditNpcId, objective)[killCreditNpcId]
|
||||
local monsterResult = monster(killCreditNpcId, objective)
|
||||
if monsterResult then
|
||||
ret[killCreditNpcId] = monsterResult[killCreditNpcId]
|
||||
end
|
||||
end
|
||||
return ret
|
||||
end
|
||||
|
||||
+53
-3
@@ -94,15 +94,31 @@ local C_Timer = QuestieCompat.C_Timer
|
||||
|
||||
local coYield = coroutine.yield
|
||||
|
||||
local function _dbStats(t)
|
||||
if type(t) ~= "table" then return "type=" .. type(t) end
|
||||
local n, minK, maxK = 0, math.huge, 0
|
||||
for k in pairs(t) do
|
||||
n = n + 1
|
||||
if type(k) == "number" then
|
||||
if k < minK then minK = k end
|
||||
if k > maxK then maxK = k end
|
||||
end
|
||||
end
|
||||
return "count=" .. n .. " minID=" .. (minK == math.huge and 0 or minK) .. " maxID=" .. maxK
|
||||
end
|
||||
|
||||
local function loadFullDatabase()
|
||||
print("\124cFF4DDBFF [1/9] " .. l10n("Loading database") .. "...")
|
||||
|
||||
QuestieInit:LoadBaseDB()
|
||||
Questie:Debug(Questie.DEBUG_DEVELOP, "[DBDiag] After LoadBaseDB - quest:" .. _dbStats(QuestieDB.questData) .. " npc:" .. _dbStats(QuestieDB.npcData))
|
||||
Questie:Debug(Questie.DEBUG_DEVELOP, "[DBDiag] obj:" .. _dbStats(QuestieDB.objectData) .. " item:" .. _dbStats(QuestieDB.itemData))
|
||||
|
||||
print("\124cFF4DDBFF [2/9] " .. l10n("Applying database corrections") .. "...")
|
||||
|
||||
coYield()
|
||||
QuestieCorrections:Initialize()
|
||||
Questie:Debug(Questie.DEBUG_DEVELOP, "[DBDiag] After Corrections - quest:" .. _dbStats(QuestieDB.questData) .. " npc:" .. _dbStats(QuestieDB.npcData))
|
||||
|
||||
print("\124cFF4DDBFF [3/9] " .. l10n("Initializing townfolks") .. "...")
|
||||
coYield()
|
||||
@@ -221,9 +237,12 @@ QuestieInit.Stages[1] = function() -- run as a coroutine
|
||||
l10n("Questie DB has updated!") ..
|
||||
"\124r\124cFFFF6F22 " .. l10n("Data is being processed, this may take a few moments and cause some lag..."))
|
||||
loadFullDatabase()
|
||||
Questie:Debug(Questie.DEBUG_DEVELOP, "[DBDiag] Before Compile - quest:" .. _dbStats(QuestieDB.questData) .. " npc:" .. _dbStats(QuestieDB.npcData))
|
||||
QuestieDBCompiler:Compile()
|
||||
Questie:Debug(Questie.DEBUG_DEVELOP, "[DBDiag] After Compile - quest:type=" .. type(QuestieDB.questData) .. " npc:type=" .. type(QuestieDB.npcData))
|
||||
dbCompiled = true
|
||||
else
|
||||
Questie:Debug(Questie.DEBUG_DEVELOP, "[DBDiag] DB was CACHED (no recompile)")
|
||||
l10n:Initialize()
|
||||
coYield()
|
||||
QuestieCorrections:MinimalInit()
|
||||
@@ -388,17 +407,48 @@ end
|
||||
|
||||
|
||||
function QuestieInit:LoadDatabase(key)
|
||||
if QuestieDB[key] then
|
||||
if type(QuestieDB[key]) == "string" then
|
||||
coYield()
|
||||
QuestieDB[key] = loadstring(QuestieDB[key]) -- load the table from string (returns a function)
|
||||
local fn, loadErr = loadstring(QuestieDB[key])
|
||||
coYield()
|
||||
QuestieDB[key] = QuestieDB[key]() -- execute the function (returns the table)
|
||||
if fn then
|
||||
local ok, result = pcall(fn)
|
||||
if ok then
|
||||
QuestieDB[key] = result
|
||||
else
|
||||
Questie:Debug(Questie.DEBUG_DEVELOP, "[DBDiag] ERROR executing('" .. key .. "'): " .. tostring(result))
|
||||
QuestieDB[key] = nil
|
||||
end
|
||||
else
|
||||
Questie:Debug(Questie.DEBUG_DEVELOP, "[DBDiag] ERROR loadstring('" .. key .. "'): " .. tostring(loadErr) .. " | len=" .. string.len(QuestieDB[key] or ""))
|
||||
QuestieDB[key] = nil
|
||||
end
|
||||
elseif type(QuestieDB[key]) == "table" then
|
||||
Questie:Debug(Questie.DEBUG_DEVELOP, "[LoadDatabase] '" .. key .. "' already a table (split-file format), skipping loadstring")
|
||||
else
|
||||
Questie:Debug(Questie.DEBUG_DEVELOP, "Database is missing, this is likely do to era vs tbc: ", key)
|
||||
end
|
||||
if not QuestieDB[key] then
|
||||
QuestieDB[key] = {}
|
||||
end
|
||||
end
|
||||
|
||||
function QuestieInit:LoadBaseDB()
|
||||
local function _pullGlobal(dbKey, globalName)
|
||||
if type(_G[globalName]) == "table" then
|
||||
QuestieDB[dbKey] = _G[globalName]
|
||||
_G[globalName] = nil
|
||||
return true
|
||||
end
|
||||
return false
|
||||
end
|
||||
local _pulled = {
|
||||
quest = _pullGlobal("questData", "QuestieX_WotLKDB_quest"),
|
||||
npc = _pullGlobal("npcData", "QuestieX_WotLKDB_npc"),
|
||||
object = _pullGlobal("objectData", "QuestieX_WotLKDB_object"),
|
||||
item = _pullGlobal("itemData", "QuestieX_WotLKDB_item"),
|
||||
}
|
||||
Questie:Debug(Questie.DEBUG_DEVELOP, "[DBDiag] WotLKDB pull: quest=" .. tostring(_pulled.quest) .. " npc=" .. tostring(_pulled.npc) .. " obj=" .. tostring(_pulled.object) .. " item=" .. tostring(_pulled.item))
|
||||
QuestieInit:LoadDatabase("npcData")
|
||||
QuestieInit:LoadDatabase("objectData")
|
||||
QuestieInit:LoadDatabase("questData")
|
||||
|
||||
@@ -402,7 +402,7 @@ function Townsfolk:PopulateVendors(itemList, existingTable, restrictLevel)
|
||||
if not flagCache[vendorId] then
|
||||
flagCache[vendorId] = flags
|
||||
end
|
||||
if bitband(flags, QuestieDB.npcFlags.VENDOR) == QuestieDB.npcFlags.VENDOR then
|
||||
if flags and bitband(flags, QuestieDB.npcFlags.VENDOR) == QuestieDB.npcFlags.VENDOR then
|
||||
tbl[vendorId] = true
|
||||
end
|
||||
end
|
||||
|
||||
+91
-34
@@ -1,17 +1,34 @@
|
||||
---@class QuestieServer
|
||||
local QuestieServer = QuestieLoader:CreateModule("QuestieServer")
|
||||
|
||||
-- Check for runtime server globals or profile matches early in the initialization phase.
|
||||
-- We do this BEFORE any database tables evaluate so their memory isn't allocated if unused.
|
||||
|
||||
---@type string
|
||||
local realmName = GetRealmName() or ""
|
||||
|
||||
Questie.IsEbonhold = false
|
||||
Questie.IsAscension = false
|
||||
Questie.IsValanior = false
|
||||
-- Client flavor detection from WoW globals
|
||||
local WOW_PROJECT_ID = WOW_PROJECT_ID or -1
|
||||
local WOW_PROJECT_CLASSIC = WOW_PROJECT_CLASSIC or 2
|
||||
local WOW_PROJECT_BURNING_CRUSADE_CLASSIC = WOW_PROJECT_BURNING_CRUSADE_CLASSIC or 5
|
||||
local WOW_PROJECT_WRATH_CLASSIC = WOW_PROJECT_WRATH_CLASSIC or 11
|
||||
local WOW_PROJECT_MAINLINE = WOW_PROJECT_MAINLINE or 1
|
||||
|
||||
if _G.IsAscensionServer or realmName == "Ascension" or realmName:find("Area 52") or realmName:find("Al'ar") or realmName:find("Thrall") then
|
||||
-- Expansion detection
|
||||
Questie.IsRetail = (WOW_PROJECT_ID == WOW_PROJECT_MAINLINE)
|
||||
Questie.IsWotLK = (WOW_PROJECT_ID == WOW_PROJECT_WRATH_CLASSIC)
|
||||
Questie.IsTBC = (WOW_PROJECT_ID == WOW_PROJECT_BURNING_CRUSADE_CLASSIC)
|
||||
Questie.IsClassicEra = (WOW_PROJECT_ID == WOW_PROJECT_CLASSIC)
|
||||
|
||||
-- Try GetBuildInfo for Turtle WoW (Interface: 11200, no WOW_PROJECT globals)
|
||||
local _, _, _, tocVersion = GetBuildInfo()
|
||||
Questie.IsTurtle = (not Questie.IsRetail and not Questie.IsWotLK and not Questie.IsTBC and
|
||||
not Questie.IsClassicEra and tocVersion and tocVersion < 20000)
|
||||
|
||||
-- Custom server detection
|
||||
Questie.IsEbonhold = false
|
||||
Questie.IsAscension = false
|
||||
Questie.IsValanior = false
|
||||
|
||||
if _G.IsAscensionServer or realmName:find("Ascension") or realmName:find("Area 52") or
|
||||
realmName:find("Al'ar") or realmName:find("Thrall") then
|
||||
Questie.IsAscension = true
|
||||
elseif realmName == "Ebonhold" or realmName == "Test Ebonhold" then
|
||||
Questie.IsEbonhold = true
|
||||
@@ -19,23 +36,69 @@ elseif realmName == "Valanior" then
|
||||
Questie.IsValanior = true
|
||||
end
|
||||
|
||||
-- Also check QuestieConfig if it was loaded (fallback for forcing a profile)
|
||||
if QuestieConfig and QuestieConfig.profileKeys then
|
||||
-- It's theoretically possible a player has explicitly overridden the profile in Ace3 Options
|
||||
-- but usually we trust the dynamic realm name detection over saved profiles for the core loader.
|
||||
-- Derive expected DB plugin name for this client
|
||||
local function GetExpectedPluginFlavor()
|
||||
if Questie.IsAscension then return "AscensionDB", "Questie-X-AscensionDB" end
|
||||
if Questie.IsEbonhold then return "EbonholdDB", "Questie-X-EbonholdDB" end
|
||||
if Questie.IsValanior then return "ValaniorDB", "Questie-X-ValaniorDB" end
|
||||
if Questie.IsTurtle then return "TurtleDB", "Questie-X-TurtleDB" end
|
||||
if Questie.IsWotLK then return "WotLKDB", "Questie-X-WotLKDB" end
|
||||
if Questie.IsTBC then return "TBCDB", "Questie-X-TBCDB" end
|
||||
if Questie.IsClassicEra then return "ClassicDB", "Questie-X-ClassicDB" end
|
||||
if Questie.IsRetail then return "RetailDB", "Questie-X-RetailDB" end
|
||||
return nil, nil
|
||||
end
|
||||
|
||||
function QuestieServer:Init()
|
||||
-- This handles any universal server logic before Database Init
|
||||
Questie:Debug(Questie.DEBUG_INFO, "[QuestieServer] Detected Realm:", realmName)
|
||||
Questie:Debug(Questie.DEBUG_INFO, "[QuestieServer] IsAscension:", Questie.IsAscension)
|
||||
Questie:Debug(Questie.DEBUG_INFO, "[QuestieServer] IsEbonhold:", Questie.IsEbonhold)
|
||||
Questie:Debug(Questie.DEBUG_INFO, "[QuestieServer] IsValanior:", Questie.IsValanior)
|
||||
Questie:Debug(Questie.DEBUG_INFO, "[QuestieServer] Realm:", realmName)
|
||||
Questie:Debug(Questie.DEBUG_INFO, "[QuestieServer] WOW_PROJECT_ID:", tostring(WOW_PROJECT_ID))
|
||||
Questie:Debug(Questie.DEBUG_INFO, "[QuestieServer] IsWotLK:", tostring(Questie.IsWotLK), "IsTBC:", tostring(Questie.IsTBC),
|
||||
"IsClassicEra:", tostring(Questie.IsClassicEra), "IsTurtle:", tostring(Questie.IsTurtle),
|
||||
"IsAscension:", tostring(Questie.IsAscension), "IsEbonhold:", tostring(Questie.IsEbonhold))
|
||||
end
|
||||
|
||||
--- Checks if the correct DB plugin is loaded for the detected client/server.
|
||||
--- Prints a friendly actionable warning to the chat frame if none is found.
|
||||
function QuestieServer:WarnIfMissingPlugin()
|
||||
local QuestiePluginAPI = QuestieLoader:ImportModule("QuestiePluginAPI")
|
||||
if not QuestiePluginAPI then return end
|
||||
|
||||
if QuestiePluginAPI:IsAnyPluginLoaded() then
|
||||
local flavor, addonName = GetExpectedPluginFlavor()
|
||||
local loadedFlavor = QuestiePluginAPI:GetLoadedFlavor()
|
||||
|
||||
if flavor and loadedFlavor and loadedFlavor ~= flavor then
|
||||
Questie:Print(string.format(
|
||||
"|cFFFF8800[Questie-X]|r Warning: loaded database is |cFFFFFFFF%s|r but this client expects |cFFFFFFFF%s|r. " ..
|
||||
"Quest data may be incorrect. Install |cFF5EBAF3%s|r for best results.",
|
||||
loadedFlavor, flavor, addonName or flavor
|
||||
))
|
||||
end
|
||||
return
|
||||
end
|
||||
|
||||
-- No plugin at all
|
||||
local flavor, addonName = GetExpectedPluginFlavor()
|
||||
local msg
|
||||
if addonName then
|
||||
msg = string.format(
|
||||
"|cFFFF4444[Questie-X]|r No database plugin loaded. " ..
|
||||
"Download and install |cFF5EBAF3%s|r into your |cFFFFFFFFInterface/AddOns/|r folder, then reload. " ..
|
||||
"Questie-X will show no quest data until a database is installed.",
|
||||
addonName
|
||||
)
|
||||
else
|
||||
msg = "|cFFFF4444[Questie-X]|r No database plugin loaded and server type is unknown. " ..
|
||||
"Install the appropriate Questie-X database plugin for your server."
|
||||
end
|
||||
|
||||
if DEFAULT_CHAT_FRAME then
|
||||
DEFAULT_CHAT_FRAME:AddMessage(msg)
|
||||
end
|
||||
Questie:Debug(Questie.DEBUG_CRITICAL, msg)
|
||||
end
|
||||
|
||||
function QuestieServer:GetCustomQuest(questId)
|
||||
-- This provides a formal API for fetching quests injected by custom server DBs
|
||||
-- that bypasses the binary stream without using function monkeypatching.
|
||||
local QuestieDB = QuestieLoader:ImportModule("QuestieDB")
|
||||
if not QuestieDB.questDataOverrides or not QuestieDB.questDataOverrides[questId] then
|
||||
return nil
|
||||
@@ -44,30 +107,24 @@ function QuestieServer:GetCustomQuest(questId)
|
||||
local name = QuestieDB.QueryQuestSingle(questId, "name")
|
||||
if not name then return nil end
|
||||
|
||||
local level = QuestieDB.QueryQuestSingle(questId, "level") or QuestieDB.QueryQuestSingle(questId, "questLevel")
|
||||
local level = QuestieDB.QueryQuestSingle(questId, "level") or QuestieDB.QueryQuestSingle(questId, "questLevel")
|
||||
local reqLevel = QuestieDB.QueryQuestSingle(questId, "requiredLevel") or QuestieDB.QueryQuestSingle(questId, "minLevel")
|
||||
local desc = QuestieDB.QueryQuestSingle(questId, "objectiveText") or QuestieDB.QueryQuestSingle(questId, "description") or QuestieDB.QueryQuestSingle(questId, "details")
|
||||
|
||||
local startedBy = QuestieDB.QueryQuestSingle(questId, "startedBy")
|
||||
local starts = {
|
||||
NPC = startedBy and startedBy[1] or {},
|
||||
GameObject = startedBy and startedBy[2] or {},
|
||||
Item = startedBy and startedBy[3] or {},
|
||||
}
|
||||
local desc = QuestieDB.QueryQuestSingle(questId, "objectiveText") or QuestieDB.QueryQuestSingle(questId, "description")
|
||||
|
||||
local startedBy = QuestieDB.QueryQuestSingle(questId, "startedBy")
|
||||
local finishedBy = QuestieDB.QueryQuestSingle(questId, "finishedBy")
|
||||
local specialFlags = QuestieDB.QueryQuestSingle(questId, "specialFlags")
|
||||
local isRepeatable = specialFlags and (bit.band(specialFlags, 1) ~= 0) or false
|
||||
|
||||
return {
|
||||
Id = questId,
|
||||
id = questId,
|
||||
name = name,
|
||||
level = level or reqLevel or 0,
|
||||
Id = questId,
|
||||
id = questId,
|
||||
name = name,
|
||||
level = level or reqLevel or 0,
|
||||
requiredLevel = reqLevel or 0,
|
||||
Description = desc,
|
||||
Starts = starts,
|
||||
finishedBy = finishedBy,
|
||||
Description = desc,
|
||||
Starts = { NPC = startedBy and startedBy[1] or {}, GameObject = startedBy and startedBy[2] or {}, Item = startedBy and startedBy[3] or {} },
|
||||
finishedBy = finishedBy,
|
||||
IsRepeatable = isRepeatable,
|
||||
}
|
||||
end
|
||||
|
||||
+12
-27
@@ -11,9 +11,9 @@
|
||||
## Notes-esES: Ayundante de misión
|
||||
## Notes-ptBR: Ajudante de missão
|
||||
## Notes-frFR: Assistant de quête
|
||||
## Version: 1.1.4
|
||||
## Version: 1.2.2
|
||||
## RequiredDeps:
|
||||
## OptionalDeps: Ace3, CallbackHandler-1.0, HereBeDragons, LibDataBroker-1.1, LibDBIcon-1.0, LibSharedMedia-3.0, LibStub, LibUIDropDownMenu
|
||||
## OptionalDeps: Ace3, CallbackHandler-1.0, HereBeDragons, LibDataBroker-1.1, LibDBIcon-1.0, LibSharedMedia-3.0, LibStub, LibUIDropDownMenu, Questie-X-WotLKDB, Questie-X-ClassicDB, Questie-X-TBCDB, Questie-X-TurtleDB, Questie-X-AscensionDB, Questie-X-EbonholdDB
|
||||
## SavedVariables: QuestieConfig, QuestieLearnerDB
|
||||
## SavedVariablesPerCharacter: QuestieConfigCharacter
|
||||
## X-Curse-Project-ID: 334372
|
||||
@@ -28,6 +28,7 @@ Modules\Libs\QuestiePluginAPI.lua
|
||||
|
||||
# COMPATIBILITY
|
||||
Modules\QuestieCompat.lua
|
||||
Libs\LibStub\LibStub.lua
|
||||
Compat\embeds.xml
|
||||
Libs\XXH_Lua_Lib\XXH_Lua_Lib.lua
|
||||
|
||||
@@ -43,22 +44,15 @@ Modules\Libs\MessageHandler.lua
|
||||
|
||||
#Quest XP
|
||||
Database\QuestXP\QuestieXP.lua
|
||||
Database\QuestXP\DB\xpDB-wotlk.lua
|
||||
|
||||
# stream module (used by DB)
|
||||
Modules\QuestieStream.lua
|
||||
|
||||
# Zones
|
||||
Database\Zones\zoneTables.lua
|
||||
|
||||
Database\Zones\zoneDB.lua
|
||||
|
||||
|
||||
# Databases
|
||||
Database\Wotlk\wotlkItemDB.lua
|
||||
Database\Wotlk\wotlkNpcDB.lua
|
||||
Database\Wotlk\wotlkObjectDB.lua
|
||||
Database\Wotlk\wotlkQuestDB.lua
|
||||
# Core Database schema (data injected by DB plugins)
|
||||
Database\QuestieDB.lua
|
||||
Database\questDB.lua
|
||||
Database\objectDB.lua
|
||||
@@ -67,39 +61,36 @@ Database\itemDB.lua
|
||||
Database\Constants.lua
|
||||
Database\MeetingStones.lua
|
||||
|
||||
|
||||
|
||||
# Corrections
|
||||
# Corrections framework (expansion-specific fixes loaded by DB plugins)
|
||||
Database\Corrections\AutoTableUpdates.lua
|
||||
Database\Corrections\QuestieCorrections.lua
|
||||
Database\Corrections\QuestieItemBlacklist.lua
|
||||
Database\Corrections\QuestieNPCBlacklist.lua
|
||||
Database\Corrections\QuestieQuestBlacklist.lua
|
||||
#Database\Corrections\SoMPhases.lua
|
||||
Database\Corrections\QuestieEvent.lua
|
||||
|
||||
# Automatic General Corrections
|
||||
Database\Corrections\Automatic\itemStartFixes.lua
|
||||
Database\Corrections\Automatic\classicQuestReputationFixes.lua
|
||||
|
||||
# Classic Corrections
|
||||
# Classic corrections (always loaded; _LoadCorrections skips missing IDs gracefully)
|
||||
Database\Corrections\classicQuestFixes.lua
|
||||
Database\Corrections\classicNPCFixes.lua
|
||||
Database\Corrections\classicItemFixes.lua
|
||||
Database\Corrections\classicObjectFixes.lua
|
||||
|
||||
# TBC Corrections
|
||||
# TBC corrections (gated by Questie.IsTBC / Questie.IsWotLK inside QuestieCorrections)
|
||||
Database\Corrections\tbcQuestFixes.lua
|
||||
Database\Corrections\tbcNPCFixes.lua
|
||||
Database\Corrections\tbcItemFixes.lua
|
||||
Database\Corrections\tbcObjectFixes.lua
|
||||
|
||||
# Wotlk Corrections
|
||||
# WotLK corrections (gated by Questie.IsWotLK inside QuestieCorrections)
|
||||
Database\Corrections\wotlkQuestFixes.lua
|
||||
Database\Corrections\wotlkNPCFixes.lua
|
||||
Database\Corrections\wotlkItemFixes.lua
|
||||
Database\Corrections\wotlkObjectFixes.lua
|
||||
|
||||
# Automatic General Corrections
|
||||
Database\Corrections\Automatic\itemStartFixes.lua
|
||||
Database\Corrections\Automatic\classicQuestReputationFixes.lua
|
||||
|
||||
# Compiler
|
||||
Database\compiler.lua
|
||||
|
||||
@@ -109,10 +100,6 @@ Localization\Translations\Translations.xml
|
||||
|
||||
Localization\lookups\lookupQuestCategories.lua
|
||||
Localization\lookups\lookupZones.lua
|
||||
Localization\lookups\Wotlk\lookupItems\lookupItems.xml
|
||||
Localization\lookups\Wotlk\lookupNpcs\lookupNpcs.xml
|
||||
Localization\lookups\Wotlk\lookupObjects\lookupObjects.xml
|
||||
Localization\lookups\Wotlk\lookupQuests\lookupQuests.xml
|
||||
|
||||
# Libs
|
||||
Modules\Libs\QuestieLib.lua
|
||||
@@ -170,7 +157,6 @@ Modules\Map\QuestieMapUtils.lua
|
||||
Modules\Map\HBDHooks.lua
|
||||
Modules\Map\WeaponMasterSkills.lua
|
||||
|
||||
|
||||
# Quest
|
||||
Modules\Quest\AvailableQuests.lua
|
||||
Modules\Quest\QuestLogCache.lua
|
||||
@@ -247,4 +233,3 @@ Modules\QuestieProfiler.lua
|
||||
# Main
|
||||
Questie.lua
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user