Several additions and changes

This commit is contained in:
User
2026-08-19 21:21:31 -05:00
parent 76bba359f1
commit b3ce9fc31d
978 changed files with 172 additions and 4015261 deletions
+3 -4
View File
@@ -812,15 +812,15 @@ function M:Finish(generation,doPrune)
end
function M:ApplyHighlight()
local hq=QuestieOcto.MapHighlight and QuestieOcto.MapHighlight.questID
local V=QuestieOcto.Visuals
local hq=QuestieOcto.MapHighlight and QuestieOcto.MapHighlight.questID
if not V then return end
for _,pin in pairs(self.activeFrames or {}) do
if pin then
if not hq then
V:SetHighlight(pin,false)
V:SetAlpha(pin,1)
elseif tonumber(pin.questID)==hq and V:IsObjectiveRole(pin.role) then
elseif tonumber(pin.questID)==hq and (V:IsObjectiveRole(pin.role) or pin.role=="turnin") then
V:SetHighlight(pin,true)
else
V:SetHighlight(pin,false)
@@ -1457,5 +1457,4 @@ if WorldMapFrame and not M.worldMapShowHooked then
OnWorldMapShow()
end)
end
end
end
+2 -2
View File
@@ -880,7 +880,7 @@ function MM:ApplyHighlight()
if not hq then
V:SetHighlight(pin,false)
V:SetAlpha(pin,1)
elseif tonumber(pin.questID)==hq and V:IsObjectiveRole(pin.role) then
elseif tonumber(pin.questID)==hq and (V:IsObjectiveRole(pin.role) or pin.role=="turnin") then
V:SetHighlight(pin,true)
else
V:SetHighlight(pin,false)
@@ -985,4 +985,4 @@ end
QuestieOcto:RegisterMessage("PREPARED_MAP_READY",MM,"OnPreparedMapReady")
QuestieOcto:RegisterMessage("NODES_READY",MM,"OnNodesReady")
MM:Start()
MM:Start()
+11 -1
View File
@@ -230,7 +230,17 @@ local function LiveObjectiveText(node)
if state and objectiveIndex then
for _,row in pairs(state.objectives or {}) do
if tonumber(row.index)==objectiveIndex then
return row.text or row.rawText or node.objectiveText
local text=row.text or row.rawText or node.objectiveText or ""
-- When the row text is only the entity name (its live objective ID did
-- not resolve, so LocalizeObjectiveRows left off the counter) append the
-- x/y progress from the row so the tooltip still shows it.
local current=tonumber(row.current)
local required=tonumber(row.required)
if current and required and required>0 and not string.find(text,"%d+%s*/%s*%d+") then
if text~="" then text=text.." "..tostring(current).."/"..tostring(required)
else text=tostring(current).."/"..tostring(required) end
end
return text
end
end
end
+24 -1
View File
@@ -70,6 +70,20 @@ local function ReadObjectives(index,questID)
if current==nil then current=parsedCurrent end
if required==nil then required=parsedRequired end
end
-- Turtle's C_QuestLog.GetQuestObjectives can omit the counter (and its
-- count-bearing text) for some quests; the native per-objective
-- leaderboard still carries "x/y", so borrow the count and text from it.
if (current==nil or required==nil) and GetQuestLogLeaderBoard then
local lbText=GetQuestLogLeaderBoard(i,index)
if lbText and lbText~="" then
local lbc,lbr=ParseObjectiveProgress(lbText)
if current==nil then current=lbc end
if required==nil then required=lbr end
if lbc and lbr and (not text or not string.find(text,"%d+%s*/%s*%d+")) then
text=lbText
end
end
end
local finished=row.finished and true or false
local objectiveID=QuestieOcto.API and QuestieOcto.API.GetQuestLogLeaderBoardID
and QuestieOcto.API:GetQuestLogLeaderBoardID(i,index) or nil
@@ -121,7 +135,16 @@ local function ReadObjectives(index,questID)
end
end
return objectives,table.concat(snapshot,"\\030"),allDone,"QuestieAPI",table.concat(mapSnapshot,"\\030")
-- If the modern objectives API returned fewer entries than the native quest
-- log (some Turtle quests expose incomplete data here), discard it and
-- rebuild from the leaderboard below so no objective is dropped.
local lbCount=GetNumQuestLeaderBoards and tonumber(GetNumQuestLeaderBoards(index)) or nil
if not lbCount or table.getn(objectiveKeys)>=lbCount then
return objectives,table.concat(snapshot,"\\030"),allDone,"QuestieAPI",table.concat(mapSnapshot,"\\030")
end
objectives={}
snapshot={}
mapSnapshot={}
end
-- 1.12 compatibility fallback. The legacy leaderboard API only supplies
-5
View File
@@ -1,5 +0,0 @@
<Bindings>
<Binding name="QUESTIE_TOGGLE_JOURNEY" category="Questie">
QuestieLoader:ImportModule("QuestieJourney"):ToggleJourneyWindow()
</Binding>
</Bindings>
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
@@ -1,66 +0,0 @@
---@type QuestieDB
local QuestieDB = QuestieLoader:ImportModule("QuestieDB")
QuestieDB.sortKeys = {
EPIC = -1,
HALLOWS_END = -21,
SEASONAL = -22,
UNDERCITY = -23,
HERBALISM = -24,
BATTLEGROUNDS = -25,
DAY_OF_THE_DEAD = -41,
WARLOCK = -61,
WARRIOR = -81,
SHAMAN = -82,
FISHING = -101,
BLACKSMITHING = -121,
PALADIN = -141,
MAGE = -161,
ROGUE = -162,
ALCHEMY = -181,
LEATHERWORKING = -182,
ENGINEERING = -201,
TREASURE_MAP = -221,
TOURNAMENT = -241,
HUNTER = -261,
PRIEST = -262,
DRUID = -263,
TAILORING = -264,
SPECIAL = -284,
COOKING = -304,
FIRST_AID = -324,
LEGENDARY = -344,
DARKMOON_FAIRE = -364,
AHN_QIRAJ_WAR = -365,
LUNAR_FESTIVAL = -366,
REPUTATION = -367,
INVASION = -368,
MIDSUMMER = -369,
BREWFEST = -370,
INSCRIPTION = -371,
DEATHKNIGHT = -372,
JEWELCRAFTING = -373,
NOBLEGARDEN = -374,
PILGRIMS_BOUNTY = -375,
LOVE_IS_IN_THE_AIR = -376,
ARCHAEOLOGY = -377,
CHILDRENS_WEEK = -378,
FIRELANDS_INVASION = -379,
THE_ZANDALARI = -380,
ELEMENTAL_BONDS = -381,
PANDAREN_BREWMASTERS = -391,
SCENARIO = -392,
PET_BATTLE = -394,
MONK = -395,
LANDFALL = -396,
PANDAREN_CAMPAIGN = -397,
RIDING = -398,
BRAWLERS_GUILD = -399,
PROVING_GROUNDS = -400,
HARVEST_FESTIVAL = -402,
WINTER_VEIL = -404,
NIGHTMARE_INCURSIONS = -641,
BLACKROCK_ERUPTION = -644,
TITAN_REFORGED_REALM = -662,
SPECIALTEMP = -1000,
}
@@ -1,440 +0,0 @@
-- this file is used for large table updates that are automatically generated, since fitting those into corrections is a bad idea
-- not all of this data is validated as its generated from external sources
---@type QuestieDB
local QuestieDB = QuestieLoader:ImportModule("QuestieDB")
if Questie.IsClassic then
local npcsToUpdate = {
[239] = 2,
[240] = 2,
[313] = 18,
[384] = 7,
[715] = 2,
[786] = 2,
[931] = 9,
[1218] = 19,
[1261] = 7,
[1295] = 16388,
[1298] = 16388,
[1299] = 16388,
[1303] = 4,
[1304] = 4,
[1308] = 4,
[1310] = 16388,
[1314] = 16388,
[1318] = 4,
[1319] = 16388,
[1324] = 16388,
[1341] = 16388,
[1348] = 16388,
[1349] = 16388,
[1350] = 16388,
[1351] = 4,
[1387] = 8,
[1411] = 18,
[1458] = 19,
[1459] = 16404,
[1460] = 7,
[1519] = 2,
[1571] = 9,
[1701] = 16,
[1755] = 2,
[2122] = 18,
[2130] = 18,
[2153] = 2,
[2299] = 8,
[2389] = 8,
[2397] = 4,
[2405] = 0,
[2409] = 8,
[2432] = 8,
[2439] = 2,
[2464] = 2,
[2465] = 2,
[2487] = 2,
[2491] = 2,
[2497] = 2,
[2621] = 0,
[2663] = 4,
[2670] = 6,
[2700] = 2,
[2708] = 2,
[2737] = 0,
[2771] = 2,
[2785] = 2,
[2789] = 2,
[2796] = 0,
[2801] = 16,
[2802] = 16,
[2808] = 6,
[2818] = 16,
[2835] = 8,
[2851] = 8,
[2858] = 9,
[2859] = 9,
[2861] = 8,
[2870] = 16,
[2880] = 20,
[2881] = 20,
[2910] = 2,
[2920] = 2,
[2941] = 9,
[2981] = 2,
[3001] = 16,
[3079] = 16388,
[3137] = 16,
[3139] = 2,
[3155] = 18,
[3170] = 18,
[3182] = 0,
[3233] = 2,
[3292] = 2,
[3293] = 2,
[3305] = 9,
[3327] = 18,
[3357] = 16,
[3362] = 7,
[3370] = 1536,
[3401] = 18,
[3411] = 6,
[3418] = 2,
[3443] = 2,
[3467] = 0,
[3502] = 0,
[3628] = 0,
[3679] = 0,
[3685] = 7,
[3841] = 8,
[3845] = 2,
[3846] = 2,
[3848] = 2,
[3881] = 6,
[3936] = 2,
[4161] = 1536,
[4254] = 16,
[4256] = 7,
[4265] = 6,
[4267] = 8,
[4312] = 8,
[4314] = 9,
[4317] = 8,
[4319] = 8,
[4321] = 8,
[4407] = 8,
[4453] = 2,
[4501] = 2,
[4508] = 3,
[4582] = 18,
[4584] = 18,
[4598] = 16,
[4606] = 18,
[4607] = 18,
[4613] = 1536,
[4618] = 2,
[4730] = 7,
[4731] = 7,
[4885] = 7,
[4921] = 2,
[4941] = 2,
[4963] = 2,
[4974] = 1536,
[4981] = 4,
[5032] = 17,
[5037] = 17,
[5038] = 17,
[5040] = 17,
[5041] = 17,
[5054] = 1536,
[5086] = 3,
[5130] = 1536,
[5392] = 16,
[5395] = 2,
[5509] = 16388,
[5510] = 16388,
[5512] = 16390,
[5698] = 0,
[5749] = 7,
[5750] = 7,
[5753] = 7,
[5782] = 2,
[5843] = 0,
[5848] = 0,
[5875] = 2,
[6026] = 8,
[6027] = 7,
[6030] = 16390,
[6091] = 6,
[6301] = 6,
[6328] = 7,
[6373] = 7,
[6374] = 7,
[6376] = 7,
[6548] = 7,
[6706] = 8,
[6707] = 18,
[6726] = 8,
[6749] = 8192,
[6782] = 2,
[7172] = 3,
[7233] = 2,
[7770] = 2,
[7823] = 8,
[7824] = 8,
[7879] = 6,
[7937] = 2,
[7952] = 7,
[7955] = 7,
[7957] = 3,
[8018] = 9,
[8019] = 8,
[8020] = 8,
[8214] = 0,
[8320] = 0,
[8383] = 2,
[8416] = 2,
[8582] = 2,
[8586] = 2,
[8609] = 8,
[8610] = 8,
[8664] = 2,
[8665] = 20,
[8923] = 0,
[9022] = 0,
[9087] = 7,
[9177] = 2,
[9460] = 0,
[9540] = 2,
[9598] = 2,
[9679] = 0,
[9976] = 8192,
[9977] = 8192,
[9978] = 8192,
[9979] = 8192,
[9980] = 8192,
[9981] = 8192,
[9982] = 8192,
[9983] = 8192,
[9984] = 8192,
[9985] = 8192,
[9986] = 8192,
[9987] = 8192,
[9988] = 8192,
[9989] = 8192,
[10045] = 8192,
[10046] = 8192,
[10047] = 8192,
[10048] = 8192,
[10049] = 8192,
[10050] = 8192,
[10051] = 8192,
[10052] = 8192,
[10053] = 8192,
[10054] = 8192,
[10055] = 8192,
[10056] = 8192,
[10057] = 8192,
[10058] = 8192,
[10059] = 8192,
[10060] = 8192,
[10061] = 8192,
[10062] = 8192,
[10063] = 8192,
[10076] = 2,
[10085] = 8192,
[10118] = 6,
[10181] = 2,
[10260] = 2,
[10296] = 0,
[10299] = 0,
[10370] = 16,
[10378] = 9,
[10540] = 0,
[10583] = 8,
[10665] = 2,
[10666] = 2,
[10740] = 2,
[10776] = 1,
[10897] = 8,
[10917] = 2,
[10931] = 2,
[10941] = 2,
[11064] = 3,
[11069] = 8192,
[11073] = 16,
[11079] = 2,
[11104] = 8192,
[11105] = 8192,
[11117] = 8192,
[11119] = 8192,
[11138] = 8,
[11139] = 8,
[11176] = 3,
[11194] = 2,
[11277] = 0,
[11278] = 5,
[11279] = 0,
[11281] = 0,
[11286] = 2,
[11316] = 0,
[11390] = 0,
[11470] = 0,
[11486] = 0,
[11491] = 1,
[11555] = 6,
[11625] = 2,
[11626] = 2,
[11627] = 0,
[11696] = 2,
[11701] = 0,
[11832] = 2,
[11899] = 8,
[11900] = 8,
[11901] = 8,
[11948] = 2,
[11949] = 2,
[12096] = 6,
[12144] = 0,
[12246] = 4,
[12338] = 0,
[12577] = 8,
[12578] = 8,
[12596] = 8,
[12616] = 8,
[12617] = 8,
[12636] = 8,
[12740] = 8,
[12776] = 7,
[12777] = 4,
[12782] = 4,
[12792] = 4,
[12807] = 7,
[13018] = 6,
[13076] = 0,
[13088] = 0,
[13089] = 0,
[13097] = 0,
[13176] = 2,
[13177] = 8,
[13256] = 0,
[13257] = 2,
[13316] = 0,
[13429] = 7,
[13431] = 7,
[13437] = 2,
[13438] = 2,
[13439] = 2,
[13442] = 2,
[13443] = 0,
[13444] = 2,
[13447] = 2,
[13577] = 2,
[13616] = 8194,
[13617] = 8194,
[14321] = 1,
[14323] = 1,
[14337] = 16389,
[14338] = 2,
[14351] = 0,
[14353] = 0,
[14358] = 2,
[14368] = 2,
[14369] = 0,
[14371] = 4,
[14381] = 2,
[14382] = 2,
[14383] = 2,
[14395] = 0,
[14401] = 1,
[14450] = 6,
[14522] = 4,
[14581] = 4,
[14624] = 16391,
[14625] = 2,
[14637] = 6,
[14753] = 16390,
[14754] = 16390,
[14774] = 0,
[14776] = 0,
[14871] = 1,
[15077] = 2,
[15126] = 16390,
[15127] = 16390,
[15131] = 8192,
[15165] = 2,
[15177] = 9,
[15178] = 9,
[15199] = 7,
[15293] = 4,
[15350] = 3,
[15351] = 3,
[15354] = 5,
[15362] = 3,
[15378] = 2,
[15379] = 2,
[15380] = 2,
[15458] = 1,
[15459] = 3,
[15460] = 3,
[15469] = 3,
[15471] = 7,
[15477] = 3,
[15508] = 3,
[15512] = 3,
[15515] = 3,
[15522] = 3,
[15525] = 3,
[15528] = 3,
[15529] = 3,
[15532] = 3,
[15533] = 3,
[15534] = 3,
[15535] = 3,
[15589] = 2,
[15609] = 3,
[15610] = 3,
[15611] = 3,
[15700] = 3,
[15702] = 3,
[15703] = 3,
[15704] = 3,
[15707] = 3,
[15736] = 3,
[15737] = 3,
[15738] = 3,
[15739] = 3,
[16002] = 2,
[16031] = 2,
[16032] = 2,
[16033] = 3,
[16094] = 8192,
[16227] = 8,
[16230] = 1,
[16285] = 1,
[16359] = 1,
[16365] = 3,
[16376] = 16391,
[16384] = 1,
[16395] = 1,
[16431] = 3,
[16433] = 1,
[16434] = 1,
[16435] = 1,
[16436] = 1,
[16439] = 1,
[16478] = 3,
[16484] = 3,
[16531] = 3,
[16543] = 4,
[16786] = 2,
[16787] = 0
}
-- npcFlags table update
for id, flags in pairs(npcsToUpdate) do
if QuestieDB.npcData[id] then
QuestieDB.npcData[id][QuestieDB.npcKeys.npcFlags] = flags
end
end
end
File diff suppressed because it is too large Load Diff
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 it is too large Load Diff
File diff suppressed because it is too large Load Diff
@@ -1,15 +0,0 @@
---@class BlacklistFilter
local BlacklistFilter = QuestieLoader:CreateModule("BlacklistFilter")
--- Removes all entries from the blacklist that are not marked as `true`.
---@param blacklist table<QuestId, boolean>
---@return table<QuestId, boolean>
function BlacklistFilter.filterExpansion(blacklist)
for questId, flag in pairs(blacklist) do
if flag == false then
blacklist[questId] = nil
end
end
return blacklist
end
@@ -1,786 +0,0 @@
---@type ContentPhases
local ContentPhases = QuestieLoader:ImportModule("ContentPhases")
-- 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 questsToBlacklistByPhase = {
[1] = {}, -- Phase 1 - Molten Core (this is required for counting, but should stay empty)
[2] = { -- Phase 2 - World Bosses + Dire Maul
[1193] = true,
[1318] = true,
[5518] = true,
[5519] = true,
[5525] = true,
[5528] = true,
[7429] = true,
[7441] = true,
[7461] = true,
[7462] = true,
[7463] = true,
[7481] = true,
[7482] = true,
[7483] = true,
[7484] = true,
[7485] = true,
[7488] = true,
[7489] = true,
[7492] = true,
[7494] = true,
[7498] = true,
[7499] = true,
[7500] = true,
[7501] = true,
[7502] = true,
[7503] = true,
[7504] = true,
[7505] = true,
[7506] = true,
[7507] = true,
[7508] = true,
[7509] = true,
[7581] = true,
[7649] = true,
[7650] = true,
[7651] = true,
[7703] = true,
[7877] = true,
},
[3] = { -- Phase 3 - BWL + Darkmoon Faire
[7761] = true, -- Blackhand's Command BWL pre quest
[7787] = true,
[7781] = true, -- The Lord of Blackrock
[7782] = true, -- The Lord of Blackrock
[7783] = true, -- The Lord of Blackrock
[7784] = true, -- The Lord of Blackrock
-- 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,
[10938] = true,
[10939] = true,
[10940] = true,
[10941] = true,
-----------------
[8410] = true, -- Shaman Sunken Temple
[8411] = true, -- Shaman Sunken Temple
[8412] = true, -- Shaman Sunken Temple
[8413] = true, -- Shaman Sunken Temple
[8414] = true, -- Paladin Sunken Temple
[8415] = true, -- Paladin Sunken Temple
[8416] = true, -- Paladin Sunken Temple
[8417] = true, -- Warrior Sunken Temple
[8418] = true, -- Paladin Sunken Temple
[8419] = true, -- Warlock Sunken Temple
[8420] = true, -- Warlock Sunken Temple
[8421] = true, -- Warlock Sunken Temple
[8422] = true, -- Warlock Sunken Temple
[8423] = true, -- Warrior Sunken Temple
[8424] = true, -- Warrior Sunken Temple
[8425] = true, -- Warrior Sunken Temple
[8151] = true, -- Hunter Sunken Temple
[8153] = true, -- Hunter Sunken Temple
[8231] = true, -- Hunter Sunken Temple
[8232] = true, -- Hunter Sunken Temple
[8233] = true, -- Rogue Sunken Temple
[8234] = true, -- Rogue Sunken Temple
[8235] = true, -- Rogue Sunken Temple
[8236] = true, -- Rogue Sunken Temple
[8250] = true, -- Mage Sunken Temple
[8251] = true, -- Mage Sunken Temple
[8252] = true, -- Mage Sunken Temple
[8253] = true, -- Mage Sunken Temple
[8254] = true, -- Priest Sunken Temple
[8255] = true, -- Priest Sunken Temple
[8256] = true, -- Priest Sunken Temple
[8257] = true, -- Priest Sunken Temple
[9051] = true, -- Druid Sunken Temple
[9052] = true, -- Druid Sunken Temple
[9053] = true, -- Druid Sunken Temple
[9063] = true, -- Druid Sunken Temple
},
[4] = { -- Phase 4 - Zul'Gurub
[8056] = true,
[8057] = true,
[8064] = true,
[8065] = true,
[8074] = true,
[8075] = true,
[8110] = true,
[8111] = true,
[8112] = true,
[8113] = true,
[8114] = true,
[8115] = 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,
[8183] = 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,
[8275] = true,
[8276] = true,
[8277] = true,
[8278] = true,
[8279] = true,
[8280] = true,
[8281] = true,
[8282] = true,
[8283] = true,
[8284] = true,
[8285] = true,
[8287] = true,
[8323] = true,
[8324] = true,
[8446] = true,
[8447] = true,
[9208] = true,
[9209] = true,
[9210] = true,
[8304] = true,
[8307] = true,
[8308] = true,
[8313] = true,
[8317] = true,
[8309] = true,
[8310] = true,
[8315] = true,
[8318] = true,
[8319] = true,
[8341] = true,
[8342] = true,
[8343] = true,
[8331] = true,
[8332] = true,
[8333] = true,
[8348] = true,
[8349] = true,
[8306] = true,
[8320] = true,
[8321] = true,
[8351] = true,
[8352] = true,
[8361] = true,
[8362] = true,
[8363] = true,
[8364] = true,
[9248] = true,
[8314] = true,
[8105] = true, -- The Battle for Arathi Basin
[8120] = true, -- The Battle for Arathi Basin
[8121] = true, -- Take Four Bases
[8122] = true, -- Take Five Bases
[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
[8370] = true, -- Conquering Arathi Basin
[8374] = true, -- Claiming Arathi Basin
[8393] = true, -- Claiming Arathi Basin
[8394] = true, -- Claiming Arathi Basin
[8395] = true, -- Claiming Arathi Basin
[8396] = true, -- Claiming Arathi Basin
[8436] = true, -- Conquering Arathi Basin
[8437] = true, -- Conquering Arathi Basin
[8438] = true, -- Conquering Arathi Basin
[8439] = true, -- Conquering Arathi Basin
[8367] = true, -- For Great Honor
[8371] = true, -- Concerted Efforts
[8385] = true, -- Concerted Efforts
[8388] = true, -- For Great Honor
-- Tier 0.5 quests
[8905] = true,
[8906] = true,
[8907] = true,
[8908] = true,
[8909] = true,
[8910] = true,
[8911] = true,
[8912] = true,
[8913] = true,
[8914] = true,
[8915] = true,
[8916] = true,
[8917] = true,
[8918] = true,
[8919] = true,
[8920] = true,
[8921] = true,
[8922] = true,
[8923] = true,
[8924] = true,
[8925] = true,
[8926] = true,
[8927] = true,
[8928] = true,
[8929] = true,
[8930] = true,
[8931] = true,
[8932] = true,
[8933] = true,
[8934] = true,
[8935] = true,
[8936] = true,
[8937] = true,
[8938] = true,
[8939] = true,
[8940] = true,
[8941] = true,
[8942] = true,
[8943] = true,
[8944] = true,
[8945] = true,
[8946] = true,
[8947] = true,
[8948] = true,
[8949] = true,
[8950] = true,
[8951] = true,
[8952] = true,
[8953] = true,
[8954] = true,
[8955] = true,
[8956] = true,
[8957] = true,
[8958] = true,
[8959] = true,
[8960] = true,
[8961] = true,
[8962] = true,
[8963] = true,
[8964] = true,
[8965] = true,
[8966] = true,
[8967] = true,
[8968] = true,
[8969] = true,
[8970] = true,
[8977] = true,
[8978] = true,
[8985] = true,
[8986] = true,
[8987] = true,
[8988] = true,
[8989] = true,
[8990] = true,
[8991] = true,
[8992] = true,
[8994] = true,
[8995] = true,
[8996] = true,
[8997] = true,
[8998] = true,
[8999] = true,
[9000] = true,
[9001] = true,
[9002] = true,
[9003] = true,
[9004] = true,
[9005] = true,
[9006] = true,
[9007] = true,
[9008] = true,
[9009] = true,
[9010] = true,
[9011] = true,
[9012] = true,
[9013] = true,
[9014] = true,
[9015] = true,
[9016] = true,
[9017] = true,
[9018] = true,
[9019] = true,
[9020] = true,
[9021] = true,
[9022] = true,
[9030] = true, -- probably not in the game
[9031] = true, -- probably not in the game
[9032] = true,
},
[5] = { -- Phase 5 - AQ
[8286] = true,
[8288] = true,
[8301] = true,
[8302] = true,
[8303] = true,
[8305] = true,
[8316] = true,
[8376] = true,
[8377] = true,
[8378] = true,
[8379] = true,
[8380] = true,
[8381] = true,
[8382] = true,
[8496] = true,
[8497] = true,
[8498] = true,
[8501] = true,
[8502] = true,
[8507] = true,
[8508] = true,
[8519] = true,
[8534] = true,
[8535] = true,
[8536] = true,
[8537] = true,
[8538] = true,
[8539] = true,
[8540] = true,
[8541] = true,
[8544] = true,
[8548] = 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,
[8579] = true,
[8584] = true,
[8585] = true,
[8586] = true,
[8587] = true,
[8592] = true,
[8593] = true,
[8594] = true,
[8595] = true,
[8596] = true,
[8597] = true,
[8598] = true,
[8599] = true,
[8602] = true,
[8603] = true,
[8606] = 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,
[8687] = 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,
[8731] = true,
[8732] = true,
[8733] = true,
[8734] = true,
[8735] = true,
[8736] = true,
[8737] = true,
[8738] = true,
[8739] = true,
[8740] = true,
[8741] = true,
[8742] = true,
[8743] = true,
[8745] = true,
[8747] = true,
[8748] = true,
[8749] = true,
[8750] = true,
[8751] = true,
[8752] = true,
[8753] = true,
[8754] = true,
[8755] = true,
[8756] = true,
[8757] = true,
[8758] = true,
[8759] = true,
[8760] = true,
[8761] = true,
[8764] = true,
[8765] = true,
[8766] = true,
[8770] = true,
[8771] = true,
[8772] = true,
[8773] = true,
[8774] = true,
[8775] = true,
[8776] = true,
[8777] = true,
[8778] = true,
[8779] = true,
[8780] = true,
[8781] = true,
[8782] = true,
[8783] = true,
[8784] = true,
[8785] = true,
[8786] = true,
[8787] = true,
[8789] = true,
[8790] = true,
[8791] = true,
[8800] = true,
[8801] = true,
[8802] = true,
[8804] = true,
[8805] = true,
[8806] = true,
[8807] = true,
[8808] = true,
[8809] = true,
[8810] = true,
[8829] = true,
[8856] = true,
[8857] = true,
[8858] = true,
[8859] = true,
[9023] = true,
[9208] = true,
[9209] = true,
[9210] = true,
[9338] = true,
},
[6] = { -- Phase 6 - Naxxramas with invasion quests inactive
[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,
[9141] = true,
[9142] = true,
[9165] = 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,
[9415] = true,
[9416] = true,
[9419] = true,
[9422] = true,
[9664] = true,
[9665] = true,
},
[7] = { -- Phase 7 is a pseudo-phase that represents Phase 6 but with the Invasion quests active.
[9085] = true, -- Shadows of Doom
[9094] = true, -- Argent Dawn Gloves
[9153] = true, -- Under the Shadow
[9154] = true, -- Light's Hope Chapel
[9260] = true, -- Investigate the Scourge of Stormwind
[9261] = true, -- Investigate the Scourge of Ironforge
[9262] = true, -- Investigate the Scourge of Darnassus
[9263] = true, -- Investigate the Scourge of Orgrimmar
[9264] = true, -- Investigate the Scourge of Thunder Bluff
[9265] = true, -- Investigate the Scourge of the Undercity
[9292] = true, -- Cracked Necrotic Crystal
[9295] = true, -- Letter from the Front
[9299] = true, -- Note from the Front
[9300] = true, -- Page from the Front
[9301] = true, -- Envelope from the Front
[9302] = true, -- Missive from the Front
[9304] = true, -- Document from the Front
[9310] = true, -- Faint Necrotic Crystal
[9317] = true, -- Consecrated Sharpening Stones
[9318] = true, -- Blessed Wizard Oil
[9320] = true, -- Major Mana Potion
[9321] = true, -- Major Healing Potion
[9333] = true, -- Argent Dawn Gloves
[9334] = true, -- Blessed Wizard Oil
[9335] = true, -- Consecrated Sharpening Stones
[9336] = true, -- Major Healing Potion
[9337] = true, -- Major Mana Potion
[9341] = true, -- Tabard of the Argent Dawn
[9343] = true, -- Tabard of the Argent Dawn
},
}
---@param questsToBlacklist table<QuestId, boolean>
---@param contentPhase number
---@return table<QuestId, boolean>
function ContentPhases.BlacklistAnniversaryQuestsByPhase(questsToBlacklist, contentPhase)
for phase = contentPhase + 1, #questsToBlacklistByPhase do
for questId in pairs(questsToBlacklistByPhase[phase]) do
questsToBlacklist[questId] = true
end
end
return questsToBlacklist
end
@@ -1,243 +0,0 @@
---@type ContentPhases
local ContentPhases = QuestieLoader:ImportModule("ContentPhases")
-- 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 questsToBlacklistByPhase = {
[1] = {}, -- Phase 1 - T4 (Kara, Gruul, Mag) (this is required for counting, but should stay empty)
[2] = { -- Phase 2 - T5 (SSC, TK)
[10445] = true,
[10944] = true,
[10946] = true,
[10984] = true,
[11007] = true,
-- Druid Swift Flight Form
[10955] = true,
[10961] = true,
[10964] = true,
[10965] = true,
[10978] = true,
[10979] = true,
[10980] = true,
[10986] = true,
[10987] = true,
[10988] = true,
[10990] = true,
[10991] = true,
[10992] = true,
[10993] = true,
[10994] = true,
[11001] = true,
[11011] = true,
-- Ogri'la & Sha'tari Skyguard
[11004] = true,
[11005] = true,
[11006] = true,
[11008] = true,
[11010] = true,
[11021] = true,
[11023] = true,
[11024] = true,
[11025] = true,
[11026] = true,
[11027] = true,
[11028] = true,
[11029] = true,
[11030] = true,
[11051] = true,
[11056] = true,
[11057] = true,
[11058] = true,
[11059] = true,
[11060] = true,
[11061] = true,
[11062] = true,
[11065] = true,
[11066] = true,
[11072] = true,
[11073] = true,
[11074] = true,
[11078] = true,
[11079] = true,
[11080] = true,
[11085] = true,
[11091] = true,
[11093] = true,
[11096] = true,
[11098] = true,
[11102] = true,
[11119] = true,
[11885] = true,
-- Mount Hyjal ring quests
[10460] = true,
[10461] = true,
[10462] = true,
[10463] = true,
[10464] = true,
[10465] = true,
[10466] = true,
[10467] = true,
[10468] = true,
[10469] = true,
[10470] = true,
[10471] = true,
[10472] = true,
[10473] = true,
[10474] = true,
[10475] = true,
[10947] = true,
[11103] = true,
[11104] = true,
[11105] = true,
[11106] = true,
-- Arena rating reset quest
[95158] = true,
[95251] = true,
[95252] = true,
},
[3] = { -- Phase 3 - T6 (Hyjal, BT)
[10948] = true,
[10949] = true,
[10957] = true,
[10958] = true,
[10959] = true,
[10985] = true,
-- Netherwing
[11012] = true,
[11013] = true,
[11014] = true,
[11015] = true,
[11016] = true,
[11017] = true,
[11018] = true,
[11019] = true,
[11020] = true,
[11035] = true,
[11041] = true,
[11049] = true,
[11050] = true,
[11053] = true,
[11054] = true,
[11055] = true,
[11063] = true,
[11064] = true,
[11067] = true,
[11068] = true,
[11069] = true,
[11070] = true,
[11071] = true,
[11075] = true,
[11076] = true,
[11077] = true,
[11081] = true,
[11082] = true,
[11083] = true,
[11084] = true,
[11086] = true,
[11089] = true,
[11090] = true,
[11092] = true,
[11094] = true,
[11095] = true,
[11097] = true,
[11099] = true,
[11100] = true,
[11101] = true,
[11107] = true,
[11108] = true,
[11109] = true,
[11110] = true,
[11111] = true,
[11112] = true,
[11113] = true,
[11114] = true,
},
[4] = { -- Phase 3.5 - Zul'Aman
[9524] = true,
[9525] = true,
[11130] = true,
[11132] = true,
[11163] = true,
[11164] = true,
[11165] = true,
[11166] = true,
[11171] = true,
[11178] = true,
[11195] = true,
},
[5] = { -- Phase 4 - Sunwell, Isle of Quel'Danas
[9681] = true, -- check these.
[9684] = true, -- check these.
[9721] = true,
[9722] = true,
[9723] = true,
[9725] = true,
[9735] = true,
[9736] = true,
-- [9737] = true, -- actually available
[11481] = true,
[11482] = true,
[11488] = true,
[11490] = true,
[11492] = true,
[11496] = true,
[11499] = true,
[11500] = true,
[11513] = true,
[11514] = true,
[11515] = true,
[11516] = true,
[11517] = true,
[11520] = true,
[11521] = true,
[11523] = true,
[11524] = true,
[11525] = true,
[11526] = true,
[11532] = true,
[11533] = true,
[11534] = true,
[11535] = true,
[11536] = true,
[11537] = true,
[11538] = true,
[11539] = true,
[11540] = true,
[11541] = true,
[11542] = true,
[11543] = true,
[11544] = true,
[11545] = true,
[11546] = true,
[11547] = true,
[11548] = true,
[11549] = true,
[11550] = true,
[11554] = true,
[11555] = true,
[11556] = true,
[11557] = true,
[11875] = true,
[11877] = true,
[11880] = true,
}
}
---@param questsToBlacklist table<QuestId, boolean>
---@param contentPhase number
---@return table<QuestId, boolean>
function ContentPhases.BlacklistTbcQuestsByPhase(questsToBlacklist, contentPhase)
for phase = contentPhase + 1, #questsToBlacklistByPhase do
for questId in pairs(questsToBlacklistByPhase[phase]) do
questsToBlacklist[questId] = true
end
end
return questsToBlacklist
end
@@ -1,19 +0,0 @@
---@class ContentPhases
local ContentPhases = QuestieLoader:CreateModule("ContentPhases")
-- TODO: Use API function which hopefully will come in the future
-- Central place to define the active phases of the different game modes
ContentPhases.activePhases = {
SoM = 5,
SoD = 7,
Anniversary = 6, -- Phase 6 is the final state of the game, with invasions inactive.
MoP = Questie.IsChinaRegion and 4 or 5,
TBC = 2,
}
-- Central place to activate Invasion event
ContentPhases.IsInvasionActive = {
[1] = Questie.IsSoD and true or false, -- Era
[2] = false, -- TBC
[3] = false, -- Wotlk - Remember Questie.IsTitanReforged is WotLK technically
}
@@ -1,793 +0,0 @@
---@type ContentPhases
local ContentPhases = QuestieLoader:ImportModule("ContentPhases")
-- 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 questsToBlacklistByPhase = {
[1] = {}, -- Phase 1 (this is required for counting, but should stay empty)
[2] = { -- Phase 2 (Patch 5.1 Landfall (Brawlers Guild, New Scenarios)
[32106] = true, -- A Winter Veil Gift
[32108] = true, -- Domination Point
[32109] = true, -- Lion's Landing
[32112] = true, -- FLAG - Been to Fight Club
[32113] = true, -- FLAG - Been to Fight Club Today
[32115] = true, -- Shackles of the Past
[32116] = true, -- Priorities, People!
[32118] = true, -- Taking Advantage
[32119] = true, -- It Is A Mystery
[32120] = true, -- Legacy of Ogudei
[32121] = true, -- The Spirit Trap
[32122] = true, -- Ogudei's Lieutenants
[32123] = true, -- Death on Two Legs
[32126] = true, -- Tear It Up
[32127] = true, -- All Dead, All Dead
[32128] = true, -- Another One Bites the Dust
[32130] = true, -- Good Luck, Have Fun
[32131] = true, -- We Require More Minerals!
[32132] = true, -- Worker Harassment
[32133] = true, -- Sentry Wards
[32134] = true, -- Hard Counter
[32135] = true, -- Hero Killer
[32136] = true, -- Work Order: Fuel
[32137] = true, -- Runnin' On Empty
[32138] = true, -- Work Order: Lumber
[32139] = true, -- Stacked!
[32140] = true, -- Work Order: Iron
[32141] = true, -- Power Metal
[32142] = true, -- We Will Rock You
[32143] = true, -- A Kind of Magic
[32144] = true, -- Under Pressure
[32145] = true, -- Don't Lose Your Head
[32146] = true, -- Hammer to Fall
[32147] = true, -- Attack Daily 06
[32148] = true, -- Attack! Move!
[32149] = true, -- Resource Gathering
[32150] = true, -- Supply Block
[32151] = true, -- Tower Defense
[32152] = true, -- Siege Damage
[32153] = true, -- Hero Killer
[32154] = true, -- Burn Out!
[32155] = true, -- Necessary Breaks
[32156] = true, -- It's Only Right
[32157] = true, -- The Only Good Goblin...
[32158] = true, -- Two Step Program
[32159] = true, -- Circle of Life
[32161] = true, -- Beastmaster's Hunt: The Crane
[32162] = true, -- Beastmaster's Hunt: The Tiger
[32163] = true, -- Beastmaster's Hunt: The Crab
[32164] = true, -- Beastmaster's Hunt: The Crane
[32165] = true, -- Beastmaster's Hunt: The Tiger
[32166] = true, -- Beastmaster's Hunt: The Crab
[32167] = true, -- Ancient's Fall
[32168] = true, -- End of an Elder
[32169] = true, -- A Colossal Victory
[32170] = true, -- Ancient's Fall
[32171] = true, -- End of an Elder
[32172] = true, -- A Colossal Victory
[32181] = true, -- Beastmaster's Quarry: The Crane
[32182] = true, -- Beastmaster's Quarry: The Tiger
[32183] = true, -- Beastmaster's Quarry: The Crab
[32184] = true, -- Beastmaster's Quarry: The Crane
[32185] = true, -- Beastmaster's Quarry: The Tiger
[32186] = true, -- Beastmaster's Quarry: The Crab
[32189] = true, -- A Shabby New Face
[32190] = true, -- To Mogujia
[32191] = true, -- Ancient Guardians
[32192] = true, -- Bloodlines
[32193] = true, -- To Mogujia
[32194] = true, -- Bad Blood
[32197] = true, -- Mystery Meatloaf
[32198] = true, -- One Magical, Flying Kingdom's Trash...
[32199] = true, -- Krasarang Steampot
[32214] = true, -- Bilgewater Infiltrators
[32221] = true, -- Storming the Beach
[32222] = true, -- WANTED: Chief Engineer Cogwrench
[32223] = true, -- WANTED: Lieutenant Ethan Jacobson
[32235] = true, -- Flash! Aaaaaahhhh!
[32236] = true, -- Bug Off!
[32237] = true, -- Precious Resource
[32238] = true, -- Universal Remote-Explode
[32242] = true, -- Buried Secrets
[32243] = true, -- The Source of Korune Power
[32244] = true, -- The Korune
[32246] = true, -- Meet the Scout
[32247] = true, -- A King Among Men
[32248] = true, -- A Little Patience
[32249] = true, -- Meet the Scout
[32250] = true, -- The Might of the Warchief
[32251] = true, -- Dagger in the Dark
[32256] = true, -- Rise Of An Empire
[32257] = true, -- Voice of the Gods
[32284] = true, -- Someone You Should See
[32306] = true, -- Lumber Collection Tracking
[32315] = true, -- Anduin's Plea
[32316] = true, -- Heart Of The Alliance
[32319] = true, -- Find Thrall!
[32320] = true, -- The Horde Is Family
[32321] = true, -- The Monkey King
[32326] = true, -- Insertion
[32327] = true, -- The Darnassus Mission
[32328] = true, -- Victorious Return
[32329] = true, -- Get My Results!
[32330] = true, -- What's in the Box?
[32331] = true, -- The Kirin Tor
[32333] = true, -- The Second Riddle: Fellowship
[32334] = true, -- The Third Riddle: Strength
[32335] = true, -- The Greatest Prank
[32336] = true, -- The Handle
[32337] = true, -- The Head
[32338] = true, -- The Harmonic Ointment
[32339] = true, -- Rebuilding the Mallet (Tracker)
[32340] = true, -- Plunder the Black Temple
[32342] = true, -- The Spirit Trap
[32343] = true, -- Ogudei's Lieutenants
[32344] = true, -- It Is A Mystery
[32345] = true, -- We're Not Monsters!
[32346] = true, -- Oi Ain't Afraid o' No Ghosts!
[32347] = true, -- Eviction Notice
[32348] = true, -- Kick 'em While They're Down
[32351] = true, -- Echoes of Thunder
[32352] = true, -- A Gathering Storm
[32355] = true, -- The Harmonic Mallet
[32356] = true, -- Tracking Event: Ambassadors Summoned
[32357] = true, -- Tracking Event: Event Complete
[32358] = true, -- The Soulcore
[32361] = true, -- Tracking Event: Event Complete
[32362] = true, -- The Fate of Dalaran
[32363] = true, -- The Kun-Lai Expedition
[32365] = true, -- Tracking Event: Epilogue Complete
[32368] = true, -- Memory Wine
[32370] = true, -- The Kun-Lai Expedition
[32371] = true, -- Memory Wine
[32372] = true, -- De-Subjugation
[32375] = true, -- A Dash of That
[32376] = true, -- To the Valley!
[32377] = true, -- A Kor'kron In Our Midst
[32378] = true, -- Clearing a Path
[32379] = true, -- Legacy of the Korune
[32380] = true, -- The Best Around
[32381] = true, -- To Catch A Spy
[32382] = true, -- He's In Deep
[32383] = true, -- Bugging Out
[32384] = true, -- Trapping the Leader
[32391] = true, -- The Ruins of Korune
[32392] = true, -- The Divine Bell
[32393] = true, -- The Ruins of Korune
[32394] = true, -- The Divine Bell
[32395] = true, -- Tracking Event: Saw Avartu
[32397] = true, -- He Won't Even Miss It
[32398] = true, -- The Bell Speaks
[32399] = true, -- Breath of Darkest Shadow
[32400] = true, -- The Bell Speaks
[32401] = true, -- Breath of Darkest Shadow
[32402] = true, -- The Situation In Dalaran
[32403] = true, -- It Starts in the Sewers
[32404] = true, -- Violence in the Arena
[32405] = true, -- Hand of the Silver Covenant
[32406] = true, -- A Tactical Assault
[32408] = true, -- The Silver Covenant's Stronghold
[32409] = true, -- The Kirin Tor's True Colors
[32410] = true, -- Krasus' Landing
[32411] = true, -- The Remaining Sunreavers
[32412] = true, -- One Last Grasp
[32413] = true, -- A Return to Krasarang
[32414] = true, -- Darnassus Attacked?
[32416] = true, -- Jaina's Resolution
[32417] = true, -- Sewer Cleaning
[32418] = true, -- Unfair Trade
[32419] = true, -- Nowhere to Hide
[32420] = true, -- Cashing Out
[32421] = true, -- Nowhere to Run
[32423] = true, -- What Had To Be Done
[32426] = true, -- Stirred, Not Shaken
[32433] = true, -- Undermining the Under Miner
[32435] = true, -- Second Place
[32436] = true, -- Third Place
[32437] = true, -- Tracking Event: Saw Sarannha 1
[32438] = true, -- Tracking Event: Saw Sarannha 2
[32442] = true, -- Impending Danger
[32444] = true, -- FLAG - Earned Brawler Title (Weekly)
[32446] = true, -- Dis-Assembly Required
[32448] = true, -- Ties with the Past
[32449] = true, -- The Ruins of Ogudei
[32450] = true, -- The Time Is Now!
[32451] = true, -- Send A Message
[32452] = true, -- And Then There Were Goblins
[32455] = true, -- The Silence
[32460] = true, -- Tracking the Thieves
[32461] = true, -- The Order of the Cloud Serpent
[32477] = true, -- Tracking Event: Player is Back in Time
[33252] = true, -- A Winter Veil Gift
[33354] = true, -- Den Mother's Demise
},
[3] = { -- Phase 3 (Patch 5.2 The Thunder King (Isle of Thunder, Throne of Thunder))
[32200] = true, -- Dangers of Za'Tual
[32201] = true, -- Grave Circumstances
[32204] = true, -- The Skumblade Threat
[32205] = true, -- Gather Scout Reports
[32206] = true, -- This Just Won't Do
[32207] = true, -- Saur Loser
[32208] = true, -- Maximum Capacitor
[32209] = true, -- Save Our Scouts!
[32212] = true, -- The Assault on Zeb'tula
[32213] = true, -- Old Enemies
[32215] = true, -- Heinous Sacrifice
[32216] = true, -- Pterrible Ptorment
[32217] = true, -- Dark Offerings
[32218] = true, -- Ashes of the Enemy
[32219] = true, -- Stone Cold
[32220] = true, -- Soul Surrender
[32224] = true, -- Rise No More!
[32225] = true, -- The Call of Thunder
[32226] = true, -- Into the Crypts
[32227] = true, -- Preventing a Future Threat
[32228] = true, -- The Shuddering Moor
[32230] = true, -- The Zandalari Colossus
[32231] = true, -- Trailing Light in the Dark
[32232] = true, -- What's Inside Counts
[32233] = true, -- Very Disarming
[32234] = true, -- Knowledge Is Power
[32252] = true, -- Harbingers of the Loa
[32254] = true, -- Manipulating the Saurok
[32255] = true, -- De-Constructed
[32258] = true, -- Horde Quest Choice: PvP
[32259] = true, -- Horde Quest Choice: PvE
[32260] = true, -- Alliance Quest Choice: PvE
[32261] = true, -- Alliance Quest Choice: PvP
[32262] = true, -- Captive Audience
[32264] = true, -- Spellbound
[32265] = true, -- Charged Moganite
[32266] = true, -- Mana Manifestations
[32268] = true, -- Tactical Mana Bombs
[32269] = true, -- Breaking Down the Defenses
[32274] = true, -- The Residents of Ihgaluk
[32275] = true, -- Surgical Death
[32276] = true, -- Tear Down This Wall!
[32277] = true, -- To the Skies!
[32278] = true, -- Decisive Action
[32279] = true, -- The Fall of Shan Bu
[32282] = true, -- Compy Stomp
[32283] = true, -- Loa-saur
[32285] = true, -- The Sleepless Legion
[32287] = true, -- Enemies Beneath the Tower
[32288] = true, -- Bolstering the Defenses
[32292] = true, -- Forge Ahead!
[32293] = true, -- Among the Bones
[32294] = true, -- Raining Bones
[32295] = true, -- An Unusual Tome
[32296] = true, -- Treasures of the Thunder King
[32297] = true, -- Direhorn or Devilsaur
[32298] = true, -- Dino Might
[32299] = true, -- Just Some Light Clean-Up Work
[32300] = true, -- Disarming Irony
[32301] = true, -- Old Enemies
[32302] = true, -- Desconstruction
[32303] = true, -- Made for War
[32304] = true, -- High Recognition
[32305] = true, -- Overpowered
[32307] = true, -- Reader for the Dead Tongue
[32309] = true, -- A Tale of Six Masters
[32310] = true, -- A Tale of Six Masters
[32317] = true, -- Seeking the Soulstones
[32324] = true, -- Seek the Signal
[32325] = true, -- Infiltrating the Black Temple
[32467] = true, -- Sacrificial Prevention [PH]
[32468] = true, -- Crystal Clarity
[32469] = true, -- Crystal Clarity
[32470] = true, -- Light Camera Action
[32471] = true, -- Light Camera Action
[32472] = true, -- Frighten Pterodactyls [PH]
[32485] = true, -- Bolstering the Defenses
[32489] = true, -- The Creeping Carpet of Ihgaluk
[32491] = true, -- Left To Rot
[32492] = true, -- Destroy Cauldrons
[32493] = true, -- They All Fall Down
[32494] = true, -- Power Play
[32495] = true, -- The Bloodletter
[32496] = true, -- Desecrate this Fire!
[32497] = true, -- Honor the Flame
[32498] = true, -- Honor the Flame
[32499] = true, -- Honor the Flame
[32500] = true, -- Honor the Flame
[32501] = true, -- Honor the Flame
[32502] = true, -- Honor the Flame
[32503] = true, -- Desecrate this Fire!
[32506] = true, -- A Wing to Fly On
[32507] = true, -- Skin of the Saurok
[32508] = true, -- Welcome to the Island
[32509] = true, -- Honor the Flame
[32510] = true, -- Honor the Flame
[32517] = true, -- The Conquest of Stone
[32518] = true, -- Short-Supply Reward
[32519] = true, -- Short-Supply Reward
[32520] = true, -- Competing Magic
[32521] = true, -- Encroaching Force
[32522] = true, -- Imposing Threat
[32523] = true, -- The Beast Pens
[32524] = true, -- The Beating of Troll Drums
[32525] = true, -- Ashes of the Enemy
[32526] = true, -- Soul Surrender
[32527] = true, -- Grave Circumstances
[32528] = true, -- Into the Crypts
[32529] = true, -- The Call of Thunder
[32530] = true, -- The Bloodletter
[32531] = true, -- The Conquest of Stone
[32532] = true, -- Rise No More!
[32533] = true, -- Stone Cold
[32535] = true, -- The Skumblade Threat
[32536] = true, -- Manipulating the Saurok
[32537] = true, -- De-Constructed
[32538] = true, -- Heinous Sacrifice
[32539] = true, -- Dark Offerings
[32540] = true, -- Harbingers of the Loa
[32541] = true, -- Preventing a Future Threat
[32542] = true, -- Surgical Strike
[32543] = true, -- Dangers of Za'Tual
[32544] = true, -- Pterrible Ptorment
[32545] = true, -- The Residents of Ihgaluk
[32546] = true, -- Just Some Light Clean-Up Work
[32547] = true, -- The Creeping Carpet of Ihgaluk
[32548] = true, -- Left To Rot
[32549] = true, -- Skin of the Saurok
[32550] = true, -- Saur Loser
[32551] = true, -- Compy Stomp
[32552] = true, -- Loa-saur
[32553] = true, -- Direhorn vs Devilsaur
[32554] = true, -- Dino Might
[32555] = true, -- Centuries in Sentries
[32556] = true, -- The More You Know
[32557] = true, -- Out of Enemy Hands
[32558] = true, -- All In the Family
[32559] = true, -- Even Giants Fall
[32560] = true, -- Keep It Secret
[32561] = true, -- Competing Magic
[32562] = true, -- Imposing Threat
[32563] = true, -- Encroaching Force
[32564] = true, -- Zandalari on the Rise
[32565] = true, -- Encroaching Force
[32567] = true, -- The Beast Pens
[32568] = true, -- No Time To Rest
[32569] = true, -- Trailing Light in the Dark
[32570] = true, -- Gather Scout Reports
[32571] = true, -- A Wing to Fly On
[32572] = true, -- The Sleepless Legion
[32573] = true, -- Enemies Beneath the Tower
[32574] = true, -- The Shuddering Moor
[32575] = true, -- The Zandalari Colossus
[32576] = true, -- Competing Magic
[32577] = true, -- Imposing Threat
[32578] = true, -- Among the Bones
[32579] = true, -- Competing Magic
[32580] = true, -- Encroaching Force
[32581] = true, -- Imposing Threat
[32582] = true, -- Raining Bones
[32583] = true, -- Zandalari on the Rise
[32584] = true, -- Encroaching Force
[32585] = true, -- Encroaching Force
[32586] = true, -- Maximum Capacitor
[32587] = true, -- Forge Ahead!
[32588] = true, -- On Her Magic-ey Secret Service
[32589] = true, -- Life Blood
[32590] = true, -- Meet Me Upstairs
[32591] = true, -- Secrets of the First Empire
[32592] = true, -- I Need a Champion
[32593] = true, -- The Thunder Forge
[32594] = true, -- Spirit of the Storm Lord
[32595] = true, -- The Crown of Heaven
[32596] = true, -- Echoes of the Titans
[32597] = true, -- Heart of the Thunder King
[32598] = true, -- A Reckoning
[32599] = true, -- Securing A Future
[32600] = true, -- The Zandalari Prophecy
[32601] = true, -- Rumbles of Thunder
[32602] = true, -- Gods and Monsters
[32605] = true, -- Subtle Encouragement
[32606] = true, -- Subtle Encouragement
[32607] = true, -- Extended Shore Leave
[32608] = true, -- Raiding the Vault
[32609] = true, -- Rare Chest Tracking Quest
[32610] = true, -- Rare Boss Tracking Quest
[32611] = true, -- Rare Drop Tracking Quest
[32613] = true, -- Giant Dinosaur Bone
[32614] = true, -- More Giant Dinosaur Bones
[32615] = true, -- Many More Giant Dinosaur Bones
[32616] = true, -- A Large Pile of Giant Dinosaur Bones
[32617] = true, -- A Mountain of Giant Dinosaur Bones
[32621] = true, -- Lightning Steel
[32622] = true, -- Intro Flight
[32626] = true, -- Loot Room Key Tracking Quest
[32627] = true, -- Charged Moganite
[32628] = true, -- Tactical Mana Bombs
[32629] = true, -- Thunderwing Captured Tracking Quest
[32630] = true, -- Chief Engineer Jard's Journal
[32631] = true, -- High Recognition
[32632] = true, -- Made for War
[32633] = true, -- Spellbound
[32634] = true, -- Breaking Down the Defenses
[32635] = true, -- Enough with the Bombs!
[32636] = true, -- Captive Audience
[32637] = true, -- Overpowered
[32638] = true, -- Mana Scavengers
[32639] = true, -- Deconstruction
[32640] = true, -- Champions of the Thunder King
[32641] = true, -- Champions of the Thunder King
[32642] = true, -- Work Order: Dominance Offensive I
[32643] = true, -- Work Order: Dominance Offensive II
[32644] = true, -- The Assault on Shaol'mara
[32645] = true, -- Work Order: Operation: Shieldwall I
[32646] = true, -- Work Order: Operation: Shieldwall II
[32647] = true, -- Work Order: Golden Lotus I
[32648] = true, -- Work Order: Golden Lotus II
[32649] = true, -- Work Order: Shado-Pan I
[32650] = true, -- Work Order: Shado-Pan II
[32652] = true, -- To the Skies!
[32653] = true, -- Work Order: The August Celestials I
[32654] = true, -- Tear Down This Wall!
[32655] = true, -- A Bold Idea
[32656] = true, -- The Fall of Shan Bu
[32657] = true, -- Work Order: The August Celestials II
[32658] = true, -- Work Order: The Klaxxi I
[32659] = true, -- Work Order: The Klaxxi II
[32666] = true, -- FLAG - Warlock - Green Fire
[32676] = true, -- Extended Shore Leave
[32677] = true, -- Raiding the Vault
[32678] = true, -- Thunder Calls
[32679] = true, -- Thunder Calls
[32680] = true, -- The Storm Gathers
[32681] = true, -- The Storm Gathers
[32683] = true, -- So You Want to Be a Blacksmith...
[32684] = true, -- You Want Fish?
[32685] = true, -- No Fishing Pole Necessary!
[32686] = true, -- Pristine Banner of the Mantid Empire
[32687] = true, -- Pristine Ancient Sap Feeder
[32688] = true, -- Pristine Praying Mantid
[32689] = true, -- Pristine Sound Beacon
[32690] = true, -- Pristine Remains of a Paragon
[32691] = true, -- Pristine Mantid Lamp
[32692] = true, -- Pristine Pollen Collector
[32693] = true, -- Pristine Kypari Sap Container
[32694] = true, -- Quest Reward Summary: PvP Stage 1-5
[32695] = true, -- Quest Reward Summary: PvE Stage 0-2
[32697] = true, -- Quest Reward Summary: PvE Stage 3
[32698] = true, -- Quest Reward Summary: PvE Stage 4-5
[32700] = true, -- Quest Reward Summary: PvP Stage 1-5
[32701] = true, -- Quest Reward Summary: PvE Stage 0-2
[32703] = true, -- Quest Reward Summary: PvE Stage 3
[32704] = true, -- Quest Reward Summary: PvE Stage 4-5
[32706] = true, -- Allies in the Shadows
[32707] = true, -- Secrets in the Isle of Thunder
[32708] = true, -- Setting the Trap
[32709] = true, -- Allies in the Shadows
[32710] = true, -- Something Foul is Afoot
[32711] = true, -- Agony and Anima
[32712] = true, -- Zao'cho the Wicked
[32713] = true, -- Rocks Fall, People Die
[32714] = true, -- Taming the Tempest
[32715] = true, -- Requiem for a Queen
[32716] = true, -- Eyes of the Thunder King
[32720] = true, -- Choose Your Assignment
[32721] = true, -- Choose Your Assignment
[32722] = true, -- Forge Ahead!
[32724] = true, -- Forge Ahead!
[32725] = true, -- FLAG - Warlock - Reached Kanrethad
[32726] = true, -- So You Want to Be a Blacksmith...
[32727] = true, -- Contributed to Server Percentage Daily Tracking Quest
[32728] = true, -- The Court of Bones
[32729] = true, -- Za'Tual
[32730] = true, -- Ihgaluk Crag
[32731] = true, -- The Court of Bones
[32732] = true, -- Ihgaluk Crag
[32733] = true, -- Za'Tual
[32744] = true, -- Jin'rokh Dead
[32745] = true, -- Horridon Dead
[32746] = true, -- Zandalari Council Dead
[32747] = true, -- Tortos Dead
[32748] = true, -- Maegaera Dead
[32749] = true, -- Ji'kun Dead
[32750] = true, -- Durumu Dead
[32751] = true, -- Primordious Dead
[32752] = true, -- Dark Animus Dead
[32753] = true, -- Ra-Den Dead
[32754] = true, -- Iron Qon Dead
[32755] = true, -- Empyreal Queens Dead
[32756] = true, -- Lei Shen Dead
[32758] = true, -- Reader for the Dead Tongue
[32942] = true, -- Work Order: Sunreaver Onslaught I
[32943] = true, -- Work Order: Sunreaver Onslaught II
[32944] = true, -- Work Order: Kirin Tor Offensive I
[32945] = true, -- Work Order: Kirin Tor Offensive II
},
[4] = { -- Phase 4 (Patch 5.3 Escalation (Deepwind Gorge, New Scenarios, Heroic Scenarios))
[32892] = true, -- War is Coming
[32805] = true, -- Celestial Blessings
[32806] = true, -- The King and the Council
[32807] = true, -- The Warchief and the Darkness
[32808] = true, -- A Little Field Work
[32809] = true, -- Gathering Intelligence
[32810] = true, -- The Darkspear Rebellion
[32811] = true, -- Battlefield: Barrens
[32812] = true, -- The Darkspear Rebellion
[32813] = true, -- Battle of Sen'jin Village
[32814] = true, -- Battle of Razor Hill
[32815] = true, -- The Old Seer
[32816] = true, -- Path of the Last Emperor
[32819] = true, -- Battlefield: Barrens
[32836] = true, -- A Knockoff Grumplefloot
[32837] = true, -- Grandpa Grumplefloot
[32838] = true, -- A Tale of Romance and Chivalry
[32839] = true, -- The Bear and the Lady Fair
[32840] = true, -- Boom Boom's Fuse
[32841] = true, -- Master Boom Boom
[32842] = true, -- Teeth Like Swords
[32843] = true, -- Razorgrin
[32844] = true, -- Secret of the Ooze
[32845] = true, -- Splat
[32846] = true, -- Modified Chomping Apparatus
[32847] = true, -- Mecha-Bruce
[32848] = true, -- Frost-Tipped Eggshell
[32849] = true, -- Dippy and Doopy
[32850] = true, -- Last Year's Model
[32851] = true, -- Blingtron 3000
[32852] = true, -- The Digmaster's Earthblade
[32853] = true, -- Mingus Diggs
[32854] = true, -- Well-Worn Blindfold
[32855] = true, -- The Blind Hero
[32856] = true, -- Paper-Covered Rock
[32857] = true, -- Ro-Shambo
[32858] = true, -- Raptorhide Boxing Gloves
[32859] = true, -- Ty'thar
[32861] = true, -- Cloak of Virtue
[32862] = true, -- Battlefield: Barrens
[32870] = true, -- Preparing to Strike
[32871] = true, -- Vol'jin of the Darkspear
[32872] = true, -- Battlefield: Barrens
[32895] = true, -- The Road to War
[32896] = true, -- The Road to War
[32900] = true, -- Heroic Deeds
[32901] = true, -- Heroic Deeds
},
[5] = { -- Phase 5 (Patch 5.4 Siege of Orgrimmar (Raid, Timeless Isle, Proving Grounds)
[32919] = true, -- Short-Supply Reward
[32922] = true, -- Short-Supply Reward
[32923] = true, -- Short-Supply Reward
[32924] = true, -- Short-Supply Reward
[32949] = true, -- Tracking Quest: Guru Kukuru
[32956] = true, -- Tracking Quest - Spectral Pirate Treasure
[32957] = true, -- Sunken Hozen Treasure - Tracking Quest
[32959] = true, -- Tracking Quest - Daily - Zhu-Gon the Sour/Skunky Beer
[32960] = true, -- Cave-In - Tracking Quest
[32961] = true, -- Scary Ghosts and Nice Sprites - Tracking Quest
[32962] = true, -- \"Tom\" Bone Apart - Tracking Quest
[32964] = true, -- Tracking Quest: Ghost Pirate Battle - Completed
[32965] = true, -- Tracking Quest: Ghost Pirate Battle - Looted Treasure
[32966] = true, -- Tracking Quest - Daily - Chelon
[32967] = true, -- Tracking Quest - Daily - Cranegnasher
[32968] = true, -- Rope Drop Tracking Quest
[32969] = true, -- Pillar Hopping Tracking Quest
[32970] = true, -- Pirate Ship Mast Tracking Quest
[32971] = true, -- Feather Fall Tracking Quest
[32972] = true, -- Avatar of Flame Transform Tracking Quest
[32973] = true, -- Avatar of Flame Kill Tracking Quest
[32974] = true, -- Rolo's Riddle
[32975] = true, -- Rolo's Riddle
[32976] = true, -- Rolo's Riddle
[32997] = true, -- Tracking Quest - First - Zesqua
[33018] = true, -- Noodle Secrets Long Forgotten
[33020] = true, -- The Lost Secret of the Secret Ingredient
[33021] = true, -- Secrets Lost, Forever?
[33022] = true, -- Catch and Carry
[33024] = true, -- Is That A Real Measurement?
[33026] = true, -- These Aren't Your Fatty Goatsteaks
[33027] = true, -- The Secret Ingredient Is...
[33047] = true, -- Short-Supply Reward
[33087] = true, -- Meet Me Back at the Inn
[33088] = true, -- A Timeless Discovery
[33089] = true, -- FLAG - Proving Grounds - Damage Bronze
[33090] = true, -- FLAG - Proving Grounds - Damage Silver
[33091] = true, -- FLAG - Proving Grounds - Damage Gold
[33092] = true, -- FLAG - Proving Grounds - Tank Bronze
[33093] = true, -- FLAG - Proving Grounds - Tank Silver
[33094] = true, -- FLAG - Proving Grounds - Tank Gold
[33095] = true, -- FLAG - Proving Grounds - Healer Bronze
[33096] = true, -- FLAG - Proving Grounds - Healer Silver
[33097] = true, -- FLAG - Proving Grounds - Healer Gold
[33098] = true, -- Secrets of the Timeless Isle
[33100] = true, -- The Emperor's Way
[33104] = true, -- A Pandaren Legend
[33105] = true, -- Judgment of the Black Prince
[33107] = true, -- Bad Feeling, Worse Result
[33109] = true, -- Short-Supply Reward
[33117] = true, -- Short-Supply Reward
[33118] = true, -- Short-Supply Reward
[33124] = true, -- Fishing with Fin - Tracking Quest
[33133] = true, -- Warforged Seals
[33134] = true, -- Warforged Seals
[33136] = true, -- The Rainy Day is Here
[33137] = true, -- The Celestial Tournament
[33138] = true, -- Why Do We Fight?
[33139] = true, -- Secrets Lost, Forever?
[33146] = true, -- Noodle Time
[33147] = true, -- The Last Gasp of Y'Shaarj
[33156] = true, -- Time Keeper Kairoz
[33160] = true, -- Time Keeper Kairoz
[33161] = true, -- A Timeless Tour
[33162] = true, -- Weekly Vignette Boss Kill - Tracking Quest
[33163] = true, -- Weekly Vignette Loot Chest - Tracking Quest
[33164] = true, -- Weekly Vignette Event Compeltion - Tracking Quest
[33170] = true, -- One-Time Chest 000
[33171] = true, -- One-Time Chest 001
[33172] = true, -- One-Time Chest 002
[33173] = true, -- One-Time Chest 003
[33174] = true, -- One-Time Chest 004
[33175] = true, -- One-Time Chest 005
[33176] = true, -- One-Time Chest 006
[33177] = true, -- One-Time Chest 007
[33178] = true, -- One-Time Chest 008
[33179] = true, -- One-Time Chest 009
[33180] = true, -- One-Time Chest 010
[33181] = true, -- One-Time Chest 011
[33182] = true, -- One-Time Chest 012
[33183] = true, -- One-Time Chest 013
[33184] = true, -- One-Time Chest 014
[33185] = true, -- One-Time Chest 015
[33186] = true, -- One-Time Chest 016
[33187] = true, -- One-Time Chest 017
[33188] = true, -- One-Time Chest 018
[33189] = true, -- One-Time Chest 019
[33190] = true, -- One-Time Chest 020
[33191] = true, -- One-Time Chest 021
[33192] = true, -- One-Time Chest 022
[33193] = true, -- One-Time Chest 023
[33194] = true, -- One-Time Chest 024
[33195] = true, -- One-Time Chest 025
[33196] = true, -- One-Time Chest 026
[33197] = true, -- One-Time Chest 027
[33198] = true, -- One-Time Chest - Stump Center
[33199] = true, -- One-Time Chest - Stump SW Shore
[33200] = true, -- One-Time Chest - Stump West
[33201] = true, -- One-Time Chest - Ordo Lake Lower
[33202] = true, -- One-Time Chest - Steam Shore
[33203] = true, -- One-Time Chest - Cavern of Lost Spirits
[33204] = true, -- One-Time Chest - Carry Bird 2
[33205] = true, -- One-Time Chest - Carry Bird 1
[33206] = true, -- One-Time Chest - Gulp Frogs
[33207] = true, -- One-Time Chest - Hammer Cavern
[33208] = true, -- One-Time Chest - Ordo Chest 000
[33209] = true, -- One-Time Chest - Ordo Chest 001
[33210] = true, -- One-Time Chest - Blazing Chest
[33211] = true, -- A Timeless Question
[33216] = true, -- One-Time Chest - T1G1
[33217] = true, -- One-Time Chest - T1G2
[33218] = true, -- One-Time Chest - T1G3
[33219] = true, -- One-Time Chest - T1G4
[33220] = true, -- One-Time Chest - T2
[33221] = true, -- One-Time Chest - T3
[33222] = true, -- Little Tommy Newcomer
[33225] = true, -- Short-Supply Reward
[33226] = true, -- Short-Supply Reward
[33227] = true, -- One-Time Chest 028
[33228] = true, -- Time In Your Hands
[33229] = true, -- A Flash of Bronze...
[33230] = true, -- A Flash of Bronze...
[33231] = true, -- Journey to the Timeless Isle
[33232] = true, -- Journey to the Timeless Isle
[33233] = true, -- Short-Supply Reward
[33234] = true, -- Meaty Crane Leg
[33235] = true, -- Great Turtle Meat
[33236] = true, -- Heavy Yak Flank
[33238] = true, -- Thick Tiger Haunch
[33239] = true, -- Pristine Firestorm Egg
[33248] = true, -- Proving Grounds - Available on release?
[33249] = true, -- Proving Grounds - Available on release?
[33250] = true, -- A Time-Lost Treasure
[33257] = true, -- Sprite Fright - Tracking Quest
[33258] = true, -- Tracking Quest - First - Karkanos
[33259] = true, -- Tracking Quest - First - Spirit of Jadefire
[33260] = true, -- Tracking Quest - First - Gu'chi the Swarmbringer
[33261] = true, -- Tracking Quest - First - Emerald Gander
[33270] = true, -- Tracking Quest - First - Ironfur Steelhorn
[33272] = true, -- Tracking Quest - First - Great Turtle Furyshell
[33273] = true, -- Tracking Quest - First - Leafmender
[33274] = true, -- Tracking Quest - First - Champion of the Black Flame
[33275] = true, -- Tracking Quest - First - Garnia
[33276] = true, -- Tracking Quest - First - Bufo
[33277] = true, -- Tracking Quest - First - Monstrous Spineclaw
[33278] = true, -- Tracking Quest - First - Imperial Python
[33279] = true, -- Tracking Quest - First - Tsavo'ka
[33280] = true, -- Tracking Quest - First - Stinkbraid
[33281] = true, -- Tracking Quest - First - Jakur of Ordon
[33283] = true, -- Tracking Quest - First - Rock Moss
[33284] = true, -- Tracking Quest - First - Urdur the Cauterizer
[33285] = true, -- Tracking Quest - First - Flintlord Gairan
[33286] = true, -- Tracking Quest - First - Cinderfall
[33287] = true, -- Tracking Quest - First - Huolon
[33288] = true, -- Tracking Quest - First - Archiereus of Flame
[33289] = true, -- Tracking Quest - First - Evermaw
[33290] = true, -- Tracking Quest - First - Dread Ship Vazuvius
[33291] = true, -- Tracking Quest - First - Golganarr
[33292] = true, -- Tracking Quest - Daily - Karkanos
[33293] = true, -- Tracking Quest - Daily - Spirit of Jadefire
[33294] = true, -- Tracking Quest - Daily - Gu'chi the Swarmbringer
[33295] = true, -- Tracking Quest - Daily - Emerald Gander
[33296] = true, -- Tracking Quest - Daily - Ironfur Steelhorn
[33297] = true, -- Tracking Quest - Daily - Great Turtle Furyshell
[33298] = true, -- Tracking Quest - Daily - Leafmender
[33299] = true, -- Tracking Quest - Daily - Champion of the Black Flame
[33300] = true, -- Tracking Quest - Daily - Garnia
[33301] = true, -- Tracking Quest - Daily - Bufo
[33302] = true, -- Tracking Quest - Daily - Monstrous Spineclaw
[33303] = true, -- Tracking Quest - Daily - Imperial Python
[33304] = true, -- Tracking Quest - Daily - Tsavo'ka
[33305] = true, -- Tracking Quest - Daily - Stinkbraid
[33306] = true, -- Tracking Quest - Daily - Jakur of Ordon
[33307] = true, -- Tracking Quest - Daily - Rock Moss
[33308] = true, -- Tracking Quest - Daily - Urdur the Cauterizer
[33309] = true, -- Tracking Quest - Daily - Flintlord Gairan
[33310] = true, -- Tracking Quest - Daily - Cinderfall
[33311] = true, -- Tracking Quest - Daily - Huolon
[33312] = true, -- Tracking Quest - Daily - Archiereus of Flame
[33313] = true, -- Tracking Quest - Daily - Evermaw
[33314] = true, -- Tracking Quest - Daily - Dread Ship Vazuvius
[33315] = true, -- Tracking Quest - Daily - Golganarr
[33316] = true, -- Tracking Quest - Daily - Zesqua
[33317] = true, -- Tracking Quest - First - Zhu-Gon the Bitter/Skunky Beer
[33318] = true, -- Tracking Quest - First - Chelon
[33319] = true, -- Tracking Quest - First - Cranegnasher
[33321] = true, -- Tracking Quest - First - Watcher Osu
[33322] = true, -- Tracking Quest - Daily - Watcher Osu
[33332] = true, -- Hints From The Past
[33333] = true, -- Timeless Treasures
[33334] = true, -- Strong Enough To Survive
[33335] = true, -- The Last Emperor
[33336] = true, -- The Essence of Time
[33337] = true, -- A Vision in Time
[33338] = true, -- Empowering the Hourglass
[33340] = true, -- Timeless Nutriment
[33341] = true, -- Wayshrines Of The Celestials
[33342] = true, -- Drive Back The Flame
[33343] = true, -- The Archiereus Of Flame
[33345] = true, -- Dark Shaman Weekly Attempt
[33348] = true, -- \"Tom\" Bone Apart - Intro Tracking Quest
[33358] = true, -- Noodle Time: Bonus
[33360] = true, -- 5.4 Raid - RRP - Boss 1 Legendary Quest
[33361] = true, -- 5.4 Raid - RRP - Boss 2 Legendary Quest
[33362] = true, -- 5.4 Raid - RRP - Boss 3 Legendary Quest
[33363] = true, -- 5.4 Raid - RRP - Boss 4 Legendary Quest
[33364] = true, -- 5.4 Raid - RRP - Boss 5 Legendary Quest
[33365] = true, -- 5.4 Raid - RRP - Boss 6 Legendary Quest
[33366] = true, -- 5.4 Raid - RRP - Boss 7 Legendary Quest
[33367] = true, -- 5.4 Raid - RRP - Boss 8 Legendary Quest
[33368] = true, -- 5.4 Raid - RRP - Boss 9 Legendary Quest
[33369] = true, -- 5.4 Raid - RRP - Boss 10 Legendary Quest
[33370] = true, -- 5.4 Raid - RRP - Boss 11 Legendary Quest
[33371] = true, -- 5.4 Raid - RRP - Boss 12 Legendary Quest
[33372] = true, -- 5.4 Raid - RRP - Boss 13 Legendary Quest
[33373] = true, -- 5.4 Raid - RRP - Boss 14 Legendary Quest
[33374] = true, -- Path of the Mistwalker
[33375] = true, -- Refining The Vision
[33376] = true, -- Seeking Fate
[33377] = true, -- Hidden Threads
[33378] = true, -- Courting Destiny
[33379] = true, -- One Final Turn
[33385] = true, -- Kairoz Weekly Tracking Quest
[33602] = true, -- Short-Supply Reward
[33603] = true, -- Short-Supply Reward
[34060] = true, -- Krasarang RRP - Daily Vignette - Rogue Boss
[34061] = true, -- Krasarang RRP - Daily Vignette - Priest Boss
[34062] = true, -- Krasarang RRP - Daily Vignette - Warrior Boss
},
}
---@param questsToBlacklist table<QuestId, boolean>
---@param contentPhase number
---@return table<QuestId, boolean>
function ContentPhases.BlacklistMoPQuestsByPhase(questsToBlacklist, contentPhase)
for phase = contentPhase + 1, #questsToBlacklistByPhase do
for questId in pairs(questsToBlacklistByPhase[phase]) do
questsToBlacklist[questId] = true
end
end
return questsToBlacklist
end
@@ -1,799 +0,0 @@
---@type ContentPhases
local ContentPhases = QuestieLoader:ImportModule("ContentPhases")
-- 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 questsToBlacklistByPhase = {
[1] = { -- SoD Phase 1: level cap 25 (this is required for counting, but should stay empty)
},
[2] = { -- SoD Phase 2: level cap 40
[1152] = true, -- Test of Lore; minLevel raised to 26 in P1 for some reason, might be retooled as part of P2?
[1488] = true, -- The Corruptor; minLevel raised to 26 in P1
[8370] = true, -- Conquering Arathi Basin
[8374] = true, -- Conquering Arathi Basin
[8171] = true, -- The Battle for Arathi Basin!
[8168] = true, -- The Battle for Arathi Basin!
},
[3] = { -- SoD Phase 3: level cap 50
[2847] = true, -- Wild Leather Armor
[2854] = true, -- Wild Leather Armor
[3526] = true, -- Goblin Engineering
[3629] = true, -- Goblin Engineering
[3630] = true, -- Gnome Engineering
[3632] = true, -- Gnome Engineering
[3633] = true, -- Goblin Engineering
[3634] = true, -- Gnome Engineering
[3635] = true, -- Gnome Engineering
[3637] = true, -- Gnome Engineering
[4181] = true, -- Goblin Engineering
[5284] = true, -- The Way of the Weaponsmith
[5302] = true, -- The Way of the Weaponsmith
[6607] = true, -- Nat Pagle, Angler Extreme (Fishing 225+ quest)
[6608] = true, -- You Too Good. (Fishing 225+ quest)
[6609] = true, -- I Got Nothin' Left! (Fishing 225+ pre quest)
[6610] = true, -- Clamlette Surprise (Cooking 225+ quest)
[6611] = true, -- To Gadgetzan You Go! (Cooking 225+ pre quest)
[6612] = true, -- I Know A Guy... (Cooking 225+ pre quest)
[6622] = true, -- Horde Triage
[6623] = true, -- Horde Trauma
[6624] = true, -- Alliance Triage
[6625] = true, -- Alliance Trauma
},
[4] = { -- SoD Phase 4 == Era Phase 1+2: level cap 60, MC, Ony, world bosses
},
[5] = { -- SoD Phase 5 == Era Phase 3: BWL + Zul'Gurub
[4788] = true, -- The Final Tablets
[5065] = true, -- The Lost Tablets of Mosh'aru
[7761] = true, -- Blackhand's Command; BWL attune
[7783] = true, -- The Lord of Blackrock Part 1
[7784] = true, -- The Lord of Blackrock Part 2
[7787] = true, -- Rise, Thunderfury!
[8181] = true, -- Confront Yeh'kinya
[8182] = true, -- The Hand of Rastakhan
[8411] = true,
[8056] = true,
[8057] = true,
[8064] = true,
[8065] = true,
[8074] = true,
[8075] = true,
[8110] = true,
[8111] = true,
[8112] = true,
[8116] = true,
[8117] = true,
[8118] = true,
[8041] = true,
[8042] = true,
[8043] = true,
[8045] = true,
[8046] = true,
[8047] = true,
[8049] = true,
[8050] = true,
[8051] = 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,
[8106] = true,
[8107] = true,
[8108] = true,
[8141] = true,
[8142] = true,
[8143] = true,
[8145] = true,
[8146] = true,
[8147] = true,
[8195] = true,
[8196] = true,
[8201] = true,
[8227] = true,
[8238] = true,
[8239] = true,
[8240] = true,
[8243] = true,
[8246] = 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, -- Taking Back Silithus
[8276] = true, -- Taking Back Silithus
[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,
[9415] = true,
[9416] = true,
[9419] = true,
[9422] = true,
},
[6] = { -- SoD Phase 6 == Era Phase 5: AQ
[8286] = true, -- Shifting Sands questline - What Tomorrow Brings
[8288] = true, -- Shifting Sands questline - Only One May Rise
[8301] = true, -- Shifting Sands questline - The Path of the Righteous
[8302] = true, -- Shifting Sands questline - The Hand of the Righteous
[8303] = true, -- Shifting Sands questline - Anachronos
[8305] = true, -- Shifting Sands questline - Long Forgotten Memories
[8519] = true, -- Shifting Sands questline - A Pawn on the Eternal Board
[8555] = true, -- Shifting Sands questline - The Charge of the Dragonflights
[8730] = true, -- Shifting Sands questline - Nefarius's Corruption
[8733] = true, -- Shifting Sands questline - Eranikus, Tyrant of the Dream
[8734] = true, -- Shifting Sands questline - Tyrande and Remulos
[8735] = true, -- Shifting Sands questline - The Nightmare's Corruption
[8736] = true, -- Shifting Sands questline - The Nightmare Manifests
[8741] = true, -- Shifting Sands questline - The Champion Returns
[8575] = true, -- Shifting Sands questline - Azuregos's Magical Ledger
[8576] = true, -- Shifting Sands questline - Translating the Ledger
[8577] = true, -- Shifting Sands questline - Stewvul, Ex-B.F.F.
[8578] = true, -- Shifting Sands questline - Scrying Goggles? No Problem!
[8584] = true, -- Shifting Sands questline - Never Ask Me About My Business
[8585] = true, -- Shifting Sands questline - The Isle of Dread!
[8586] = true, -- Shifting Sands questline - Dirge's Kickin' Chimaerok Chops
[8587] = true, -- Shifting Sands questline - Return to Narain
[8597] = true, -- Shifting Sands questline - Draconic for Dummies
[8598] = true, -- Shifting Sands questline - rAnS0m
[8599] = true, -- Shifting Sands questline - Love Song for Narain
[8606] = true, -- Shifting Sands questline - Decoy!
[8620] = true, -- Shifting Sands questline - The Only Prescription
[8728] = true, -- Shifting Sands questline - The Good News and The Bad News
[8729] = true, -- Shifting Sands questline - The Wrath of Neptulon
[8742] = true, -- Shifting Sands questline - The Might of Kalimdor
[8743] = true, -- Shifting Sands questline - Bang a Gong!
[8745] = true, -- Shifting Sands questline - Treasure of the Timeless One
[8579] = true, -- Mortal Champions
[8789] = true, -- Imperial Qiraji Armaments
[8790] = true, -- Imperial Qiraji Regalia
[8791] = true, -- The Fall of Ossirian
[8801] = true, -- C'Thun's Legacy
},
[7] = { -- SoD Phase 7 == Era Phase 6: Naxxramas
[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,
[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,
[9154] = true,
[9260] = true,
[9261] = true,
[9262] = true,
[9263] = true,
[9264] = true,
[9265] = true,
[9211] = true,
[9213] = true,
[9229] = true,
[9230] = 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,
[87360] = true, -- The Fall of Kel'Thuzad
[87361] = true, -- Laid to Rest
[87362] = true, -- Hope Begins in the Dark
[87364] = true, -- Seal the Deal
[88721] = true, -- Superior Armaments of Battle - Friend of the Dawn
[88722] = true, -- Superior Armaments of Battle - Honored Amongst the Dawn
[88723] = true, -- Superior Armaments of Battle - Revered Amongst the Dawn
[88724] = true, -- Superior Armaments of Battle - Exalted Amongst the Dawn
[88725] = true, -- Epic Armaments of Battle - Friend of the Dawn
[88726] = true, -- Epic Armaments of Battle - Honored Amongst the Dawn
[88727] = true, -- Epic Armaments of Battle - Revered Amongst the Dawn
[88728] = true, -- Epic Armaments of Battle - Exalted Amongst the Dawn
[88730] = true, -- The Only Song I Know...
[88744] = true, -- Under the Shadow
[88745] = true, -- Shadows of Doom
[88748] = true, -- Cracked Necrotic Crystal
},
[8] = { -- Never appearing in Season of Discovery
[1203] = true, -- Jarl Needs a Blade - Replaced by 81570
[1878] = true, -- Water Pouch Bounty - Replaced by 82209
[2758] = true, -- The Origins of Smithing - Replaced by 80241
[2849] = true, -- Wild Leather Vest - Replaced by 82657
[2856] = true, -- Wild Leather Vest - Replaced by 82656
[2881] = true, -- Troll Necklace Bounty - Replaced by 82210
[2950] = true, -- Nogg's Ring Redo - Replaced by 80141
[3446] = true, -- Into the Depths - Replaced by 82096
[4146] = true, -- Zapper Fuel - Replcaed by 82101
[4148] = true, -- Bloodpetal Zapper
[5283] = true, -- The Art of the Armorsmith -- Replaced by 85713
[5301] = true, -- The Art of the Armorsmith -- Replaced by 85712
[5124] = true, -- Fiery Plate Gauntlets -- Replaced by 84495
[5141] = true, -- Dragonscale Leatherworking -- Replaced by 85702
[5143] = true, -- Tribal Leatherworking -- Replaced by 85705
[5144] = true, -- Elemental Leatherworking -- Replaced by 85703
[5145] = true, -- Dragonscale Leatherworking -- Replaced by 85701
[5146] = true, -- Elemental Leatherworking -- Replaced by 85704
[5148] = true, -- Tribal Leatherworking -- Replaced by 85706
[5284] = true, -- The Way of the Weaponsmith - Replaced by 82662
[5302] = true, -- The Way of the Weaponsmith - Replaced by 82665
[5305] = true, -- Sweet Serenity - Replaced by 85700
[5306] = true, -- Snakestone of the Shadow Huntress - Replaced by 85700
[5307] = true, -- Corruption - Replaced by 85700
[7604] = true, -- A Binding Contract - Replaced by 84338
[7636] = true, -- Stave of the Ancients - Replaced by 84546
[7486] = true, -- A Hero's Reward - Replaced by 84545
[7782] = true, -- The Lord of Blackrock - Replaced by 85643
[7784] = true, -- The Lord of Blackrock - Replaced by 85644
[8467] = true, -- Feathers for Nafien - Replaced by 84777
[8769] = true, -- A Ticking Present - Replaced by 79637
[8781] = true, -- Arms for the Field - Replaced by 85798
[7622] = true, -- The Balance of Light and Shadow - Replaced by 84590
[7785] = true, -- Examine the Vessel - Replaced by 85442
[7786] = true, -- Thunderaan the Windseeker - Replaced by 85441
[7787] = true, -- Rise, Thunderfury! - Replaced by 85443
[8446] = true, -- Shrouded in Nightmare (Emerald Dream Dragons) - Replaced by 86679
[8447] = true, -- Waking Legends (Emerald Dream Dragons) - Replaced by 86680
[8620] = true, -- The Only Prescription - Replaced by 86444
[9023] = true, -- The Perfect Poison - Replaced by 86674
[8729] = true, -- The Wrath of Neptulon - Replaced by 86445
[8730] = true, -- Nefarius's Corruption - Replaced by 86442
[8736] = true, -- The Nightmare Manifests - Replaced by 86443
[8745] = true, -- Treasure of the Timeless One - Replaced by 86449
[8791] = true, -- The Fall of Ossirian - Replaced by 86673
[8802] = true, -- The Savior of Kalimdor - Replaced by 86670
[85643] = true, -- The Lord of Blackrock - Replaced by 88969
[85644] = true, -- The Lord of Blackrock - Replaced by 88968
-- Original Blackfathom Deeps quests (instance reworked to raid, new quest IDs)
[909] = true,
[971] = true,
[1198] = true,
[1199] = true,
[1200] = true,
[1275] = true,
[6561] = true,
[6565] = true,
[6921] = true,
[6922] = true,
-- Original Gnomeregan quests (instance reworked to raid, new quest IDs)
[2841] = true,
[2842] = true,
[2843] = true,
[2904] = true,
[2922] = true,
[2923] = true,
[2924] = true,
[2925] = true,
[2926] = true,
[2927] = true,
[2928] = true,
[2929] = true,
[2930] = true,
[2931] = true,
[2945] = true,
[2947] = true,
[2949] = true,
[2951] = true,
[2952] = true,
[2953] = true,
[2962] = true,
[4601] = true,
[4602] = true,
[4603] = true,
[4604] = true,
[4605] = true,
[4606] = true,
[81975] = true, -- Never was made available as it seems
-- Original Sunken Temple quests (instance reworked to raid, new quest IDs)
[1445] = true,
[1446] = true,
[1475] = true,
[3373] = true,
[3374] = true,
[3447] = true,
[3512] = true,
[3528] = true,
[4143] = true,
[8232] = true,
[8236] = true,
[8253] = true,
[8257] = true,
[8413] = true,
[8418] = true,
[8422] = true,
[8425] = true,
[9053] = true,
-- Original Dire Maul Book quests
[7498] = true, -- Replaced by 84548
[7499] = true, -- Replaced by 84550
[7500] = true, -- Replaced by 84549
[7501] = true, -- Replaced by 84551
-- Original ZG quests
[8044] = true, -- The Rage of Mugamba - Replaced by 85612
[8048] = true, -- The Hero's Brand - Replaced by 85617
[8052] = true, -- The All-Seeing Eye of Zuldazar - Replaced by 85616
[8104] = true, -- The Jewel of Kajaro - Replaced by 85629
[8109] = true, -- Kezan's Unstoppable Taint - Replaced by 85625
[8113] = true, -- Pristine Enchanted South Seas Kelp - Replaced by 85608
[8119] = true, -- The Unmarred Vision of Voodress - Replaced by 85604
[8144] = true, -- Zandalarian Shadow Mastery Talisman - Replaced by 85633
[8148] = true, -- Maelstrom's Wrath - Replaced by 85637
[8183] = true, -- The Heart of Hakkar - Replaced by 85660
[8184] = true, -- Presence of Might - Replaced by 85595
[8185] = true, -- Syncretist's Sigil - Replaced by 85601
[8186] = true, -- Death's Embrace - Replaced by 85596
[8187] = true, -- Falcon's Call - Replaced by 85597
[8188] = true, -- Vodouisant's Vigilant Embrace - Replaced by 85603
[8189] = true, -- Presence of Sight - Replaced by 85600
[8190] = true, -- Hoodoo Hex - Replaced by 85599
[8191] = true, -- Prophetic Aura - Replaced by 85598
[8192] = true, -- Animist's Caress - Replaced by 85602
-- Old T0.5 exchange quests
[8905] = true, -- An Earnest Proposition
[8906] = true, -- An Earnest Proposition
[8907] = true, -- An Earnest Proposition
[8908] = true, -- An Earnest Proposition
[8909] = true, -- An Earnest Proposition
[8910] = true, -- An Earnest Proposition
[8911] = true, -- An Earnest Proposition
[8912] = true, -- An Earnest Proposition
[8913] = true, -- An Earnest Proposition
[8914] = true, -- An Earnest Proposition
[8915] = true, -- An Earnest Proposition
[8916] = true, -- An Earnest Proposition
[8917] = true, -- An Earnest Proposition
[8918] = true, -- An Earnest Proposition
[8919] = true, -- An Earnest Proposition
[8920] = true, -- An Earnest Proposition
[8926] = true, -- Just Compensation
[8927] = true, -- Just Compensation
[8931] = true, -- Just Compensation
[8932] = true, -- Just Compensation
[8933] = true, -- Just Compensation
[8934] = true, -- Just Compensation
[8935] = true, -- Just Compensation
[8936] = true, -- Just Compensation
[8937] = true, -- Just Compensation
[8938] = true, -- Just Compensation
[8939] = true, -- Just Compensation
[8940] = true, -- Just Compensation
[8941] = true, -- Just Compensation
[8942] = true, -- Just Compensation
[8943] = true, -- Just Compensation
[8944] = true, -- Just Compensation
[8951] = true, -- Anthion's Parting Words
[8952] = true, -- Anthion's Parting Words
[8953] = true, -- Anthion's Parting Words
[8954] = true, -- Anthion's Parting Words
[8955] = true, -- Anthion's Parting Words
[8956] = true, -- Anthion's Parting Words
[8957] = true, -- Anthion's Parting Words
[8958] = true, -- Anthion's Parting Words
[8959] = true, -- Anthion's Parting Words
[8999] = true, -- Saving the Best for Last
[9000] = true, -- Saving the Best for Last
[9001] = true, -- Saving the Best for Last
[9002] = true, -- Saving the Best for Last
[9003] = true, -- Saving the Best for Last
[9004] = true, -- Saving the Best for Last
[9005] = true, -- Saving the Best for Last
[9006] = true, -- Saving the Best for Last
[9007] = true, -- Saving the Best for Last
[9008] = true, -- Saving the Best for Last
[9009] = true, -- Saving the Best for Last
[9010] = true, -- Saving the Best for Last
[9011] = true, -- Saving the Best for Last
[9012] = true, -- Saving the Best for Last
[9013] = true, -- Saving the Best for Last
[9014] = true, -- Saving the Best for Last
[9016] = true, -- Anthion's Parting Words
[9017] = true, -- Anthion's Parting Words
[9018] = true, -- Anthion's Parting Words
[9019] = true, -- Anthion's Parting Words
[9020] = true, -- Anthion's Parting Words
[9021] = true, -- Anthion's Parting Words
[9022] = true, -- Anthion's Parting Words
-- Darkmoon Faire quests
[7902] = true, -- Vibrant Plumes
[7903] = true, -- Evil Bat Eyes
[8222] = true, -- Glowing Scorpid Blood
[7901] = true, -- Soft Bushy Tails
[7899] = true, -- Small Furry Paws
[7900] = true, -- Torn Bear Pelts
[7946] = true, -- Spawn of Jubjub
[8223] = true, -- More Glowing Scorpid Blood
[7943] = true, -- More Bat Eyes
[7894] = true, -- Copper Modulator
[7898] = true, -- Thorium Widget
[7885] = true, -- Armor Kits
[7942] = true, -- More Thorium Widgets
[7883] = true, -- The World's Largest Gnome!
[7892] = true, -- Big Black Mace
[7939] = true, -- More Dense Grinding Stones
[7893] = true, -- Rituals of Strength
[7891] = true, -- Green Iron Bracers
[7896] = true, -- Green Fireworks
[7884] = true, -- Crocolisk Boy and the Bearded Murloc
[7882] = true, -- Carnival Jerkins
[7897] = true, -- Mechanical Repair Kits
[7895] = true, -- Whirring Bronze Gizmo
[7941] = true, -- More Armor Kits
[7881] = true, -- Carnival Boots
[7890] = true, -- Heavy Grinding Stone
[7889] = true, -- Coarse Weightstone
[7907] = true, -- Darkmoon Beast Deck
[7927] = true, -- Darkmoon Warlords Deck
[7928] = true, -- Darkmoon Elementals Deck
[7929] = true, -- Darkmoon Portals Deck
-- ZG quests
[8053] = true, -- Paragons of Power: The Freethinker's Armguards
[8054] = true, -- Paragons of Power: The Freethinker's Belt
[8055] = true, -- Paragons of Power: The Freethinker's Breastplate
[8056] = true, -- Paragons of Power: The Augur's Bracers
[8057] = true, -- Paragons of Power: The Haruspex's Bracers
[8058] = true, -- Paragons of Power: The Vindicator's Armguards
[8059] = true, -- Paragons of Power: The Demoniac's Wraps
[8060] = true, -- Paragons of Power: The Illusionist's Wraps
[8061] = true, -- Paragons of Power: The Confessor's Wraps
[8062] = true, -- Paragons of Power: The Predator's Bracers
[8063] = true, -- Paragons of Power: The Madcap's Bracers
[8064] = true, -- Paragons of Power: The Haruspex's Belt
[8065] = true, -- Paragons of Power: The Haruspex's Tunic
[8066] = true, -- Paragons of Power: The Predator's Belt
[8067] = true, -- Paragons of Power: The Predator's Mantle
[8068] = true, -- Paragons of Power: The Illusionist's Mantle
[8069] = true, -- Paragons of Power: The Illusionist's Robes
[8070] = true, -- Paragons of Power: The Confessor's Bindings
[8071] = true, -- Paragons of Power: The Confessor's Mantle
[8072] = true, -- Paragons of Power: The Madcap's Mantle
[8073] = true, -- Paragons of Power: The Madcap's Tunic
[8074] = true, -- Paragons of Power: The Augur's Belt
[8075] = true, -- Paragons of Power: The Augur's Hauberk
[8076] = true, -- Paragons of Power: The Demoniac's Mantle
[8077] = true, -- Paragons of Power: The Demoniac's Robes
[8078] = true, -- Paragons of Power: The Vindicator's Belt
[8079] = true, -- Paragons of Power: The Vindicator's Breastplate
-- AQ War Efforts
[8548] = true, -- Volunteer's Battlegear - Replaced by 86675
[8572] = true, -- Veteran's Battlegear - Replaced by 86676
[8573] = true, -- Champion's Battlegear - Replaced by 86677
[8574] = true, -- Stalwart's Battlegear - Replaced by 86678
[8792] = true, -- The Horde Needs Your Help!
[8793] = true, -- The Horde Needs Your Help!
[8794] = true, -- The Horde Needs Your Help!
[8795] = true, -- The Alliance Needs Your Help!
[8796] = true, -- The Alliance Needs Your Help!
[8797] = true, -- The Alliance Needs Your Help!
-- AQ Raid quests
[8789] = true, -- Imperial Qiraji Armaments - Replaced by 86672
[8790] = true, -- Imperial Qiraji Regalia - Replaced by 86671
[78265] = true, -- Fish Oil (replaced by 82850)
[78266] = true, -- Dark Iron Ordinance (replaced by 82851)
[78267] = true, -- Shredder Turbochargers (replaced by 82853)
[81716] = true, -- Recover Incursion Field Report: Duskwood
[81727] = true, -- Recover Incursion Field Report: Ashenvale
[81728] = true, -- Recover Incursion Field Report: Hinterlands
[81729] = true, -- Recover Incursion Field Report: Feralas
-- AQ Brood of Nozdormu Rings (replaced with vendor)
[8747] = true, -- The Path of the Protector
[8748] = true, -- The Path of the Protector
[8749] = true, -- The Path of the Protector
[8750] = true, -- The Path of the Protector
[8751] = true, -- The Protector of Kalimdor
[8752] = true, -- The Path of the Conqueror
[8753] = true, -- The Path of the Conqueror
[8754] = true, -- The Path of the Conqueror
[8755] = true, -- The Path of the Conqueror
[8756] = true, -- The Qiraji Conqueror
[8757] = true, -- The Path of the Invoker
[8758] = true, -- The Path of the Invoker
[8759] = true, -- The Path of the Invoker
[8760] = true, -- The Path of the Invoker
[8761] = true, -- The Grand Invoker
[8764] = true, -- The Changing of Paths - Protector No More
[8765] = true, -- The Changing of Paths - Invoker No More
[8766] = true, -- The Changing of Paths - Conqueror No More
-- AQ Tier 2.5 Gear (replaced with vendor)
[8556] = true, -- Signet of Unyielding Strength
[8557] = true, -- Drape of Unyielding Strength
[8558] = true, -- Sickle of Unyielding Strength
[8689] = true, -- Shroud of Infinite Wisdom
[8690] = true, -- Cloak of the Gathering Storm
[8691] = true, -- Drape of Vaulted Secrets
[8692] = true, -- Cloak of Unending Life
[8693] = true, -- Cloak of Veiled Shadows
[8694] = true, -- Shroud of Unspoken Names
[8695] = true, -- Cape of Eternal Justice
[8696] = true, -- Cloak of the Unseen Path
[8697] = true, -- Ring of Infinite Wisdom
[8698] = true, -- Ring of the Gathering Storm
[8699] = true, -- Band of Vaulted Secrets
[8700] = true, -- Band of Unending Life
[8701] = true, -- Band of Veiled Shadows
[8702] = true, -- Ring of Unspoken Names
[8703] = true, -- Ring of Eternal Justice
[8704] = true, -- Signet of the Unseen Path
[8705] = true, -- Gavel of Infinite Wisdom
[8706] = true, -- Hammer of the Gathering Storm
[8707] = true, -- Blade of Vaulted Secrets
[8708] = true, -- Mace of Unending Life
[8709] = true, -- Dagger of Veiled Shadows
[8710] = true, -- Kris of Unspoken Names
[8711] = true, -- Blade of Eternal Justice
[8712] = true, -- Scythe of the Unseen Path
-- Original Naxxramas quests
[9120] = true, -- The Fall of Kel'Thuzad - Replaced by 87360
[9230] = true, -- Ramaladni's Icy Grasp - Replaced by 88729
[9232] = true, -- The Only Song I Know... - Replaced by 88730
-- Invasion quests
[9094] = true, -- Argent Dawn Gloves
[9085] = true, -- Shadows of Doom
[9153] = true, -- Under the Shadow
[9292] = true, -- Cracked Necrotic Crystal
[9310] = true, -- Faint Necrotic Crystal
[9318] = true, -- Blessed Wizard Oil
[9317] = true, -- Consecrated Sharpening Stones
[9333] = true, -- Argent Dawn Gloves
[9334] = true, -- Blessed Wizard Oil
[9335] = true, -- Consecrated Sharpening Stones
[9221] = true, -- Superior Armaments of Battle - Friend of the Dawn
[9222] = true, -- Epic Armaments of Battle - Friend of the Dawn
[9223] = true, -- Superior Armaments of Battle - Honored Amongst the Dawn
[9224] = true, -- Epic Armaments of Battle - Honored Amongst the Dawn
[9225] = true, -- Epic Armaments of Battle - Revered Amongst the Dawn
[9226] = true, -- Superior Armaments of Battle - Revered Amongst the Dawn
[9227] = true, -- Superior Armaments of Battle - Exalted Amongst the Dawn
[9228] = true, -- Epic Armaments of Battle - Exalted Amongst the Dawn
[78506] = true, -- Elemental Distress - Replaced by 85772
[88713] = true, -- Never at Rest - Same as 87377 but in a different catch-up version
[88714] = true, -- Never at Rest - Same as 87377 but in a different catch-up version
[88715] = true, -- Never at Rest - Same as 87377 but in a different catch-up version
[88716] = true, -- Never at Rest - Same as 87377 but in a different catch-up version
[88717] = true, -- Never at Rest - Same as 87377 but in a different catch-up version
[88718] = true, -- Never at Rest - Same as 87377 but in a different catch-up version
-- Tier 3 quests
[9034] = true, -- Warrior
[9036] = true, -- Warrior
[9037] = true, -- Warrior
[9038] = true, -- Warrior
[9039] = true, -- Warrior
[9040] = true, -- Warrior
[9041] = true, -- Warrior
[9042] = true, -- Warrior
[9043] = true, -- Paladin
[9044] = true, -- Paladin
[9045] = true, -- Paladin
[9046] = true, -- Paladin
[9047] = true, -- Paladin
[9048] = true, -- Paladin
[9049] = true, -- Paladin
[9050] = true, -- Paladin
[9054] = true, -- Hunter
[9055] = true, -- Hunter
[9056] = true, -- Hunter
[9057] = true, -- Hunter
[9058] = true, -- Hunter
[9059] = true, -- Hunter
[9060] = true, -- Hunter
[9061] = true, -- Hunter
[9068] = true, -- Shaman
[9069] = true, -- Shaman
[9070] = true, -- Shaman
[9071] = true, -- Shaman
[9072] = true, -- Shaman
[9073] = true, -- Shaman
[9074] = true, -- Shaman
[9075] = true, -- Shaman
[9077] = true, -- Rogue
[9078] = true, -- Rogue
[9079] = true, -- Rogue
[9080] = true, -- Rogue
[9081] = true, -- Rogue
[9082] = true, -- Rogue
[9083] = true, -- Rogue
[9084] = true, -- Rogue
[9086] = true, -- Druid
[9087] = true, -- Druid
[9088] = true, -- Druid
[9089] = true, -- Druid
[9090] = true, -- Druid
[9091] = true, -- Druid
[9092] = true, -- Druid
[9093] = true, -- Druid
[9095] = true, -- Mage
[9096] = true, -- Mage
[9097] = true, -- Mage
[9098] = true, -- Mage
[9099] = true, -- Mage
[9100] = true, -- Mage
[9101] = true, -- Mage
[9102] = true, -- Mage
[9103] = true, -- Warlock
[9104] = true, -- Warlock
[9105] = true, -- Warlock
[9106] = true, -- Warlock
[9107] = true, -- Warlock
[9108] = true, -- Warlock
[9109] = true, -- Warlock
[9110] = true, -- Warlock
[9111] = true, -- Priest
[9112] = true, -- Priest
[9113] = true, -- Priest
[9114] = true, -- Priest
[9115] = true, -- Priest
[9116] = true, -- Priest
[9117] = true, -- Priest
[9118] = true, -- Priest
-- Atiesh
[9257] = true,
[9269] = true,
[9270] = true,
[9271] = true,
},
}
---@return table<number, table<number, boolean>> @All quests that should be blacklisted separated by phase
function ContentPhases.BlacklistSoDQuestsByPhase(questsToBlacklist, contentPhase)
for phase = contentPhase + 1, #questsToBlacklistByPhase do
for questId in pairs(questsToBlacklistByPhase[phase]) do
questsToBlacklist[questId] = true
end
end
return questsToBlacklist
end
@@ -1,535 +0,0 @@
---@type ContentPhases
local ContentPhases = QuestieLoader:ImportModule("ContentPhases")
-- 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 questsToBlacklistByPhase = {
[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,
[8276] = 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,
[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,
},
}
---@param questsToBlacklist table<QuestId, boolean>
---@param contentPhase number
---@return table<QuestId, boolean>
function ContentPhases.BlacklistSoMQuestsByPhase(questsToBlacklist, contentPhase)
for phase = contentPhase + 1, #questsToBlacklistByPhase do
for questId in pairs(questsToBlacklistByPhase[phase]) do
questsToBlacklist[questId] = true
end
end
return questsToBlacklist
end
@@ -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
@@ -1,676 +0,0 @@
--[[
Feast of Winter Veil 1.2.0 18 December 2004
Noblegarden 1.3.0 7 March 2005 X
Children's Week 1.4.0 5 May 2005
Darkmoon Faire 1.6.0 2 July 2005
Harvest Festival 1.6.0 2 July 2005 X
Hallow's End 1.8.0 10 October 2005
Lunar Festival 1.9.0 3 January 2006 X
Love is in the Air 1.9.3 7 February 2006
Midsummer Fire Festival 1.11.0 20 June 2006
Peon Day 1.12.1 22 August 2006 X
New Year 31st Dec - 1st Jan New Year's Eve Gregorian calendar
Lunar Festival Varies (Spring) Lunar New Year Chinese calendar
Love is in the Air 7th Feb - 20th Feb Valentine's Day
Noblegarden Varies (Easter) Easter
Children's Week 1st May - 7th May Children's Day - Japan
Mother's Day - US (and in most other countries, including: Belgium and the Netherlands)
Midsummer Fire Festival 21st June - 5th July Midsummer
Canada Day - CAN
Independence Day - US US observed! Fire in the Sky Engineers' Explosive Extravaganza
Pirates' Day 19th Sept International Talk Like a Pirate Day First observed Sept 19th, 2008.
Brewfest 20th Sept - 4th Oct Oktoberfest - Germany
Harvest Festival 27th Sept - 4th Oct Roughly Thanksgiving - Canada, US (actually celebrated in October and November in Canada and US, respectively)
Columbus Day - US
US Stress Test ended: September 12, 2004
Peon Day 30th Sept EU Closed Beta began: September 30, 2004 Observed only in Europe[1]
Hallow's End 18th Oct - 1st Nov Halloween
Day of the Dead 1st Nov - 2nd Nov Day of the Dead
WoW's Anniversary 16th Nov - 30th Nov
Pilgrim's Bounty 22nd Nov - 28th Nov Thanksgiving
Feast of Winter Veil 15th Dec - 2nd Jan Christmas
Harvest Festival history: lunar calendar 15/8 in gregorian calendar:
2009: Su-Sa 27/9 - 3/10 (wowpedia) 3/10
2010: Th-We 16/9 - 22/9 (wowpedia) 22/9
2011: Tu-Mo 6/9 - 12/9 (wowpedia) 12/9
2012: Mo-Mo 24/9 - 1/10 (wowpedia) 30/9
2013: Fr-Fr 13/9 - 20/9 (wowpedia) 19/9
2014: Tu-Tu 2/9 - 9/9 (Blizz post) 8/9
2015: Mo-Mo 21/9 - 28/9 (wowpedia) 27/9
2016: Fr-Fr 9/9 - 16/9 (Blizz post) 15/9
2017: Fr-Fr 29/9 - 6/10 (wowpedia) 4/10
2018: Tu-Tu 18/9 - 25/9 (wowpedia) 24/9
2019: Tu-Tu 10/9 - 17/9 (classic Blizz post) 13/9
2020: Tu-Tu 29/9 - 6/10 (retail Blizz post) 1/10
2021: Fr-Fr 17/9 - 24/9 (retail Blizz post) 21/9
]] --
---@class QuestieEvent
---@field public private QuestieEventPrivate
local QuestieEvent = QuestieLoader:CreateModule("QuestieEvent")
---@class QuestieEventPrivate
local _QuestieEvent = QuestieEvent.private
---[1] = Event Name
---[2] = QuestId
---[3] = Start Date (format: "DD/MM")
---[4] = End Date (format: "DD/MM")
---[5] = Start Hour and Minute (format: "HH:MM")
---[6] = End Hour and Minute (format: "HH:MM")
---[7] = Hide Quest even during event (optional, default: false)
---@alias EventQuestEntry {[1]: string, [2]: QuestId, [3]: string?, [4]: string?, [5]: string?, [6]: string?, [7]: boolean?}
-- This variable will be cleared at the end of the load, do not use, use QuestieEvent.activeQuests.
---@type EventQuestEntry[]
QuestieEvent.eventQuests = {}
---@type table<QuestId, boolean>
QuestieEvent.activeQuests = {}
QuestieEvent.calendarDataCached = false
---@type table<QuestId, string>
local eventNamesForQuests = {}
local alwaysTurnInAbleQuests = {
[7937] = true, -- Your Fortune Awaits You...
[7938] = true, -- Your Fortune Awaits You...
[7944] = true, -- Your Fortune Awaits You...
[7945] = true, -- Your Fortune Awaits You...
}
---@type QuestieDB
local QuestieDB = QuestieLoader:ImportModule("QuestieDB")
---@type QuestieCorrections
local QuestieCorrections = QuestieLoader:ImportModule("QuestieCorrections")
---@type ContentPhases
local ContentPhases = QuestieLoader:ImportModule("ContentPhases")
---@type Expansions
local Expansions = QuestieLoader:ImportModule("Expansions")
---@type QuestieNPCFixes
local QuestieNPCFixes = QuestieLoader:ImportModule("QuestieNPCFixes")
---@type QuestieTBCNpcFixes
local QuestieTBCNpcFixes = QuestieLoader:ImportModule("QuestieTBCNpcFixes")
---@type l10n
local l10n = QuestieLoader:ImportModule("l10n")
local _WithinDates, _LoadDarkmoonFaire, _GetDarkmoonFaireLocation, _GetDarkmoonFaireLocationEra, _GetDarkmoonFaireLocationSoD, _GetDarkmoonFaireLocationTBC, _IsDarkmoonFaireWeek, _GetLunarFestivalDates
---@enum DMFLocation
local DMF_LOCATIONS = {
NONE = 0,
MULGORE = 1,
ELWYNN_FOREST = 2,
TEROKKAR_FOREST = 3,
}
local DMF_LOCATION_NAMES = {
[1] = "Mulgore",
[2] = "Elwynn Forest",
[3] = "Terokkar Forest",
}
-- The ingame calender adds a texture to the DMF event.
-- We use this to identify the event without relying on dates or localized event titles.
local DMF_CALENDAR_ICON_TEXTURES = {
[235446] = true, -- End Texture
[235447] = true, -- Ongoing Texture
[235448] = true, -- Start Texture
}
-- Determine the DMF start day for the month based on what weekday the 1st is.
-- We also require the Monday start to have reached 03:00 server time before considering the event active.
local DMF_START_DAY_BY_FIRST_WEEKDAY = {
[1] = 9, -- 1st is a Sunday -> Monday is 9th
[2] = 8, -- 1st is a Monday -> Monday is 8th
[3] = 7, -- 1st is a Tuesday -> Monday is 7th
[4] = 6, -- 1st is a Wednesday -> Monday is 6th
[5] = 5, -- 1st is a Thursday -> Monday is 5th
[6] = 4, -- 1st is a Friday -> Monday is 4th
[7] = 10, -- 1st is a Saturday -> Monday is 10th
}
function QuestieEvent.Initialize()
Questie:RegisterEvent("CALENDAR_UPDATE_EVENT_LIST", function()
QuestieEvent:Load()
Questie:UnregisterEvent("CALENDAR_UPDATE_EVENT_LIST")
end)
-- According to the docs, OpenCalendar queries the server to force a CALENDAR_UPDATE_EVENT_LIST update.
-- In reality SetMonth is the reliable one. So we simply call both.
C_Calendar.OpenCalendar()
C_Calendar.SetMonth(0)
end
function QuestieEvent:Load()
local year = date("%y")
local lunarData = _GetLunarFestivalDates(year)
if lunarData then
QuestieEvent.eventDates["Lunar Festival"] = lunarData
end
local activeEvents = {}
local eventCorrections
if Expansions.Current == Expansions.Tbc then
eventCorrections = QuestieEvent.eventDateCorrections["TBC"]
elseif Expansions.Current == Expansions.Era then
eventCorrections = QuestieEvent.eventDateCorrections["CLASSIC"]
else
eventCorrections = {}
end
for eventName, dates in pairs(eventCorrections) do
if dates then
QuestieEvent.eventDates[eventName] = dates
end
end
for eventName, eventData in pairs(QuestieEvent.eventDates) do
local startDay, startMonth = strsplit("/", eventData.startDate)
local endDay, endMonth = strsplit("/", eventData.endDate)
local startHour, startMinute, endHour, endMinute
startDay = tonumber(startDay)
startMonth = tonumber(startMonth)
startHour = eventData.startHour
startMinute = eventData.startMinute
endDay = tonumber(endDay)
endMonth = tonumber(endMonth)
endHour = eventData.endHour
endMinute = eventData.endMinute
if _WithinDates(startDay, startMonth, startHour, startMinute, endDay, endMonth, endHour, endMinute) and (eventCorrections[eventName] ~= false) then
if Questie.db.profile.showEventQuests then
print(Questie:Colorize("[Questie]"), "|cFF6ce314" .. l10n("The '%s' world event is active!", l10n(eventName)))
end
activeEvents[eventName] = true
end
end
-- Store the current setting to restore later
local shouldShowDmfEvents = GetCVarBool("calendarShowDarkmoon")
SetCVar("calendarShowDarkmoon", "1")
local dmfIsActive = false
if Expansions.Current >= Expansions.MoP then
local currentDate = QuestieCompat.GetCurrentCalendarTime()
local numDayEvents = C_Calendar.GetNumDayEvents(0, currentDate.monthDay)
for i = 1, numDayEvents do
local event = C_Calendar.GetHolidayInfo(0, currentDate.monthDay, i)
if event and DMF_CALENDAR_ICON_TEXTURES[event.texture] then
dmfIsActive = true
break
end
end
end
for _, questData in pairs(QuestieEvent.eventQuests) do
local eventName = questData[1]
local questId = questData[2]
local hideQuest = questData[7]
local startDay, startMonth = nil, nil
local endDay, endMonth = nil, nil
local startHour, startMinute = nil, nil
local endHour, endMinute = nil, nil
if questData[3] and questData[4] then
startDay, startMonth = strsplit("/", questData[3])
endDay, endMonth = strsplit("/", questData[4])
startDay = tonumber(startDay)
startMonth = tonumber(startMonth)
endDay = tonumber(endDay)
endMonth = tonumber(endMonth)
end
if questData[5] and questData[6] then
startHour, startMinute = strsplit(":", questData[5])
endHour, endMinute = strsplit(":", questData[6])
startHour = tonumber(startHour)
startMinute = tonumber(startMinute)
endHour = tonumber(endHour)
endMinute = tonumber(endMinute)
end
if (not hideQuest) then
eventNamesForQuests[questId] = eventName
if (activeEvents[eventName] == true and _WithinDates(startDay, startMonth, startHour, startMinute, endDay, endMonth, endHour, endMinute)) or (dmfIsActive and eventName == "Darkmoon Faire") then
QuestieCorrections.hiddenQuests[questId] = nil
QuestieEvent.activeQuests[questId] = true
end
end
end
if dmfIsActive then
if Questie.db.profile.showEventQuests then
print(Questie:Colorize("[Questie]"), "|cFF6ce314" .. l10n("The '%s' world event is active!", l10n("Darkmoon Faire")))
end
end
SetCVar("calendarShowDarkmoon", shouldShowDmfEvents and "1" or "0")
-- TODO: Also handle WotLK which has a different starting schedule
if (Questie.IsClassic and (((not Questie.IsAnniversaryEra) and (not Questie.IsAnniversaryHardcore)) or (ContentPhases.activePhases.Anniversary >= 3)))
or Questie.IsTBC then
_LoadDarkmoonFaire()
end
-- Clear the quests to save memory
QuestieEvent.eventQuests = nil
end
---@param year string
---@return QuestieEventDateRange|nil
_GetLunarFestivalDates = function(year)
if Questie.IsTitanReforged and QuestieEvent.lunarFestival.TITAN[year] then
return QuestieEvent.lunarFestival.TITAN[year]
end
return QuestieEvent.lunarFestival.DEFAULT[year]
end
---@return DMFLocation
_GetDarkmoonFaireLocation = function()
if C_Calendar == nil then
-- This is a band aid fix for private servers which do not support the `C_Calendar` API.
-- They won't see Darkmoon Faire quests, but that's the price to pay.
return DMF_LOCATIONS.NONE
end
local currentDate = QuestieCompat.GetCurrentCalendarTime()
if Questie.IsSoD then
return _GetDarkmoonFaireLocationSoD(currentDate)
elseif Questie.IsTBC then
return _GetDarkmoonFaireLocationTBC(currentDate)
else
return _GetDarkmoonFaireLocationEra(currentDate)
end
end
---@param currentDate CalendarTime
---@return DMFLocation
_GetDarkmoonFaireLocationEra = function(currentDate)
if (not _IsDarkmoonFaireWeek(currentDate)) then
return DMF_LOCATIONS.NONE
end
local remainder = currentDate.month % 2
if remainder == 1 then
return DMF_LOCATIONS.ELWYNN_FOREST
end
return DMF_LOCATIONS.MULGORE
end
--- DMF in TBC rotates monthly through three locations: Mulgore, Terokkar Forest, and Elwynn Forest.
--- The timing follows the same Monday-start, 7-day schedule as Classic Era.
---@param currentDate CalendarTime
---@return DMFLocation
_GetDarkmoonFaireLocationTBC = function(currentDate)
if (not _IsDarkmoonFaireWeek(currentDate)) then
return DMF_LOCATIONS.NONE
end
local remainder = currentDate.month % 3
if remainder == 1 then
return DMF_LOCATIONS.MULGORE
elseif remainder == 2 then
return DMF_LOCATIONS.ELWYNN_FOREST
end
return DMF_LOCATIONS.TEROKKAR_FOREST
end
---@param currentDate CalendarTime
---@return boolean
_IsDarkmoonFaireWeek = function(currentDate)
local baseInfo = C_Calendar.GetMonthInfo()
-- Calculate the offset in months from baseInfo to make C_Calendar.GetMonthInfo return the correct month
local monthOffset = (currentDate.year - baseInfo.year) * 12 + (currentDate.month - baseInfo.month)
local firstWeekday = C_Calendar.GetMonthInfo(monthOffset).firstWeekday
local startDay = DMF_START_DAY_BY_FIRST_WEEKDAY[firstWeekday]
local endDay = startDay + 7
local dayOfMonth = currentDate.monthDay
-- If we're on the first day (Monday) require hour >= 3
if dayOfMonth == startDay and currentDate.hour < 3 then
return false
end
-- The event ends at 03:00 on the following Monday
if dayOfMonth == endDay and currentDate.hour >= 3 then
return false
end
return dayOfMonth >= startDay and dayOfMonth <= endDay
end
-- DMF in SoD is every second week, starting on the 4th of December 2023
---@param currentDate CalendarTime
---@return DMFLocation
_GetDarkmoonFaireLocationSoD = function(currentDate)
local initialStartDate = time({year = 2023, month = 12, day = 4, hour = 0, min = 1}) -- The first time DMF started in SoD
local initialEndDate = time({year = 2023, month = 12, day = 10, hour = 23, min = 59}) -- The first time DMF ended in SoD
local currentDateTimestamp = time({year = currentDate.year, month = currentDate.month, day = currentDate.monthDay, hour = 0, min = 1})
local eventDuration = initialEndDate - initialStartDate
local timeSinceStart = currentDateTimestamp - initialStartDate
local positionInCurrentCycle = timeSinceStart % (eventDuration * 2) -- * 2 because the event repeats every two weeks
local isEventActive = positionInCurrentCycle < eventDuration
if (not isEventActive) then
return DMF_LOCATIONS.NONE
end
local weeksSinceStart = math.floor(timeSinceStart / eventDuration)
if weeksSinceStart % 4 == 0 then
return DMF_LOCATIONS.MULGORE
else
return DMF_LOCATIONS.ELWYNN_FOREST
end
end
--- https://classic.wowhead.com/guides/classic-darkmoon-faire#darkmoon-faire-location-and-schedule
--- Darkmoon Faire starts its setup the first Friday of the month and will begin the following Monday.
--- The faire ends the sunday after it has begun.
_LoadDarkmoonFaire = function()
local eventLocation = _GetDarkmoonFaireLocation()
if (eventLocation == DMF_LOCATIONS.NONE) then
return
end
local isInMulgore = eventLocation == DMF_LOCATIONS.MULGORE
local isInTerokkar = eventLocation == DMF_LOCATIONS.TEROKKAR_FOREST
local npcFixes
if Questie.IsTBC then
npcFixes = QuestieTBCNpcFixes:LoadDarkmoonFixes(isInMulgore, isInTerokkar)
else
npcFixes = QuestieNPCFixes:LoadDarkmoonFixes(isInMulgore)
end
for _, questData in pairs(QuestieEvent.eventQuests) do
local hideQuest = questData[7]
if questData[1] == "Darkmoon Faire" and (not hideQuest) then
local questId = questData[2]
QuestieCorrections.hiddenQuests[questId] = nil
QuestieEvent.activeQuests[questId] = true
-- Update the NPC spawns based on the place of the faire
for id, data in pairs(npcFixes) do
QuestieDB.npcDataOverrides[id] = data
end
end
end
local hordeAnnouncingQuestId = 7926 -- Horde announcement quest
local allianceAnnouncingQuestId = 7905 -- Alliance announcement quest
if isInTerokkar then
-- Show both announcing quests
QuestieCorrections.hiddenQuests[hordeAnnouncingQuestId] = nil
QuestieEvent.activeQuests[hordeAnnouncingQuestId] = true
QuestieCorrections.hiddenQuests[allianceAnnouncingQuestId] = nil
QuestieEvent.activeQuests[allianceAnnouncingQuestId] = true
elseif isInMulgore then
-- Show only Horde announcing quest
QuestieCorrections.hiddenQuests[hordeAnnouncingQuestId] = nil
QuestieEvent.activeQuests[hordeAnnouncingQuestId] = true
QuestieCorrections.hiddenQuests[allianceAnnouncingQuestId] = true
QuestieEvent.activeQuests[allianceAnnouncingQuestId] = nil
else
-- Show only Alliance announcing quest
QuestieCorrections.hiddenQuests[allianceAnnouncingQuestId] = nil
QuestieEvent.activeQuests[allianceAnnouncingQuestId] = true
QuestieCorrections.hiddenQuests[hordeAnnouncingQuestId] = true
QuestieEvent.activeQuests[hordeAnnouncingQuestId] = nil
end
if Questie.db.profile.showEventQuests then
print(Questie:Colorize("[Questie]"), "|cFF6ce314" .. l10n("The Darkmoon Faire is up in %s!", l10n(DMF_LOCATION_NAMES[eventLocation])))
end
end
--- Checks wheather the current date is within the given date range
---@param startDay number?
---@param startMonth number?
---@param endDay number?
---@param endMonth number?
---@return boolean @True if the current date is between the given, false otherwise
_WithinDates = function(startDay, startMonth, startHour, startMinute, endDay, endMonth, endHour, endMinute)
-- there are corrections that are missing the HH:MM entries (unknown), but we still want to show those correctly
if (not startDay) and (not startMonth) and (not endMonth) and (not endDay) then
return true
end
local date = QuestieCompat.GetCurrentCalendarTime()
local minute = date.minute
local hour = date.hour
local day = date.monthDay
local month = date.month
-- For missing HH:MM entries we default to 00:00 start HH:MM, and 23:59 end HH:MM
startHour = startHour or 0
startMinute = startMinute or 0
endHour = endHour or 23
endMinute = endMinute or 59
-- Convert each date into a sortable value: MMDDHHMM
local current = month * 1000000 + day * 10000 + hour * 100 + minute
local start = startMonth * 1000000 + startDay * 10000 + startHour * 100 + startMinute
local finish = endMonth * 1000000 + endDay * 10000 + endHour * 100 + endMinute
if start <= finish then
-- Normal interval (e.g. Mar 10 -> Jul 5)
return current >= start and current <= finish
else
-- Crosses New Year (e.g. Dec 20 -> Jan 10)
return current >= start or current <= finish
end
end
---@param questId QuestId
---@return string
function QuestieEvent.GetEventNameFor(questId)
return eventNamesForQuests[questId] or ""
end
---@param questId QuestId
---@return boolean @True if the quest is part of an event, false otherwise
function QuestieEvent.IsEventQuest(questId)
return eventNamesForQuests[questId] ~= nil
end
---@param questId QuestId
---@return boolean @True if the quest is part of an event and the event is currently active, false otherwise
function QuestieEvent.IsEventActiveForQuest(questId)
return QuestieEvent.activeQuests[questId] == true
end
---@param questId QuestId
---@return boolean @True if the quest can be turned in outside of the event, false otherwise
function QuestieEvent.CanQuestBeTurnedInOutsideOfEvent(questId)
return alwaysTurnInAbleQuests[questId] == true
end
-- EUROPEAN FORMAT! NO FUCKING AMERICAN SHIDAZZLE FORMAT!
QuestieEvent.eventDates = {
["Winter Veil"] = {
startDate = "15/12",
startHour = 10,
startMinute = 0,
endDate = "2/1",
endHour = 10,
endMinute = 0,
},
["Love is in the Air"] = { -- WARNING THIS DATE VARIES!!!!
startDate = "9/2",
startHour = 10,
startMinute = 0,
endDate = "23/2",
endHour = 10,
endMinute = 0,
},
["Noblegarden"] = { -- WARNING THIS DATE VARIES!!!!
startDate = "5/4",
startHour = 0,
startMinute = 1,
endDate = "11/4",
endHour = 23,
endMinute = 59,
},
["Children's Week"] = { -- TODO: Usually it is only a week long
startDate = "27/4",
startHour = 10,
startMinute = 0,
endDate = "4/5",
endHour = 10,
endMinute = 0,
},
["Midsummer"] =
-- Fixed calendar days: 21 Jun 4 AM - 4 Jul 4 AM
not Questie.IsTitanReforged and { -- regular servers
startDate = "21/6",
startHour = 4,
startMinute = 0,
endDate = "5/7",
endHour = 4,
endMinute = 0,
} or { -- Titan servers
startDate = "28/6",
startHour = 4,
startMinute = 0,
endDate = "12/7",
endHour = 4,
endMinute = 0,
},
["Pirates' Day"] = { -- no quests associated with it, but listed here to have a reminder in chat
startDate = "19/9",
startHour = 10,
startMinute = 0,
endDate = "20/10",
endHour = 10,
endMinute = 0,
},
["Brewfest"] = { -- TODO: This might be different (retail date)
startDate = "20/9",
startHour = 10,
startMinute = 0,
endDate = "6/10",
endHour = 10,
endMinute = 0,
},
["Harvest Festival"] = { -- WARNING THIS DATE VARIES!!!!
startDate = "21/9",
startHour = 0,
startMinute = 1,
endDate = "27/9",
endHour = 23,
endMinute = 59,
},
["Hallow's End"] = { -- WARNING THIS DATE VARIES!!!!
startDate = "18/10",
startHour = 10,
startMinute = 0,
endDate = "1/11",
endHour = 11,
endMinute = 0,
},
["Day of the Dead"] = {
startDate = "1/11",
startHour = 10,
startMinute = 0,
endDate = "3/11",
endHour = 10,
endMinute = 0,
},
["Pilgrim's Bounty"] = { -- WARNING THIS DATE VARIES!!!!
startDate = "24/11",
startHour = 1,
startMinute = 0,
endDate = "30/11",
endHour = 23,
endMinute = 59,
},
}
-- ["EventName"] = false -> event doesn't exists in expansion
-- ["EventName"] = {startDate = "12/3", endDate = "12/3"} -> change dates for the expansion
QuestieEvent.eventDateCorrections = {
["CLASSIC"] = {
["Brewfest"] = false,
["Pilgrim's Bounty"] = false,
["Noblegarden"] = { -- WARNING THIS DATE VARIES!!!! -- One day event, on the actual day of Easter.
-- Date is set for 2027. Please update this every year.
startDate = "28/3",
startHour = 0,
startMinute = 1,
endDate = "28/3",
endHour = 23,
endMinute = 59
},
["Love is in the Air"] = { -- WARNING THIS DATE VARIES!!!!
startDate = "11/2",
startHour = 10,
startMinute = 0,
endDate = "15/2",
endHour = 10,
endMinute = 0
},
},
["TBC"] = {
["Noblegarden"] = { -- WARNING THIS DATE VARIES!!!! -- One day event, on the actual day of Easter.
-- Date is set for 2027. Please update this every year.
startDate = "28/3",
startHour = 0,
startMinute = 1,
endDate = "28/3",
endHour = 23,
endMinute = 59
},
["Love is in the Air"] = { -- WARNING THIS DATE VARIES!!!!
startDate = "11/2",
startHour = 10,
startMinute = 0,
endDate = "15/2",
endHour = 10,
endMinute = 0
},
},
}
---@class QuestieEventDateRange
---@field startDate string
---@field endDate string
---@class QuestieLunarFestivalTable
---@field DEFAULT table<string, QuestieEventDateRange>
---@field TITAN table<string, QuestieEventDateRange>
QuestieEvent.lunarFestival = {
DEFAULT = { -- Global default (US/EU, etc.)
["19"] = {startDate = "5/2", startHour = 6, startMinute = 0, endDate = "19/2", endHour = 6, endMinute = 0},
["20"] = {startDate = "23/1", startHour = 6, startMinute = 0, endDate = "10/2", endHour = 6, endMinute = 0},
["21"] = {startDate = "5/2", startHour = 6, startMinute = 0, endDate = "19/2", endHour = 6, endMinute = 0},
["22"] = {startDate = "30/1", startHour = 6, startMinute = 0, endDate = "18/2", endHour = 6, endMinute = 0},
["23"] = {startDate = "20/1", startHour = 6, startMinute = 0, endDate = "10/2", endHour = 6, endMinute = 0},
["24"] = {startDate = "3/2", startHour = 6, startMinute = 0, endDate = "23/2", endHour = 6, endMinute = 0},
["25"] = {startDate = "28/1", startHour = 6, startMinute = 0, endDate = "17/2", endHour = 6, endMinute = 0},
["26"] = {startDate = "16/2", startHour = 6, startMinute = 0, endDate = "9/3", endHour = 6, endMinute = 0},
["27"] = {startDate = "5/2", startHour = 6, startMinute = 0, endDate = "19/2", endHour = 6, endMinute = 0},
["28"] = {startDate = "24/1", startHour = 6, startMinute = 0, endDate = "14/2", endHour = 6, endMinute = 0},
},
TITAN = { -- Chinese Titan Reforged
["26"] = {startDate = "29/1", startHour = 6, startMinute = 0, endDate = "25/2", endHour = 6, endMinute = 0},
["27"] = {startDate = "5/2", startHour = 6, startMinute = 0, endDate = "19/2", endHour = 6, endMinute = 0},
["28"] = {startDate = "24/1", startHour = 6, startMinute = 0, endDate = "14/2", endHour = 6, endMinute = 0},
}
}
@@ -1,52 +0,0 @@
---@type QuestieEvent
local QuestieEvent = QuestieLoader:ImportModule("QuestieEvent")
---@type Expansions
local Expansions = QuestieLoader:ImportModule("Expansions")
local tinsert = table.insert
local eventQuests = QuestieEvent.eventQuests
-- TBC quests
tinsert(eventQuests, {"Brewfest", 11117, nil, nil, nil, nil, Questie.IsEURegion}) -- Catch the Wild Wolpertinger!
tinsert(eventQuests, {"Brewfest", 11118, nil, nil, nil, nil, Questie.IsEURegion}) -- Pink Elekks On Parade
tinsert(eventQuests, {"Brewfest", 11120, nil, nil, nil, nil, Questie.IsEURegion}) -- Pink Elekks On Parade
tinsert(eventQuests, {"Brewfest", 11122}) -- There and Back Again
tinsert(eventQuests, {"Brewfest", 11293}) -- Bark for the Barleybrews!
tinsert(eventQuests, {"Brewfest", 11294}) -- Bark for the Thunderbrews!
tinsert(eventQuests, {"Brewfest", 11318}) -- Now This is Ram Racing... Almost.
tinsert(eventQuests, {"Brewfest", 11400, nil, nil, nil, nil, Expansions.Current >= Expansions.Wotlk}) -- Brewfest Riding Rams
tinsert(eventQuests, {"Brewfest", 11407}) -- Bark for Drohn's Distillery!
tinsert(eventQuests, {"Brewfest", 11408}) -- Bark for T'chali's Voodoo Brewery!
tinsert(eventQuests, {"Brewfest", 11409}) -- Now This is Ram Racing... Almost.
tinsert(eventQuests, {"Brewfest", 11412}) -- There and Back Again
tinsert(eventQuests, {"Brewfest", 11419, nil, nil, nil, nil, Expansions.Current >= Expansions.Wotlk}) -- Brewfest Riding Rams
tinsert(eventQuests, {"Brewfest", 11431, nil, nil, nil, nil, Questie.IsEURegion}) -- Catch the Wild Wolpertinger!
tinsert(eventQuests, {"Brewfest", 11441}) -- Brewfest!
tinsert(eventQuests, {"Brewfest", 11442}) -- Welcome to Brewfest!
tinsert(eventQuests, {"Brewfest", 11446}) -- Brewfest!
tinsert(eventQuests, {"Brewfest", 11447}) -- Welcome to Brewfest!
tinsert(eventQuests, {"Brewfest", 12020}) -- This One Time, When I Was Drunk...
tinsert(eventQuests, {"Brewfest", 12022}) -- Chug and Chuck!
tinsert(eventQuests, {"Brewfest", 12062, nil, nil, nil, nil, Expansions.Current >= Expansions.Cata}) -- Insult Coren Direbrew
tinsert(eventQuests, {"Brewfest", 12191}) -- Chug and Chuck!
tinsert(eventQuests, {"Brewfest", 12192}) -- This One Time, When I Was Drunk...
--tinsert(eventQuests, {"Brewfest", 12193}) -- Say, There Wouldn't Happen to be a Souvenir This Year, Would There?
--tinsert(eventQuests, {"Brewfest", 12194}) -- Say, There Wouldn't Happen to be a Souvenir This Year, Would There?
tinsert(eventQuests, {"Brewfest", 12278, nil, nil, nil, nil, Expansions.Current >= Expansions.Wotlk}) -- Brew of the Month Club
tinsert(eventQuests, {"Brewfest", 12306, nil, nil, nil, nil, Expansions.Current >= Expansions.Wotlk}) -- Brew of the Month Club
tinsert(eventQuests, {"Brewfest", 12318}) -- Save Brewfest!
tinsert(eventQuests, {"Brewfest", 12420, nil, nil, nil, nil, Expansions.Current < Expansions.Wotlk}) -- Brew of the Month Club
tinsert(eventQuests, {"Brewfest", 12421, nil, nil, nil, nil, Expansions.Current < Expansions.Wotlk}) -- Brew of the Month Club
tinsert(eventQuests, {"Brewfest", 12491}) -- Direbrew's Dire Brew
tinsert(eventQuests, {"Brewfest", 12492}) -- Direbrew's Dire Brew
-- WotLK quests
tinsert(eventQuests, {"Brewfest", 13931, nil, nil, nil, nil, Expansions.Current >= Expansions.Cata}) -- Another Year, Another Souvenir. -- Doesn't seem to be in the game
tinsert(eventQuests, {"Brewfest", 13932, nil, nil, nil, nil, Expansions.Current >= Expansions.Cata}) -- Another Year, Another Souvenir. -- Doesn't seem to be in the game
-- Cata quests
--tinsert(eventQuests, {"Brewfest", 11413}) -- Did Someone Say "Souvenir?"
tinsert(eventQuests, {"Brewfest", 29393}) -- Brew For Brewfest
tinsert(eventQuests, {"Brewfest", 29394}) -- Brew For Brewfest
tinsert(eventQuests, {"Brewfest", 29396}) -- A New Supplier of Souvenirs
tinsert(eventQuests, {"Brewfest", 29397}) -- A New Supplier of Souvenirs
@@ -1,74 +0,0 @@
---@type QuestieEvent
local QuestieEvent = QuestieLoader:ImportModule("QuestieEvent")
---@type Expansions
local Expansions = QuestieLoader:ImportModule("Expansions")
---@type ContentPhases
local ContentPhases = QuestieLoader:ImportModule("ContentPhases")
local tinsert = table.insert
local eventQuests = QuestieEvent.eventQuests
tinsert(eventQuests, {"Children's Week", 171}) -- A Warden of the Alliance
tinsert(eventQuests, {"Children's Week", 172}) -- Children's Week
tinsert(eventQuests, {"Children's Week", 558}) -- Jaina's Autograph
tinsert(eventQuests, {"Children's Week", 910}) -- Down at the Docks
tinsert(eventQuests, {"Children's Week", 911}) -- Gateway to the Frontier
tinsert(eventQuests, {"Children's Week", 915}) -- You Scream, I Scream...
tinsert(eventQuests, {"Children's Week", 925}) -- Cairne's Hoofprint
tinsert(eventQuests, {"Children's Week", 1468}) -- Children's Week
tinsert(eventQuests, {"Children's Week", 1479}) -- The Bough of the Eternals
tinsert(eventQuests, {"Children's Week", 1558}) -- The Stonewrought Dam
tinsert(eventQuests, {"Children's Week", 1687}) -- Spooky Lighthouse
tinsert(eventQuests, {"Children's Week", 1800}) -- Lordaeron Throne Room
tinsert(eventQuests, {"Children's Week", 4822}) -- You Scream, I Scream...
tinsert(eventQuests, {"Children's Week", 5502}) -- A Warden of the Horde
-- TBC quests
tinsert(eventQuests, {"Children's Week", 10942}) -- Children's Week
tinsert(eventQuests, {"Children's Week", 10943}) -- Children's Week
tinsert(eventQuests, {"Children's Week", 10945}) -- Hch'uu and the Mushroom People
tinsert(eventQuests, {"Children's Week", 10950}) -- Auchindoun and the Ring of Observance
tinsert(eventQuests, {"Children's Week", 10951}) -- A Trip to the Dark Portal
tinsert(eventQuests, {"Children's Week", 10952}) -- A Trip to the Dark Portal
tinsert(eventQuests, {"Children's Week", 10953}) -- Visit the Throne of the Elements
tinsert(eventQuests, {"Children's Week", 10954}) -- Jheel is at Aeris Landing!
tinsert(eventQuests, {"Children's Week", 10956}) -- The Seat of the Naaru
tinsert(eventQuests, {"Children's Week", 10960, nil, nil, nil, nil, Expansions.Current >= Expansions.Wotlk or (Expansions.Current == Expansions.Tbc and ContentPhases.activePhases.TBC >= 5)}) -- When I Grow Up...
tinsert(eventQuests, {"Children's Week", 10962}) -- Time to Visit the Caverns
tinsert(eventQuests, {"Children's Week", 10963}) -- Time to Visit the Caverns
tinsert(eventQuests, {"Children's Week", 10966}) -- Back to the Orphanage
tinsert(eventQuests, {"Children's Week", 10967}) -- Back to the Orphanage
tinsert(eventQuests, {"Children's Week", 10968}) -- Call on the Farseer
tinsert(eventQuests, {"Children's Week", 11975, nil, nil, nil, nil, Expansions.Current == Expansions.Tbc and ContentPhases.activePhases.TBC < 5}) -- Now, When I Grow Up...
-- WotLK quests
tinsert(eventQuests, {"Children's Week", 13926}) -- Little Orphan Roo Of The Oracles
tinsert(eventQuests, {"Children's Week", 13927}) -- Little Orphan Kekek Of The Wolvar
tinsert(eventQuests, {"Children's Week", 13929}) -- The Biggest Tree Ever!
tinsert(eventQuests, {"Children's Week", 13930}) -- Home Of The Bear-Men
tinsert(eventQuests, {"Children's Week", 13933}) -- The Bronze Dragonshrine
tinsert(eventQuests, {"Children's Week", 13934}) -- The Bronze Dragonshrine
tinsert(eventQuests, {"Children's Week", 13937}) -- A Trip To The Wonderworks
tinsert(eventQuests, {"Children's Week", 13938}) -- A Visit To The Wonderworks
tinsert(eventQuests, {"Children's Week", 13950}) -- Playmates!
tinsert(eventQuests, {"Children's Week", 13951}) -- Playmates!
tinsert(eventQuests, {"Children's Week", 13954}) -- The Dragon Queen
tinsert(eventQuests, {"Children's Week", 13955}) -- The Dragon Queen
tinsert(eventQuests, {"Children's Week", 13956}) -- Meeting a Great One
tinsert(eventQuests, {"Children's Week", 13957}) -- The Mighty Hemet Nesingwary
tinsert(eventQuests, {"Children's Week", 13959}) -- Back To The Orphanage
tinsert(eventQuests, {"Children's Week", 13960}) -- Back To The Orphanage
-- Cata quests
--tinsert(eventQuests, {"Children's Week", 28879}) -- Back To The Orphanage -- not available yet in children's week 2024
--tinsert(eventQuests, {"Children's Week", 28880}) -- Back To The Orphanage -- not available yet in children's week 2024
tinsert(eventQuests, {"Children's Week", 29093}) -- Cruisin' the Chasm
tinsert(eventQuests, {"Children's Week", 29106}) -- The Biggest Diamond Ever!
tinsert(eventQuests, {"Children's Week", 29107}) -- Malfurion Has Returned!
tinsert(eventQuests, {"Children's Week", 29117}) -- Let's Go Fly a Kite
tinsert(eventQuests, {"Children's Week", 29119}) -- You Scream, I Scream...
tinsert(eventQuests, {"Children's Week", 29146}) -- Ridin' the Rocketway
tinsert(eventQuests, {"Children's Week", 29167}) -- The Banshee Queen
tinsert(eventQuests, {"Children's Week", 29176}) -- The Fallen Chieftain
tinsert(eventQuests, {"Children's Week", 29190}) -- Let's Go Fly a Kite
tinsert(eventQuests, {"Children's Week", 29191}) -- You Scream, I Scream...
@@ -1,141 +0,0 @@
---@type QuestieEvent
local QuestieEvent = QuestieLoader:ImportModule("QuestieEvent")
---@type Expansions
local Expansions = QuestieLoader:ImportModule("Expansions")
local tinsert = table.insert
local eventQuests = QuestieEvent.eventQuests
tinsert(eventQuests, {"Darkmoon Faire", 7881, nil, nil, nil, nil, Questie.IsSoD or Expansions.Current >= Expansions.Cata}) -- Carnival Boots
tinsert(eventQuests, {"Darkmoon Faire", 7882, nil, nil, nil, nil, Questie.IsSoD or Expansions.Current >= Expansions.Cata}) -- Carnival Jerkins
tinsert(eventQuests, {"Darkmoon Faire", 7883, nil, nil, nil, nil, Questie.IsSoD or Expansions.Current >= Expansions.Cata}) -- The World's Largest Gnome!
tinsert(eventQuests, {"Darkmoon Faire", 7884, nil, nil, nil, nil, Questie.IsSoD or Expansions.Current >= Expansions.Cata}) -- Crocolisk Boy and the Bearded Murloc
tinsert(eventQuests, {"Darkmoon Faire", 7885, nil, nil, nil, nil, Questie.IsSoD or Expansions.Current >= Expansions.Cata}) -- Armor Kits
tinsert(eventQuests, {"Darkmoon Faire", 7889, nil, nil, nil, nil, Questie.IsSoD or Expansions.Current >= Expansions.Cata}) -- Coarse Weightstone
tinsert(eventQuests, {"Darkmoon Faire", 7890, nil, nil, nil, nil, Questie.IsSoD or Expansions.Current >= Expansions.Cata}) -- Heavy Grinding Stone
tinsert(eventQuests, {"Darkmoon Faire", 7891, nil, nil, nil, nil, Questie.IsSoD or Expansions.Current >= Expansions.Cata}) -- Green Iron Bracers
tinsert(eventQuests, {"Darkmoon Faire", 7892, nil, nil, nil, nil, Questie.IsSoD or Expansions.Current >= Expansions.Cata}) -- Big Black Mace
tinsert(eventQuests, {"Darkmoon Faire", 7893, nil, nil, nil, nil, Questie.IsSoD or Expansions.Current >= Expansions.Cata}) -- Rituals of Strength
tinsert(eventQuests, {"Darkmoon Faire", 7894, nil, nil, nil, nil, Questie.IsSoD or Expansions.Current >= Expansions.Cata}) -- Copper Modulator
tinsert(eventQuests, {"Darkmoon Faire", 7895, nil, nil, nil, nil, Questie.IsSoD or Expansions.Current >= Expansions.Cata}) -- Whirring Bronze Gizmo
tinsert(eventQuests, {"Darkmoon Faire", 7896, nil, nil, nil, nil, Questie.IsSoD or Expansions.Current >= Expansions.Cata}) -- Green Fireworks
tinsert(eventQuests, {"Darkmoon Faire", 7897, nil, nil, nil, nil, Questie.IsSoD or Expansions.Current >= Expansions.Cata}) -- Mechanical Repair Kits
tinsert(eventQuests, {"Darkmoon Faire", 7898, nil, nil, nil, nil, Questie.IsSoD or Expansions.Current >= Expansions.Cata}) -- Thorium Widget
tinsert(eventQuests, {"Darkmoon Faire", 7899, nil, nil, nil, nil, Questie.IsSoD or Expansions.Current >= Expansions.Cata}) -- Small Furry Paws
tinsert(eventQuests, {"Darkmoon Faire", 7900, nil, nil, nil, nil, Questie.IsSoD or Expansions.Current >= Expansions.Cata}) -- Torn Bear Pelts
tinsert(eventQuests, {"Darkmoon Faire", 7901, nil, nil, nil, nil, Questie.IsSoD or Expansions.Current >= Expansions.Cata}) -- Soft Bushy Tails
tinsert(eventQuests, {"Darkmoon Faire", 7902, nil, nil, nil, nil, Questie.IsSoD or Expansions.Current >= Expansions.Cata}) -- Vibrant Plumes
tinsert(eventQuests, {"Darkmoon Faire", 7903, nil, nil, nil, nil, Questie.IsSoD or Expansions.Current >= Expansions.Cata}) -- Evil Bat Eyes
tinsert(eventQuests, {"Darkmoon Faire", 7905}) -- The Darkmoon Faire
tinsert(eventQuests, {"Darkmoon Faire", 7907}) -- Darkmoon Beast Deck
tinsert(eventQuests, {"Darkmoon Faire", 7926}) -- The Darkmoon Faire
tinsert(eventQuests, {"Darkmoon Faire", 7927}) -- Darkmoon Portals Deck
tinsert(eventQuests, {"Darkmoon Faire", 7928}) -- Darkmoon Warlords Deck
tinsert(eventQuests, {"Darkmoon Faire", 7929}) -- Darkmoon Elementals Deck
tinsert(eventQuests, {"Darkmoon Faire", 7930, nil, nil, nil, nil, Expansions.Current >= Expansions.Cata}) -- 5 Tickets - Darkmoon Flower
tinsert(eventQuests, {"Darkmoon Faire", 7931, nil, nil, nil, nil, Expansions.Current >= Expansions.Cata}) -- 5 Tickets - Minor Darkmoon Prize
tinsert(eventQuests, {"Darkmoon Faire", 7932, nil, nil, nil, nil, Expansions.Current >= Expansions.Cata}) -- 12 Tickets - Lesser Darkmoon Prize
tinsert(eventQuests, {"Darkmoon Faire", 7933, nil, nil, nil, nil, Expansions.Current >= Expansions.Cata}) -- 40 Tickets - Greater Darkmoon Prize
tinsert(eventQuests, {"Darkmoon Faire", 7934, nil, nil, nil, nil, Expansions.Current >= Expansions.Cata}) -- 50 Tickets - Darkmoon Storage Box
tinsert(eventQuests, {"Darkmoon Faire", 7935, nil, nil, nil, nil, Expansions.Current >= Expansions.Cata}) -- 10 Tickets - Last Month's Mutton
tinsert(eventQuests, {"Darkmoon Faire", 7936, nil, nil, nil, nil, Expansions.Current >= Expansions.Cata}) -- 50 Tickets - Last Year's Mutton
tinsert(eventQuests, {"Darkmoon Faire", 7937, nil, nil, nil, nil, Expansions.Current >= Expansions.Cata}) -- Your Fortune Awaits You...
tinsert(eventQuests, {"Darkmoon Faire", 7938, nil, nil, nil, nil, Expansions.Current >= Expansions.Cata}) -- Your Fortune Awaits You...
tinsert(eventQuests, {"Darkmoon Faire", 7939, nil, nil, nil, nil, Questie.IsSoD or Expansions.Current >= Expansions.Cata}) -- More Dense Grinding Stones
tinsert(eventQuests, {"Darkmoon Faire", 7940, nil, nil, nil, nil, Expansions.Current >= Expansions.Cata}) -- 1200 Tickets - Orb of the Darkmoon
tinsert(eventQuests, {"Darkmoon Faire", 7941, nil, nil, nil, nil, Questie.IsSoD or Expansions.Current >= Expansions.Cata}) -- More Armor Kits
tinsert(eventQuests, {"Darkmoon Faire", 7942, nil, nil, nil, nil, Questie.IsSoD or Expansions.Current >= Expansions.Cata}) -- More Thorium Widgets
tinsert(eventQuests, {"Darkmoon Faire", 7943, nil, nil, nil, nil, Questie.IsSoD or Expansions.Current >= Expansions.Cata}) -- More Bat Eyes
tinsert(eventQuests, {"Darkmoon Faire", 7944, nil, nil, nil, nil, Expansions.Current >= Expansions.Cata}) -- Your Fortune Awaits You...
tinsert(eventQuests, {"Darkmoon Faire", 7945, nil, nil, nil, nil, Expansions.Current >= Expansions.Cata}) -- Your Fortune Awaits You...
tinsert(eventQuests, {"Darkmoon Faire", 7946, nil, nil, nil, nil, Questie.IsSoD or Expansions.Current >= Expansions.Cata}) -- Spawn of Jubjub
tinsert(eventQuests, {"Darkmoon Faire", 7981, nil, nil, nil, nil, Expansions.Current >= Expansions.Cata}) -- 1200 Tickets - Amulet of the Darkmoon
tinsert(eventQuests, {"Darkmoon Faire", 8222, nil, nil, nil, nil, Questie.IsSoD or Expansions.Current >= Expansions.Cata}) -- Glowing Scorpid Blood
tinsert(eventQuests, {"Darkmoon Faire", 8223, nil, nil, nil, nil, Questie.IsSoD or Expansions.Current >= Expansions.Cata}) -- More Glowing Scorpid Blood
-- SoD quests
tinsert(eventQuests, {"Darkmoon Faire", 79588}) -- Small Furry Paws
tinsert(eventQuests, {"Darkmoon Faire", 79589}) -- Torn Bear Pelts
tinsert(eventQuests, {"Darkmoon Faire", 79590}) -- Heavy Grinding Stone
tinsert(eventQuests, {"Darkmoon Faire", 79591}) -- Whirring Bronze Gizmo
tinsert(eventQuests, {"Darkmoon Faire", 79592}) -- Carnival Jerkins
tinsert(eventQuests, {"Darkmoon Faire", 79593}) -- Coarse Weightstone
tinsert(eventQuests, {"Darkmoon Faire", 79594}) -- Copper Modulator
tinsert(eventQuests, {"Darkmoon Faire", 79595}) -- Carnival Boots
tinsert(eventQuests, {"Darkmoon Faire", 80417}) -- Soft Bushy Tails
tinsert(eventQuests, {"Darkmoon Faire", 80421}) -- Green Iron Bracers
tinsert(eventQuests, {"Darkmoon Faire", 80422}) -- Green Fireworks
tinsert(eventQuests, {"Darkmoon Faire", 80423}) -- The World's Largest Gnome!
tinsert(eventQuests, {"Darkmoon Faire", 82323}) -- Vibrant Plumes
tinsert(eventQuests, {"Darkmoon Faire", 82271}) -- More Glowing Scorpid Blood
tinsert(eventQuests, {"Darkmoon Faire", 82272}) -- Glowing Scorpid Blood
tinsert(eventQuests, {"Darkmoon Faire", 82273}) -- More Evil Bat Eyes
tinsert(eventQuests, {"Darkmoon Faire", 82274}) -- Evil Bat Eyes
tinsert(eventQuests, {"Darkmoon Faire", 82275}) -- Big Black Mace
tinsert(eventQuests, {"Darkmoon Faire", 82276}) -- Rituals of Strength
tinsert(eventQuests, {"Darkmoon Faire", 82277}) -- More Dense Grinding Stones
tinsert(eventQuests, {"Darkmoon Faire", 82278}) -- More Thorium Widgets
tinsert(eventQuests, {"Darkmoon Faire", 82279}) -- Thorium Widget
tinsert(eventQuests, {"Darkmoon Faire", 82280}) -- Mechanical Repair Kits
tinsert(eventQuests, {"Darkmoon Faire", 82281}) -- More Armor Kits
tinsert(eventQuests, {"Darkmoon Faire", 82282}) -- Armor Kits
tinsert(eventQuests, {"Darkmoon Faire", 82283}) -- Crocolisk Boy and the Bearded Murloc
-- TBC quests
tinsert(eventQuests, {"Darkmoon Faire", 9249, nil, nil, nil, nil, Expansions.Current >= Expansions.Cata}) -- 40 Tickets - Schematic: Steam Tonk Controller
tinsert(eventQuests, {"Darkmoon Faire", 10938}) -- Darkmoon Blessings Deck
tinsert(eventQuests, {"Darkmoon Faire", 10939}) -- Darkmoon Storms Deck
tinsert(eventQuests, {"Darkmoon Faire", 10940}) -- Darkmoon Furies Deck
tinsert(eventQuests, {"Darkmoon Faire", 10941}) -- Darkmoon Lunacy Deck
-- WotLK quests
tinsert(eventQuests, {"Darkmoon Faire", 13324}) -- Darkmoon Prisms Deck
tinsert(eventQuests, {"Darkmoon Faire", 13325}) -- Darkmoon Chaos Deck
tinsert(eventQuests, {"Darkmoon Faire", 13326}) -- Darkmoon Nobles Deck
tinsert(eventQuests, {"Darkmoon Faire", 13327}) -- Darkmoon Undeath Deck
-- Cata quests
tinsert(eventQuests, {"Darkmoon Faire", 27664}) -- Darkmoon Volcanic Deck
tinsert(eventQuests, {"Darkmoon Faire", 27665}) -- Darkmoon Hurricane Deck
tinsert(eventQuests, {"Darkmoon Faire", 27666}) -- Darkmoon Tsunami Deck
tinsert(eventQuests, {"Darkmoon Faire", 27667}) -- Darkmoon Earthquake Deck
tinsert(eventQuests, {"Darkmoon Faire", 29433}) -- Test Your Strength
tinsert(eventQuests, {"Darkmoon Faire", 29434}) -- Tonk Commander
tinsert(eventQuests, {"Darkmoon Faire", 29436}) -- The Humanoid Cannonball
tinsert(eventQuests, {"Darkmoon Faire", 29438}) -- He Shoots, He Scores!
tinsert(eventQuests, {"Darkmoon Faire", 29443}) -- A Curious Crystal
tinsert(eventQuests, {"Darkmoon Faire", 29444}) -- An Exotic Egg
tinsert(eventQuests, {"Darkmoon Faire", 29445}) -- An Intriguing Grimoire
tinsert(eventQuests, {"Darkmoon Faire", 29446}) -- A Wondrous Weapon
tinsert(eventQuests, {"Darkmoon Faire", 29451}) -- The Master Strategist
tinsert(eventQuests, {"Darkmoon Faire", 29455}) -- Target: Turtle
tinsert(eventQuests, {"Darkmoon Faire", 29456}) -- A Captured Banner
tinsert(eventQuests, {"Darkmoon Faire", 29457}) -- The Enemy's Insignia
tinsert(eventQuests, {"Darkmoon Faire", 29458}) -- The Captured Journal
tinsert(eventQuests, {"Darkmoon Faire", 29463}) -- It's Hammer Time
tinsert(eventQuests, {"Darkmoon Faire", 29464}) -- Tools of Divination
tinsert(eventQuests, {"Darkmoon Faire", 29506}) -- A Fizzy Fusion
tinsert(eventQuests, {"Darkmoon Faire", 29507}) -- Fun for the Little Ones
tinsert(eventQuests, {"Darkmoon Faire", 29508}) -- Baby Needs Two Pair of Shoes
tinsert(eventQuests, {"Darkmoon Faire", 29509}) -- Putting the Crunch in the Frog
tinsert(eventQuests, {"Darkmoon Faire", 29510}) -- Putting Trash to Good Use
tinsert(eventQuests, {"Darkmoon Faire", 29511}) -- Talkin' Tonks
tinsert(eventQuests, {"Darkmoon Faire", 29512}) -- Putting the Carnies Back Together Again
tinsert(eventQuests, {"Darkmoon Faire", 29513}) -- Spoilin' for Salty Sea Dogs
tinsert(eventQuests, {"Darkmoon Faire", 29514}) -- Herbs for Healing
tinsert(eventQuests, {"Darkmoon Faire", 29515}) -- Writing the Future
tinsert(eventQuests, {"Darkmoon Faire", 29516}) -- Keeping the Faire Sparkling
tinsert(eventQuests, {"Darkmoon Faire", 29517}) -- Eyes on the Prizes
tinsert(eventQuests, {"Darkmoon Faire", 29518}) -- Rearm, Reuse, Recycle
tinsert(eventQuests, {"Darkmoon Faire", 29519}) -- Tan My Hide
tinsert(eventQuests, {"Darkmoon Faire", 29520}) -- Banners, Banners Everywhere!
tinsert(eventQuests, {"Darkmoon Faire", 29760}) -- Pit Fighter
tinsert(eventQuests, {"Darkmoon Faire", 29761}) -- Master Pit Fighter
-- MoP quests
tinsert(eventQuests, {"Darkmoon Faire", 30449}) -- Darkmoon Crane Deck
tinsert(eventQuests, {"Darkmoon Faire", 30450}) -- Darkmoon Ox Deck
tinsert(eventQuests, {"Darkmoon Faire", 30451}) -- Darkmoon Serpent Deck
tinsert(eventQuests, {"Darkmoon Faire", 30452}) -- Darkmoon Tiger Deck
tinsert(eventQuests, {"Darkmoon Faire", 32175}) -- Darkmoon Pet Battle!
tinsert(eventQuests, {"Darkmoon Faire", 33354}) -- Den Mother's Demise
@@ -1,24 +0,0 @@
---@type QuestieEvent
local QuestieEvent = QuestieLoader:ImportModule("QuestieEvent")
local tinsert = table.insert
local eventQuests = QuestieEvent.eventQuests
-- WotLK quests
tinsert(eventQuests, {"Day of the Dead", 13952}) -- The Grateful Dead -- Human
tinsert(eventQuests, {"Day of the Dead", 14166}) -- The Grateful Dead -- Dalaran
tinsert(eventQuests, {"Day of the Dead", 14167}) -- The Grateful Dead -- Dwarf
tinsert(eventQuests, {"Day of the Dead", 14168}) -- The Grateful Dead -- Gnome
tinsert(eventQuests, {"Day of the Dead", 14169}) -- The Grateful Dead -- Draenei
tinsert(eventQuests, {"Day of the Dead", 14170}) -- The Grateful Dead -- Night Elf
tinsert(eventQuests, {"Day of the Dead", 14171}) -- The Grateful Dead -- Blood Elf
tinsert(eventQuests, {"Day of the Dead", 14172}) -- The Grateful Dead -- Shattrath Aldor
tinsert(eventQuests, {"Day of the Dead", 14173}) -- The Grateful Dead -- Shattrath Scryer
tinsert(eventQuests, {"Day of the Dead", 14174}) -- The Grateful Dead -- Undead
tinsert(eventQuests, {"Day of the Dead", 14175}) -- The Grateful Dead -- Orc
tinsert(eventQuests, {"Day of the Dead", 14176}) -- The Grateful Dead -- Tauren
tinsert(eventQuests, {"Day of the Dead", 14177}) -- The Grateful Dead -- Troll
-- Cata quests
tinsert(eventQuests, {"Day of the Dead", 27841}) -- The Grateful Dead -- Goblin
tinsert(eventQuests, {"Day of the Dead", 27846}) -- The Grateful Dead -- Worgen
@@ -1,291 +0,0 @@
---@type QuestieEvent
local QuestieEvent = QuestieLoader:ImportModule("QuestieEvent")
---@type Expansions
local Expansions = QuestieLoader:ImportModule("Expansions")
local tinsert = table.insert
local eventQuests = QuestieEvent.eventQuests
tinsert(eventQuests, {"Hallow's End", 1657}) -- Stinking Up Southshore
tinsert(eventQuests, {"Hallow's End", 1658}) -- Crashing the Wickerman Festival
tinsert(eventQuests, {"Hallow's End", 8311}) -- Hallow's End Treats for Jesper!
tinsert(eventQuests, {"Hallow's End", 8312}) -- Hallow's End Treats for Spoops!
tinsert(eventQuests, {"Hallow's End", 8322}) -- Rotten Eggs
tinsert(eventQuests, {"Hallow's End", 8353}) -- Chicken Clucking for a Mint
tinsert(eventQuests, {"Hallow's End", 8354}) -- Chicken Clucking for a Mint
tinsert(eventQuests, {"Hallow's End", 8355}) -- Incoming Gumdrop
tinsert(eventQuests, {"Hallow's End", 8356}) -- Flexing for Nougat
tinsert(eventQuests, {"Hallow's End", 8357}) -- Dancing for Marzipan
tinsert(eventQuests, {"Hallow's End", 8358}) -- Incoming Gumdrop
tinsert(eventQuests, {"Hallow's End", 8359}) -- Flexing for Nougat
tinsert(eventQuests, {"Hallow's End", 8360}) -- Dancing for Marzipan
tinsert(eventQuests, {"Hallow's End", 8373}) -- The Power of Pine
tinsert(eventQuests, {"Hallow's End", 8409}) -- Ruined Kegs
-- TBC quests
tinsert(eventQuests, {"Hallow's End", 11131}) -- Stop the Fires!
tinsert(eventQuests, {"Hallow's End", 11135, nil, nil, nil, nil, Expansions.Current >= Expansions.Wotlk}) -- The Headless Horseman
tinsert(eventQuests, {"Hallow's End", 11219}) -- Stop the Fires!
tinsert(eventQuests, {"Hallow's End", 11220, nil, nil, nil, nil, Expansions.Current >= Expansions.Wotlk}) -- The Headless Horseman
tinsert(eventQuests, {"Hallow's End", 11242, nil, nil, nil, nil, Expansions.Current >= Expansions.Wotlk}) -- Free at Last!
tinsert(eventQuests, {"Hallow's End", 11356}) -- Costumed Orphan Matron
tinsert(eventQuests, {"Hallow's End", 11357}) -- Masked Orphan Matron
tinsert(eventQuests, {"Hallow's End", 11360}) -- Fire Brigade Practice
tinsert(eventQuests, {"Hallow's End", 11361}) -- Fire Training
tinsert(eventQuests, {"Hallow's End", 11392, nil, nil, nil, nil, Expansions.Current >= Expansions.Wotlk}) -- Call the Headless Horseman
tinsert(eventQuests, {"Hallow's End", 11401, nil, nil, nil, nil, Expansions.Current == Expansions.Wotlk}) -- Call the Headless Horseman
tinsert(eventQuests, {"Hallow's End", 11403, nil, nil, nil, nil, Expansions.Current >= Expansions.Wotlk}) -- Free at Last!
--tinsert(eventQuests, {"Hallow's End", 11404}) -- Call the Headless Horseman -- phase gated?
--tinsert(eventQuests, {"Hallow's End", 11405}) -- Call the Headless Horseman -- phase gated?
tinsert(eventQuests, {"Hallow's End", 11439}) -- Fire Brigade Practice
tinsert(eventQuests, {"Hallow's End", 11440}) -- Fire Brigade Practice
tinsert(eventQuests, {"Hallow's End", 11449}) -- Fire Training
tinsert(eventQuests, {"Hallow's End", 11450}) -- Fire Training
tinsert(eventQuests, {"Hallow's End", 12133}) -- Smash the Pumpkin
tinsert(eventQuests, {"Hallow's End", 12135}) -- Let the Fires Come!
tinsert(eventQuests, {"Hallow's End", 12139}) -- Let the Fires Come!
tinsert(eventQuests, {"Hallow's End", 12155}) -- Smash the Pumpkin
tinsert(eventQuests, {"Hallow's End", 12286}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 12331}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 12332}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 12333}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 12334}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 12335}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 12336}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 12337}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 12338, nil, nil, nil, nil, Expansions.Current >= Expansions.Cata}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 12339}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 12340}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 12341}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 12342}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 12343}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 12344}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 12345}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 12346, nil, nil, nil, nil, Expansions.Current >= Expansions.Cata}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 12347}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 12348}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 12349}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 12350}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 12351}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 12352}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 12353}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 12354}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 12355}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 12356}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 12357}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 12358}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 12359}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 12360}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 12361}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 12362}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 12363}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 12364}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 12365}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 12366}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 12367}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 12368}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 12369}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 12370}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 12371}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 12373}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 12374}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 12375, nil, nil, nil, nil, Expansions.Current >= Expansions.Cata}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 12376}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 12377}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 12378}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 12379, nil, nil, nil, nil, Expansions.Current >= Expansions.Cata}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 12380}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 12381}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 12382}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 12383}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 12384}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 12385, nil, nil, nil, nil, Expansions.Current >= Expansions.Cata}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 12386}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 12387}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 12388}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 12389}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 12390}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 12391}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 12392}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 12393}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 12394}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 12395}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 12396}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 12397}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 12398}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 12399}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 12400}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 12401}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 12402}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 12403}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 12404}) -- Candy Bucket
--tinsert(eventQuests, {"Hallow's End", 12405}) -- Candy Bucket -- doesn't exist
tinsert(eventQuests, {"Hallow's End", 12406}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 12407}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 12408}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 12409}) -- Candy Bucket
--tinsert(eventQuests, {"Hallow's End", 12410}) -- Candy Bucket -- doesn't exist
-- WoTLK quests
tinsert(eventQuests, {"Hallow's End", 12940}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 12941}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 12944}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 12945}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 12946}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 12947}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 12950}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 13433}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 13434}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 13435}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 13436}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 13437}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 13438}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 13439}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 13448}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 13452}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 13456}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 13459}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 13460}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 13461}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 13462}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 13463}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 13464}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 13465}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 13466}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 13467}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 13468}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 13469}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 13470}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 13471}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 13472}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 13473}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 13474}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 13501}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 13548}) -- Candy Bucket
-- Cata quests
tinsert(eventQuests, {"Hallow's End", 28951}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 28952}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 28953}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 28954}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 28955}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 28956}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 28957}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 28958}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 28959}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 28960}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 28961}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 28962}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 28963}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 28964}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 28965}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 28966}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 28967}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 28968}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 28969}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 28970}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 28971}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 28972}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 28973}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 28974}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 28975}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 28976}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 28977}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 28978}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 28979}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 28980}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 28981}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 28982}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 28983}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 28984}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 28985}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 28986}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 28987}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 28988}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 28989}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 28990}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 28991}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 28992}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 28993}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 28994}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 28995}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 28996}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 28997}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 28998}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 28999}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 29000}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 29001}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 29002}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 29003}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 29004}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 29005}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 29006}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 29007}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 29008}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 29009}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 29010}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 29011}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 29012}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 29013}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 29014}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 29016}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 29017}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 29018}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 29019}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 29020}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 29054}) -- Stink Bombs Away!
tinsert(eventQuests, {"Hallow's End", 29074}) -- A Season for Celebration
tinsert(eventQuests, {"Hallow's End", 29075}) -- A Time to Gain
tinsert(eventQuests, {"Hallow's End", 29144}) -- Clean Up in Stormwind
tinsert(eventQuests, {"Hallow's End", 29371}) -- A Time to Lose
tinsert(eventQuests, {"Hallow's End", 29374}) -- Stink Bombs Away!
tinsert(eventQuests, {"Hallow's End", 29375}) -- Clean Up in Undercity
tinsert(eventQuests, {"Hallow's End", 29376}) -- A Time to Build Up
tinsert(eventQuests, {"Hallow's End", 29377}) -- A Time to Break Down
tinsert(eventQuests, {"Hallow's End", 29392}) -- Missing Heirlooms
tinsert(eventQuests, {"Hallow's End", 29398}) -- Fencing the Goods
tinsert(eventQuests, {"Hallow's End", 29399}) -- Shopping Around
tinsert(eventQuests, {"Hallow's End", 29400}) -- A Season for Celebration
tinsert(eventQuests, {"Hallow's End", 29402}) -- Taking Precautions
tinsert(eventQuests, {"Hallow's End", 29403}) -- The Collector's Agent
tinsert(eventQuests, {"Hallow's End", 29411}) -- What Now?
tinsert(eventQuests, {"Hallow's End", 29413}) -- The Creepy Crate
tinsert(eventQuests, {"Hallow's End", 29415}) -- Missing Heirlooms
tinsert(eventQuests, {"Hallow's End", 29416}) -- Fencing the Goods
tinsert(eventQuests, {"Hallow's End", 29425}) -- Shopping Around
tinsert(eventQuests, {"Hallow's End", 29426}) -- Taking Precautions
tinsert(eventQuests, {"Hallow's End", 29427}) -- The Collector's Agent
tinsert(eventQuests, {"Hallow's End", 29428}) -- What Now?
tinsert(eventQuests, {"Hallow's End", 29429}) -- The Creepy Crate
tinsert(eventQuests, {"Hallow's End", 29430}) -- A Friend in Need
tinsert(eventQuests, {"Hallow's End", 29431}) -- A Friend in Need
-- MoP quests
tinsert(eventQuests, {"Hallow's End", 32020}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 32021}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 32022}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 32023}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 32024}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 32026}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 32027}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 32028}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 32029}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 32031}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 32032}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 32033}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 32034}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 32036}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 32037}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 32039}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 32040}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 32041}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 32042}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 32043}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 32044}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 32046}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 32047}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 32048}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 32049}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 32050}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 32051}) -- Candy Bucket
tinsert(eventQuests, {"Hallow's End", 32052}) -- Candy Bucket
@@ -1,8 +0,0 @@
---@type QuestieEvent
local QuestieEvent = QuestieLoader:ImportModule("QuestieEvent")
local tinsert = table.insert
local eventQuests = QuestieEvent.eventQuests
tinsert(eventQuests, {"Harvest Festival", 8149}) -- Honoring a Hero
tinsert(eventQuests, {"Harvest Festival", 8150}) -- Honoring a Hero
@@ -1,92 +0,0 @@
---@type QuestieEvent
local QuestieEvent = QuestieLoader:ImportModule("QuestieEvent")
---@type Expansions
local Expansions = QuestieLoader:ImportModule("Expansions")
local tinsert = table.insert
local eventQuests = QuestieEvent.eventQuests
tinsert(eventQuests, {"Love is in the Air", 8897, nil, nil, nil, nil, Expansions.Current >= Expansions.Wotlk}) -- Dearest Colara,
tinsert(eventQuests, {"Love is in the Air", 8898, nil, nil, nil, nil, Expansions.Current >= Expansions.Wotlk}) -- Dearest Colara,
tinsert(eventQuests, {"Love is in the Air", 8899, nil, nil, nil, nil, Expansions.Current >= Expansions.Wotlk}) -- Dearest Colara,
tinsert(eventQuests, {"Love is in the Air", 8900, nil, nil, nil, nil, Expansions.Current >= Expansions.Wotlk}) -- Dearest Elenia,
tinsert(eventQuests, {"Love is in the Air", 8901, nil, nil, nil, nil, Expansions.Current >= Expansions.Wotlk}) -- Dearest Elenia,
tinsert(eventQuests, {"Love is in the Air", 8902, nil, nil, nil, nil, Expansions.Current >= Expansions.Wotlk}) -- Dearest Elenia,
tinsert(eventQuests, {"Love is in the Air", 8903, nil, nil, nil, nil, Expansions.Current >= Expansions.Wotlk}) -- Dangerous Love
tinsert(eventQuests, {"Love is in the Air", 8904, nil, nil, nil, nil, Expansions.Current >= Expansions.Wotlk}) -- Dangerous Love
tinsert(eventQuests, {"Love is in the Air", 8979, nil, nil, nil, nil, Expansions.Current >= Expansions.Wotlk}) -- Fenstad's Hunch
tinsert(eventQuests, {"Love is in the Air", 8980, nil, nil, nil, nil, Expansions.Current >= Expansions.Wotlk}) -- Zinge's Assessment
tinsert(eventQuests, {"Love is in the Air", 8981, nil, nil, nil, nil, Expansions.Current >= Expansions.Wotlk}) -- Gift Giving
tinsert(eventQuests, {"Love is in the Air", 8982, nil, nil, nil, nil, Expansions.Current >= Expansions.Wotlk}) -- Tracing the Source
tinsert(eventQuests, {"Love is in the Air", 8983, nil, nil, nil, nil, Expansions.Current >= Expansions.Wotlk}) -- Tracing the Source
tinsert(eventQuests, {"Love is in the Air", 8984, nil, nil, nil, nil, Expansions.Current >= Expansions.Wotlk}) -- The Source Revealed
tinsert(eventQuests, {"Love is in the Air", 8993, nil, nil, nil, nil, Expansions.Current >= Expansions.Wotlk}) -- Gift Giving
tinsert(eventQuests, {"Love is in the Air", 9024, nil, nil, nil, nil, Expansions.Current >= Expansions.Wotlk}) -- Aristan's Hunch
tinsert(eventQuests, {"Love is in the Air", 9025, nil, nil, nil, nil, Expansions.Current >= Expansions.Wotlk}) -- Morgan's Discovery
tinsert(eventQuests, {"Love is in the Air", 9026, nil, nil, nil, nil, Expansions.Current >= Expansions.Wotlk}) -- Tracing the Source
tinsert(eventQuests, {"Love is in the Air", 9027, nil, nil, nil, nil, Expansions.Current >= Expansions.Wotlk}) -- Tracing the Source
tinsert(eventQuests, {"Love is in the Air", 9028, nil, nil, nil, nil, Expansions.Current >= Expansions.Wotlk}) -- The Source Revealed
tinsert(eventQuests, {"Love is in the Air", 9029, nil, nil, nil, nil, Expansions.Current >= Expansions.Wotlk}) -- A Bubbling Cauldron
-- TBC quests
tinsert(eventQuests, {"Love is in the Air", 11558, nil, nil, nil, nil, Expansions.Current >= Expansions.Wotlk}) -- Dangerous Love
-- WotLK quests
tinsert(eventQuests, {"Love is in the Air", 14483}) -- Something is in the Air (and it Ain't Love)
tinsert(eventQuests, {"Love is in the Air", 14488, nil, nil, nil, nil, Expansions.Current >= Expansions.Cata}) -- You've Been Served
tinsert(eventQuests, {"Love is in the Air", 24597}) -- A Gift for the King of Stormwind
tinsert(eventQuests, {"Love is in the Air", 24609}) -- A Gift for the Lord of Ironforge
tinsert(eventQuests, {"Love is in the Air", 24610}) -- A Gift for the High Priestess of Elune
tinsert(eventQuests, {"Love is in the Air", 24611}) -- A Gift for the Prophet
tinsert(eventQuests, {"Love is in the Air", 24612}) -- A Gift for the Warchief
tinsert(eventQuests, {"Love is in the Air", 24613}) -- A Gift for the Banshee Queen
tinsert(eventQuests, {"Love is in the Air", 24614}) -- A Gift for the High Chieftain
tinsert(eventQuests, {"Love is in the Air", 24615}) -- A Gift for the Regent Lord of Quel'Thalas
tinsert(eventQuests, {"Love is in the Air", 24629}) -- A Perfect Puff of Perfume
tinsert(eventQuests, {"Love is in the Air", 24635}) -- A Cloudlet of Classy Cologne
tinsert(eventQuests, {"Love is in the Air", 24636}) -- Bonbon Blitz
tinsert(eventQuests, {"Love is in the Air", 24536}) -- Something Stinks
tinsert(eventQuests, {"Love is in the Air", 24655}) -- Something Stinks
tinsert(eventQuests, {"Love is in the Air", 24541}) -- Pilfering Perfume
tinsert(eventQuests, {"Love is in the Air", 24656}) -- Pilfering Perfume
tinsert(eventQuests, {"Love is in the Air", 24745}) -- Something is in the Air (and it Ain't Love)
tinsert(eventQuests, {"Love is in the Air", 24804}) -- Uncommon Scents
tinsert(eventQuests, {"Love is in the Air", 24805}) -- Uncommon Scents
tinsert(eventQuests, {"Love is in the Air", 24576}) -- A Friendly Chat...
tinsert(eventQuests, {"Love is in the Air", 24657}) -- A Friendly Chat...
-- These seem to be breadcrumbs to "You've Been Served" (14488) but aren't available
-- Might either not be in game at all or guarded behind finishing one of the two "A Friendly Chat..." quests above
tinsert(eventQuests, {"Love is in the Air", 24792}) -- Man on the Inside
tinsert(eventQuests, {"Love is in the Air", 24793}) -- Man on the Inside
tinsert(eventQuests, {"Love is in the Air", 24848}) -- Fireworks At The Gilded Rose
tinsert(eventQuests, {"Love is in the Air", 24849}) -- Hot On The Trail
tinsert(eventQuests, {"Love is in the Air", 24850}) -- Snivel's Sweetheart
tinsert(eventQuests, {"Love is in the Air", 24851}) -- Hot On The Trail
-- These "Crushing the Crown" quests are dailies, handed out based on the player's current level.
-- The Durotar + Elwynn quests are available at level 5, with each successive quest being available
-- at 14, 23, 32, 41, 51, 61, and 71, respectively. They are exclusive to each other; once you hit 14,
-- you can no longer pick up the level 5 quest.
tinsert(eventQuests, {"Love is in the Air", 24638}) -- Crushing the Crown (Durotar)
tinsert(eventQuests, {"Love is in the Air", 24645}) -- Crushing the Crown (Ambermill)
tinsert(eventQuests, {"Love is in the Air", 24647}) -- Crushing the Crown (Hillsbrad H)
tinsert(eventQuests, {"Love is in the Air", 24648}) -- Crushing the Crown (Theramore H)
tinsert(eventQuests, {"Love is in the Air", 24649}) -- Crushing the Crown (Aerie Peak H)
tinsert(eventQuests, {"Love is in the Air", 24650}) -- Crushing the Crown (Everlook H)
tinsert(eventQuests, {"Love is in the Air", 24651}) -- Crushing the Crown (Shattrath H)
tinsert(eventQuests, {"Love is in the Air", 24652}) -- Crushing the Crown (Crystalsong H)
tinsert(eventQuests, {"Love is in the Air", 24658}) -- Crushing the Crown (Elwynn)
tinsert(eventQuests, {"Love is in the Air", 24659}) -- Crushing the Crown (Darkshore)
tinsert(eventQuests, {"Love is in the Air", 24660}) -- Crushing the Crown (Hillsbrad A)
tinsert(eventQuests, {"Love is in the Air", 24662}) -- Crushing the Crown (Theramore A)
tinsert(eventQuests, {"Love is in the Air", 24663}) -- Crushing the Crown (Aerie Peak A)
tinsert(eventQuests, {"Love is in the Air", 24664}) -- Crushing the Crown (Everlook A)
tinsert(eventQuests, {"Love is in the Air", 24665}) -- Crushing the Crown (Shattrath A)
tinsert(eventQuests, {"Love is in the Air", 24666}) -- Crushing the Crown (Crystalsong A)
-- Cata quests
tinsert(eventQuests, {"Love is in the Air", 28934}) -- Crushing the Crown (Uldum A)
tinsert(eventQuests, {"Love is in the Air", 28935}) -- Crushing the Crown (Uldum H)
@@ -1,125 +0,0 @@
---@type QuestieEvent
local QuestieEvent = QuestieLoader:ImportModule("QuestieEvent")
---@type Expansions
local Expansions = QuestieLoader:ImportModule("Expansions")
local tinsert = table.insert
local eventQuests = QuestieEvent.eventQuests
tinsert(eventQuests, {"Lunar Festival", 8619}) -- Morndeep the Elder
tinsert(eventQuests, {"Lunar Festival", 8635}) -- Splitrock the Elder
tinsert(eventQuests, {"Lunar Festival", 8636}) -- Rumblerock the Elder
tinsert(eventQuests, {"Lunar Festival", 8642}) -- Silvervein the Elder
tinsert(eventQuests, {"Lunar Festival", 8643}) -- Highpeak the Elder
tinsert(eventQuests, {"Lunar Festival", 8644}) -- Stonefort the Elder
tinsert(eventQuests, {"Lunar Festival", 8645}) -- Obsidian the Elder
tinsert(eventQuests, {"Lunar Festival", 8646}) -- Hammershout the Elder
tinsert(eventQuests, {"Lunar Festival", 8647}) -- Bellowrage the Elder
tinsert(eventQuests, {"Lunar Festival", 8648}) -- Darkcore the Elder
tinsert(eventQuests, {"Lunar Festival", 8649}) -- Stormbrow the Elder
tinsert(eventQuests, {"Lunar Festival", 8650}) -- Snowcrown the Elder
tinsert(eventQuests, {"Lunar Festival", 8651}) -- Ironband the Elder
tinsert(eventQuests, {"Lunar Festival", 8652}) -- Graveborn the Elder
tinsert(eventQuests, {"Lunar Festival", 8653}) -- Goldwell the Elder
tinsert(eventQuests, {"Lunar Festival", 8654}) -- Primestone the Elder
tinsert(eventQuests, {"Lunar Festival", 8670}) -- Runetotem the Elder
tinsert(eventQuests, {"Lunar Festival", 8671}) -- Ragetotem the Elder
tinsert(eventQuests, {"Lunar Festival", 8672}) -- Stonespire the Elder
tinsert(eventQuests, {"Lunar Festival", 8673}) -- Bloodhoof the Elder
tinsert(eventQuests, {"Lunar Festival", 8674}) -- Winterhoof the Elder
tinsert(eventQuests, {"Lunar Festival", 8675}) -- Skychaser the Elder
tinsert(eventQuests, {"Lunar Festival", 8676}) -- Wildmane the Elder
tinsert(eventQuests, {"Lunar Festival", 8677}) -- Darkhorn the Elder
tinsert(eventQuests, {"Lunar Festival", 8678}) -- Proudhorn the Elder
tinsert(eventQuests, {"Lunar Festival", 8679}) -- Grimtotem the Elder
tinsert(eventQuests, {"Lunar Festival", 8680}) -- Windtotem the Elder
tinsert(eventQuests, {"Lunar Festival", 8681}) -- Thunderhorn the Elder
tinsert(eventQuests, {"Lunar Festival", 8682}) -- Skyseer the Elder
tinsert(eventQuests, {"Lunar Festival", 8683}) -- Dawnstrider the Elder
tinsert(eventQuests, {"Lunar Festival", 8684}) -- Dreamseer the Elder
tinsert(eventQuests, {"Lunar Festival", 8685}) -- Mistwalker the Elder
tinsert(eventQuests, {"Lunar Festival", 8686}) -- High Mountain the Elder
tinsert(eventQuests, {"Lunar Festival", 8688}) -- Windrun the Elder
tinsert(eventQuests, {"Lunar Festival", 8713}) -- Starsong the Elder
tinsert(eventQuests, {"Lunar Festival", 8714}) -- Moonstrike the Elder
tinsert(eventQuests, {"Lunar Festival", 8715}) -- Bladeleaf the Elder
tinsert(eventQuests, {"Lunar Festival", 8716}) -- Starglade the Elder
tinsert(eventQuests, {"Lunar Festival", 8717}) -- Moonwarden the Elder
tinsert(eventQuests, {"Lunar Festival", 8718}) -- Bladeswift the Elder
tinsert(eventQuests, {"Lunar Festival", 8719}) -- Bladesing the Elder
tinsert(eventQuests, {"Lunar Festival", 8720}) -- Skygleam the Elder
tinsert(eventQuests, {"Lunar Festival", 8721}) -- Starweave the Elder
tinsert(eventQuests, {"Lunar Festival", 8722}) -- Meadowrun the Elder
tinsert(eventQuests, {"Lunar Festival", 8723}) -- Nightwind the Elder
tinsert(eventQuests, {"Lunar Festival", 8724}) -- Morningdew the Elder
tinsert(eventQuests, {"Lunar Festival", 8725}) -- Riversong the Elder
tinsert(eventQuests, {"Lunar Festival", 8726}) -- Brightspear the Elder
tinsert(eventQuests, {"Lunar Festival", 8727}) -- Farwhisper the Elder
tinsert(eventQuests, {"Lunar Festival", 8862, nil, nil, nil, nil, Expansions.Current >= Expansions.Cata}) -- Elune's Candle
tinsert(eventQuests, {"Lunar Festival", 8863, nil, nil, nil, nil, Expansions.Current >= Expansions.Cata}) -- Festival Dumplings
tinsert(eventQuests, {"Lunar Festival", 8864, nil, nil, nil, nil, Expansions.Current >= Expansions.Cata}) -- Festive Lunar Dresses
tinsert(eventQuests, {"Lunar Festival", 8865, nil, nil, nil, nil, Expansions.Current >= Expansions.Cata}) -- Festive Lunar Pant Suits
tinsert(eventQuests, {"Lunar Festival", 8866}) -- Bronzebeard the Elder
tinsert(eventQuests, {"Lunar Festival", 8867}) -- Lunar Fireworks
tinsert(eventQuests, {"Lunar Festival", 8868}) -- Elune's Blessing
tinsert(eventQuests, {"Lunar Festival", 8870}) -- The Lunar Festival
tinsert(eventQuests, {"Lunar Festival", 8871}) -- The Lunar Festival
tinsert(eventQuests, {"Lunar Festival", 8872}) -- The Lunar Festival
tinsert(eventQuests, {"Lunar Festival", 8873}) -- The Lunar Festival
tinsert(eventQuests, {"Lunar Festival", 8874}) -- The Lunar Festival
tinsert(eventQuests, {"Lunar Festival", 8875}) -- The Lunar Festival
tinsert(eventQuests, {"Lunar Festival", 8876, nil, nil, nil, nil, Expansions.Current >= Expansions.Cata}) -- Small Rockets
tinsert(eventQuests, {"Lunar Festival", 8877, nil, nil, nil, nil, Expansions.Current >= Expansions.Cata}) -- Firework Launcher
tinsert(eventQuests, {"Lunar Festival", 8878, nil, nil, nil, nil, Expansions.Current >= Expansions.Cata}) -- Festive Recipes
tinsert(eventQuests, {"Lunar Festival", 8879, nil, nil, nil, nil, Expansions.Current >= Expansions.Cata}) -- Large Rockets
tinsert(eventQuests, {"Lunar Festival", 8880, nil, nil, nil, nil, Expansions.Current >= Expansions.Cata}) -- Cluster Rockets
tinsert(eventQuests, {"Lunar Festival", 8881, nil, nil, nil, nil, Expansions.Current >= Expansions.Cata}) -- Large Cluster Rockets
tinsert(eventQuests, {"Lunar Festival", 8882, nil, nil, nil, nil, Expansions.Current >= Expansions.Cata}) -- Cluster Launcher
tinsert(eventQuests, {"Lunar Festival", 8883}) -- Valadar Starsong
-- SoD quests
tinsert(eventQuests, {"Lunar Festival", 80164}) -- Large Cluster Rockets
tinsert(eventQuests, {"Lunar Festival", 80165}) -- Cluster Rockets
tinsert(eventQuests, {"Lunar Festival", 80166}) -- Small Rockets
tinsert(eventQuests, {"Lunar Festival", 80167}) -- Large Rockets
tinsert(eventQuests, {"Lunar Festival", 80168}) -- Firework Launcher
tinsert(eventQuests, {"Lunar Festival", 80169}) -- Cluster Launcher
tinsert(eventQuests, {"Lunar Festival", 80170}) -- Festive Recipes
-- Northrend Elders
tinsert(eventQuests, {"Lunar Festival", 13012}) -- Sardis the Elder
tinsert(eventQuests, {"Lunar Festival", 13013}) -- Beldak the Elder
tinsert(eventQuests, {"Lunar Festival", 13014}) -- Morthie the Elder
tinsert(eventQuests, {"Lunar Festival", 13015}) -- Fargal the Elder
tinsert(eventQuests, {"Lunar Festival", 13016}) -- Northal the Elder
tinsert(eventQuests, {"Lunar Festival", 13017}) -- Jarten the Elder
tinsert(eventQuests, {"Lunar Festival", 13018}) -- Sandrene the Elder
tinsert(eventQuests, {"Lunar Festival", 13019}) -- Thoim the Elder
tinsert(eventQuests, {"Lunar Festival", 13020}) -- Stonebeard the Elder
tinsert(eventQuests, {"Lunar Festival", 13021}) -- Igasho the Elder
tinsert(eventQuests, {"Lunar Festival", 13022}) -- Nurgen the Elder
tinsert(eventQuests, {"Lunar Festival", 13023}) -- Kilias the Elder
tinsert(eventQuests, {"Lunar Festival", 13024}) -- Wanikaya the Elder
tinsert(eventQuests, {"Lunar Festival", 13025}) -- Lunaro the Elder
tinsert(eventQuests, {"Lunar Festival", 13026}) -- Bluewolf the Elder
tinsert(eventQuests, {"Lunar Festival", 13027}) -- Tauros the Elder
tinsert(eventQuests, {"Lunar Festival", 13028}) -- Graymane the Elder
tinsert(eventQuests, {"Lunar Festival", 13029}) -- Pamuya the Elder
tinsert(eventQuests, {"Lunar Festival", 13030}) -- Whurain the Elder
tinsert(eventQuests, {"Lunar Festival", 13031}) -- Skywarden the Elder
tinsert(eventQuests, {"Lunar Festival", 13032}) -- Muraco the Elder
tinsert(eventQuests, {"Lunar Festival", 13033}) -- Arp the Elder
tinsert(eventQuests, {"Lunar Festival", 13065}) -- Ohanzee the Elder
tinsert(eventQuests, {"Lunar Festival", 13066}) -- Yurauk the Elder
tinsert(eventQuests, {"Lunar Festival", 13067}) -- Chogan'gada the Elder
-- Cata quests
tinsert(eventQuests, {"Lunar Festival", 29734}) -- Deepforge the Elder
tinsert(eventQuests, {"Lunar Festival", 29735}) -- Stonebrand the Elder
tinsert(eventQuests, {"Lunar Festival", 29736}) -- Darkfeather the Elder
tinsert(eventQuests, {"Lunar Festival", 29737}) -- Firebeard the Elder
tinsert(eventQuests, {"Lunar Festival", 29738}) -- Moonlance the Elder
tinsert(eventQuests, {"Lunar Festival", 29739}) -- Windsong the Elder
tinsert(eventQuests, {"Lunar Festival", 29740}) -- Evershade the Elder
tinsert(eventQuests, {"Lunar Festival", 29741}) -- Sekhemi the Elder
tinsert(eventQuests, {"Lunar Festival", 29742}) -- Menkhaf the Elder
@@ -1,265 +0,0 @@
---@type QuestieEvent
local QuestieEvent = QuestieLoader:ImportModule("QuestieEvent")
---@type Expansions
local Expansions = QuestieLoader:ImportModule("Expansions")
local tinsert = table.insert
local eventQuests = QuestieEvent.eventQuests
tinsert(eventQuests, {"Midsummer", 9324}) -- Stealing Orgrimmar's Flame
tinsert(eventQuests, {"Midsummer", 9325}) -- Stealing Thunder Bluff's Flame
tinsert(eventQuests, {"Midsummer", 9326}) -- Stealing the Undercity's Flame
tinsert(eventQuests, {"Midsummer", 9330}) -- Stealing Stormwind's Flame
tinsert(eventQuests, {"Midsummer", 9331}) -- Stealing Ironforge's Flame
tinsert(eventQuests, {"Midsummer", 9332}) -- Stealing Darnassus's Flame
tinsert(eventQuests, {"Midsummer", 9339}) -- A Thief's Reward
tinsert(eventQuests, {"Midsummer", 9365}) -- A Thief's Reward
-- Removed in TBC
tinsert(eventQuests, {"Midsummer", 9388, nil, nil, nil, nil, Expansions.Current >= Expansions.Tbc}) -- Flickering Flames in Kalimdor
tinsert(eventQuests, {"Midsummer", 9389, nil, nil, nil, nil, Expansions.Current >= Expansions.Tbc}) -- Flickering Flames in the Eastern Kingdoms
tinsert(eventQuests, {"Midsummer", 9319, nil, nil, nil, nil, Expansions.Current >= Expansions.Tbc}) -- A Light in Dark Places
tinsert(eventQuests, {"Midsummer", 9386, nil, nil, nil, nil, Expansions.Current >= Expansions.Tbc}) -- A Light in Dark Places
tinsert(eventQuests, {"Midsummer", 9367, nil, nil, nil, nil, Expansions.Current >= Expansions.Tbc}) -- The Festival of Fire
tinsert(eventQuests, {"Midsummer", 9368, nil, nil, nil, nil, Expansions.Current >= Expansions.Tbc}) -- The Festival of Fire
tinsert(eventQuests, {"Midsummer", 9322, nil, nil, nil, nil, Expansions.Current >= Expansions.Tbc}) -- Wild Fires in Kalimdor
tinsert(eventQuests, {"Midsummer", 9323, nil, nil, nil, nil, Expansions.Current >= Expansions.Tbc}) -- Wild Fires in the Eastern Kingdoms
-- TBC quests
tinsert(eventQuests, {"Midsummer", 11580}) -- Desecrate this Fire!
tinsert(eventQuests, {"Midsummer", 11581}) -- Desecrate this Fire!
tinsert(eventQuests, {"Midsummer", 11583}) -- Honor the Flame
tinsert(eventQuests, {"Midsummer", 11584}) -- Honor the Flame
tinsert(eventQuests, {"Midsummer", 11657}) -- Torch Catching
tinsert(eventQuests, {"Midsummer", 11691, nil, nil, nil, nil, Expansions.Current >= Expansions.Cata}) -- Summon Ahune
tinsert(eventQuests, {"Midsummer", 11696, nil, nil, nil, nil, Expansions.Current >= Expansions.Cata}) -- Ahune is Here!
tinsert(eventQuests, {"Midsummer", 11731}) -- Torch Tossing
tinsert(eventQuests, {"Midsummer", 11732}) -- Desecrate this Fire!
tinsert(eventQuests, {"Midsummer", 11734}) -- Desecrate this Fire!
tinsert(eventQuests, {"Midsummer", 11735}) -- Desecrate this Fire!
tinsert(eventQuests, {"Midsummer", 11736}) -- Desecrate this Fire!
tinsert(eventQuests, {"Midsummer", 11737}) -- Desecrate this Fire!
tinsert(eventQuests, {"Midsummer", 11738}) -- Desecrate this Fire!
tinsert(eventQuests, {"Midsummer", 11739}) -- Desecrate this Fire!
tinsert(eventQuests, {"Midsummer", 11740}) -- Desecrate this Fire!
tinsert(eventQuests, {"Midsummer", 11741}) -- Desecrate this Fire!
tinsert(eventQuests, {"Midsummer", 11742}) -- Desecrate this Fire!
tinsert(eventQuests, {"Midsummer", 11743}) -- Desecrate this Fire!
tinsert(eventQuests, {"Midsummer", 11744}) -- Desecrate this Fire!
tinsert(eventQuests, {"Midsummer", 11745}) -- Desecrate this Fire!
tinsert(eventQuests, {"Midsummer", 11746}) -- Desecrate this Fire!
tinsert(eventQuests, {"Midsummer", 11747}) -- Desecrate this Fire!
tinsert(eventQuests, {"Midsummer", 11748, nil, nil, nil, nil, Expansions.Current >= Expansions.Cata}) -- Desecrate this Fire!
tinsert(eventQuests, {"Midsummer", 11749}) -- Desecrate this Fire!
tinsert(eventQuests, {"Midsummer", 11750}) -- Desecrate this Fire!
tinsert(eventQuests, {"Midsummer", 11751}) -- Desecrate this Fire!
tinsert(eventQuests, {"Midsummer", 11752}) -- Desecrate this Fire!
tinsert(eventQuests, {"Midsummer", 11753}) -- Desecrate this Fire!
tinsert(eventQuests, {"Midsummer", 11754}) -- Desecrate this Fire!
tinsert(eventQuests, {"Midsummer", 11755}) -- Desecrate this Fire!
tinsert(eventQuests, {"Midsummer", 11756}) -- Desecrate this Fire!
tinsert(eventQuests, {"Midsummer", 11757}) -- Desecrate this Fire!
tinsert(eventQuests, {"Midsummer", 11758}) -- Desecrate this Fire!
tinsert(eventQuests, {"Midsummer", 11759}) -- Desecrate this Fire!
tinsert(eventQuests, {"Midsummer", 11760}) -- Desecrate this Fire!
tinsert(eventQuests, {"Midsummer", 11761}) -- Desecrate this Fire!
tinsert(eventQuests, {"Midsummer", 11762}) -- Desecrate this Fire!
tinsert(eventQuests, {"Midsummer", 11763}) -- Desecrate this Fire!
tinsert(eventQuests, {"Midsummer", 11764}) -- Desecrate this Fire!
tinsert(eventQuests, {"Midsummer", 11765}) -- Desecrate this Fire!
tinsert(eventQuests, {"Midsummer", 11766}) -- Desecrate this Fire!
tinsert(eventQuests, {"Midsummer", 11767}) -- Desecrate this Fire!
tinsert(eventQuests, {"Midsummer", 11768}) -- Desecrate this Fire!
tinsert(eventQuests, {"Midsummer", 11769}) -- Desecrate this Fire!
tinsert(eventQuests, {"Midsummer", 11770}) -- Desecrate this Fire!
tinsert(eventQuests, {"Midsummer", 11771}) -- Desecrate this Fire!
tinsert(eventQuests, {"Midsummer", 11772}) -- Desecrate this Fire!
tinsert(eventQuests, {"Midsummer", 11773}) -- Desecrate this Fire!
tinsert(eventQuests, {"Midsummer", 11774}) -- Desecrate this Fire!
tinsert(eventQuests, {"Midsummer", 11775}) -- Desecrate this Fire!
tinsert(eventQuests, {"Midsummer", 11776}) -- Desecrate this Fire!
tinsert(eventQuests, {"Midsummer", 11777}) -- Desecrate this Fire!
tinsert(eventQuests, {"Midsummer", 11778}) -- Desecrate this Fire!
tinsert(eventQuests, {"Midsummer", 11779}) -- Desecrate this Fire!
tinsert(eventQuests, {"Midsummer", 11780}) -- Desecrate this Fire!
tinsert(eventQuests, {"Midsummer", 11781}) -- Desecrate this Fire!
tinsert(eventQuests, {"Midsummer", 11782}) -- Desecrate this Fire!
tinsert(eventQuests, {"Midsummer", 11783}) -- Desecrate this Fire!
tinsert(eventQuests, {"Midsummer", 11784}) -- Desecrate this Fire!
tinsert(eventQuests, {"Midsummer", 11785, nil, nil, nil, nil, Expansions.Current >= Expansions.Cata}) -- Desecrate this Fire!
tinsert(eventQuests, {"Midsummer", 11786}) -- Desecrate this Fire!
tinsert(eventQuests, {"Midsummer", 11787}) -- Desecrate this Fire!
tinsert(eventQuests, {"Midsummer", 11799}) -- Desecrate this Fire!
tinsert(eventQuests, {"Midsummer", 11800}) -- Desecrate this Fire!
tinsert(eventQuests, {"Midsummer", 11801}) -- Desecrate this Fire!
tinsert(eventQuests, {"Midsummer", 11802}) -- Desecrate this Fire!
tinsert(eventQuests, {"Midsummer", 11803}) -- Desecrate this Fire!
tinsert(eventQuests, {"Midsummer", 11804}) -- Honor the Flame
tinsert(eventQuests, {"Midsummer", 11805}) -- Honor the Flame
tinsert(eventQuests, {"Midsummer", 11806}) -- Honor the Flame
tinsert(eventQuests, {"Midsummer", 11807}) -- Honor the Flame
tinsert(eventQuests, {"Midsummer", 11808}) -- Honor the Flame
tinsert(eventQuests, {"Midsummer", 11809}) -- Honor the Flame
tinsert(eventQuests, {"Midsummer", 11810}) -- Honor the Flame
tinsert(eventQuests, {"Midsummer", 11811}) -- Honor the Flame
tinsert(eventQuests, {"Midsummer", 11812}) -- Honor the Flame
tinsert(eventQuests, {"Midsummer", 11813}) -- Honor the Flame
tinsert(eventQuests, {"Midsummer", 11814}) -- Honor the Flame
tinsert(eventQuests, {"Midsummer", 11815}) -- Honor the Flame
tinsert(eventQuests, {"Midsummer", 11816}) -- Honor the Flame
tinsert(eventQuests, {"Midsummer", 11817}) -- Honor the Flame
tinsert(eventQuests, {"Midsummer", 11818}) -- Honor the Flame
tinsert(eventQuests, {"Midsummer", 11819, nil, nil, nil, nil, Expansions.Current >= Expansions.Cata}) -- Honor the Flame
tinsert(eventQuests, {"Midsummer", 11820}) -- Honor the Flame
tinsert(eventQuests, {"Midsummer", 11821}) -- Honor the Flame
tinsert(eventQuests, {"Midsummer", 11822}) -- Honor the Flame
tinsert(eventQuests, {"Midsummer", 11823}) -- Honor the Flame
tinsert(eventQuests, {"Midsummer", 11824}) -- Honor the Flame
tinsert(eventQuests, {"Midsummer", 11825}) -- Honor the Flame
tinsert(eventQuests, {"Midsummer", 11826}) -- Honor the Flame
tinsert(eventQuests, {"Midsummer", 11827}) -- Honor the Flame
tinsert(eventQuests, {"Midsummer", 11828}) -- Honor the Flame
tinsert(eventQuests, {"Midsummer", 11829}) -- Honor the Flame
tinsert(eventQuests, {"Midsummer", 11830}) -- Honor the Flame
tinsert(eventQuests, {"Midsummer", 11831}) -- Honor the Flame
tinsert(eventQuests, {"Midsummer", 11832}) -- Honor the Flame
tinsert(eventQuests, {"Midsummer", 11833}) -- Honor the Flame
tinsert(eventQuests, {"Midsummer", 11834}) -- Honor the Flame
tinsert(eventQuests, {"Midsummer", 11835}) -- Honor the Flame
tinsert(eventQuests, {"Midsummer", 11836}) -- Honor the Flame
tinsert(eventQuests, {"Midsummer", 11837}) -- Honor the Flame
tinsert(eventQuests, {"Midsummer", 11838}) -- Honor the Flame
tinsert(eventQuests, {"Midsummer", 11839}) -- Honor the Flame
tinsert(eventQuests, {"Midsummer", 11840}) -- Honor the Flame
tinsert(eventQuests, {"Midsummer", 11841}) -- Honor the Flame
tinsert(eventQuests, {"Midsummer", 11842}) -- Honor the Flame
tinsert(eventQuests, {"Midsummer", 11843}) -- Honor the Flame
tinsert(eventQuests, {"Midsummer", 11844}) -- Honor the Flame
tinsert(eventQuests, {"Midsummer", 11845}) -- Honor the Flame
tinsert(eventQuests, {"Midsummer", 11846}) -- Honor the Flame
tinsert(eventQuests, {"Midsummer", 11847}) -- Honor the Flame
tinsert(eventQuests, {"Midsummer", 11848}) -- Honor the Flame
tinsert(eventQuests, {"Midsummer", 11849}) -- Honor the Flame
tinsert(eventQuests, {"Midsummer", 11850}) -- Honor the Flame
tinsert(eventQuests, {"Midsummer", 11851}) -- Honor the Flame
tinsert(eventQuests, {"Midsummer", 11852}) -- Honor the Flame
tinsert(eventQuests, {"Midsummer", 11853}) -- Honor the Flame
tinsert(eventQuests, {"Midsummer", 11854}) -- Honor the Flame
tinsert(eventQuests, {"Midsummer", 11855}) -- Honor the Flame
tinsert(eventQuests, {"Midsummer", 11856}) -- Honor the Flame
tinsert(eventQuests, {"Midsummer", 11857}) -- Honor the Flame
tinsert(eventQuests, {"Midsummer", 11858}) -- Honor the Flame
tinsert(eventQuests, {"Midsummer", 11859}) -- Honor the Flame
tinsert(eventQuests, {"Midsummer", 11860}) -- Honor the Flame
tinsert(eventQuests, {"Midsummer", 11861, nil, nil, nil, nil, Expansions.Current >= Expansions.Cata}) -- Honor the Flame
tinsert(eventQuests, {"Midsummer", 11862}) -- Honor the Flame
tinsert(eventQuests, {"Midsummer", 11863}) -- Honor the Flame
tinsert(eventQuests, {"Midsummer", 11882}) -- Playing with Fire
tinsert(eventQuests, {"Midsummer", 11886}) -- Unusual Activity
tinsert(eventQuests, {"Midsummer", 11891}) -- An Innocent Disguise
tinsert(eventQuests, {"Midsummer", 11915}) -- Playing with Fire
tinsert(eventQuests, {"Midsummer", 11917}) -- Striking Back (level 22)
tinsert(eventQuests, {"Midsummer", 11921}) -- Midsummer
tinsert(eventQuests, {"Midsummer", 11922}) -- Midsummer
tinsert(eventQuests, {"Midsummer", 11923}) -- Torch Catching
tinsert(eventQuests, {"Midsummer", 11924}) -- More Torch Catching
tinsert(eventQuests, {"Midsummer", 11925}) -- More Torch Catching
tinsert(eventQuests, {"Midsummer", 11926}) -- Midsummer
tinsert(eventQuests, {"Midsummer", 11933}) -- Stealing the Exodar's Flame
tinsert(eventQuests, {"Midsummer", 11935}) -- Stealing Silvermoon's Flame
tinsert(eventQuests, {"Midsummer", 11947}) -- Striking Back (level 32)
tinsert(eventQuests, {"Midsummer", 11948}) -- Striking Back (level 43)
tinsert(eventQuests, {"Midsummer", 11952}) -- Striking Back (level 51)
tinsert(eventQuests, {"Midsummer", 11953}) -- Striking Back (level 60)
tinsert(eventQuests, {"Midsummer", 11954}) -- Striking Back (level 67)
tinsert(eventQuests, {"Midsummer", 11955, nil, nil, nil, nil, Expansions.Current >= Expansions.Cata}) -- Ahune, the Frost Lord
tinsert(eventQuests, {"Midsummer", 11964}) -- Incense for the Summer Scorchlings
tinsert(eventQuests, {"Midsummer", 11966}) -- Incense for the Festival Scorchlings
tinsert(eventQuests, {"Midsummer", 11970}) -- not sure if phase 5 -- The Master of Summer Lore
tinsert(eventQuests, {"Midsummer", 11971}) -- not sure if phase 5 -- The Spinner of Summer Tales
tinsert(eventQuests, {"Midsummer", 11972}) -- Shards of Ahune
tinsert(eventQuests, {"Midsummer", 12012}) -- Inform the Elder
-- WotLK quests
tinsert(eventQuests, {"Midsummer", 13440}) -- Desecrate this Fire!
tinsert(eventQuests, {"Midsummer", 13441}) -- Desecrate this Fire!
tinsert(eventQuests, {"Midsummer", 13442}) -- Desecrate this Fire!
tinsert(eventQuests, {"Midsummer", 13443}) -- Desecrate this Fire!
tinsert(eventQuests, {"Midsummer", 13444}) -- Desecrate this Fire!
tinsert(eventQuests, {"Midsummer", 13445}) -- Desecrate this Fire!
tinsert(eventQuests, {"Midsummer", 13446}) -- Desecrate this Fire!
tinsert(eventQuests, {"Midsummer", 13447}) -- Desecrate this Fire!
tinsert(eventQuests, {"Midsummer", 13449}) -- Desecrate this Fire!
tinsert(eventQuests, {"Midsummer", 13450}) -- Desecrate this Fire!
tinsert(eventQuests, {"Midsummer", 13451}) -- Desecrate this Fire!
tinsert(eventQuests, {"Midsummer", 13453}) -- Desecrate this Fire!
tinsert(eventQuests, {"Midsummer", 13454}) -- Desecrate this Fire!
tinsert(eventQuests, {"Midsummer", 13455}) -- Desecrate this Fire!
tinsert(eventQuests, {"Midsummer", 13457}) -- Desecrate this Fire!
tinsert(eventQuests, {"Midsummer", 13458}) -- Desecrate this Fire!
tinsert(eventQuests, {"Midsummer", 13485}) -- Honor the Flame
tinsert(eventQuests, {"Midsummer", 13486}) -- Honor the Flame
tinsert(eventQuests, {"Midsummer", 13487}) -- Honor the Flame
tinsert(eventQuests, {"Midsummer", 13488}) -- Honor the Flame
tinsert(eventQuests, {"Midsummer", 13489}) -- Honor the Flame
tinsert(eventQuests, {"Midsummer", 13490}) -- Honor the Flame
tinsert(eventQuests, {"Midsummer", 13491}) -- Honor the Flame
tinsert(eventQuests, {"Midsummer", 13492}) -- Honor the Flame
tinsert(eventQuests, {"Midsummer", 13493}) -- Honor the Flame
tinsert(eventQuests, {"Midsummer", 13494}) -- Honor the Flame
tinsert(eventQuests, {"Midsummer", 13495}) -- Honor the Flame
tinsert(eventQuests, {"Midsummer", 13496}) -- Honor the Flame
tinsert(eventQuests, {"Midsummer", 13497}) -- Honor the Flame
tinsert(eventQuests, {"Midsummer", 13498}) -- Honor the Flame
tinsert(eventQuests, {"Midsummer", 13499}) -- Honor the Flame
tinsert(eventQuests, {"Midsummer", 13500}) -- Honor the Flame
-- Cata quests
tinsert(eventQuests, {"Midsummer", 28910}) -- Desecrate this Fire!
tinsert(eventQuests, {"Midsummer", 28911}) -- Desecrate this Fire!
tinsert(eventQuests, {"Midsummer", 28912}) -- Desecrate this Fire!
tinsert(eventQuests, {"Midsummer", 28913}) -- Desecrate this Fire!
tinsert(eventQuests, {"Midsummer", 28914}) -- Desecrate this Fire!
tinsert(eventQuests, {"Midsummer", 28915}) -- Desecrate this Fire!
tinsert(eventQuests, {"Midsummer", 28916}) -- Desecrate this Fire!
tinsert(eventQuests, {"Midsummer", 28917}) -- Desecrate this Fire!
tinsert(eventQuests, {"Midsummer", 28918}) -- Desecrate this Fire!
tinsert(eventQuests, {"Midsummer", 28919}) -- Desecrate this Fire!
tinsert(eventQuests, {"Midsummer", 28920}) -- Desecrate this Fire!
tinsert(eventQuests, {"Midsummer", 28921}) -- Desecrate this Fire!
tinsert(eventQuests, {"Midsummer", 28922}) -- Honor the Flame
tinsert(eventQuests, {"Midsummer", 28923}) -- Honor the Flame
tinsert(eventQuests, {"Midsummer", 28924}) -- Honor the Flame
tinsert(eventQuests, {"Midsummer", 28925}) -- Honor the Flame
tinsert(eventQuests, {"Midsummer", 28926}) -- Honor the Flame
tinsert(eventQuests, {"Midsummer", 28927}) -- Honor the Flame
tinsert(eventQuests, {"Midsummer", 28928}) -- Honor the Flame
tinsert(eventQuests, {"Midsummer", 28929}) -- Honor the Flame
tinsert(eventQuests, {"Midsummer", 28930}) -- Honor the Flame
tinsert(eventQuests, {"Midsummer", 28931}) -- Honor the Flame
tinsert(eventQuests, {"Midsummer", 28932}) -- Honor the Flame
tinsert(eventQuests, {"Midsummer", 28933}) -- Honor the Flame
tinsert(eventQuests, {"Midsummer", 28943}) -- Desecrate this Fire!
tinsert(eventQuests, {"Midsummer", 28944}) -- Desecrate this Fire!
tinsert(eventQuests, {"Midsummer", 28945}) -- Honor the Flame
tinsert(eventQuests, {"Midsummer", 28946}) -- Honor the Flame
tinsert(eventQuests, {"Midsummer", 28947}) -- Desecrate this Fire!
tinsert(eventQuests, {"Midsummer", 28948}) -- Desecrate this Fire!
tinsert(eventQuests, {"Midsummer", 28949}) -- Honor the Flame
tinsert(eventQuests, {"Midsummer", 28950}) -- Honor the Flame
tinsert(eventQuests, {"Midsummer", 29030}) -- Honor the Flame
tinsert(eventQuests, {"Midsummer", 29031}) -- Honor the Flame
tinsert(eventQuests, {"Midsummer", 29036}) -- Honor the Flame
tinsert(eventQuests, {"Midsummer", 29092}) -- Inform the Elder
-- MoP quests
tinsert(eventQuests, {"Midsummer", 32496}) -- Desecrate this Fire!
tinsert(eventQuests, {"Midsummer", 32497}) -- Honor the Flame
tinsert(eventQuests, {"Midsummer", 32498}) -- Honor the Flame
tinsert(eventQuests, {"Midsummer", 32499}) -- Honor the Flame
tinsert(eventQuests, {"Midsummer", 32500}) -- Honor the Flame
tinsert(eventQuests, {"Midsummer", 32501}) -- Honor the Flame
tinsert(eventQuests, {"Midsummer", 32502}) -- Honor the Flame
tinsert(eventQuests, {"Midsummer", 32503}) -- Desecrate this Fire!
tinsert(eventQuests, {"Midsummer", 32509}) -- Honor the Flame
tinsert(eventQuests, {"Midsummer", 32510}) -- Honor the Flame
@@ -1,15 +0,0 @@
---@type QuestieEvent
local QuestieEvent = QuestieLoader:ImportModule("QuestieEvent")
---@type Expansions
local Expansions = QuestieLoader:ImportModule("Expansions")
local tinsert = table.insert
local eventQuests = QuestieEvent.eventQuests
-- WotLK quests
tinsert(eventQuests, {"Noblegarden", 13483, nil, nil, nil, nil, Expansions.Current == Expansions.Cata}) -- Spring Gatherers
tinsert(eventQuests, {"Noblegarden", 13484, nil, nil, nil, nil, Expansions.Current == Expansions.Cata}) -- Spring Collectors
tinsert(eventQuests, {"Noblegarden", 13479}) -- The Great Egg Hunt
tinsert(eventQuests, {"Noblegarden", 13480}) -- The Great Egg Hunt
tinsert(eventQuests, {"Noblegarden", 13502}) -- A Tisket, a Tasket, a Noblegarden Basket
tinsert(eventQuests, {"Noblegarden", 13503}) -- A Tisket, a Tasket, a Noblegarden Basket
@@ -1,31 +0,0 @@
---@type QuestieEvent
local QuestieEvent = QuestieLoader:ImportModule("QuestieEvent")
local tinsert = table.insert
local eventQuests = QuestieEvent.eventQuests
-- WotLK quests
tinsert(eventQuests, {"Pilgrim's Bounty", 14023}) -- Spice Bread Stuffing
tinsert(eventQuests, {"Pilgrim's Bounty", 14024}) -- Pumpkin Pie
tinsert(eventQuests, {"Pilgrim's Bounty", 14028}) -- Cranberry Chutney
tinsert(eventQuests, {"Pilgrim's Bounty", 14030}) -- They're Ravenous In Darnassus
tinsert(eventQuests, {"Pilgrim's Bounty", 14033}) -- Candied Sweet Potatoes
tinsert(eventQuests, {"Pilgrim's Bounty", 14035}) -- Slow-roasted Turkey
tinsert(eventQuests, {"Pilgrim's Bounty", 14037}) -- Spice Bread Stuffing
tinsert(eventQuests, {"Pilgrim's Bounty", 14040}) -- Pumpkin Pie
tinsert(eventQuests, {"Pilgrim's Bounty", 14041}) -- Cranberry Chutney
tinsert(eventQuests, {"Pilgrim's Bounty", 14043}) -- Candied Sweet Potatoes
tinsert(eventQuests, {"Pilgrim's Bounty", 14044}) -- Undersupplied in the Undercity
tinsert(eventQuests, {"Pilgrim's Bounty", 14047}) -- Slow-roasted Turkey
tinsert(eventQuests, {"Pilgrim's Bounty", 14048}) -- Can't Get Enough Turkey
tinsert(eventQuests, {"Pilgrim's Bounty", 14051}) -- Don't Forget The Stuffing
tinsert(eventQuests, {"Pilgrim's Bounty", 14053}) -- We're Out of Cranberry Chutney Again?
tinsert(eventQuests, {"Pilgrim's Bounty", 14054}) -- Easy As Pie
tinsert(eventQuests, {"Pilgrim's Bounty", 14055}) -- She Says Potato
tinsert(eventQuests, {"Pilgrim's Bounty", 14058}) -- She Says Potato
tinsert(eventQuests, {"Pilgrim's Bounty", 14059}) -- We're Out of Cranberry Chutney Again?
tinsert(eventQuests, {"Pilgrim's Bounty", 14060}) -- Easy As Pie
tinsert(eventQuests, {"Pilgrim's Bounty", 14061}) -- Can't Get Enough Turkey
tinsert(eventQuests, {"Pilgrim's Bounty", 14062}) -- Don't Forget The Stuffing
tinsert(eventQuests, {"Pilgrim's Bounty", 14064}) -- Sharing a Bountiful Feast
tinsert(eventQuests, {"Pilgrim's Bounty", 14065}) -- Sharing a Bountiful Feast
@@ -1,67 +0,0 @@
---@type QuestieEvent
local QuestieEvent = QuestieLoader:ImportModule("QuestieEvent")
---@type Expansions
local Expansions = QuestieLoader:ImportModule("Expansions")
local tinsert = table.insert
local eventQuests = QuestieEvent.eventQuests
tinsert(eventQuests, {"Winter Veil", 6961}) -- Great-father Winter is Here!
tinsert(eventQuests, {"Winter Veil", 7021}) -- Great-father Winter is Here!
tinsert(eventQuests, {"Winter Veil", 7022}) -- Greatfather Winter is Here!
tinsert(eventQuests, {"Winter Veil", 7023}) -- Greatfather Winter is Here!
tinsert(eventQuests, {"Winter Veil", 7024}) -- Great-father Winter is Here!
tinsert(eventQuests, {"Winter Veil", 6962}) -- Treats for Great-father Winter
tinsert(eventQuests, {"Winter Veil", 7025}) -- Treats for Greatfather Winter
tinsert(eventQuests, {"Winter Veil", 7043, nil, nil, nil, nil, Questie.IsSoD}) -- You're a Mean One...
tinsert(eventQuests, {"Winter Veil", 6983, nil, nil, nil, nil, Questie.IsSoD}) -- You're a Mean One...
tinsert(eventQuests, {"Winter Veil", 6984, nil, nil, nil, nil, Questie.IsSoD}) -- A Smokywood Pastures' Thank You!
tinsert(eventQuests, {"Winter Veil", 7045, nil, nil, nil, nil, Questie.IsSoD}) -- A Smokywood Pastures' Thank You!
tinsert(eventQuests, {"Winter Veil", 7063}) -- The Feast of Winter Veil
tinsert(eventQuests, {"Winter Veil", 7061}) -- The Feast of Winter Veil
tinsert(eventQuests, {"Winter Veil", 6963, nil, nil, nil, nil, Expansions.Current >= Expansions.Cata or Questie.IsSoD}) -- Stolen Winter Veil Treats
tinsert(eventQuests, {"Winter Veil", 7042, nil, nil, nil, nil, Expansions.Current >= Expansions.Cata or Questie.IsSoD}) -- Stolen Winter Veil Treats
tinsert(eventQuests, {"Winter Veil", 7062}) -- The Reason for the Season
tinsert(eventQuests, {"Winter Veil", 8763, nil, nil, nil, nil, Questie.IsSoD}) -- The Hero of the Day
tinsert(eventQuests, {"Winter Veil", 8799, nil, nil, nil, nil, Questie.IsSoD}) -- The Hero of the Day
tinsert(eventQuests, {"Winter Veil", 6964}) -- The Reason for the Season
tinsert(eventQuests, {"Winter Veil", 8762, nil, nil, nil, nil, Questie.IsSoD}) -- Metzen the Reindeer
tinsert(eventQuests, {"Winter Veil", 8746, nil, nil, nil, nil, Questie.IsSoD}) -- Metzen the Reindeer
tinsert(eventQuests, {"Winter Veil", 8744, "25/12", "2/1"}) -- A Carefully Wrapped Present
tinsert(eventQuests, {"Winter Veil", 8767, "25/12", "2/1"}) -- A Gently Shaken Gift
tinsert(eventQuests, {"Winter Veil", 8768, "25/12", "2/1"}) -- A Gaily Wrapped Present
tinsert(eventQuests, {"Winter Veil", 8769, "25/12", "2/1", nil, nil, Questie.IsSoD}) -- A Ticking Present
tinsert(eventQuests, {"Winter Veil", 8788, "25/12", "2/1"}) -- A Gently Shaken Gift
tinsert(eventQuests, {"Winter Veil", 8803, "25/12", "2/1"}) -- A Festive Gift
tinsert(eventQuests, {"Winter Veil", 8827, "25/12", "2/1"}) -- Winter's Presents
tinsert(eventQuests, {"Winter Veil", 8828, "25/12", "2/1"}) -- Winter's Presents
tinsert(eventQuests, {"Winter Veil", 8860, "31/12", "1/1"}) -- New Year Celebrations!
tinsert(eventQuests, {"Winter Veil", 8861, "31/12", "1/1"}) -- New Year Celebrations!
-- SoD quests
tinsert(eventQuests, {"Winter Veil", 79482}) -- Stolen Winter Veil Treats
tinsert(eventQuests, {"Winter Veil", 79483}) -- Stolen Winter Veil Treats
tinsert(eventQuests, {"Winter Veil", 79484}) -- You're a Mean One...
tinsert(eventQuests, {"Winter Veil", 79485}) -- You're a Mean One...
tinsert(eventQuests, {"Winter Veil", 79486}) -- A Smokywood Pastures' Thank You!
tinsert(eventQuests, {"Winter Veil", 79487}) -- A Smokywood Pastures' Thank You!
tinsert(eventQuests, {"Winter Veil", 79492}) -- Metzen the Reindeer
tinsert(eventQuests, {"Winter Veil", 79495}) -- Metzen the Reindeer
tinsert(eventQuests, {"Winter Veil", 79501}) -- The Hero of the Day
tinsert(eventQuests, {"Winter Veil", 79502}) -- The Hero of the Day
tinsert(eventQuests, {"Winter Veil", 79637, "25/12", "2/1"}) -- A Ticking Present
-- TBC quests
tinsert(eventQuests, {"Winter Veil", 11528, "25/12", "2/1", nil, nil, Expansions.Current >= Expansions.Cata}) -- A Winter Veil Gift
tinsert(eventQuests, {"Winter Veil", 13203, "25/12", "2/1", nil, nil, Expansions.Current >= Expansions.Cata}) -- A Winter Veil Gift
tinsert(eventQuests, {"Winter Veil", 13966, "25/12", "2/1", nil, nil, Expansions.Current >= Expansions.Cata}) -- A Winter Veil Gift
-- Cata quests
-- tinsert(eventQuests, {"Winter Veil", 28878, "25/12", "2/1"}) -- A Winter Veil Gift -- not offered in classic servers, bad timing?
-- tinsert(eventQuests, {"Winter Veil", 29382, "25/12", "2/1"}) -- Thanks, But No Thanks
-- tinsert(eventQuests, {"Winter Veil", 29383, "25/12", "2/1"}) -- Thanks, But No Thanks
tinsert(eventQuests, {"Winter Veil", 29385, "25/12", "2/1", nil, nil, Expansions.Current >= Expansions.MoP}) -- A Winter Veil Gift -- only offered in cata
-- MoP quests
-- tinsert(eventQuests, {"Winter Veil", 32106, "25/12", "2/1", nil, nil, Expansions.Current >= Expansions.MoP}) -- A Winter Veil Gift -- not offered in classic servers, bad timing?
tinsert(eventQuests, {"Winter Veil", 33252, "25/12", "2/1"}) -- A Winter Veil Gift
@@ -1,456 +0,0 @@
---@class QuestieCorrections
local QuestieCorrections = QuestieLoader:CreateModule("QuestieCorrections")
---@type QuestieDB
local QuestieDB = QuestieLoader:ImportModule("QuestieDB")
---@type Expansions
local Expansions = QuestieLoader:ImportModule("Expansions")
---@type ZoneDB
local ZoneDB = QuestieLoader:ImportModule("ZoneDB")
---@type QuestieLib
local QuestieLib = QuestieLoader:ImportModule("QuestieLib")
---@type RamerDouglasPeucker
local RamerDouglasPeucker = QuestieLoader:ImportModule("RamerDouglasPeucker")
---@type QuestieQuestBlacklist
local QuestieQuestBlacklist = QuestieLoader:ImportModule("QuestieQuestBlacklist")
---@type QuestieNPCBlacklist
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 BlacklistFilter
local BlacklistFilter = QuestieLoader:ImportModule("BlacklistFilter")
---@type QuestieQuestFixes
local QuestieQuestFixes = QuestieLoader:ImportModule("QuestieQuestFixes")
---@type QuestieClassicQuestReputationFixes
local QuestieClassicQuestReputationFixes = QuestieLoader:ImportModule("QuestieClassicQuestReputationFixes")
---@type QuestieNPCFixes
local QuestieNPCFixes = QuestieLoader:ImportModule("QuestieNPCFixes")
---@type QuestieItemFixes
local QuestieItemFixes = QuestieLoader:ImportModule("QuestieItemFixes")
---@type QuestieObjectFixes
local QuestieObjectFixes = QuestieLoader:ImportModule("QuestieObjectFixes")
---@type QuestieTBCQuestFixes
local QuestieTBCQuestFixes = QuestieLoader:ImportModule("QuestieTBCQuestFixes")
---@type QuestieTBCNpcFixes
local QuestieTBCNpcFixes = QuestieLoader:ImportModule("QuestieTBCNpcFixes")
---@type QuestieTBCItemFixes
local QuestieTBCItemFixes = QuestieLoader:ImportModule("QuestieTBCItemFixes")
---@type QuestieTBCObjectFixes
local QuestieTBCObjectFixes = QuestieLoader:ImportModule("QuestieTBCObjectFixes")
---@type QuestieWotlkQuestFixes
local QuestieWotlkQuestFixes = QuestieLoader:ImportModule("QuestieWotlkQuestFixes")
---@type QuestieWotlkNpcFixes
local QuestieWotlkNpcFixes = QuestieLoader:ImportModule("QuestieWotlkNpcFixes")
---@type QuestieWotlkItemFixes
local QuestieWotlkItemFixes = QuestieLoader:ImportModule("QuestieWotlkItemFixes")
---@type QuestieWotlkObjectFixes
local QuestieWotlkObjectFixes = QuestieLoader:ImportModule("QuestieWotlkObjectFixes")
---@type CataQuestFixes
local CataQuestFixes = QuestieLoader:ImportModule("CataQuestFixes")
---@type CataNpcFixes
local CataNpcFixes = QuestieLoader:ImportModule("CataNpcFixes")
---@type CataItemFixes
local CataItemFixes = QuestieLoader:ImportModule("CataItemFixes")
---@type CataObjectFixes
local CataObjectFixes = QuestieLoader:ImportModule("CataObjectFixes")
---@type MopQuestFixes
local MopQuestFixes = QuestieLoader:ImportModule("MopQuestFixes")
---@type MopNpcFixes
local MopNpcFixes = QuestieLoader:ImportModule("MopNpcFixes")
---@type MopItemFixes
local MopItemFixes = QuestieLoader:ImportModule("MopItemFixes")
---@type MopObjectFixes
local MopObjectFixes = QuestieLoader:ImportModule("MopObjectFixes")
---@type IsleOfQuelDanas
local IsleOfQuelDanas = QuestieLoader:ImportModule("IsleOfQuelDanas")
--- Automatic corrections
local QuestieItemStartFixes = QuestieLoader:ImportModule("QuestieItemStartFixes")
--[[
This file load the corrections of the database files.
It is a separate file so we can upstream those changes easier to cmangos and can still
update the database files with a script.
Most of the corrections can be done by accessing a specific key instead of copying the
whole object over and change it.
You can find the keys at the beginning of each file (e.g. 'questKeys' are at the beginning of 'questDB.lua').
Further information on how to use this can be found at the wiki
https://github.com/Questie/Questie/wiki/Corrections
]] --
local filterExpansion = BlacklistFilter.filterExpansion
QuestieCorrections.killCreditObjectiveFirst = {}
QuestieCorrections.objectObjectiveFirst = {}
QuestieCorrections.itemObjectiveFirst = {}
QuestieCorrections.eventObjectiveFirst = {}
QuestieCorrections.spellObjectiveFirst = {}
do
local type, assert = type, assert
--- Add runtime overrides for the database
---@param override_table table<number, table<number, string|table|number>>
---@param new_overrides table<number, table<number, string|table|number>>
local function addOverride(override_table, new_overrides)
assert(type(override_table) == "table", "Override table must be a table!")
assert(type(new_overrides) == "table", "New overrides must be a table!")
for id, data in pairs(new_overrides) do
assert(type(id) == "number", "Override id must be a number!")
assert(type(data) == "table", "Override data must be a table!")
-- If no override exist assign it
if not override_table[id] then
override_table[id] = data
else
-- Override already exists, merge the new data
for key, value in pairs(data) do
override_table[id][key] = value
end
end
end
end
function QuestieCorrections:MinimalInit() -- db already compiled
-- Classic Era Corrections
addOverride(QuestieDB.itemDataOverrides, QuestieItemFixes:LoadFactionFixes())
addOverride(QuestieDB.npcDataOverrides, QuestieNPCFixes:LoadFactionFixes())
addOverride(QuestieDB.objectDataOverrides, QuestieObjectFixes:LoadFactionFixes())
addOverride(QuestieDB.questDataOverrides, QuestieQuestFixes:LoadFactionFixes())
-- TBC Corrections
if (Expansions.Current >= Expansions.Tbc) then
addOverride(QuestieDB.itemDataOverrides, QuestieTBCItemFixes:LoadFactionFixes())
addOverride(QuestieDB.npcDataOverrides, QuestieTBCNpcFixes:LoadFactionFixes())
addOverride(QuestieDB.objectDataOverrides, QuestieTBCObjectFixes:LoadFactionFixes())
addOverride(QuestieDB.questDataOverrides, QuestieTBCQuestFixes:LoadFactionFixes())
addOverride(QuestieDB.questDataOverrides, QuestieTBCQuestFixes:LoadContentPhaseFixes())
end
-- WOTLK Corrections
if (Expansions.Current >= Expansions.Wotlk) then
addOverride(QuestieDB.npcDataOverrides, QuestieWotlkNpcFixes:LoadFactionFixes())
addOverride(QuestieDB.itemDataOverrides, QuestieWotlkItemFixes:LoadFactionFixes())
addOverride(QuestieDB.objectDataOverrides, QuestieWotlkObjectFixes:LoadFactionFixes())
addOverride(QuestieDB.questDataOverrides, QuestieWotlkQuestFixes:LoadFactionFixes())
-- TitanReforged Corrections
if Questie.IsTitanReforged then
addOverride(QuestieDB.npcDataOverrides, QuestieWotlkNpcFixes:LoadTitanReforgedFixes())
addOverride(QuestieDB.questDataOverrides, QuestieWotlkQuestFixes:LoadTitanReforgedFixes())
addOverride(QuestieDB.itemDataOverrides, QuestieWotlkItemFixes:LoadTitanReforgedFixes())
-- TO DO: improve this
-- this must be behind locale check to prevent empty table return error
if GetLocale() == "zhCN" then
addOverride(QuestieDB.questDataOverrides, Questie.LoadTitanQuestLookupOverrides())
end
end
end
-- CATA Corrections
if (Expansions.Current >= Expansions.Cata) then
addOverride(QuestieDB.questDataOverrides, CataQuestFixes:LoadFactionFixes())
addOverride(QuestieDB.npcDataOverrides, CataNpcFixes:LoadFactionFixes())
addOverride(QuestieDB.itemDataOverrides, CataItemFixes:LoadFactionFixes())
addOverride(QuestieDB.objectDataOverrides, CataObjectFixes:LoadFactionFixes())
end
-- MOP Corrections
if (Expansions.Current >= Expansions.MoP) then
addOverride(QuestieDB.questDataOverrides, MopQuestFixes:LoadFactionFixes())
addOverride(QuestieDB.npcDataOverrides, MopNpcFixes:LoadFactionFixes())
addOverride(QuestieDB.objectDataOverrides, MopObjectFixes:LoadFactionFixes())
addOverride(QuestieDB.questDataOverrides, MopQuestFixes:LoadContentPhaseFixes())
addOverride(QuestieDB.npcDataOverrides, MopNpcFixes:LoadContentPhaseFixes())
addOverride(QuestieDB.objectDataOverrides, MopObjectFixes:LoadContentPhaseFixes())
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())
-- TBC Quel Danas Blacklist
if Questie.db.global.isleOfQuelDanasPhase == IsleOfQuelDanas.MAX_ISLE_OF_QUEL_DANAS_PHASES then
for id, hide in pairs(IsleOfQuelDanas.quests[Questie.db.global.isleOfQuelDanasPhase]) do
-- This has to be a nil-check, because the value could be false
if (QuestieCorrections.hiddenQuests[id] == nil) then
QuestieCorrections.hiddenQuests[id] = hide
end
end
end
-- Wotlk Blacklist
if (Expansions.Current >= Expansions.Wotlk) then
-- We only add blacklist if no blacklist entry for the quest already exists
for id, hide in pairs(QuestieQuestBlacklist.LoadAutoBlacklistWotlk()) do
-- This has to be a nil-check, because the value could be false
if (QuestieCorrections.hiddenQuests[id] == nil) then
QuestieCorrections.hiddenQuests[id] = hide
end
end
-- Also do TitanReforged blacklists
if Questie.IsTitanReforged then
for id, hide in pairs(QuestieQuestBlacklist.LoadAutoBlacklistIsTitanReforged()) do
-- This has to be a nil-check, because the value could be false
if (QuestieCorrections.hiddenQuests[id] == nil) then
QuestieCorrections.hiddenQuests[id] = hide
end
end
end
end
-- Hardcore Blacklist
if (Questie.IsHardcore) then
for id, _ in pairs(HardcoreBlacklist:Load()) do
QuestieCorrections.hiddenQuests[id] = true
end
end
end
end
---@param databaseTableName string The name of the QuestieDB field that should be manipulated (e.g. "itemData", "questData")
---@param corrections table All corrections for the given databaseTableName (e.g. all quest corrections)
---@param reversedKeys table The reverted QuestieDB keys for the given databaseTableName (e.g. QuestieDB.questKeys)
---@param validationTables table Only used by the CI validation scripts to validate the corrections against the original database values and find irrelevant corrections
---@param noOverwrites true? Do not overwrite existing values
---@param noNewEntries true? Do not create new entries in the database, unless the entry has a name field (key 1)
local _LoadCorrections = function(databaseTableName, corrections, reversedKeys, validationTables, noOverwrites, noNewEntries)
for id, data in pairs(corrections) do
for key, value in pairs(data) do
-- Create a new entry if missing unless noNewEntries is set.
-- Entries with a name field (key 1) are always created, as they define something entirely missing
if (not QuestieDB[databaseTableName][id]) and ((not noNewEntries) or data[1] ~= nil) then
QuestieDB[databaseTableName][id] = {}
end
if validationTables and QuestieDB[databaseTableName][id] then
if value and QuestieLib.equals(QuestieDB[databaseTableName][id][key], value) and validationTables[databaseTableName][id] and
QuestieLib.equals(validationTables[databaseTableName][id][key], value) then
Questie.Warning("Correction of " ..
databaseTableName .. " " .. tostring(id) .. "." .. reversedKeys[key] .. " matches base DB! Value:" .. tostring(value))
end
end
if QuestieDB[databaseTableName][id] then
if noOverwrites and QuestieDB[databaseTableName][id][key] == nil then
QuestieDB[databaseTableName][id][key] = value
elseif not noOverwrites then
QuestieDB[databaseTableName][id][key] = value
end
end
end
end
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)
-- Classic Corrections
if Questie.IsClassic then
-- This data is only correct for Era/SoX, for the other expansions we trust the base DB
_LoadCorrections("questData", QuestieClassicQuestReputationFixes:Load(), QuestieDB.questKeysReversed, validationTables)
end
local classicNoNewEntries = Expansions.Current > Expansions.Era or nil
_LoadCorrections("questData", QuestieQuestFixes:Load(), QuestieDB.questKeysReversed, validationTables, nil, classicNoNewEntries)
_LoadCorrections("npcData", QuestieNPCFixes:Load(), QuestieDB.npcKeysReversed, validationTables, nil, classicNoNewEntries)
_LoadCorrections("itemData", QuestieItemFixes:Load(), QuestieDB.itemKeysReversed, validationTables, nil, classicNoNewEntries)
_LoadCorrections("objectData", QuestieObjectFixes:Load(), QuestieDB.objectKeysReversed, validationTables, nil, classicNoNewEntries)
if Expansions.Current >= Expansions.Tbc then
local tbcNoNewEntries = Expansions.Current > Expansions.Tbc or nil
_LoadCorrections("questData", QuestieTBCQuestFixes:Load(), QuestieDB.questKeysReversed, validationTables, nil, tbcNoNewEntries)
_LoadCorrections("npcData", QuestieTBCNpcFixes:Load(), QuestieDB.npcKeysReversed, validationTables, nil, tbcNoNewEntries)
_LoadCorrections("itemData", QuestieTBCItemFixes:Load(), QuestieDB.itemKeysReversed, validationTables, nil, tbcNoNewEntries)
_LoadCorrections("objectData", QuestieTBCObjectFixes:Load(), QuestieDB.objectKeysReversed, validationTables, nil, tbcNoNewEntries)
end
if Expansions.Current >= Expansions.Wotlk then
local wotlkNoNewEntries = Expansions.Current > Expansions.Wotlk or nil
_LoadCorrections("questData", QuestieWotlkQuestFixes:Load(), QuestieDB.questKeysReversed, validationTables, nil, wotlkNoNewEntries)
_LoadCorrections("npcData", QuestieWotlkNpcFixes:LoadAutomatics(), QuestieDB.npcKeysReversed, validationTables, nil, wotlkNoNewEntries)
_LoadCorrections("npcData", QuestieWotlkNpcFixes:Load(), QuestieDB.npcKeysReversed, validationTables, nil, wotlkNoNewEntries)
_LoadCorrections("itemData", QuestieWotlkItemFixes:Load(), QuestieDB.itemKeysReversed, validationTables, nil, wotlkNoNewEntries)
_LoadCorrections("objectData", QuestieWotlkObjectFixes:Load(), QuestieDB.objectKeysReversed, validationTables, nil, wotlkNoNewEntries)
end
if Expansions.Current >= Expansions.Cata then
local cataNoNewEntries = Expansions.Current > Expansions.Cata or nil
_LoadCorrections("questData", CataQuestFixes.Load(), QuestieDB.questKeysReversed, validationTables, nil, cataNoNewEntries)
_LoadCorrections("npcData", CataNpcFixes.Load(), QuestieDB.npcKeysReversed, validationTables, nil, cataNoNewEntries)
_LoadCorrections("itemData", CataItemFixes.Load(), QuestieDB.itemKeysReversed, validationTables, nil, cataNoNewEntries)
_LoadCorrections("objectData", CataObjectFixes.Load(), QuestieDB.objectKeysReversed, validationTables, nil, cataNoNewEntries)
end
if Expansions.Current >= Expansions.MoP then
_LoadCorrections("questData", MopQuestFixes.Load(), QuestieDB.questKeysReversed, validationTables)
_LoadCorrections("npcData", MopNpcFixes.Load(), QuestieDB.npcKeysReversed, validationTables)
_LoadCorrections("itemData", MopItemFixes.Load(), QuestieDB.itemKeysReversed, validationTables)
_LoadCorrections("objectData", MopObjectFixes.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)
end
_LoadCorrections("itemData", QuestieItemStartFixes:LoadAutomaticQuestStarts(), QuestieDB.itemKeysReversed, validationTables, true, true)
local patchCount = 0
for _, quest in pairs(QuestieDB.questData) do
if (not quest[QuestieDB.questKeys.requiredRaces]) or quest[QuestieDB.questKeys.requiredRaces] == 0 then
-- check against questgiver
local canHorde = false
local canAlliance = false
local starts = quest[QuestieDB.questKeys.startedBy]
if starts then
starts = starts[1]
if starts then
for _, id in pairs(starts) do
local npc = QuestieDB.npcData[id]
if npc then
local friendly = npc[QuestieDB.npcKeys.friendlyToFaction]
if friendly then
if friendly == "H" then
canHorde = true
elseif friendly == "A" then
canAlliance = true
elseif friendly == "AH" then
canAlliance = true
canHorde = true
end
end
end
end
end
if canAlliance ~= canHorde then
patchCount = patchCount + 1
if canAlliance then
quest[QuestieDB.questKeys.requiredRaces] = QuestieDB.raceKeys.ALL_ALLIANCE
else
quest[QuestieDB.questKeys.requiredRaces] = QuestieDB.raceKeys.ALL_HORDE
end
end
end
end
end
QuestieCorrections:MinimalInit()
end
local WAYPOINT_MIN_DISTANCE = 1.5 -- todo: make this a config value maybe?
local ZONE_SCALES = {
[ZoneDB.zoneIDs.STORMWIND_CITY] = 0.5,
[ZoneDB.zoneIDs.IRONFORGE] = 0.5,
[ZoneDB.zoneIDs.TELDRASSIL] = 0.5,
[ZoneDB.zoneIDs.ORGRIMMAR] = 0.5,
[ZoneDB.zoneIDs.THUNDER_BLUFF] = 0.5,
[ZoneDB.zoneIDs.UNDERCITY] = 0.5,
}
local abs, sqrt = math.abs, math.sqrt
local function euclid(x, y, i, e)
local xd = abs(x - i)
local yd = abs(y - e)
return sqrt(xd * xd + yd * yd)
end
function QuestieCorrections:OptimizeWaypoints(waypointData)
local newWaypointZones = {}
for zone, waypointList in pairs(waypointData) do
local newWaypointList = {}
if waypointList[1] and type(waypointList[1][1]) == "number" then
waypointList = {waypointList} -- corrections support both {{x,y}, ...} and {{{x,y}, ...}, {{x,y}, ...}, ...}
end
for _, waypoints in pairs(waypointList) do
-- apply RDP algorithm
local minDist = WAYPOINT_MIN_DISTANCE * (ZONE_SCALES[zone] or 1)
local newWaypoints = RamerDouglasPeucker(waypoints, 0.1, true)
waypoints = newWaypoints
newWaypoints = {}
-- subdivide waypoints where needed
-- We do this because the clickable area of waypoint lines can only be a square, so lines need to be broken up in some places
local lastWay
for _, way in pairs(waypoints) do
if lastWay then
local dist = euclid(way[1], way[2], lastWay[1], lastWay[2])
if dist > minDist then
local divs = math.ceil(dist/minDist)
for i=1,divs do
local mul0 = i/divs
local mul1 = 1-mul0
newWaypoints[#newWaypoints+1] = {way[1] * mul0 + lastWay[1] * mul1, way[2] * mul0 + lastWay[2] * mul1}
end
else
newWaypoints[#newWaypoints+1] = way
end
else
newWaypoints[#newWaypoints+1] = way
end
lastWay = way
end
newWaypointList[#newWaypointList+1] = newWaypoints
end
newWaypointZones[zone] = newWaypointList
end
return newWaypointZones
end
function QuestieCorrections:PreCompile() -- this happens only if we are about to compile the database. Run intensive preprocessing tasks here (like ramer-douglas-peucker)
local yieldLimit = 500 -- 500 seems like a good number
local waypointKey = QuestieDB.npcKeys["waypoints"]
local npcData = QuestieDB.npcData
local count = 0
for id, data in pairs(npcData) do
local way = data[waypointKey]
if way then
npcData[id][waypointKey] = QuestieCorrections:OptimizeWaypoints(way)
end
if count > yieldLimit then
count = 0
coroutine.yield()
end
count = count + 1
end
waypointKey = QuestieDB.objectKeys["waypoints"]
local objData = QuestieDB.objectData
for id, data in pairs(objData) do
local way = data[waypointKey]
if way then
objData[id][waypointKey] = QuestieCorrections:OptimizeWaypoints(way)
end
if count > yieldLimit then
count = 0
coroutine.yield()
end
end
end
@@ -1,252 +0,0 @@
---@class QuestieItemBlacklist
local QuestieItemBlacklist = QuestieLoader:CreateModule("QuestieItemBlacklist")
---@type Expansions
local Expansions = QuestieLoader:ImportModule("Expansions")
---@return table<ItemId, boolean>
function QuestieItemBlacklist:Load()
return {
[765] = true, -- silverleaf
[774] = true, -- malachite
[783] = true, -- Light Hide
[785] = true, -- mageroyal
[929] = true, -- Healing Potion
[1179] = true, -- ice cold milk
[1206] = true, -- moss agate
[1210] = true, -- shadowgem
[1529] = true, -- jade
[1705] = true, -- lesser moonstone
[2318] = true, -- Light Leather
[2319] = true, -- Medium Leather
[2447] = true, -- peacebloom
[2449] = true, -- earthroot
[2450] = true, -- briarthorn
[2452] = true, -- swiftthistle
[2453] = true, -- bruiseweed
[2455] = true, -- Minor Mana Potion
[2589] = true, -- linen cloth
[2592] = true, -- wool cloth
[2842] = true, -- Silver Bar
[2934] = true, -- Ruined Leather Scraps
[2997] = true, -- bolt of wool
[3355] = true, -- wild steelbloom
[3356] = true, -- kingsblood
[3357] = true, -- liferoot
[3358] = true, -- khadgar's whisker
[3369] = true, -- grave moss
[3818] = true, -- fadeleaf
[3819] = true, -- wintersbite
[3820] = true, -- stranglekelp
[3821] = true, -- goldthorn
[3864] = true, -- citrine
[3927] = true, -- fine aged cheddar
[4232] = true, -- Medium Hide
[4234] = true, -- Heavy Leather
[4235] = true, -- Heavy Hide
[4304] = true, -- Thick Leather
[4306] = true, -- silk cloth
[4338] = true, -- mageweave
[4625] = true, -- firebloom
[7079] = true, -- globe of water
[7909] = true, -- aquamarine
[7910] = true, -- star ruby
[7923] = Expansions.Current >= Expansions.Cata, -- Defias Tower Key
[8072] = Expansions.Current >= Expansions.Cata, -- Silixiz's Tower Key
[8153] = true, -- wildvine
[8169] = true, -- Thick Hide
[8170] = true, -- Rugged Leather
[8171] = true, -- Rugged Hide
[8244] = true, -- flawless-draenethyst-sphere
[8831] = true, -- purple lotus
[8836] = true, -- arthas tears
[8838] = true, -- sungrass
[8839] = true, -- blindweed
[8845] = true, -- ghost mushroom
[8846] = true, -- gromsblood
[8932] = true, -- Alterac Swiss
[8956] = true, -- Oil of Immolation
[9061] = true, -- Goblin Rocket Fuel
[10561] = true, -- Mithril Casing
[10593] = true, -- imperfect-draenethyst-fragment
[10757] = Expansions.Current >= Expansions.Cata, -- Ward of the Defiler
[11178] = true, -- Large Radiant Shard
[12207] = true, -- giant egg
[12361] = true, -- blue sapphire
[12363] = true, -- arcane crystal
[12364] = true, -- huge emerald
[12799] = true, -- large opal
[12800] = true, -- azerothian diamond
[13422] = true, -- stonescale-eel
[13444] = true, -- major mana potion
[13446] = true, -- Major Healing Potion
[13461] = true, -- Greater Arcane Protection Potion
[13463] = true, -- dreamfoil
[13464] = true, -- golden sansam
[13465] = true, -- mountain silversage
[13466] = true, -- plaguebloom
[13467] = true, -- icecap
[13468] = true, -- black lotus
[13757] = true, -- Lightning Eel
[14047] = true, -- runecloth
[14048] = true, -- bolt of runecloth
[14227] = true, -- Ironweb Spider Silk
[14344] = true, -- large brilliant shard
[14530] = true, -- Heavy Runecloth Bandage
[15992] = true, -- Dense Blasting Powder
[18335] = true, -- Pristine Black Diamond
[19440] = true, -- Powerful Anti-Venom
[15417] = true, -- Devilsaur Leather
[15419] = true, -- Warbear Leather
[15422] = true, -- Frostsaber Leather
[15423] = true, -- Chimera Leather
[17012] = true, -- Core Leather
[19767] = true, -- Primal Bat Leather
[19768] = true, -- Primal Tiger Leather
[20452] = true, -- Smoked Desert Dumplings
-- stranglethorn pages
[2725] = true,
[2728] = true,
[2730] = true,
[2732] = true,
[2734] = true,
[2735] = true,
[2738] = true,
[2740] = true,
[2742] = true,
[2744] = true,
[2745] = true,
[2748] = true,
[2749] = true,
[2750] = true,
[2751] = true,
-- shredder operating manual
[16645] = true,
[16646] = true,
[16647] = true,
[16648] = true,
[16649] = true,
[16650] = true,
[16651] = true,
[16652] = true,
[16653] = true,
[16654] = true,
[16655] = true,
[16656] = true,
--zul'gurub coins and bijous
[19698] = true,
[19699] = true,
[19700] = true,
[19701] = true,
[19702] = true,
[19703] = true,
[19704] = true,
[19705] = true,
[19706] = true,
[19707] = true,
[19708] = true,
[19709] = true,
[19710] = true,
[19711] = true,
[19712] = true,
[19713] = true,
[19714] = true,
[19715] = true,
--ahn'qiraj scarabs and idols
[20858] = true,
[20859] = true,
[20860] = true,
[20861] = true,
[20862] = true,
[20863] = true,
[20864] = true,
[20865] = true,
[20866] = true,
[20867] = true,
[20868] = true,
[20869] = true,
[20870] = true,
[20871] = true,
[20872] = true,
[20873] = true,
[20874] = true,
[20875] = true,
[20876] = true,
[20877] = true,
[20878] = true,
[20879] = true,
[20889] = true,
--Tier 0.5 & Phase 5
[4265] = true, -- Heavy Armor Kit
[15564] = true, -- Rugged Armor Kit
[16671] = true, -- Bindings of Elements
[16673] = true, -- Cord of Elements
[16680] = true, -- Beaststalker's Belt
[16681] = true, -- Beaststalker's Bindings
[16683] = true, -- Magister's Bindings
[16685] = true, -- Magister's Belt
[16696] = true, -- Devout Belt
[16697] = true, -- Devout Bracers
[16702] = true, -- Dreadmist Belt
[16703] = true, -- Dreadmist Bracers
[16705] = true, -- Dreadmist Wraps
[16710] = true, -- Shadowcraft Bracers
[16713] = true, -- Shadowcraft Belt
[16714] = true, -- Wildheart Bracers
[16716] = true, -- Wildheart Belt
[16722] = true, -- Lightforge Bracers
[16723] = true, -- Lightforge Belt
[16735] = true, -- Bracers of Valor
[16736] = true, -- Belt of Valor
[20520] = true, -- Dark Rune
-- Phase 6
[12811] = true, -- righteous orb
[22525] = true, -- crypt fiend parts
[22526] = true, -- bone fragments
[22527] = true, -- core of elements
[22528] = true, -- dark iron scraps
[22529] = true, -- savage frond
-- TBC Phase 1
[21887] = true, -- Knothide Leather
[22445] = true, -- Arcane Dust
[22572] = true, -- Mote of Air
[22573] = true, -- Mote of Earth
[22574] = true, -- Mote of Fire
[22575] = true, -- Mote of Life
[22576] = true, -- Mote of Mana
[22577] = true, -- Mote of Shadow
[22578] = true, -- Mote of Water
[22786] = true, -- Dreaming Glory
[22790] = true, -- Ancient Lichen
[22829] = true, -- Super Healing Potion
[22832] = true, -- Super Mana Potion
[23445] = true, -- Fel Iron Bar
[23793] = true, -- Heavy Knothide Leather
[24368] = true, -- Coilfang Armaments
[24401] = true, -- Unidentified Plant Parts
[26042] = true, -- Oshu'gun Crystal Powder Sample
[26043] = true, -- Oshu'gun Crystal Powder Sample
[29425] = true, -- Mark of Kiljaeden
[29426] = true, -- Firewing Signet
[29460] = true, -- Ethereum Prison Key
[29739] = true, -- Arcane Tome
[29740] = true, -- Fel Armament
[30809] = true, -- Mark of Sargeras
[30810] = true, -- Sunfury Signet
-- Wrath of the Lich King : Phase 1
[33470] = true, -- Frostweave Cloth
[42780] = true, -- Relic of Ulduar
[43013] = true, -- Chilled Meat
-- SoD
[231313] = true, -- Grimy Rune (dropped by any level 55+ mob)
}
end
@@ -1,31 +0,0 @@
---@class QuestieNPCBlacklist
local QuestieNPCBlacklist = QuestieLoader:CreateModule("QuestieNPCBlacklist")
---@type Expansions
local Expansions = QuestieLoader:ImportModule("Expansions")
---@type ContentPhases
local ContentPhases = QuestieLoader:ImportModule("ContentPhases")
---@return table<NpcId, boolean>
function QuestieNPCBlacklist:Load()
return {
[3032] = Expansions.Current >= Expansions.Cata, -- Beram Skychaser
[7666] = Expansions.Current >= Expansions.Cata, -- Archmage Allistarj
[8001] = true,
[12397] = Questie.IsSoD, -- Lord Kazzak
[13151] = Expansions.Current == Expansions.Era, -- Syndicate Master Ryson
[13153] = Expansions.Current == Expansions.Era, -- Commander Mulfort
[13154] = Expansions.Current == Expansions.Era, -- Commander Louis Philips
[13319] = Expansions.Current == Expansions.Era, -- Commander Duffy
[13320] = Expansions.Current == Expansions.Era, -- Commander Karl Philips
[13377] = Expansions.Current == Expansions.Era, -- Master Engineer Zinfizzlex
[13446] = Expansions.Current == Expansions.Era, -- Field Marshal Teravaine
[13449] = Expansions.Current == Expansions.Era, -- Warmaster Garrick
[15799] = Expansions.Current == Expansions.Era, -- Colossus Researcher Eazel (AQ Opening event)
[17076] = (Expansions.Current == Expansions.Tbc and ContentPhases.activePhases.TBC >= 5) or (Expansions.Current >= Expansions.Wotlk), -- Lady Liadrin - removed starting with SWP patch
[17544] = (Expansions.Current == Expansions.Tbc and ContentPhases.activePhases.TBC >= 5) or (Expansions.Current >= Expansions.Wotlk), -- M'uru - removed starting with SWP patch
[21155] = true, -- Senior Sergeant Eveningshade
[25223] = (Expansions.Current == Expansions.Tbc and ContentPhases.activePhases.TBC < 5), -- Lord Solanar Bloodwrath - added with SWP patch
[30676] = Expansions.Current >= Expansions.Cata, -- Chronicler Bah'Kini (outside of dungeon version of this NPC)
[178420] = (Expansions.Current == Expansions.Tbc and ContentPhases.activePhases.TBC >= 5) or (Expansions.Current >= Expansions.Wotlk), -- Magister Astalor Bloodsworn - removed starting with SWP patch
}
end
File diff suppressed because it is too large Load Diff
@@ -1,660 +0,0 @@
---@class SeasonOfDiscovery
local SeasonOfDiscovery = QuestieLoader:CreateModule("SeasonOfDiscovery")
-------------------------
--Import modules.
-------------------------
---@type QuestieDB
local QuestieDB = QuestieLoader:ImportModule("QuestieDB")
---@type ContentPhases
local ContentPhases = QuestieLoader:ImportModule("ContentPhases")
local runeQuestsInSoD = {-- List quests here to have them flagged as Rune quests in Season of Discovery
[1470] = 1, -- Warlock Metamorphosis Part 1
[4763] = 1, -- Warlock Shadow Bolt Volley Darkshore
[76156] = 1, -- Shaman Lava Lash Part 1
[76160] = 1, -- Shaman Lava Lash Part 2
[76240] = 1, -- Shaman Lava Lash Part 3
[77568] = 1, -- Hunter Chimera Shot
[77571] = 1, -- Druid Fury of Stormrage Alliance
[77573] = 1, -- Rogue Shadowstrike Nightelf
[77574] = 1, -- Priest Penance
[77575] = 1, -- Warrior Victory Rush
[77582] = 1, -- Warrior Victory Rush
[77583] = 1, -- Rogue Shadowstrike Orc
[77584] = 1, -- Hunter Chimera Shot
[77585] = 1, -- Shaman Overload
[77586] = 1, -- Warlock Haunt
[77587] = 1, -- Shaman Overload
[77588] = 1, -- Warrior Victory Rush
[77590] = 1, -- Hunter Chimera Shot
[77592] = 1, -- Rogue Shadowstrike Troll
[77616] = 1, -- Warrior Victory Rush
[77617] = 1, -- Paladin Crusader Strike Elwynn Forest
[77618] = 1, -- Rogue Shadowstrike Human
[77619] = 1, -- Priest Penance
[77620] = 1, -- Mage Ice Lance Elwynn Forest
[77621] = 1, -- Warlock Haunt
[77642] = 1, -- Priest Penance
[77643] = 1, -- Mage Ice Lance Durotar
[77648] = 1, -- Druid Fury of Stormrage Horde
[77649] = 1, -- Hunter Chimera Shot
[77651] = 1, -- Warrior Victory Rush
[77652] = 1, -- Shaman Overload
[77655] = 1, -- Warrior Victory Rush
[77656] = 1, -- Warrior Victory Rush
[77657] = 1, -- Paladin Crusader Strike Dun Morogh
[77658] = 1, -- Rogue Shadowstrike Dwarf
[77659] = 1, -- Rogue Shadowstrike Gnome
[77660] = 1, -- Hunter Chimera Shot
[77661] = 1, -- Priest Penance
[77666] = 1, -- Warlock Haunt
[77668] = 1, -- Warrior Victory Rush
[77667] = 1, -- Mage Ice Lance Dun Morogh
[77669] = 1, -- Rogue Shadowstrike Undead
[77670] = 1, -- Priest Penance
[77671] = 1, -- Mage Ice Lance Tirisfal Glades
[77672] = 1, -- Warlock Haunt
[78088] = 1, -- Paladin Divine Storm
[78089] = 1, -- Paladin Divine Storm
[78090] = 1, -- Paladin Divine Storm
[78091] = 1, -- Paladin Divine Storm
[78092] = 1, -- Paladin Divine Storm
[78093] = 1, -- Paladin Divine Storm
[78114] = 1, -- Hunter Kill Command Part 1
[78121] = 1, -- Hunter Kill Command Part 2
[78124] = 1, -- Mage Icy Veins
[78127] = 1, -- Mage Icy Veins
[78132] = 1, -- Warrior Raging Blows Part 1
[78133] = 1, -- Warrior Raging Blows Part 1
[78134] = 1, -- Warrior Raging Blows Part 1
[78142] = 1, -- Mage Icy Veins
[78143] = 1, -- Mage Icy Veins
[78144] = 1, -- Warrior Raging Blows Part 2
[78145] = 1, -- Mage Icy Veins
[78146] = 1, -- Mage Icy Veins
[78147] = 1, -- Mage Icy Veins
[78148] = 1, -- Mage Icy Veins
[78149] = 1, -- Mage Icy Veins
[78150] = 1, -- Mage Icy Veins
[78229] = 1, -- Druid Wild Growth
[78261] = 1, -- Rogue Deadly Brew Part 1
[78270] = 1, -- Rogue Deadly Brew Part 3
[78277] = 1, -- Mage Horde Living Bomb
[78287] = 1, -- Let Me Make You An Offer Alliance
[78288] = 1, -- Let Me Make You An Offer Horde
[78297] = 1, -- You've Got Yourself A Deal Alliance
[78304] = 1, -- You've Got Yourself A Deal Horde
[78307] = 1, -- Rogue Deadly Brew Part 3
[78506] = 1, -- Shaman Earth Shield Part 1
[78537] = 1, -- Shaman Earth Shield Part 2
[78561] = 1, -- Shaman Earth Shield Part 3
[78575] = 1, -- Shaman Earth Shield Part 4
[78676] = 2, -- Rogue Shadowstep Part 1
[78680] = 1, -- Warlock Metamorphosis Part 2
[78681] = 1, -- Warlock Metamorphosis Part 3
[78684] = 1, -- Warlock Metamorphosis Part 4
[78699] = 2, -- Rogue Shadowstep Part 2
[78702] = 1, -- Warlock Metamorphosis Part 5
[78823] = 2, -- Hunter Exposed Weakness Part 1
[78830] = 2, -- Hunter Exposed Weakness Part 2
[78914] = 2, -- Warlock Grimoire of Synergy Part 2
[78994] = 2, -- Warlock Grimoire of Synergy Part 1
[79091] = 1, -- Mage Icy Veins
[79092] = 1, -- Mage Icy Veins
[79093] = 1, -- Mage Icy Veins
[79094] = 1, -- Mage Icy Veins
[79095] = 1, -- Mage Icy Veins
[79096] = 1, -- Mage Icy Veins
[79097] = 1, -- Mage Icy Veins
[79298] = 2, -- Warlock Grimoire of Synergy Part 3
[79348] = 2, -- Druid Nourish (The Lost Ancient)
[79377] = 2, -- Druid Nourish (The Lost Saplings)
[79229] = 2, -- Highway Robbery
[79235] = 2, -- On the Lam
[79236] = 2, -- Cherry for Your Thoughts?
[79242] = 2, -- No Honor Among Thieves
[79358] = 2, -- Shaman MailStrom Weapon (Tattered Note)
[79360] = 2, -- Shaman MailStrom Weapon (Elemental Aid)
[79361] = 2, -- Shaman MailStrom Weapon (Power of da Wind)
[79362] = 2, -- Shaman MailStrom Weapon (Power of da Earth)
[79363] = 2, -- Shaman MailStrom Weapon (Power of da Water)
[79364] = 2, -- Shaman MailStrom Weapon (A Simple Container)
[79365] = 2, -- Shaman MailStrom Weapon (With Wind Beneath Your Wings)
[79366] = 2, -- Shaman MailStrom Weapon (Calm Before the Storm)
[79442] = 2, -- Shaman MailStrom Weapon (Catching Up)
[79535] = 2, -- Mage Icy Veins/Spell Power
[79536] = 2, -- Mage Icy Veins/Spell Power
[79624] = 2, -- Anyone Can Cook
[79677] = 2, -- A Quick Grocery Run
[79678] = 2, -- Taste Testing
[79731] = 2, -- Priest Dispersion
[79939] = 2, -- Paladin Sheath of Light Part 1
[79940] = 2, -- Paladin Sheath of Light Part 2
[79945] = 2, -- Paladin Sheath of Light Part 3
[79946] = 2, -- Paladin Sheath of Light Part 4
[79947] = 2, -- Mage Icy Veins/Spell Power
[79948] = 2, -- Mage Icy Veins/Spell Power
[79949] = 2, -- Mage Icy Veins/Spell Power
[79950] = 2, -- Mage Icy Veins/Spell Power
[79951] = 2, -- Mage Icy Veins/Spell Power
[79952] = 2, -- Mage Icy Veins/Spell Power
[79953] = 2, -- Mage Icy Veins/Spell Power
[79963] = 2, -- Paladin Sheath of Light 5
[79970] = 2, -- Paladin Sheath of Light 6
[80098] = 2, -- Curious Dalaran Relic
[80120] = 2, -- A Service to Dalaran
[80147] = 2, -- Curious Dalaran Relic
[80148] = 2, -- Curious Dalaran Relic
[80149] = 2, -- Curious Dalaran Relic
[80150] = 2, -- Curious Dalaran Relic
[80151] = 2, -- Curious Dalaran Relic
[80152] = 2, -- Curious Dalaran Relic
[81764] = 3, -- Paladin Fanaticism
[81765] = 3, -- Paladin Fanaticism
[81766] = 3, -- Paladin Fanaticism
[81790] = 3, -- Paladin Hammer of the Righteous
[81885] = 3, -- Paladin Hammer of the Righteous
[81924] = 3, -- Druid Efflorescence
[81947] = 3, -- Mage Book Sanguine Sorcery
[81949] = 3, -- Mage Book Legends of the Tidesages
[81951] = 3, -- Mage Book The Liminal and the Arcane
[81952] = 3, -- Mage Book Everyday Etiquette
[81953] = 3, -- Mage Book Stonewrought Design
[81954] = 3, -- Mage Book Venomous Journeys
[81955] = 3, -- Mage Book A Mind of Metal
[81956] = 3, -- Mage Book Conjurer's Codex
[82208] = 3, -- Mage Deep Freeze
[84135] = 4, -- Warrior Shockwave
[84137] = 4, -- Warrior Shockwave
[84138] = 4, -- Warrior Shockwave
[84146] = 4, -- Warrior Shockwave
[84211] = 4, -- Warrior Shockwave
[84212] = 4, -- Warrior Shockwave
[84213] = 4, -- Warrior Shockwave
[84317] = 4, -- Warrior Sudden Death
[84318] = 4, -- Paladin Shield of Righteousness
[84319] = 4, -- Paladin Shield of Righteousness
[84330] = 4, -- Paladin Shield of Righteousness
[84332] = 4, -- Paladin Shield of Righteousness
[84414] = 4, -- Paladin Shield of Righteousness
[84418] = 4, -- Paladin Divine Steed
-- fake IDs
--- Mage runes
[90000] = 1, -- Mage Arcane Blast
[90001] = 1, -- Mage Alliance Burnout
[90002] = 1, -- Mage Alliance Burnout
[90003] = 1, -- Mage Burnout
[90004] = 1, -- Mage Alliance Fingers of Frost
[90005] = 1, -- Mage Horde Fingers of Frost
[90006] = 1, -- Mage Alliance Regeneration
[90007] = 1, -- Mage Horde Regeneration
[90008] = 1, -- Mage Alliance Regeneration
[90009] = 1, -- Mage Horde Regeneration
[90010] = 1, -- Mage Alliance Enlightenment
[90011] = 1, -- Mage Horde Enlightenment
[90012] = 1, -- Mage Alliance Arcane Surge
[90013] = 1, -- Mage Horde Arcane Surge
[90014] = 1, -- Mage Mass Regeneration
[90015] = 1, -- Mage Alliance Living Flame
[90016] = 1, -- Mage Alliance Living Flame
[90017] = 1, -- Mage Horde Living Flame
[90018] = 1, -- Mage Horde Living Flame
[90019] = 1, -- Mage Rewind Time
[90020] = 1, -- Mage Alliance Living Bomb
[90021] = 1, -- Mage Horde Living Bomb
--- Mage runes end
[90022] = 1, -- Paladin Divine Storm
[90023] = 1, -- Druid Wild Strikes
[90024] = 1, -- Druid Survival of the Fittest
[90025] = 1, -- Priest Serendipity
[90026] = 1, -- Paladin Divine Sacrifice
[90027] = 1, -- Hunter Lone Wolf
[90028] = 1, -- Warrior Warbringer
[90029] = 1, -- Warlock Demonic Pact
[90030] = 1, -- Rogue Main Gauche
[90031] = 1, -- Shaman Dual Wield Specialization
[90032] = 1, -- Warlock Lake of Fire Start
[90033] = 1, -- Warlock Lake of Fire End
[90034] = 1, -- Warlock Master Channeler Alliance
[90035] = 1, -- Warlock Master Channeler Alliance
[90036] = 1, -- Warlock Master Channeler Westfall
[90037] = 1, -- Warlock Master Channeler Horde
[90038] = 1, -- Warlock Master Channeler Horde
[90039] = 1, -- Warlock Chaos Bolt Dun Morogh
[90040] = 1, -- Paladin Beacon of Light Alliance
[90041] = 1, -- Shaman Healing Rain Horde
[90042] = 1, -- Warlock Everlasting Affliction Alliance
[90043] = 1, -- Warlock Everlasting Affliction Horde
[90044] = 1, -- Hunter Serpent Spread Alliance
[90045] = 1, -- Hunter Serpent Spread Horde
[90046] = 1, -- Warrior Single-Minded Fury Alliance
[90047] = 1, -- Warrior Single-Minded Fury Horde
[90048] = 1, -- Druid Skull Bash Alliance
[90049] = 1, -- Druid Skull Bash Horde
[90050] = 1, -- Rogue Just a Flesh Wound Alliance
[90051] = 1, -- Rogue Just a Flesh Wound Horde
[90052] = 1, -- Priest Mind Sear Alliance
[90053] = 1, -- Priest Mind Sear Horde
[90054] = 1, -- Druid Living Seed Alliance
[90055] = 1, -- Druid Living Seed Horde
[90056] = 1, -- Druid Starsurge
[90057] = 1, -- Druid Sunfire Alliance
[90058] = 1, -- Druid Lifebloom
[90059] = 1, -- Priest Prayer of Mending
[90060] = 1, -- Shaman Ancestral Guidance
[90061] = 1, -- Warlock Chaos Bolt Elwynn Forest
[90062] = 1, -- Warlock Chaos Bolt The Barrens
[90063] = 1, -- Warlock Chaos Bolt Tirisfal Glades
[90064] = 1, -- Warlock Shadow Bolt Volley Loch Modan
[90065] = 1, -- Warlock Shadow Bolt Volley Westfall start
[90066] = 1, -- Warlock Shadow Bolt Volley Westfall end
[90067] = 1, -- Warlock Shadow Bolt Volley The Barrens start
[90068] = 1, -- Warlock Shadow Bolt Volley The Barrens end
[90069] = 1, -- Warlock Shadow Bolt Volley Silverpine Forest
[90070] = 1, -- Warlock Incinerate
[90071] = 1, -- Warlock Demonic Tactics Alliance
[90072] = 1, -- Warlock Demonic Tactics Horde
[90073] = 1, -- Warlock Soul Siphon Dun Morogh
[90074] = 1, -- Warlock Soul Siphon Elwynn Forest
[90075] = 1, -- Warlock Soul Siphon Durotar
[90076] = 1, -- Warlock Soul Siphon Tirisfal Galdes
[90077] = 1, -- Warlock Demonic Grace Dun Morogh
[90078] = 1, -- Warlock Demonic Grace Elwynn Forest
[90079] = 1, -- Warlock Demonic Grace Durotar
[90080] = 1, -- Warlock Demonic Grace Tirisfal Galdes
[90081] = 1, -- Hunter Heart of the Lion
[90082] = 1, -- Hunter Master Marksman
[90083] = 1, -- Hunter Cobra Strikes
[90084] = 1, -- Rogue Blade Dance Darkshore
[90085] = 1, -- Rogue Blade Dance Loch Modan
[90086] = 1, -- Rogue Blade Dance Westfall
[90087] = 1, -- Rogue Blade Dance The Barrens
[90088] = 1, -- Druid Wild Growth Ashenvale
[90089] = 1, -- Druid Wild Growth Duskwood
[90090] = 1, -- Druid Wild Growth Hillsbrad Foothills
[90091] = 1, -- Warrior Flagellation
[90092] = 1, -- Warrior Blood Frenzy
[90093] = 1, -- Warrior Furious Thunder
[90094] = 1, -- Warrior Consumed By Rage
[90095] = 1, -- Hunter Explosive Shot
[90096] = 1, -- Warrior Raging Blows
[90097] = 1, -- Warrior Raging Blows
[90098] = 1, -- Warrior Raging Blows
[90099] = 1, -- Warrior Raging Blows
[90100] = 1, -- Warrior Devastate
[90101] = 1, -- Warrior Devastate
[90102] = 1, -- Warrior Devastate
[90103] = 1, -- Warrior Devastate
[90104] = 1, -- Warrior Devastate
[90105] = 1, -- Warrior Devastate
[90106] = 1, -- Warrior Frenzied Assault
[90355] = 1, -- Warrior Frenzied Assault
[90108] = 1, -- Warrior Frenzied Assault
[90109] = 1, -- Warrior Frenzied Assault
[90110] = 1, -- Warrior Frenzied Assault
[90111] = 1, -- Warrior Frenzied Assault
[90112] = 1, -- Warrior Endless Rage Westfall
[90113] = 1, -- Warrior Endless Rage Darkshore
[90114] = 1, -- Warrior Endless Rage Loch Modan
[90115] = 1, -- Warrior Endless Rage The Barrens
[90117] = 1, -- Paladin Seal of Martyrdom
[90118] = 1, -- Paladin Horn of Lordaeron
[90119] = 1, -- Paladin Horn of Lordaeron
[90121] = 1, -- Paladin Inspiration Exemplar
[90122] = 1, -- Paladin Avenger's Shield
[90123] = 1, -- Paladin Rebuke
[90124] = 1, -- Paladin Rebuke
[90125] = 1, -- Paladin Rebuke
[90126] = 1, -- Paladin Hand of Reckoning
[90127] = 1, -- Druid Mangle Teldrassil
[90128] = 1, -- Druid Lacerate Loch Modan
[90129] = 1, -- Druid Lacerate The Barrens
[90130] = 1, -- Druid Savage Roar Darkshore
[90131] = 1, -- Druid Savage Roar The Barrens
[90132] = 1, -- Druid Savage Roar Loch Modan
[90133] = 1, -- Rogue Quick Draw Dun Morogh
[90134] = 1, -- Rogue Quick Draw Elwynn Forest
[90135] = 1, -- Rogue Quick Draw Teldrassil
[90136] = 1, -- Rogue Quick Draw Durotar
[90137] = 1, -- Rogue Quick Draw Tirisfal Glades
[90138] = 1, -- Rogue Slaughter from the Shadows Elwynn Forest, Dun Morogh, Durotar
[90139] = 1, -- Warrior Quick Strike Loch Modan
[90140] = 1, -- Warrior Quick Strike Westfall
[90141] = 1, -- Warrior Quick Strike Darkshore
[90142] = 1, -- Warrior Quick Strike The Barrens
[90143] = 1, -- Warrior Quick Strike Silverpine Forest
[90144] = 1, -- Druid Savage Roar Westfall
[90145] = 1, -- Druid Lacerate Darkshore
[90146] = 1, -- Druid Mangle Mulgore
[90147] = 1, -- Paladin Hand of Reckoning Westfall
[90148] = 1, -- Paladin Exorcist Duskwood
[90150] = 1, -- Hunter Sniper Training Darkshore
[90151] = 1, -- Hunter Sniper Training Westfall
[90152] = 1, -- Hunter Sniper Training Loch Modan
[90153] = 1, -- Hunter Sniper Training The Barrens
[90154] = 1, -- Druid Lacerate Westfall
[90155] = 1, -- Priest Void Plague Dun Morogh
[90156] = 1, -- Priest Void Plague Elwynn Forest
[90157] = 1, -- Priest Void Plague Teldrassil
[90158] = 1, -- Priest Void Plague Durotar
[90159] = 1, -- Priest Void Plague Tirisfal Glades
[90161] = 1, -- Priest Strength of Soul
[90162] = 1, -- Priest Twisted Faith Loch Modan
[90163] = 1, -- Priest Twisted Faith Westfall
[90164] = 1, -- Priest Twisted Faith Darkshore
[90165] = 1, -- Priest Twisted Faith The Barrens
[90166] = 1, -- Priest Twisted Faith Silverpine Forest
[90167] = 1, -- Hunter Flanking Strike Dun Morogh
[90168] = 1, -- Hunter Flanking Strike Teldrassil
[90169] = 1, -- Priest Power Word: Barrier Redridge Mountains
[90170] = 1, -- Hunter Flanking Strike Durotar
[90171] = 1, -- Hunter Flanking Strike Mulgore
[90172] = 1, -- Hunter Beast Mastery Westfall
[90173] = 1, -- Hunter Beast Mastery Darkshore
[90174] = 1, -- Hunter Beast Mastery Loch Modan
[90175] = 1, -- Hunter Beast Mastery Silverpine Forest
[90176] = 1, -- Hunter Beast Mastery The Barrens
[90177] = 1, -- Priest Shared Pain Dun Morogh
[90178] = 1, -- Priest Shared Pain Elwynn Forest
[90179] = 1, -- Priest Shared Pain Teldrassil
[90180] = 1, -- Priest Shared Pain Durotar
[90181] = 1, -- Priest Shared Pain Tirisfal Glades
[90182] = 1, -- Priest Homunculi Dun Morogh
[90183] = 1, -- Priest Homunculi Elwynn Forest
[90184] = 1, -- Priest Homunculi Teldrassil
[90185] = 1, -- Priest Homunculi Durotar
[90186] = 1, -- Priest Homunculi Tirisfal Glades
[90187] = 1, -- Priest Shadow Word: Death Westfall
[90188] = 1, -- Priest Shadow Word: Death The Barrens
[90189] = 1, -- Priest Shadow Word: Death Loch Modan
[90190] = 1, -- Priest Shadow Word: Death Silverpine Forest
[90191] = 1, -- Priest Shadow Word: Death Darkshore
[90192] = 1, -- Priest Circle of Healing Duskwood
[90193] = 1, -- Rogue Between the Eyes Ironforge
[90194] = 1, -- Rogue Between the Eyes Stormwind
[90195] = 1, -- Rogue Between the Eyes Orgrimmar
[90196] = 1, -- Rogue Between the Eyes Tirisfal Glades
[90197] = 1, -- Rogue Between the Eyes Teldrassil
[90198] = 1, -- Rogue Envenom Hillsbrad Foothills
[90199] = 1, -- Rogue Mutilate Teldrassil
[90200] = 1, -- Rogue Mutilate Dun Morogh
[90201] = 1, -- Rogue Shiv Duskwood
[90202] = 1, -- Shaman Greater Ghost Wolf Stonetalon Mountains
[90203] = 1, -- Shaman Way of Earth The Barrens
[90204] = 1, -- Shaman Way of Earth Silverpine Forest
[90205] = 1, -- Shaman Lava Burst Hillsbrad Foothills
[90206] = 1, -- Hunter Carve Dun Morogh
[90207] = 1, -- Hunter Carve Teldrassil
[90208] = 1, -- Hunter Carve Durotar
[90209] = 1, -- Hunter Carve Mulgore
[90210] = 1, -- Rogue Saber Slash Loch Modan
[90211] = 1, -- Rogue Saber Slash Westfall
[90212] = 1, -- Rogue Saber Slash The Barrens
[90213] = 1, -- Rogue Saber Slash Silverpine Forest
[90214] = 1, -- Rogue Saber Slash Darkshore
[90215] = 1, -- Shaman Water Shield Silverpine Forest
[90216] = 1, -- Shaman Water Shield The Barrens
[90217] = 1, -- Shaman Shield Mastery Durotar Orc & Troll
[90218] = 1, -- Shaman Shield Mastery Mulgore Tauren
[90219] = 1, -- Shaman Molten Blast Durotar
[90220] = 1, -- Shaman Molten Blast Mulgore
-- P2 SoD Runes
[90221] = 2, -- Druid Berserk Thousand Needles
[90222] = 2, -- Druid Dreamstate Desolace
[90223] = 2, -- Hunter Dual Wield Specialization Stranglethorn Vale
[90224] = 2, -- Warrior Intervene Thousand Needles
[90225] = 2, -- Warrior Rallying Cry Badlands
[90226] = 2, -- Mage Spellfrost Bolt Stranglethorn Vale
[90227] = 2, -- Mage Frostfire Bolt Stranglethorn Vale
[90228] = 2, -- Rogue Rolling with the Punches Thousand Needles
[90229] = 2, -- Paladin Sacred Shield Desolace
[90230] = 2, -- Warrior Focused Rage Arathi Highlands
[90231] = 2, -- Shaman Spirit of the Alpha
[90232] = 2, -- Priest Empowered Renew
[90233] = 2, -- Hunter Steady Shot Arathi Highlands
[90234] = 2, -- Mage Hot Streak Alterac Mountains
[90235] = 2, -- Priest Renewed Hope Desolace
[90236] = 2, -- Mage Chronostatic Preservation
[90237] = 2, -- Mage Chronostatic Preservation
[90238] = 2, -- Mage Chronostatic Preservation
[90239] = 2, -- Shaman Fire Nova Step 1
[90240] = 2, -- Shaman Fire Nova Step 2
[90241] = 2, -- Shaman Fire Nova Step 3
[90242] = 2, -- Shaman Fire Nova Step 4
[90243] = 2, -- Shaman Fire Nova Step 5
[90244] = 2, -- Shaman Fire Nova Step 6
[90245] = 2, -- Shaman Fire Nova Final Step
[90246] = 2, -- Shaman Power Surge
[90247] = 2, -- Shaman Decoy Totem
[90248] = 2, -- Paladin Enlightened Judgements
[90249] = 2, -- Paladin Guarded by the Light
[90250] = 2, -- Paladin Sheath of Light Part 2.5
[90251] = 2, -- Hunter Invigoration
[90252] = 2, -- Hunter Invigoration
[90253] = 2, -- Hunter Invigoration
[90254] = 2, -- Hunter Invigoration
[90255] = 2, -- Warlock Invocation
[90256] = 2, -- Warlock Shadowflame
[90257] = 2, -- Warlock Dance of the Wicked
[90258] = 2, -- Priest Pain Suppression
[90259] = 2, -- Priest Pain Suppression
[90260] = 2, -- Priest Pain Suppression
[90261] = 2, -- Priest Pain Suppression
[90262] = 2, -- Priest Pain Suppression
[90263] = 2, -- Rogue Shuriken Toss
[90264] = 2, -- Rogue Master of Subtlety
[90265] = 2, -- Druid Survival Instincts
[90266] = 2, -- Druid Survival Instincts
[90267] = 2, -- Druid Survival Instincts
[90268] = 2, -- Druid Survival Instincts
[90353] = 1, -- Warrior Endless Rage Silverpine Forest
[90354] = 1, -- Paladin Aegis
-- P3 SoD Runes
[80411] = 3, -- Rogue Honor Among Thieves
[80453] = 3, -- Rogue Honor Among Thieves
[80454] = 3, -- Rogue Honor Among Thieves
[80455] = 3, -- Rogue Honor Among Thieves
[80526] = 3, -- Rogue Honor Among Thieves
[81682] = 3, -- Warrior Gladiator Stance
[81697] = 3, -- Warrior Gladiator Stance
[81801] = 3, -- Warrior Gladiator Stance
[81877] = 3, -- Warrior Gladiator Stance
[81900] = 3, -- Hunter Rapid Killing
[81917] = 3, -- Hunter Rapid Killing
[81919] = 3, -- Hunter Rapid Killing
[81960] = 3, -- Shaman Overcharged
[81968] = 3, -- Shaman Overcharged
[82043] = 3, -- Mage Advanced Warding
[82044] = 3, -- Mage Advanced Warding
[82071] = 3, -- Shaman Overcharged
[82072] = 3, -- Shaman Overcharged
[82073] = 3, -- Shaman Overcharged
[82074] = 3, -- Shaman Overcharged
[82075] = 3, -- Shaman Overcharged
[82076] = 3, -- Shaman Overcharged
[82084] = 3, -- Mage Temporal Anomaly
[82316] = 3, -- Priest Eye of the Void
[90269] = 3, -- Druid Gale Winds
[90270] = 3, -- Druid Gore
[90271] = 3, -- Hunter Raptor Fury
[90272] = 3, -- Hunter T.N.T
[90273] = 3, -- Mage Molten Armor
[90274] = 3, -- Paladin Improved Hammer of Wrath
[90275] = 3, -- Paladin Wrath
[90276] = 3, -- Priest Void Zone
[90277] = 3, -- Rogue Cut to the Chase
[90278] = 3, -- Shaman Burn
[90279] = 3, -- Warlock Unstable Affliction
[90280] = 3, -- Warrior Shield Mastery
[90281] = 3, -- Warrior Rampage
[90282] = 3, -- Warrior Vigilance
[90283] = 3, -- Warrior Wrecking Crew
[90284] = 3, -- Warlock Immolation Aura
[90285] = 3, -- Warlock Summon Felguard
[90286] = 3, -- Shaman Static Shock
[90287] = 3, -- Shaman Mental Dexterity
[90288] = 3, -- Priest Pain and Suffering
[90289] = 3, -- Warrior Taste for Blood
[90290] = 3, -- Druid Improved Barkskin
[90291] = 3, -- Hunter Focus Fire
[90292] = 3, -- Hunter Catlike Reflexes
[90293] = 3, -- Mage Balefire Bolt
[90294] = 3, -- Rogue Unfair Advantage
[90295] = 3, -- Rogue Carnage
[90296] = 3, -- Rogue Focused Attacks
[90297] = 3, -- Shaman Tidal Waves
[90298] = 3, -- Shaman Rolling Thunder
[90299] = 3, -- Druid Elune's Fires
[90300] = 3, -- Mage Displacement
[90301] = 3, -- Paladin Purifying Power
[90302] = 3, -- Priest Surge of Light
[90303] = 3, -- Priest Despair
[90304] = 3, -- Priest Eye of the Void
[90305] = 3, -- Warlock Pandemic
[90306] = 3, -- Warlock Backdraft
-- P4 SoD Runes
[83808] = 4, -- Paladin Righteous Vengeance
[83822] = 4, -- Paladin Righteous Vengeance
[83823] = 4, -- Paladin Shock and Awe
[83935] = 4, -- Paladin Righteous Vengeance
[83936] = 4, -- Paladin Righteous Vengeance
[84008] = 4, -- Paladin Shock and Awe
[84017] = 4, -- Paladin Shock and Awe
[84124] = 4, -- Warrior Fresh Meat
[84125] = 4, -- Paladin Shock and Awe
[84126] = 4, -- Paladin Shock and Awe
[84320] = 4, -- Priest Binding Heal
[84321] = 4, -- Priest Binding Heal
[84322] = 4, -- Priest Binding Heal
[84323] = 4, -- Priest Binding Heal
[84324] = 4, -- Priest Server-Wide Racials
[84325] = 4, -- Priest Server-Wide Racials
[84326] = 4, -- Priest Server-Wide Racials
[84327] = 4, -- Priest Server-Wide Racials
[84328] = 4, -- Priest Server-Wide Racials
[84329] = 4, -- Priest Server-Wide Racials
[84369] = 4, -- Mage Frozen Orb
[84394] = 4, -- Mage Arcance Barrage
[84395] = 4, -- Mage Arcance Barrage
[84396] = 4, -- Mage Arcance Barrage
[84397] = 4, -- Mage Arcance Barrage
[84398] = 4, -- Mage Arcance Barrage
[84399] = 4, -- Mage Arcance Barrage
[84400] = 4, -- Mage Arcance Barrage
[84401] = 4, -- Mage Arcance Barrage
[84402] = 4, -- Mage Arcance Barrage
[84405] = 4, -- Priest Binding Heal
[84406] = 4, -- Priest Binding Heal
[84407] = 4, -- Priest Binding Heal
[84408] = 4, -- Priest Server-Wide Racials
[84410] = 4, -- Priest Server-Wide Racials
[84411] = 4, -- Priest Server-Wide Racials
[84412] = 4, -- Priest Server-Wide Racials
[84413] = 4, -- Priest Server-Wide Racials
[90307] = 4, -- Druid Improved Swipe
[90308] = 4, -- Druid Starfall
[90309] = 4, -- Druid Tree of Life
[90310] = 4, -- Axe Specialization (Hunter, Paladin, Shaman, Warrior)
[90311] = 4, -- Mage Frozen Orb
[90312] = 4, -- Priest Vampiric Touch
[90313] = 4, -- Arcane Specialization (Druid, Hunter, Mage)
[90314] = 4, -- Defense Specialization (Druid, Paladin, Rogue, Shaman, Warlock, Warrior)
[90315] = 4, -- Feral Combat Specialization (Druid)
[90316] = 4, -- Frost Specialization (Hunter, Mage, Shaman)
[90317] = 4, -- Holy Specialization (Paladin, Priest)
[90318] = 4, -- Nature Specialization (Druid, Rogue, Shaman)
[90319] = 4, -- Ranged Weapon Specialization (Hunter, Rogue, Warrior)
[90320] = 4, -- Shadow Specialization (Priest, Warlock)
[90321] = 5, -- Healing Specialization (Paladin, Priest, Shaman, Druid, Mage)
[90322] = 5, -- Meditation Specialization (Paladin, Priest, Shaman, Druid, Mage)
[90323] = 3, -- Paladin Light's Grace
[90324] = 3, -- Shaman Overcharged
[90325] = 4, -- Dagger Specialization (Druid, Hunter, Mage, Priest, Rogue, Shaman, Warlock, Warrior)
[90326] = 4, -- Fire Specialization (Mage, Hunter, Shaman, Warlock)
[90327] = 4, -- Fist Weapon Specialization (Druid, Hunter, Rogue, Shaman, Warrior)
[90328] = 4, -- Mace Specialization (Druid, Paladin, Priest, Rogue, Shaman, Warrior)
[90329] = 4, -- Pole Weapon Specialization (Druid, Hunter, Mage, Paladin, Priest, Shaman, Warlock, Warrior)
[90330] = 4, -- Sword Specialization (Hunter, Mage, Paladin, Rogue, Warlock, Warrior)
[90331] = 4, -- Hunter Resourcefulness Step 1
[90332] = 4, -- Hunter Resourcefulness Step 2
[90333] = 4, -- Hunter Hit and Run
[90334] = 4, -- Hunter Improved Volley Step 1
[90335] = 4, -- Hunter Improved Volley Step 2
[90336] = 4, -- Mage Overheat
[90337] = 4, -- Rogue Fan of Knives
[90338] = 4, -- Shaman Storm, Earth, and Fire
[90339] = 4, -- Shaman Feral Spirit
[90340] = 4, -- Shaman Coherence
[90341] = 4, -- Warlock Mark of Chaos (Alliance)
[90342] = 4, -- Warlock Mark of Chaos (Horde)
[90343] = 4, -- Warlock Infernal Armor Step 1
[90344] = 4, -- Warlock Infernal Armor Step 2
[90345] = 4, -- Rogue Blunderbuss
[90346] = 4, -- Rogue Crimson Tempest Step 1
[90347] = 4, -- Rogue Crimson Tempest Step 2
[90348] = 4, -- Rogue Crimson Tempest Step 3
[90349] = 4, -- Priest Soul Warding Step 1
[90350] = 4, -- Priest Soul Warding Step 2
[90351] = 4, -- Warlock Decimation Step 1
[90352] = 4, -- Warlock Decimation Step 2
[91000] = 1, -- Rune Broker (Alliance)
[91001] = 1, -- Rune Broker (Horde)
}
--- "automatic" phase detection for the first few phases;
--- gets called slightly later into init because if GetMaxPlayerLevel() is called too
--- early after initial login (not reloads), the game returns 60 even in early phases
function SeasonOfDiscovery.Initialize()
local maxLevel = GetMaxPlayerLevel()
local phaseDetected = true
if maxLevel == 25 then
ContentPhases.activePhases.SoD = 1
elseif maxLevel == 40 then
ContentPhases.activePhases.SoD = 2
elseif maxLevel == 50 then
ContentPhases.activePhases.SoD = 3
elseif maxLevel == 60 and ContentPhases.activePhases.SoD <= 4 then
ContentPhases.activePhases.SoD = 4
else
phaseDetected = false
Questie.Debug(Questie.DEBUG_CRITICAL,
"[SeasonOfDiscovery] Automatic phase detection failed, phase remains as " .. tostring(ContentPhases.activePhases.SoD))
end
if phaseDetected then
Questie.Debug(Questie.DEBUG_INFO, "[SeasonOfDiscovery] Phase automatically detected as " .. tostring(ContentPhases.activePhases.SoD))
end
end
---@param questId number
---@return boolean
function QuestieDB.IsSoDRuneQuest(questId)
return runeQuestsInSoD[questId] ~= nil
end
---@param questId number
---@return boolean Returns true if the quest should be hidden, false otherwise
function QuestieDB.IsRuneAndShouldBeHidden(questId)
if (not QuestieDB.IsSoDRuneQuest(questId)) then
return false
end
if (not Questie.db.profile.showSoDRunes) then
return true
elseif questId == 91000 or questId == 91001 then
return false -- Rune Broker quests are always shown
end
local showRunesOfPhase = Questie.db.profile.showRunesOfPhase
local phaseOfRuneQuest = runeQuestsInSoD[questId]
if showRunesOfPhase["phase" .. phaseOfRuneQuest] ~= nil then
return not showRunesOfPhase["phase" .. phaseOfRuneQuest]
end
return false
end
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
File diff suppressed because one or more lines are too long
@@ -1,637 +0,0 @@
---@class QuestieObjectFixes
local QuestieObjectFixes = QuestieLoader:CreateModule("QuestieObjectFixes")
-------------------------
--Import modules.
-------------------------
---@type QuestieDB
local QuestieDB = QuestieLoader:ImportModule("QuestieDB")
---@type ZoneDB
local ZoneDB = QuestieLoader:ImportModule("ZoneDB")
-- Further information on how to use this can be found at the wiki
-- https://github.com/Questie/Questie/wiki/Corrections
function QuestieObjectFixes:Load()
local objectKeys = QuestieDB.objectKeys
local zoneIDs = ZoneDB.zoneIDs
return {
[167] = { -- Abercrombie's Crate
[objectKeys.spawns] = {[zoneIDs.DUSKWOOD] = {{33.42,76.35}}},
[objectKeys.zoneID] = zoneIDs.DUSKWOOD,
},
[331] = { -- Loose Soil
[objectKeys.spawns] = {[zoneIDs.WETLANDS] = {{32.2,50.8},{32.3,48.4},{32.3,48.6},{32.7,51},{33.2,46.4},{33.3,49},{33.4,47.4},{33.4,47.6},{33.4,51.5},{33.8,48.6},{33.9,46.6},{34.1,49.7},{34.2,47.6},{34.2,50.8},{34.3,45.7},{34.4,44.4},{34.4,44.5},{34.7,52.5},{34.8,50.3},{34.9,47},{35,47.9},{35.1,51.5},{35.2,44.3},{35.2,44.5},{35.2,48.9},{35.2,51.4},{35.4,46.3},{35.5,45},{35.5,46},{35.6,47.9},{36.1,48.8},{36.1,50},{36.4,42.1},{36.6,42.2}}},
},
[333] = { -- Ancient Relic
[objectKeys.spawns] = {[zoneIDs.WETLANDS] = {{32.2,50.8},{32.3,48.4},{32.3,48.6},{32.7,51},{33.2,46.4},{33.3,49},{33.4,47.4},{33.4,47.6},{33.4,51.5},{33.8,48.6},{33.9,46.6},{34.1,49.7},{34.2,47.6},{34.2,50.8},{34.3,45.7},{34.4,44.4},{34.4,44.5},{34.7,52.5},{34.8,50.3},{34.9,47},{35,47.9},{35.1,51.5},{35.2,44.3},{35.2,44.5},{35.2,48.9},{35.2,51.4},{35.4,46.3},{35.5,45},{35.5,46},{35.6,47.9},{36.1,48.8},{36.1,50},{36.4,42.1},{36.6,42.2}}},
},
[334] = { -- Ancient Relic
[objectKeys.spawns] = {[zoneIDs.WETLANDS] = {{32.2,50.8},{32.3,48.4},{32.3,48.6},{32.7,51},{33.2,46.4},{33.3,49},{33.4,47.4},{33.4,47.6},{33.4,51.5},{33.8,48.6},{33.9,46.6},{34.1,49.7},{34.2,47.6},{34.2,50.8},{34.3,45.7},{34.4,44.4},{34.4,44.5},{34.7,52.5},{34.8,50.3},{34.9,47},{35,47.9},{35.1,51.5},{35.2,44.3},{35.2,44.5},{35.2,48.9},{35.2,51.4},{35.4,46.3},{35.5,45},{35.5,46},{35.6,47.9},{36.1,48.8},{36.1,50},{36.4,42.1},{36.6,42.2}}},
},
[1738] = { -- Syndicate Documents
[objectKeys.questStarts] = {510,511},
},
[1739] = { -- Syndicate Documents
[objectKeys.questStarts] = {510,511},
},
[2082] = { -- Uther the Lightbringer
[objectKeys.name] = "Uther the Lightbringer",
[objectKeys.spawns] = {[zoneIDs.WESTERN_PLAGUELANDS] = {{52.08,83.28}}},
},
[2086] = { -- Bloodsail Charts
[objectKeys.spawns] = {[zoneIDs.STRANGLETHORN_VALE] = {{26.96,82.5},{27.15,82.68},{27.73,83.1},{29.59,80.84}}},
},
[2087] = { -- Bloodsail Orders
[objectKeys.spawns] = {[zoneIDs.STRANGLETHORN_VALE] = {{26.96,82.56},{27.18,82.66},{27.74,83.13},{29.57,80.94}}},
},
[2555] = { -- Musty Scroll
[objectKeys.spawns] = {[zoneIDs.DUSTWALLOW_MARSH] = {{31.11,66.14}}},
},
[2560] = { -- Half-Buried Bottle
[objectKeys.spawns] = {[zoneIDs.STRANGLETHORN_VALE] = {{36.26,70.56},{39.73,77.42},{37.41,64.5},{33.79,77.68},{36.11,80.47},{36.56,77.09},{34.29,73.78}}},
},
[2712] = { -- Calcified Elven Gem
[objectKeys.spawns] = {[zoneIDs.ARATHI_HIGHLANDS] = {{18,89},{19,90},{20,85},{21,87},{21,90},{21,92},{22,84},{22,90},{23,84},{23,90},{23,88},{23,89},{23,92},{24,87},{24,88},{24,89},{24,85},{24,86},{25,86},{25,87},{25,89},{25,90},{25,91}}},
},
[2743] = { -- Carved Stone Urn
[objectKeys.spawns] = {[zoneIDs.EASTERN_KINGDOMS] = {{52.32,63.467}},[zoneIDs.BADLANDS] = {{34.72,23.94},{39.79,19.67},{42.81,9.95}},[zoneIDs.LOCH_MODAN] = {{34.64,96.14},{33.84,92.91},{33.87,95.63},{32.16,90.6},{33.03,88.66},{38.78,92.87},{35.13,90.97},{35.46,86.71},{40.06,90.65},{37.34,88.77},{39.73,87.12}}},
[objectKeys.zoneID] = zoneIDs.EASTERN_KINGDOMS,
},
[2744] = { -- Giant Clam
[objectKeys.spawns] = {[zoneIDs.STRANGLETHORN_VALE] = {{23.6,23.4},{23.6,23.5},{23.7,27.2},{23.7,29.8},{23.8,29.1},{24,25.4},{24,25.5},{24.4,28},{24.8,29.5},{24.9,29.1},{25.2,26.9},{25.3,25},{25.3,26.4},{25.3,27.5},{25.4,22.7},{25.4,24.1},{25.7,22.9},{25.7,25.3},{25.8,24.4},{25.8,28.3},{25.9,29.4},{25.9,30.4},{26.1,30.6},{26.3,26.1},{26.4,27.1},{26.5,29.4},{26.5,29.5},{26.6,24.5},{26.8,30.8},{27.1,23.1},{27.1,26.5},{27.2,26.3},{27.3,24},{27.3,27.9},{27.5,24.2},{27.6,25.6},{27.6,29.2},{27.8,23},{27.8,25.3},{27.8,27.7},{28,26.7}}},
},
[2867] = { -- Excavation Supply Crate
[objectKeys.spawns] = {[zoneIDs.BADLANDS] = {{66.6,22}}},
},
[10076] = { -- Scrying Bowl
[objectKeys.spawns] = {[zoneIDs.DARKSHORE] = {{38.6,86.2}}},
[objectKeys.zoneID] = zoneIDs.DARKSHORE,
},
[13891] = { -- Serpentbloom
[objectKeys.spawns] = {[zoneIDs.KALIMDOR] = {{51.877,54.964}},[zoneIDs.THE_BARRENS] = {{49.08,33.51},{48.06,31.9},{47.49,32.92},{46.91,32.73},{48.85,32.25},{46.66,34.48},{46.06,32.74},{46.51,35.56},{49.05,34.16},{48.09,32.41},{47.66,32.22},{46.21,34.72},{45.68,33.82},{48.08,34.31},{47.62,33.85}},[zoneIDs.WAILING_CAVERNS] = {{-1,-1}}},
[objectKeys.zoneID] = zoneIDs.WAILING_CAVERNS,
},
[15885] = { -- Shrine Of Remulos
[objectKeys.name] = "Shrine Of Remulos",
[objectKeys.spawns] = {[zoneIDs.MOONGLADE] = {{36.0,41.42}}},
[objectKeys.zoneID] = zoneIDs.MOONGLADE,
},
[19021] = { -- Rusty Chest
[objectKeys.spawns] = {[zoneIDs.ASHENVALE] = {{69.04,84.77},{77.03,73.8},{79.08,74.48},{70.53,73.58},{70.68,85.06},{69.29,82.67},{71.29,83.83},{77.97,65.82},{77.38,69.77},{77.06,68.3},{69.87,74.11},{78.3,73.6},{76.22,67.48},{76.62,70.67},{76.77,72.19},{78.31,69.73},{68.24,77.68},{77.68,72.63},{74.77,69.6},{78.26,64.58},{70.72,75.24},{74.23,69.47},{74.36,70.21},{75.88,73.52},{75.87,69.99},{69.89,85.32},{74.34,77.92},{70.1,76.08},{74.58,77.19},{74.67,75.39},{76.67,68.46},{68.94,84.86},{74.41,73.38},{74.46,75.56},{73.09,73.23},{71.04,73.8},{71.45,76.97},{73.68,76.95},{72.63,76.86},{70.77,75.99},{72.51,75.12}}},
[objectKeys.zoneID] = zoneIDs.ASHENVALE,
},
[19869] = { -- Rocket Car Rubble
[objectKeys.spawns] = {[zoneIDs.THOUSAND_NEEDLES] = {{88.42,81.04},{87.27,73.47},{86.89,70.01},{87.86,76.59},{88.0,79.88},{83.75,86.66},{88.22,65.57},{78.4,89.97},{76.31,89.51},{75.39,56.37},{71.01,56.34},{69.6,61.3},{69.9,59},{70,78.4},{70,78.5},{70.1,60.2},{70.1,61.8},{70.1,63.1},{70.1,64.2},{70.2,57.2},{70.2,58},{70.3,66.2},{70.5,59.1},{70.6,77.1},{70.9,79.1},{71,56.4},{71,74.4},{71,74.5},{71.1,72},{71.4,57},{71.4,64.4},{71.4,64.5},{71.6,64.4},{71.6,64.5},{71.6,66.7},{71.6,78},{71.7,68.4},{71.7,68.7},{71.7,80.1},{72.3,56.5},{72.3,62.8},{72.3,70.3},{72.3,76.9},{72.4,56.4},{72.4,72.3},{72.4,74.4},{72.4,74.6},{72.4,80.7},{72.5,72.2},{72.5,72.5},{72.5,80.7},{73.1,55.6},{73.1,59.8},{73.2,55.4},{73.2,68.5},{73.4,57.9},{73.5,57.9},{74,61.1},{74.2,63.7},{74.4,55.4},{74.5,55.4},{74.6,59.6},{75.3,54},{75.4,56.2},{75.4,56.5},{75.5,54},{75.5,56.4},{75.9,55.3},{76.2,86.9},{76.3,89.4},{76.3,89.6},{76.8,84.3},{76.8,85.1},{77,53.2},{77.3,86.4},{77.3,86.5},{77.4,90.4},{77.4,90.5},{77.5,90.6},{77.6,54.1},{77.7,51.8},{77.9,84.2},{77.9,85.3},{78,85.5},{78.3,53},{78.4,55.1},{78.4,89.8},{78.5,90},{79,54.1},{79.2,56.2},{79.4,85.3},{79.4,85.5},{79.4,86.7},{79.5,59},{79.5,85.3},{79.8,55.1},{80,87.9},{80.7,54.3},{80.7,56.3},{80.7,89},{81.4,86.3},{81.5,86.3},{81.9,87.2},{81.9,87.5},{82.2,56.2},{82.2,90},{82.8,85.4},{82.8,85.5},{82.8,87.9},{82.9,55.3},{82.9,64.7},{83.6,56.3},{83.7,86.6},{85.3,58.4},{85.3,58.5},{85.6,61.6},{85.7,61.4},{85.8,62.5},{85.9,57.4},{86,59.7},{86.2,68.6},{86.2,74.4},{86.2,74.6},{86.6,63.5},{86.6,64.7},{86.7,58.3},{86.7,58.5},{86.7,63.4},{86.8,60.9},{86.8,67.9},{86.9,70.1},{86.9,72.3},{87,75.4},{87.1,75.5},{87.2,73.5},{87.3,66.9},{87.3,73.4},{87.6,62.9},{87.6,71.3},{87.7,78},{87.8,76.5},{87.9,60.9},{88,80},{88.1,67.8},{88.2,65.4},{88.2,65.7},{88.2,74.9},{88.4,80.9},{88.6,76.8},{88.8,66.4},{88.8,66.6}}},
},
[19870] = { -- Rocket Car Rubble
[objectKeys.spawns] = {[zoneIDs.THOUSAND_NEEDLES] = {{87.75,78.07},{88.18,67.74},{85.64,61.5},{79.38,85.41},{77.96,85.39},{78.35,55.15},{73.44,57.79},{73.97,61.17},{70.6,59.13},{72.34,62.76},{69.7,61.1},{69.9,59},{70,63.1},{70,78.4},{70,78.5},{70.1,64.4},{70.1,64.5},{70.2,60.1},{70.2,62},{70.3,57.1},{70.3,58},{70.3,66.3},{70.5,59.2},{70.7,76.9},{70.8,79.2},{71,56.4},{71,71.9},{71,74.4},{71,74.6},{71.4,57},{71.4,64.4},{71.4,64.5},{71.5,64.4},{71.5,64.5},{71.6,66.5},{71.6,78.2},{71.6,80},{71.7,68.5},{72.3,56.6},{72.3,70.2},{72.3,74.4},{72.3,76.7},{72.4,56.4},{72.4,62.7},{72.4,74.6},{72.5,72.4},{72.5,80.7},{73.1,55.4},{73.1,59.6},{73.2,55.6},{73.2,68.7},{73.4,57.8},{73.5,57.7},{74,61.1},{74.2,63.7},{74.4,55.3},{74.5,55.4},{74.7,59.7},{75.4,54},{75.4,56.3},{75.5,53.9},{76,55.3},{76.1,87},{76.2,89.5},{76.3,89.4},{76.8,84.3},{76.8,85.1},{77,53.2},{77.3,86.5},{77.4,86.4},{77.4,90.4},{77.4,90.6},{77.5,54},{77.5,90.4},{77.5,90.5},{77.6,51.8},{77.8,84.3},{77.9,85.5},{78,85.3},{78.3,53},{78.4,55.2},{79.1,54.1},{79.3,56.2},{79.3,86.5},{79.4,85.3},{79.4,85.5},{79.5,59.1},{79.8,55.3},{79.9,88},{80.7,54.2},{80.7,56.3},{80.8,89.2},{81.4,86.2},{81.5,86.3},{81.9,87.3},{81.9,87.5},{82.2,56.2},{82.3,90},{82.8,55.3},{82.8,85.4},{82.8,85.5},{82.8,87.9},{82.9,64.6},{83.6,56.2},{83.7,86.6},{85.3,58.4},{85.3,58.5},{85.6,61.4},{85.7,61.5},{85.7,62.5},{85.9,57.4},{86,59.7},{86.1,68.7},{86.1,74.4},{86.2,74.5},{86.6,63.3},{86.6,63.5},{86.6,64.7},{86.7,58.4},{86.7,58.5},{86.7,60.9},{86.8,67.9},{86.9,70.1},{86.9,72.3},{87,75.4},{87.1,75.5},{87.2,73.5},{87.3,66.9},{87.3,73.4},{87.5,71.3},{87.6,62.9},{87.8,78},{87.9,60.9},{87.9,76.5},{88,79.8},{88.1,67.8},{88.3,65.6},{88.3,75.1},{88.4,81},{88.6,76.8},{88.8,66.4},{88.8,66.5}}},
},
[21004] = { -- Monument to Grom Hellscream
[objectKeys.name] = "Monument to Grom Hellscream",
[objectKeys.spawns] = {[zoneIDs.ASHENVALE] = {{82.8,79.09}}},
},
[21015] = { -- Hoofprints
[objectKeys.spawns] = {[zoneIDs.DUSTWALLOW_MARSH] = {{29.7,47.64}}},
[objectKeys.zoneID] = zoneIDs.DUSTWALLOW_MARSH,
[objectKeys.questStarts] = {1268,1284},
},
[21016] = { -- Hoofprints
[objectKeys.spawns] = {[zoneIDs.DUSTWALLOW_MARSH] = {{29.7,47.64}}},
[objectKeys.zoneID] = zoneIDs.DUSTWALLOW_MARSH,
[objectKeys.questStarts] = {1268,1284},
},
[28604] = { -- Scattered Crate
[objectKeys.spawns] = {[zoneIDs.SWAMP_OF_SORROWS] = {{37.09,36.16},{64.09,23.35},{45.82,35.58},{56.92,24.7},{62.27,22.5},{43.29,33.26},{33.64,46.01},{29.7,50.11},{14.19,38.22},{9.7,29.84},{54.39,30.59},{60.03,21.73},{29.91,38.31},{64.89,20.44},{4.64,31.2},{37.09,34.15},{12.8,34.43}}},
},
[35252] = { -- Ancient Relic
[objectKeys.spawns] = {[zoneIDs.WETLANDS] = {{32.2,50.8},{32.3,48.4},{32.3,48.6},{32.7,51},{33.2,46.4},{33.3,49},{33.4,47.4},{33.4,47.6},{33.4,51.5},{33.8,48.6},{33.9,46.6},{34.1,49.7},{34.2,47.6},{34.2,50.8},{34.3,45.7},{34.4,44.4},{34.4,44.5},{34.7,52.5},{34.8,50.3},{34.9,47},{35,47.9},{35.1,51.5},{35.2,44.3},{35.2,44.5},{35.2,48.9},{35.2,51.4},{35.4,46.3},{35.5,45},{35.5,46},{35.6,47.9},{36.1,48.8},{36.1,50},{36.4,42.1},{36.6,42.2}}},
},
[37099] = { -- Atal'ai Tablet
[objectKeys.spawns] = {[zoneIDs.EASTERN_KINGDOMS] = {{54.298,79.389}},[zoneIDs.SWAMP_OF_SORROWS] = {{76.17,43.79},{74.7,43.84},{70.55,44.53},{75.68,44.95},{72.09,45.22},{74.77,46.71},{71.0,46.89},{76.07,47.44},{72.83,47.65},{75.85,48.3},{76.61,49.05},{75.81,49.4},{75.31,49.51},{78.27,49.54},{76.71,51.31}},[1477] = {{-1,-1}}},
},
[92423] = { -- Damaged Chest
[objectKeys.spawns] = {[zoneIDs.THOUSAND_NEEDLES] = {{43.44,32.69}}},
[objectKeys.zoneID] = zoneIDs.THOUSAND_NEEDLES,
},
[93192] = { -- Heartswood
[objectKeys.spawns] = {[zoneIDs.ASHENVALE] = {{31.55,31.57}}},
},
[103662] = { -- Bolt Charged Bramble
[objectKeys.spawns] = {[zoneIDs.ARATHI_HIGHLANDS] = {{52,50.8}}},
[objectKeys.zoneID] = zoneIDs.ARATHI_HIGHLANDS,
},
[112877] = { -- Talvash's Scrying Bowl
[objectKeys.spawns] = {[zoneIDs.ULDAMAN] = {{-1,-1}}},
[objectKeys.zoneID] = zoneIDs.ULDAMAN,
},
[124388] = { -- Garrett Family Chest
[objectKeys.spawns] = {[zoneIDs.EASTERN_KINGDOMS] = {{51.795,63.997}}},
[objectKeys.zoneID] = zoneIDs.EASTERN_KINGDOMS,
},
[124389] = { -- Krom Stoutarm's Chest
[objectKeys.spawns] = {[zoneIDs.EASTERN_KINGDOMS] = {{51.878,64.295}}},
[objectKeys.zoneID] = zoneIDs.EASTERN_KINGDOMS,
},
[126049] = { -- Magenta Cap Clusters
[objectKeys.spawns] = {[zoneIDs.EASTERN_KINGDOMS] = {{52.039,63.9}},[38] = {{33.27,88.68},{37.57,91.57},{39.79,85.71},{35.74,87.49},{40.08,89.74},{36.98,89.97},{37.19,85.58},{37.19,85.58},{36.98,89.97},{37.57,91.57}},[3] = {{34.04,24.42}},[1337] = {{-1,-1}}},
[objectKeys.zoneID] = zoneIDs.EASTERN_KINGDOMS,
},
[126260] = { -- Ancient Chest
[objectKeys.spawns] = {[zoneIDs.EASTERN_KINGDOMS] = {{52.107,64.008}}},
[objectKeys.zoneID] = zoneIDs.EASTERN_KINGDOMS,
},
[140911] = { -- Spool of Light Chartreuse Silk Thread
[objectKeys.spawns] = {[zoneIDs.STORMWIND_CITY] = {{39.94,46.14}}},
},
[140971] = { -- Gahz'ridian
[objectKeys.spawns] = {[zoneIDs.TANARIS] = {{36.1,56.4},{36.1,56.5},{36.4,52.3},{36.8,35.2},{37.7,29.6},{38.3,61.9},{38.9,65.8},{38.9,73},{39.1,70.7},{39.4,51.6},{39.7,74.4},{39.9,72.1},{40,31.1},{40.1,47.3},{40.2,73.3},{40.3,68.9},{40.3,77.4},{40.3,77.5},{40.4,74.7},{40.8,39.2},{40.8,43.4},{40.8,43.5},{41,71.6},{41,74.8},{41.1,71.1},{41.4,72.7},{41.5,73.7},{41.7,56.3},{41.9,73.3},{42.1,74.5},{42.2,58.5},{42.8,26.1},{43.1,62.1},{43.2,77.3},{44.2,45.7},{44.8,38.8},{44.8,65.2},{44.9,33.9},{44.9,64.4},{45.1,27},{45.1,52},{45.3,66},{45.6,64.6},{45.8,66.8},{46.1,49.4},{46.1,49.5},{46.1,65.6},{46.2,63.3},{46.2,70.3},{46.4,64.2},{46.5,64.2},{46.9,76.1},{47.1,30.4},{47.1,30.5},{47.1,64.5},{47.1,66},{47.2,67},{47.3,63.4},{47.4,38.4},{47.4,38.5},{47.5,38.4},{47.5,38.5},{47.6,57.2},{47.9,65.8},{48,52.7},{48,64.4},{48,67.4},{48.1,67.5},{48.2,64.7},{48.3,72.8},{48.4,44.4},{48.4,44.5},{48.5,44.4},{48.5,44.5},{48.6,28.7},{49.1,77.3},{49.6,35.9},{49.6,59.2},{49.7,69.1},{50.4,78.5},{50.7,61.1},{51.3,64.1},{52,37.4},{52.1,32.1},{52.3,45.3},{52.4,50.8},{52.9,52.7},{53,44},{53.2,45.2},{53.4,47.7},{53.5,47.6},{53.5,57.8},{53.7,46.2},{53.8,33.3},{54.8,39},{55.6,47.7},{55.6,60},{56.6,35.3},{56.7,52.4},{56.7,52.5},{57.1,47.6},{57.8,28.9},{57.8,57.9},{58.1,24.6},{58.1,48.8}}},
},
[142122] = { -- Wanted Poster
[objectKeys.questStarts] = {2781,2875},
},
[142194] = { -- Pirate's Treasure!
[objectKeys.spawns] = {[zoneIDs.TANARIS] = {{50.7,90.78},{54.06,93.03},{53.09,95.89},{52.16,94.39},{54.54,95.09},{55.56,92.28}}},
[objectKeys.zoneID] = zoneIDs.TANARIS,
},
[142343] = { -- Uldum Pedestal
[objectKeys.questStarts] = {2954,2967,2977},
},
[142345] = { -- Matrix Punchograph 3005-A
[objectKeys.spawns] = {[zoneIDs.EASTERN_KINGDOMS] = {{42.83,59.191},{42.854,59.193},{42.838,59.386},{42.798,59.381}}},
[objectKeys.zoneID] = zoneIDs.EASTERN_KINGDOMS,
},
[143979] = { -- Cage Door
[objectKeys.name] = "Cage Door",
[objectKeys.spawns] = {[zoneIDs.TANARIS] = {{66.66,46.75}}},
[objectKeys.zoneID] = zoneIDs.TANARIS,
},
[144052] = { -- Sandsorrow Watch Water Hole
[objectKeys.spawns] = {[zoneIDs.TANARIS] = {{39,29}}},
[objectKeys.zoneID] = zoneIDs.TANARIS,
},
[144064] = { -- Gordunni Dirt Mound
[objectKeys.spawns] = {[zoneIDs.FERALAS] = {{74.3,29},{74.6,30.2},{75.1,32.4},{75.1,32.5},{75.3,28.2},{75.3,33.7},{75.5,30.4},{75.5,30.5},{76,29},{76.3,34.4},{76.4,33.1},{76.4,34.5},{76.5,33.1},{76.7,33.8},{76.9,29.7},{77.5,35.1},{78.4,34},{78.5,34},{79.2,34.9},{80.4,34.3},{80.4,36},{80.5,34.2},{81,35.4},{81,35.5},{81.6,35}}}, -- #1160
[objectKeys.zoneID] = zoneIDs.FERALAS,
},
[148503] = { -- Fire Plume Ridge Hot Spot
[objectKeys.spawns] = {[zoneIDs.UN_GORO_CRATER] = {{49.69,45.64}}}, -- only showing it here so we can put the tooltip on it
},
[148513] = { -- Tablet of Jin'yael
[objectKeys.spawns] = {[zoneIDs.AZSHARA] = {{34,59.9},{34.8,53.3},{35.4,58.5},{35.5,52.3},{35.6,49.6},{35.9,51.2},{36,56.9},{36.3,58.7},{36.3,62.2},{36.4,54},{36.4,60.6},{36.5,54.1},{37.4,60.7},{37.5,60.7},{37.7,52.4},{37.9,56.4},{38,51.3},{38.4,53.4},{38.7,63.3},{39.2,61.4},{39.2,61.6},{39.4,56.5},{39.5,56.5},{39.8,53.4},{39.8,53.5},{39.8,59.7},{40.1,62.4},{40.2,62.5},{40.5,61.1},{40.5,64},{41,55},{41.2,62},{42.2,64.6},{43.4,64},{43.9,64.7}}},
},
[148514] = { -- Tablet of Markri
[objectKeys.spawns] = {[zoneIDs.AZSHARA] = {{34.2,57.8},{34.65,55.61},{35.7,56.51},{35.9,59},{36.2,52.6},{37.92,47.75},{39.3,57.6},{39.8,48.8},{39.84,45.88},{39.99,64.19},{40.2,45}}},
},
[148515] = { -- Tablet of Sael'hai
[objectKeys.spawns] = {[zoneIDs.AZSHARA] = {{35.6,55.9},{35.9,53.5},{36.1,59.9},{36.9,49.6},{37,54.5},{37.14,60.51},{37.29,48.08},{38.58,54.62},{38.6,47.5},{39.3,59.9},{41.51,65.04}}},
},
[148516] = { -- Tablet of Beth'Amara
[objectKeys.spawns] = {[zoneIDs.AZSHARA] = {{34.1,50.5},{34.3,55.2},{35.19,58.02},{36,57.6},{36.8,60.5},{37.07,51.86},{38.4,60.3},{38.91,53.46},{39.54,64.32},{39.6,48.14}}},
},
[153123] = { -- Kim'jael's Equipment
[objectKeys.spawns] = {[zoneIDs.AZSHARA] = {{56.1,30.1},{56.3,28.8},{56.4,28.4},{56.5,28.8},{57.0,28.4},{57.0,29.9},{57.9,29.1},{58.2,27.7},{58.4,25.0},{58.5,25.0},{58.6,26.0},{58.6,29.1},{58.9,28.4},{59.2,23.0},{59.6,30.9}}}, --#1413
},
[154357] = { -- Glinting Mud
[objectKeys.spawns] = {[zoneIDs.REDRIDGE_MOUNTAINS] = {{21.9,53.2},{24.1,54.6},{25.9,54.1},{26.4,51.3},{28,56},{30.8,54.3},{33.6,55.2},{36.8,54.3},{37.9,54.5},{19.16,51.74},{34.13,53.37},{29.52,53.72}}}, -- #1176
},
[157936] = { -- Un'Goro Dirt Pile
[objectKeys.spawns] = {[zoneIDs.UN_GORO_CRATER] = {{21.92,38.58},{25.56,46.29},{27.01,40.16},{28.01,62.73},{29.7,30.6},{30.52,69.98},{30.61,56.66},{30.97,78.87},{31.03,34.12},{32.86,22.92},{33.11,65.36},{35.86,46.22},{36.35,69.75},{36.4,76.32},{38.2,23.1},{38.9,39.54},{40.37,26.87},{40.75,59.65},{41.11,79.78},{41.9,53.16},{42.21,45.46},{44.14,33.79},{44.7,54.42},{47,52.9},{48.9,58},{49.46,48.48},{49.4,83.5},{50.21,34.29},{50.45,90.1},{51.1,47},{52.49,78.92},{52.77,45.42},{52.83,55.91},{53.56,39.03},{55.58,28.65},{55.97,56.86},{56.56,83.45},{57.13,44.16},{58.13,36.33},{60,81.8},{62.16,17.57},{62.3,64},{63.3,47.9},{64.06,40.97},{64.9,78.4},{69.4,76.4},{71.67,75.91},{73.11,65.65},{73.41,58.29}}},
},
[164658] = { -- Blue Power Crystal
[objectKeys.spawns] = {[zoneIDs.UN_GORO_CRATER] = {{19.7,38.9},{20.7,50},{23,59.1},{23.1,40.3},{23.7,59},{24,42.8},{25.1,67.0},{25.5,39.9},{25.8,53.9},{25.8,63.3},{26.0,59.9},{27.5,70.1},{27.7,46.3},{27.7,46.5},{30.1,21.3},{30.4,70.5},{30.7,63.3},{32.6,73.5},{33,29.7},{33.8,44.4},{33.9,76.7},{35.8,54.5},{37.7,20.4},{37.7,20.5},{37.8,66.4},{37.8,66.5},{38,41.8},{38.2,81.9},{39.3,14.5},{39.7,26.8},{40.5,49.9},{40.5,75.3},{40.8,79.9},{42.6,34.1},{42.8,86.1},{42.9,52.9},{42.9,66},{43,45.4},{43,45.5},{43.8,16.7},{43.9,21.3},{43.9,21.5},{44.2,88.8},{45.4,38.6},{45.4,66},{45.5,66},{45.7,92.5},{46.3,19.7},{46.8,14.9},{47,61.1},{47.3,13},{49.9,15.7},{50,92.3},{51.3,61.4},{51.6,13.6},{51.8,34.9},{51.9,87.5},{53.7,38.9},{54.1,18.1},{55.8,7.9},{56,18.5},{56.1,18.4},{56.2,60.6},{56.3,73.6},{56.4,12.3},{56.6,12.3},{56.8,76.2},{57.3,10.1},{57.4,82.5},{58.1,8.8},{58.1,49.8},{58.3,10.7},{58.3,65.9},{58.6,78.4},{59.2,20.3},{59.6,60.2},{59.8,49.4},{60.4,77.4},{60.9,68.4},{60.9,68.5},{61,15.1},{62,85.2},{62.1,40.4},{62.1,40.5},{62.3,68.4},{62.4,68.5},{62.4,70.3},{62.4,70.5},{62.6,16.7},{62.6,26.9},{63.2,75.2},{63.4,23},{64.2,53.9},{65.2,79.7},{66.1,21.1},{66.7,46.9},{66.8,73.3},{67.7,40.4},{67.7,40.5},{67.9,51.4},{68.3,25.3},{68.4,25.5},{68.4,59.7},{69.1,28.9},{69.4,79.9},{69.5,79.9},{69.6,35.1},{69.6,69.4},{69.6,69.5},{69.9,18.9},{70.1,77.1},{70.3,64.2},{71.1,42.9},{71.6,73.6},{71.7,63.5},{71.8,63.4},{71.9,23},{72.1,33.1},{72.2,21.1},{72.4,35.4},{72.4,35.6},{73,46.8},{73,65.4},{73,65.5},{73.8,53.4},{73.8,53.5},{74.4,56.9},{74.4,63.8},{74.5,57},{74.5,63.8},{74.8,29.6},{74.8,58.9},{74.9,70.5},{75.1,37.7},{75.2,61.6},{75.3,61.4},{75.9,40.1},{76.6,43.8},{76.8,57.7},{78.2,40.1},{79.3,57.9},{79.9,61.9},{80.4,49.7},{80.5,49.7},{80.7,43},{81.4,39.1},{81.5,39.1},{81.6,60.6}}}, -- #1156
},
[164659] = { -- Green Power Crystal
[objectKeys.spawns] = {[zoneIDs.UN_GORO_CRATER] = {{19.7,38.9},{20.7,50},{23,59.1},{23.1,40.3},{23.7,59},{24,42.8},{25.1,67.0},{25.5,39.9},{25.8,53.9},{25.8,63.3},{26.0,59.9},{27.5,70.1},{27.7,46.3},{27.7,46.5},{30.1,21.3},{30.4,70.5},{30.7,63.3},{32.6,73.5},{33,29.7},{33.8,44.4},{33.9,76.7},{35.8,54.5},{37.7,20.4},{37.7,20.5},{37.8,66.4},{37.8,66.5},{38,41.8},{38.2,81.9},{39.3,14.5},{39.7,26.8},{40.5,49.9},{40.5,75.3},{40.8,79.9},{42.6,34.1},{42.8,86.1},{42.9,52.9},{42.9,66},{43,45.4},{43,45.5},{43.8,16.7},{43.9,21.3},{43.9,21.5},{44.2,88.8},{45.4,38.6},{45.4,66},{45.5,66},{45.7,92.5},{46.3,19.7},{46.8,14.9},{47,61.1},{47.3,13},{49.9,15.7},{50,92.3},{51.3,61.4},{51.6,13.6},{51.8,34.9},{51.9,87.5},{53.7,38.9},{54.1,18.1},{55.8,7.9},{56,18.5},{56.1,18.4},{56.2,60.6},{56.3,73.6},{56.4,12.3},{56.6,12.3},{56.8,76.2},{57.3,10.1},{57.4,82.5},{58.1,8.8},{58.1,49.8},{58.3,10.7},{58.3,65.9},{58.6,78.4},{59.2,20.3},{59.6,60.2},{59.8,49.4},{60.4,77.4},{60.9,68.4},{60.9,68.5},{61,15.1},{62,85.2},{62.1,40.4},{62.1,40.5},{62.3,68.4},{62.4,68.5},{62.4,70.3},{62.4,70.5},{62.6,16.7},{62.6,26.9},{63.2,75.2},{63.4,23},{64.2,53.9},{65.2,79.7},{66.1,21.1},{66.7,46.9},{66.8,73.3},{67.7,40.4},{67.7,40.5},{67.9,51.4},{68.3,25.3},{68.4,25.5},{68.4,59.7},{69.1,28.9},{69.4,79.9},{69.5,79.9},{69.6,35.1},{69.6,69.4},{69.6,69.5},{69.9,18.9},{70.1,77.1},{70.3,64.2},{71.1,42.9},{71.6,73.6},{71.7,63.5},{71.8,63.4},{71.9,23},{72.1,33.1},{72.2,21.1},{72.4,35.4},{72.4,35.6},{73,46.8},{73,65.4},{73,65.5},{73.8,53.4},{73.8,53.5},{74.4,56.9},{74.4,63.8},{74.5,57},{74.5,63.8},{74.8,29.6},{74.8,58.9},{74.9,70.5},{75.1,37.7},{75.2,61.6},{75.3,61.4},{75.9,40.1},{76.6,43.8},{76.8,57.7},{78.2,40.1},{79.3,57.9},{79.9,61.9},{80.4,49.7},{80.5,49.7},{80.7,43},{81.4,39.1},{81.5,39.1},{81.6,60.6}}}, -- #1156
},
[164660] = { -- Red Power Crystal
[objectKeys.spawns] = {[zoneIDs.UN_GORO_CRATER] = {{19.7,38.9},{20.7,50},{23,59.1},{23.1,40.3},{23.7,59},{24,42.8},{25.1,67.0},{25.5,39.9},{25.8,53.9},{25.8,63.3},{26.0,59.9},{27.5,70.1},{27.7,46.3},{27.7,46.5},{30.1,21.3},{30.4,70.5},{30.7,63.3},{32.6,73.5},{33,29.7},{33.8,44.4},{33.9,76.7},{35.8,54.5},{37.7,20.4},{37.7,20.5},{37.8,66.4},{37.8,66.5},{38,41.8},{38.2,81.9},{39.3,14.5},{39.7,26.8},{40.5,49.9},{40.5,75.3},{40.8,79.9},{42.6,34.1},{42.8,86.1},{42.9,52.9},{42.9,66},{43,45.4},{43,45.5},{43.8,16.7},{43.9,21.3},{43.9,21.5},{44.2,88.8},{45.4,38.6},{45.4,66},{45.5,66},{45.7,92.5},{46.3,19.7},{46.8,14.9},{47,61.1},{47.3,13},{49.9,15.7},{50,92.3},{51.3,61.4},{51.6,13.6},{51.8,34.9},{51.9,87.5},{53.7,38.9},{54.1,18.1},{55.8,7.9},{56,18.5},{56.1,18.4},{56.2,60.6},{56.3,73.6},{56.4,12.3},{56.6,12.3},{56.8,76.2},{57.3,10.1},{57.4,82.5},{58.1,8.8},{58.1,49.8},{58.3,10.7},{58.3,65.9},{58.6,78.4},{59.2,20.3},{59.6,60.2},{59.8,49.4},{60.4,77.4},{60.9,68.4},{60.9,68.5},{61,15.1},{62,85.2},{62.1,40.4},{62.1,40.5},{62.3,68.4},{62.4,68.5},{62.4,70.3},{62.4,70.5},{62.6,16.7},{62.6,26.9},{63.2,75.2},{63.4,23},{64.2,53.9},{65.2,79.7},{66.1,21.1},{66.7,46.9},{66.8,73.3},{67.7,40.4},{67.7,40.5},{67.9,51.4},{68.3,25.3},{68.4,25.5},{68.4,59.7},{69.1,28.9},{69.4,79.9},{69.5,79.9},{69.6,35.1},{69.6,69.4},{69.6,69.5},{69.9,18.9},{70.1,77.1},{70.3,64.2},{71.1,42.9},{71.6,73.6},{71.7,63.5},{71.8,63.4},{71.9,23},{72.1,33.1},{72.2,21.1},{72.4,35.4},{72.4,35.6},{73,46.8},{73,65.4},{73,65.5},{73.8,53.4},{73.8,53.5},{74.4,56.9},{74.4,63.8},{74.5,57},{74.5,63.8},{74.8,29.6},{74.8,58.9},{74.9,70.5},{75.1,37.7},{75.2,61.6},{75.3,61.4},{75.9,40.1},{76.6,43.8},{76.8,57.7},{78.2,40.1},{79.3,57.9},{79.9,61.9},{80.4,49.7},{80.5,49.7},{80.7,43},{81.4,39.1},{81.5,39.1},{81.6,60.6}}}, -- #1156
},
[164661] = { -- Yellow Power Crystal
[objectKeys.spawns] = {[zoneIDs.UN_GORO_CRATER] = {{19.7,38.9},{20.7,50},{23,59.1},{23.1,40.3},{23.7,59},{24,42.8},{25.1,67.0},{25.5,39.9},{25.8,53.9},{25.8,63.3},{26.0,59.9},{27.5,70.1},{27.7,46.3},{27.7,46.5},{30.1,21.3},{30.4,70.5},{30.7,63.3},{32.6,73.5},{33,29.7},{33.8,44.4},{33.9,76.7},{35.8,54.5},{37.7,20.4},{37.7,20.5},{37.8,66.4},{37.8,66.5},{38,41.8},{38.2,81.9},{39.3,14.5},{39.7,26.8},{40.5,49.9},{40.5,75.3},{40.8,79.9},{42.6,34.1},{42.8,86.1},{42.9,52.9},{42.9,66},{43,45.4},{43,45.5},{43.8,16.7},{43.9,21.3},{43.9,21.5},{44.2,88.8},{45.4,38.6},{45.4,66},{45.5,66},{45.7,92.5},{46.3,19.7},{46.8,14.9},{47,61.1},{47.3,13},{49.9,15.7},{50,92.3},{51.3,61.4},{51.6,13.6},{51.8,34.9},{51.9,87.5},{53.7,38.9},{54.1,18.1},{55.8,7.9},{56,18.5},{56.1,18.4},{56.2,60.6},{56.3,73.6},{56.4,12.3},{56.6,12.3},{56.8,76.2},{57.3,10.1},{57.4,82.5},{58.1,8.8},{58.1,49.8},{58.3,10.7},{58.3,65.9},{58.6,78.4},{59.2,20.3},{59.6,60.2},{59.8,49.4},{60.4,77.4},{60.9,68.4},{60.9,68.5},{61,15.1},{62,85.2},{62.1,40.4},{62.1,40.5},{62.3,68.4},{62.4,68.5},{62.4,70.3},{62.4,70.5},{62.6,16.7},{62.6,26.9},{63.2,75.2},{63.4,23},{64.2,53.9},{65.2,79.7},{66.1,21.1},{66.7,46.9},{66.8,73.3},{67.7,40.4},{67.7,40.5},{67.9,51.4},{68.3,25.3},{68.4,25.5},{68.4,59.7},{69.1,28.9},{69.4,79.9},{69.5,79.9},{69.6,35.1},{69.6,69.4},{69.6,69.5},{69.9,18.9},{70.1,77.1},{70.3,64.2},{71.1,42.9},{71.6,73.6},{71.7,63.5},{71.8,63.4},{71.9,23},{72.1,33.1},{72.2,21.1},{72.4,35.4},{72.4,35.6},{73,46.8},{73,65.4},{73,65.5},{73.8,53.4},{73.8,53.5},{74.4,56.9},{74.4,63.8},{74.5,57},{74.5,63.8},{74.8,29.6},{74.8,58.9},{74.9,70.5},{75.1,37.7},{75.2,61.6},{75.3,61.4},{75.9,40.1},{76.6,43.8},{76.8,57.7},{78.2,40.1},{79.3,57.9},{79.9,61.9},{80.4,49.7},{80.5,49.7},{80.7,43},{81.4,39.1},{81.5,39.1},{81.6,60.6}}}, -- #1156
},
[164778] = { -- Blue Power Crystal
[objectKeys.spawns] = {[zoneIDs.UN_GORO_CRATER] = {{19.7,38.9},{20.7,50},{23,59.1},{23.1,40.3},{23.7,59},{24,42.8},{25.1,67.0},{25.5,39.9},{25.8,53.9},{25.8,63.3},{26.0,59.9},{27.5,70.1},{27.7,46.3},{27.7,46.5},{30.1,21.3},{30.4,70.5},{30.7,63.3},{32.6,73.5},{33,29.7},{33.8,44.4},{33.9,76.7},{35.8,54.5},{37.7,20.4},{37.7,20.5},{37.8,66.4},{37.8,66.5},{38,41.8},{38.2,81.9},{39.3,14.5},{39.7,26.8},{40.5,49.9},{40.5,75.3},{40.8,79.9},{42.6,34.1},{42.8,86.1},{42.9,52.9},{42.9,66},{43,45.4},{43,45.5},{43.8,16.7},{43.9,21.3},{43.9,21.5},{44.2,88.8},{45.4,38.6},{45.4,66},{45.5,66},{45.7,92.5},{46.3,19.7},{46.8,14.9},{47,61.1},{47.3,13},{49.9,15.7},{50,92.3},{51.3,61.4},{51.6,13.6},{51.8,34.9},{51.9,87.5},{53.7,38.9},{54.1,18.1},{55.8,7.9},{56,18.5},{56.1,18.4},{56.2,60.6},{56.3,73.6},{56.4,12.3},{56.6,12.3},{56.8,76.2},{57.3,10.1},{57.4,82.5},{58.1,8.8},{58.1,49.8},{58.3,10.7},{58.3,65.9},{58.6,78.4},{59.2,20.3},{59.6,60.2},{59.8,49.4},{60.4,77.4},{60.9,68.4},{60.9,68.5},{61,15.1},{62,85.2},{62.1,40.4},{62.1,40.5},{62.3,68.4},{62.4,68.5},{62.4,70.3},{62.4,70.5},{62.6,16.7},{62.6,26.9},{63.2,75.2},{63.4,23},{64.2,53.9},{65.2,79.7},{66.1,21.1},{66.7,46.9},{66.8,73.3},{67.7,40.4},{67.7,40.5},{67.9,51.4},{68.3,25.3},{68.4,25.5},{68.4,59.7},{69.1,28.9},{69.4,79.9},{69.5,79.9},{69.6,35.1},{69.6,69.4},{69.6,69.5},{69.9,18.9},{70.1,77.1},{70.3,64.2},{71.1,42.9},{71.6,73.6},{71.7,63.5},{71.8,63.4},{71.9,23},{72.1,33.1},{72.2,21.1},{72.4,35.4},{72.4,35.6},{73,46.8},{73,65.4},{73,65.5},{73.8,53.4},{73.8,53.5},{74.4,56.9},{74.4,63.8},{74.5,57},{74.5,63.8},{74.8,29.6},{74.8,58.9},{74.9,70.5},{75.1,37.7},{75.2,61.6},{75.3,61.4},{75.9,40.1},{76.6,43.8},{76.8,57.7},{78.2,40.1},{79.3,57.9},{79.9,61.9},{80.4,49.7},{80.5,49.7},{80.7,43},{81.4,39.1},{81.5,39.1},{81.6,60.6}}}, -- #1156
},
[164779] = { -- Green Power Crystal
[objectKeys.spawns] = {[zoneIDs.UN_GORO_CRATER] = {{19.7,38.9},{20.7,50},{23,59.1},{23.1,40.3},{23.7,59},{24,42.8},{25.1,67.0},{25.5,39.9},{25.8,53.9},{25.8,63.3},{26.0,59.9},{27.5,70.1},{27.7,46.3},{27.7,46.5},{30.1,21.3},{30.4,70.5},{30.7,63.3},{32.6,73.5},{33,29.7},{33.8,44.4},{33.9,76.7},{35.8,54.5},{37.7,20.4},{37.7,20.5},{37.8,66.4},{37.8,66.5},{38,41.8},{38.2,81.9},{39.3,14.5},{39.7,26.8},{40.5,49.9},{40.5,75.3},{40.8,79.9},{42.6,34.1},{42.8,86.1},{42.9,52.9},{42.9,66},{43,45.4},{43,45.5},{43.8,16.7},{43.9,21.3},{43.9,21.5},{44.2,88.8},{45.4,38.6},{45.4,66},{45.5,66},{45.7,92.5},{46.3,19.7},{46.8,14.9},{47,61.1},{47.3,13},{49.9,15.7},{50,92.3},{51.3,61.4},{51.6,13.6},{51.8,34.9},{51.9,87.5},{53.7,38.9},{54.1,18.1},{55.8,7.9},{56,18.5},{56.1,18.4},{56.2,60.6},{56.3,73.6},{56.4,12.3},{56.6,12.3},{56.8,76.2},{57.3,10.1},{57.4,82.5},{58.1,8.8},{58.1,49.8},{58.3,10.7},{58.3,65.9},{58.6,78.4},{59.2,20.3},{59.6,60.2},{59.8,49.4},{60.4,77.4},{60.9,68.4},{60.9,68.5},{61,15.1},{62,85.2},{62.1,40.4},{62.1,40.5},{62.3,68.4},{62.4,68.5},{62.4,70.3},{62.4,70.5},{62.6,16.7},{62.6,26.9},{63.2,75.2},{63.4,23},{64.2,53.9},{65.2,79.7},{66.1,21.1},{66.7,46.9},{66.8,73.3},{67.7,40.4},{67.7,40.5},{67.9,51.4},{68.3,25.3},{68.4,25.5},{68.4,59.7},{69.1,28.9},{69.4,79.9},{69.5,79.9},{69.6,35.1},{69.6,69.4},{69.6,69.5},{69.9,18.9},{70.1,77.1},{70.3,64.2},{71.1,42.9},{71.6,73.6},{71.7,63.5},{71.8,63.4},{71.9,23},{72.1,33.1},{72.2,21.1},{72.4,35.4},{72.4,35.6},{73,46.8},{73,65.4},{73,65.5},{73.8,53.4},{73.8,53.5},{74.4,56.9},{74.4,63.8},{74.5,57},{74.5,63.8},{74.8,29.6},{74.8,58.9},{74.9,70.5},{75.1,37.7},{75.2,61.6},{75.3,61.4},{75.9,40.1},{76.6,43.8},{76.8,57.7},{78.2,40.1},{79.3,57.9},{79.9,61.9},{80.4,49.7},{80.5,49.7},{80.7,43},{81.4,39.1},{81.5,39.1},{81.6,60.6}}}, -- #1156
},
[164780] = { -- Red Power Crystal
[objectKeys.spawns] = {[zoneIDs.UN_GORO_CRATER] = {{19.7,38.9},{20.7,50},{23,59.1},{23.1,40.3},{23.7,59},{24,42.8},{25.1,67.0},{25.5,39.9},{25.8,53.9},{25.8,63.3},{26.0,59.9},{27.5,70.1},{27.7,46.3},{27.7,46.5},{30.1,21.3},{30.4,70.5},{30.7,63.3},{32.6,73.5},{33,29.7},{33.8,44.4},{33.9,76.7},{35.8,54.5},{37.7,20.4},{37.7,20.5},{37.8,66.4},{37.8,66.5},{38,41.8},{38.2,81.9},{39.3,14.5},{39.7,26.8},{40.5,49.9},{40.5,75.3},{40.8,79.9},{42.6,34.1},{42.8,86.1},{42.9,52.9},{42.9,66},{43,45.4},{43,45.5},{43.8,16.7},{43.9,21.3},{43.9,21.5},{44.2,88.8},{45.4,38.6},{45.4,66},{45.5,66},{45.7,92.5},{46.3,19.7},{46.8,14.9},{47,61.1},{47.3,13},{49.9,15.7},{50,92.3},{51.3,61.4},{51.6,13.6},{51.8,34.9},{51.9,87.5},{53.7,38.9},{54.1,18.1},{55.8,7.9},{56,18.5},{56.1,18.4},{56.2,60.6},{56.3,73.6},{56.4,12.3},{56.6,12.3},{56.8,76.2},{57.3,10.1},{57.4,82.5},{58.1,8.8},{58.1,49.8},{58.3,10.7},{58.3,65.9},{58.6,78.4},{59.2,20.3},{59.6,60.2},{59.8,49.4},{60.4,77.4},{60.9,68.4},{60.9,68.5},{61,15.1},{62,85.2},{62.1,40.4},{62.1,40.5},{62.3,68.4},{62.4,68.5},{62.4,70.3},{62.4,70.5},{62.6,16.7},{62.6,26.9},{63.2,75.2},{63.4,23},{64.2,53.9},{65.2,79.7},{66.1,21.1},{66.7,46.9},{66.8,73.3},{67.7,40.4},{67.7,40.5},{67.9,51.4},{68.3,25.3},{68.4,25.5},{68.4,59.7},{69.1,28.9},{69.4,79.9},{69.5,79.9},{69.6,35.1},{69.6,69.4},{69.6,69.5},{69.9,18.9},{70.1,77.1},{70.3,64.2},{71.1,42.9},{71.6,73.6},{71.7,63.5},{71.8,63.4},{71.9,23},{72.1,33.1},{72.2,21.1},{72.4,35.4},{72.4,35.6},{73,46.8},{73,65.4},{73,65.5},{73.8,53.4},{73.8,53.5},{74.4,56.9},{74.4,63.8},{74.5,57},{74.5,63.8},{74.8,29.6},{74.8,58.9},{74.9,70.5},{75.1,37.7},{75.2,61.6},{75.3,61.4},{75.9,40.1},{76.6,43.8},{76.8,57.7},{78.2,40.1},{79.3,57.9},{79.9,61.9},{80.4,49.7},{80.5,49.7},{80.7,43},{81.4,39.1},{81.5,39.1},{81.6,60.6}}}, -- #1156
},
[164781] = { -- Yellow Power Crystal
[objectKeys.spawns] = {[zoneIDs.UN_GORO_CRATER] = {{19.7,38.9},{20.7,50},{23,59.1},{23.1,40.3},{23.7,59},{24,42.8},{25.1,67.0},{25.5,39.9},{25.8,53.9},{25.8,63.3},{26.0,59.9},{27.5,70.1},{27.7,46.3},{27.7,46.5},{30.1,21.3},{30.4,70.5},{30.7,63.3},{32.6,73.5},{33,29.7},{33.8,44.4},{33.9,76.7},{35.8,54.5},{37.7,20.4},{37.7,20.5},{37.8,66.4},{37.8,66.5},{38,41.8},{38.2,81.9},{39.3,14.5},{39.7,26.8},{40.5,49.9},{40.5,75.3},{40.8,79.9},{42.6,34.1},{42.8,86.1},{42.9,52.9},{42.9,66},{43,45.4},{43,45.5},{43.8,16.7},{43.9,21.3},{43.9,21.5},{44.2,88.8},{45.4,38.6},{45.4,66},{45.5,66},{45.7,92.5},{46.3,19.7},{46.8,14.9},{47,61.1},{47.3,13},{49.9,15.7},{50,92.3},{51.3,61.4},{51.6,13.6},{51.8,34.9},{51.9,87.5},{53.7,38.9},{54.1,18.1},{55.8,7.9},{56,18.5},{56.1,18.4},{56.2,60.6},{56.3,73.6},{56.4,12.3},{56.6,12.3},{56.8,76.2},{57.3,10.1},{57.4,82.5},{58.1,8.8},{58.1,49.8},{58.3,10.7},{58.3,65.9},{58.6,78.4},{59.2,20.3},{59.6,60.2},{59.8,49.4},{60.4,77.4},{60.9,68.4},{60.9,68.5},{61,15.1},{62,85.2},{62.1,40.4},{62.1,40.5},{62.3,68.4},{62.4,68.5},{62.4,70.3},{62.4,70.5},{62.6,16.7},{62.6,26.9},{63.2,75.2},{63.4,23},{64.2,53.9},{65.2,79.7},{66.1,21.1},{66.7,46.9},{66.8,73.3},{67.7,40.4},{67.7,40.5},{67.9,51.4},{68.3,25.3},{68.4,25.5},{68.4,59.7},{69.1,28.9},{69.4,79.9},{69.5,79.9},{69.6,35.1},{69.6,69.4},{69.6,69.5},{69.9,18.9},{70.1,77.1},{70.3,64.2},{71.1,42.9},{71.6,73.6},{71.7,63.5},{71.8,63.4},{71.9,23},{72.1,33.1},{72.2,21.1},{72.4,35.4},{72.4,35.6},{73,46.8},{73,65.4},{73,65.5},{73.8,53.4},{73.8,53.5},{74.4,56.9},{74.4,63.8},{74.5,57},{74.5,63.8},{74.8,29.6},{74.8,58.9},{74.9,70.5},{75.1,37.7},{75.2,61.6},{75.3,61.4},{75.9,40.1},{76.6,43.8},{76.8,57.7},{78.2,40.1},{79.3,57.9},{79.9,61.9},{80.4,49.7},{80.5,49.7},{80.7,43},{81.4,39.1},{81.5,39.1},{81.6,60.6}}}, -- #1156
},
[174848] = { -- Testing Equipment
[objectKeys.spawns] = {[zoneIDs.UNDERCITY] = {{47.85,73.48}}}, -- #1520
},
[175124] = { -- Rookery Egg
[objectKeys.name] = "Rookery Egg",
[objectKeys.spawns] = {[zoneIDs.BLACKROCK_SPIRE_CHAMBER_OF_BATTLE] = {{-1,-1}},[zoneIDs.BLACKROCK_SPIRE] = {{-1,-1}}}, -- no need for Rend room since no uimapid return there
[objectKeys.zoneID] = zoneIDs.BLACKROCK_SPIRE,
},
[175264] = { -- Broodling Essence
[objectKeys.spawns] = {[zoneIDs.BURNING_STEPPES] = {{86.92,30.55},{84.87,31.86},{91.86,38.48},{81.01,28.2},{91.67,35.54},{81.37,26.48},{88.32,29.78},{87.8,33.45},{91.59,33.36},{89.47,43.89},{90.53,45.22},{90.48,50.92},{90.57,47.39},{84.59,62.1},{57.59,31.63},{38.74,46.15},{61.13,31.24},{55.73,64.44},{63.78,57.27},{73.18,27.12},{70.94,62.13},{59.86,63.91},{37.81,62.51},{72.4,28.17},{34.62,55.43},{78.39,27.5},{40.92,48.81},{52.67,26.04},{59.19,32.29},{64.36,60.61},{24.82,47.18},{24.33,67.37},{28.66,57.82},{22.48,68.9},{23.35,70.57},{22.32,58.87},{25.37,45.74},{16.96,55.36}}},
[objectKeys.zoneID] = zoneIDs.BURNING_STEPPES,
},
[175265] = { -- Testing Equipment
[objectKeys.spawns] = {[zoneIDs.UNDERCITY] = {{47.74,73.57}}}, -- #1520
},
[175321] = { -- Unforged Seal of Ascension
[objectKeys.spawns] = {[zoneIDs.DUSTWALLOW_MARSH] = {{56.37,87.83}}},
[objectKeys.zoneID] = zoneIDs.DUSTWALLOW_MARSH,
},
[175322] = { -- Forged Seal of Ascension
[objectKeys.spawns] = {[zoneIDs.DUSTWALLOW_MARSH] = {{56.37,87.83}}},
[objectKeys.zoneID] = zoneIDs.DUSTWALLOW_MARSH,
},
[175382] = { -- Doomrigger's Coffer
[objectKeys.spawns] = {[zoneIDs.BLACKROCK_SPIRE_CHAMBER_OF_BATTLE] = {{-1,-1}},[zoneIDs.BLACKROCK_SPIRE] = {{-1,-1}}},
},
[175564] = { -- Brazier of the Herald
[objectKeys.name] = "Brazier of the Herald",
[objectKeys.spawns] = {[zoneIDs.SCHOLOMANCE_CHAMBER_OF_SUMMONING] = {{-1,-1}},[zoneIDs.SCHOLOMANCE] = {{-1,-1}}},
[objectKeys.zoneID] = zoneIDs.SCHOLOMANCE,
},
[175584] = { -- Challenge to Urok
[objectKeys.name] = "Challenge to Urok",
[objectKeys.spawns] = {[zoneIDs.BLACKROCK_SPIRE] = {{-1,-1}}},
[objectKeys.zoneID] = zoneIDs.BLACKROCK_SPIRE,
},
[175964] = { -- Skin of Shadow
[objectKeys.spawns] = {[zoneIDs.SCHOLOMANCE] = {{-1,-1}}},
[objectKeys.zoneID] = zoneIDs.SCHOLOMANCE,
},
[176150] = { -- Musty Tome
[objectKeys.spawns] = {[zoneIDs.WESTERN_PLAGUELANDS] = {{43.60,69.97},{43.46,70.11},{43.38,69.97},{43.39,69.69},{43.37,69.51},{43.41,69.22},{43.59,69.30},{43.54,69.12},{43.42,68.78},{43.59,68.82}}},
},
[176184] = { -- Corrupt Jaedenar Moonwell
[objectKeys.name] = "Corrupt Jaedenar Moonwell",
},
[176195] = { -- Panther Cage
[objectKeys.name] = "Panther Cage",
[objectKeys.spawns] = {[zoneIDs.THOUSAND_NEEDLES] = {{22.75,24.65}}},
[objectKeys.zoneID] = zoneIDs.THOUSAND_NEEDLES,
},
[176213] = { -- Blood of Heroes
[objectKeys.spawns] = {
[zoneIDs.WESTERN_PLAGUELANDS] = {{35.9,57.4},{35.9,57.5},{36.4,53.7},{36.5,53.6},{38.2,56.3},{39.7,69.4},{39.7,69.6},{40.6,73.1},{40.7,57.4},{40.8,57.5},{41.4,62.1},{41.5,62.1},{41.9,70.5},{42.2,54.9},{42.8,64.2},{43.3,68.3},{43.6,70.4},{43.7,70.5},{44.2,65},{44.4,71.6},{44.5,53.3},{44.5,71.7},{44.6,53.5},{45.8,71.5},{45.9,51.1},{45.9,71.4},{46.7,34.4},{46.8,34.5},{47,59.9},{47,67.1},{47.6,70},{47.9,53.1},{49.4,68.1},{49.8,33.3},{52.2,66.5},{52.3,55},{52.3,66.3},{53,64.2},{53.2,66.5},{53.3,65.1},{53.3,66.2},{53.4,63.4},{53.5,63.3},{53.5,63.5},{54.9,27.1},{55.2,69.4},{55.3,69.6},{56.7,34.7},{57.8,66.4},{57.8,66.5},{62,58.3},{62,58.5},{62.9,57.2},{62.9,57.9},{63.2,59.2},{63.6,75.4},{63.6,75.5},{64,48.7},{64.1,57.9},{64.9,74.4},{64.9,74.5},{65.8,76.8},{66.4,42.1},{66.5,42.2},{67,53.9},{67.8,84.6},{68,44.7},{68.3,81.4},{68.3,81.6},{68.4,77.1},{68.5,77.1},{68.7,49.2},{68.7,79.2},{68.9,73.8},{69.5,78.6},},
[zoneIDs.EASTERN_PLAGUELANDS] = {{7.1,50.7},{8,54.5},{14.2,64.7},{20,61},{20.5,66.9},{21.5,73.9},{22.1,85.1},{24.3,88.2},{26,74.7},{26.3,70.5},{26.7,69.5},{27.1,75.6},{27.3,64},{28.8,86},{29.2,78.8},{30.9,65.5},{32,71},{33.6,32.6},{34,80.2},{34.3,67.8},{34.4,76.9},{34.5,25.8},{35.6,73.3},{35.9,75.8},{36.7,38},{36.9,70.6},{37.1,65.7},{37.6,68.5},{38.4,31.1},{38.5,54},{38.8,26.7},{38.9,36.1},{40,49.9},{41.4,79.7},{41.5,65.7},{42.4,75.8},{44.9,32.9},{46.2,70.8},{46.3,64},{46.5,74.8},{47.5,40.8},{47.9,80},{48.9,67.2},{49.1,35.5},{50.3,45.5},{50.4,77.4},{51.8,70.3},{53.5,50.7},{55.5,58.7},{56.2,63.9},{56.5,76.1},{57.1,81.9},{57.4,71.9},{57.8,76.1},{58.1,79.7},{58.4,64.8},{58.6,79.6},{59.2,62.2},{59.3,80.9},{59.5,76},{59.9,67.5},{61.8,70.2},{63.6,67.7},{64.7,65.4},{64.7,81},{66.2,53},{67.6,66.8},{68.2,70.6},{68.3,74.6},{68.6,78.4},{68.8,80.8},{68.9,83.3},{69,71.5},{70.6,80.8},{70.7,69.5},{71.1,75.3},{72.2,78.4},{73.3,77.2},{73.4,69.8},{73.4,82.1},{73.6,76.8},{73.8,51.1},{74.1,83.8},{74.7,58.7},{75.6,55.3},{75.9,83.5},{76.1,78.2},{76.2,50.4},{76.7,72.4},{78.4,57.5},{78.7,67.3},{78.8,63.5},{80.4,59.8}},
[zoneIDs.TIRISFAL_GLADES] = {{82.8,72.7},{83,71.4},{83,71.5}},
},
},
[176248] = { -- Premium Grimm Tobacco
[objectKeys.name] = "Premium Grimm Tobacco",
},
[176344] = { -- Document Chest
[objectKeys.spawns] = {[zoneIDs.THOUSAND_NEEDLES] = {{31.79,32.58}}},
},
[176544] = { -- Remains of Eva Sarkhoff
[objectKeys.spawns] = {[zoneIDs.SCHOLOMANCE_THE_UPPER_STUDY] = {{-1,-1}},[zoneIDs.SCHOLOMANCE] = {{-1,-1}}},
},
[176545] = { -- Remains of Lucien Sarkhoff
[objectKeys.spawns] = {[zoneIDs.SCHOLOMANCE_THE_UPPER_STUDY] = {{-1,-1}},[zoneIDs.SCHOLOMANCE] = {{-1,-1}}},
},
[176589] = { -- Black Lotus
[objectKeys.spawns] = {
[zoneIDs.BURNING_STEPPES] = {{13.2,30.8},{15.1,30.3},{18.8,48.7},{20.9,46.6},{21,46.4},{25.1,62.5},{26.4,59.2},{28.8,62.6},{31.4,61.7},{31.5,61.7},{31.9,69.4},{35.4,49.1},{35.5,49.1},{42.6,37.6},{43.1,34.4},{43.1,34.5},{44.2,57.1},{51,61.9},{54.3,63.4},{54.7,36.4},{56.3,53.7},{57.4,61.5},{57.6,61.6},{63.2,36.9},{63.7,60.8},{66.5,40},{76.4,47.2},{76.4,47.5},{76.5,47.2},{76.5,47.5},{82.5,34.2},{83,38},{92.1,53.2}},
[zoneIDs.EASTERN_PLAGUELANDS] = {{16.4,33.7},{16.5,33.7},{22.9,32},{26.7,29.7},{27.6,85.1},{28.7,70.9},{37.9,51.8},{38.9,34.1},{39.8,25.1},{42.4,50.6},{42.5,50.6},{45.5,29.8},{46.2,34.2},{59.7,67.6},{65.6,21.8},{67.5,46.5},{69.4,83.4},{70.8,30.8},{72,51.9},{76.6,49.8},{80,71},{82,84.5},{85.9,46.4},{86,46.5},{87.9,82.8}},
[zoneIDs.WINTERSPRING] = {{30.7,35.4},{30.7,35.5},{32.4,44.4},{35.8,36.5},{40.2,44.2},{40.6,36.1},{49.4,9.4},{52.3,40.3},{52.8,27.6},{54.8,10.6},{55.5,52.4},{55.5,52.5},{55.6,44.6},{57.6,49.5},{57.8,69.3},{58.8,53},{59.1,60.1},{59.4,74.2},{60.6,29.9},{63,17.7},{63.4,21.1},{64,73.8},{64.4,69.3},{65.1,64.3},{66.2,60.8},{67.4,41.4},{67.4,41.5},{67.5,41.4},{67.5,41.5},{68.1,53},{68.3,36.6}},
[zoneIDs.SILITHUS] = {{19.7,84.6},{20.6,23.4},{20.6,23.5},{20.9,62},{22.4,39.4},{24.9,17.9},{25.7,58.6},{27.7,34.1},{33.7,13.5},{34.4,91.4},{37.9,34.9},{38.3,60.7},{38.5,60.8},{39.3,85},{39.5,85},{40.2,46.8},{43.7,18.2},{45.4,91.3},{45.4,91.5},{45.5,91.3},{46.3,83.5},{47.1,54.4},{51.4,50.3},{51.4,50.5},{51.5,50.3},{51.5,50.5},{53.6,76.4},{53.6,76.5},{56,20.3},{62.1,83.5},{62.2,83.3},{63,53.6},{63.2,29},{67.1,15},{70.7,23}},
},
},
[176630] = { -- Keepsake of Remembrance
[objectKeys.spawns] = {[zoneIDs.ARATHI_HIGHLANDS] = {{17.91,69.41},{18.5,66.2},{19.4,64.5},{20.8,65.8},{27.6,66.0},{29.3,64.9},{29.3,62.8}}},
},
[177241] = { -- Araj's Phylactery
[objectKeys.spawns] = {[zoneIDs.WESTERN_PLAGUELANDS] = {{45.27,69.21}}},
[objectKeys.zoneID] = zoneIDs.WESTERN_PLAGUELANDS,
},
[177272] = { -- Moonwell
[objectKeys.spawns] = {
[zoneIDs.STORMWIND_CITY] = {{20.43,53.33}},
[zoneIDs.TELDRASSIL] = {{56.02,61.99}},
[zoneIDs.ASHENVALE] = {{62.07,51.04},{60.21,72.91}},
[zoneIDs.FERALAS] = {{32.56,43.91},{57.97,44.49}},
},
},
[177404] = { -- Altar of Elune
[objectKeys.name] = "Altar of Elune",
[objectKeys.spawns] = {[zoneIDs.WINTERSPRING] = {{64.8,63.78}}},
[objectKeys.zoneID] = zoneIDs.WINTERSPRING,
},
[177417] = { -- Fire of Elune
[objectKeys.name] = "Fire of Elune",
[objectKeys.spawns] = {[zoneIDs.WINTERSPRING] = {{64.41,61.35},{65.89,58.37},{66.78,59.96},{66.36,61.81},{65.73,64.83}}},
[objectKeys.zoneID] = zoneIDs.WINTERSPRING,
},
[177624] = { -- Xabraxxis' Demon Bag
[objectKeys.spawns] = {[zoneIDs.DARKSHORE] = {{52.48,33.39}}},
[objectKeys.zoneID] = zoneIDs.DARKSHORE,
},
[177673] = { -- Serpent Statue
[objectKeys.name] = "Serpent Statue",
[objectKeys.spawns] = {[zoneIDs.DESOLACE] = {{28.24,6.67}}},
[objectKeys.zoneID] = zoneIDs.DESOLACE,
},
[177784] = { -- Giant Softshell Clam
[objectKeys.spawns] = {[zoneIDs.DESOLACE] = {{24.6,44.1},{25.4,47.8},{25.7,38.9},{26.2,36.7},{28.2,34.1},{29.7,36.7},{30,26.1},{30.1,29.1},{30.6,31.9},{30.6,34.3},{30.8,24.4},{32,30.5},{32.7,25.4},{32.8,35.2},{33,28.6},{33.9,33.2},{34.1,27.5},{34.1,30.6},{34.2,27.4},{34.3,23.2},{35.2,34.7},{35.4,25},{35.5,25},{34.11,30.7},{35.26,34.72},{32.8,35.3},{30.54,34.21},{34.15,27.46},{31.93,30.58},{32.94,28.58},{35.37,25.02},{32.69,25.26},{30.84,24.33},{34.32,23.12},{33.88,33.29}}},
},
[177785] = { -- Bauble Container
[objectKeys.spawns] = {[zoneIDs.MOONGLADE] = {{48,47.1},{50.1,50.6},{52.1,53.4},{52.1,53.5},{52.9,48.5},{53.1,48.4},{54.1,50.1},{54.3,55.6},{54.7,46.4},{54.7,46.5},{56.3,53.7},{58.5,50.8},{60.5,58.3},{60.5,58.5}}},
},
[178224] = { -- Dire Pool
[objectKeys.spawns] = {[zoneIDs.KALIMDOR] = {{42.719,68.613}}},
[objectKeys.zoneID] = zoneIDs.KALIMDOR,
},
[178227] = { -- Murgut's Totem Basket
[objectKeys.spawns] = {[zoneIDs.ASHENVALE] = {{56.5,63.5}}},
[objectKeys.zoneID] = zoneIDs.ASHENVALE,
},
[178907] = { -- Maraudon Orange Crystal Pool
[objectKeys.name] = "Maraudon Orange Crystal Pool",
},
[178965] = { -- Incantation of Celebras
[objectKeys.name] = "Incantation of Celebras",
[objectKeys.spawns] = {[zoneIDs.MARAUDON] = {{-1,-1}},[zoneIDs.MARAUDON_ZAETARS_GRAVE] = {{-1,-1}}},
[objectKeys.zoneID] = zoneIDs.MARAUDON,
},
[179426] = { -- Gri'lek the Wanderer
[objectKeys.spawns] = {[zoneIDs.STRANGLETHORN_VALE] = {{24.77,22.88}}},
[objectKeys.zoneID] = zoneIDs.STRANGLETHORN_VALE,
},
[179485] = { -- Broken Trap
[objectKeys.spawns] = {[zoneIDs.DIRE_MAUL_GORDOK_COMMONS] = {{-1,-1}}},
},
[179499] = { -- Ogre Tannin Basket
[objectKeys.spawns] = {[zoneIDs.DIRE_MAUL_GORDOK_COMMONS] = {{-1,-1}}},
},
[179517] = { -- Treasure of the Shen'dralar
[objectKeys.spawns] = {[zoneIDs.DIRE_MAUL_GORDOK_COMMONS] = {{-1,-1}},[zoneIDs.DIRE_MAUL_PRISON_OF_IMMOLTHAR] = {{-1,-1}}},
},
[179544] = { -- Skeletal Remains of Telmius Dreamseeker
[objectKeys.name] = "Skeletal Remains of Telmius Dreamseeker",
[objectKeys.spawns] = {[zoneIDs.DIRE_MAUL_GORDOK_COMMONS] = {{-1,-1}},[zoneIDs.DIRE_MAUL_PRISON_OF_IMMOLTHAR] = {{-1,-1}}},
},
[179545] = { -- The Prince's Chest
[objectKeys.spawns] = {[zoneIDs.DIRE_MAUL_GORDOK_COMMONS] = {{-1,-1}},[zoneIDs.DIRE_MAUL_PRISON_OF_IMMOLTHAR] = {{-1,-1}}},
},
[179547] = { -- A Dusty Tome
[objectKeys.spawns] = {[zoneIDs.DIRE_MAUL_GORDOK_COMMONS] = {{-1,-1}},[zoneIDs.DIRE_MAUL_PRISON_OF_IMMOLTHAR] = {{-1,-1}}},
[objectKeys.zoneID] = zoneIDs.DIRE_MAUL,
},
[179548] = { -- A Dusty Tome
[objectKeys.spawns] = {[zoneIDs.DIRE_MAUL_GORDOK_COMMONS] = {{-1,-1}},[zoneIDs.DIRE_MAUL_PRISON_OF_IMMOLTHAR] = {{-1,-1}}},
},
[179553] = { -- Core Fragment
[objectKeys.spawns] = {[zoneIDs.BLACKROCK_DEPTHS_SHADOWFORGE_CITY] = {{-1,-1}},[zoneIDs.BLACKROCK_DEPTHS] = {{-1,-1}}},
[objectKeys.zoneID] = zoneIDs.BLACKROCK_DEPTHS,
},
[179559] = { -- Felvine Shard
[objectKeys.spawns] = {[zoneIDs.DIRE_MAUL_THE_SHRINE_OF_ELDRETHARR] = {{-1,-1}}},
},
[179562] = { -- Ancient Heated Blade
[objectKeys.spawns] = {[zoneIDs.ONYXIAS_LAIR] = {{-1,-1}}},
[objectKeys.zoneID] = zoneIDs.ONYXIAS_LAIR,
},
[179644] = { -- Imprisoned Doomguard
[objectKeys.spawns] = {[zoneIDs.BLASTED_LANDS] = {{37.95,69.18},{44.27,75.29},{34.55,63.73},{45.08,73.43},{40.09,63.33},{42.87,74.12},{41.75,78.48},{34.93,63.73},{39.96,78.68},{40.13,66.54},{44.86,73.24},{44.77,72.97},{43.12,77.19},{59.44,55.4},{56.97,55.22}}},
[objectKeys.zoneID] = zoneIDs.BLASTED_LANDS,
},
[179697] = { -- Arena Treasure Chest
[objectKeys.spawns] = {[zoneIDs.STRANGLETHORN_VALE] = {{30.52,47.87}}},
[objectKeys.zoneID] = zoneIDs.STRANGLETHORN_VALE,
},
[179703] = { -- Cache of the Firelord
[objectKeys.questStarts] = {7632},
},
[179888] = { -- Rizzle's Guarded Plans
[objectKeys.questStarts] = {1194},
},
[179908] = { -- Slagtree's Lost Tools
[objectKeys.spawns] = {[zoneIDs.THE_HINTERLANDS] = {{53.3,38.8},{57.4,42.6},{57.5,42.6},{66.4,44.8},{71,48.6},{72.6,52.9}}},
},
[180449] = { -- Forsaken Stink Bomb
[objectKeys.spawns] = {[zoneIDs.HILLSBRAD_FOOTHILLS] = {{49.75,56.97},{50.28,56.83},{49.91,57.45},{49.49,57.81}}},
[objectKeys.zoneID] = zoneIDs.HILLSBRAD_FOOTHILLS,
},
[180453] = { -- Hive'Regal Glyphed Crystal
[objectKeys.spawns] = {[zoneIDs.KALIMDOR] = {{44.404,86.1}}},
[objectKeys.zoneID] = zoneIDs.KALIMDOR,
},
[180652] = { -- Freshly Dug Dirt
[objectKeys.spawns] = {[zoneIDs.AZEROTH] = {{29.99,89.15}}},
[objectKeys.zoneID] = zoneIDs.AZEROTH,
},
[180717] = { -- The Scarab Gong
[objectKeys.spawns] = {[zoneIDs.SILITHUS] = {{25.72,90.86}}},
[objectKeys.zoneID] = zoneIDs.SILITHUS,
},
[180771] = { -- Firework Launcher
[objectKeys.spawns] = {
[zoneIDs.MOONGLADE] = {{35.95,58.69},{37.38,59.26},{36.92,56.77},{37.39,59.64},{36.45,57.12},{37.15,57.88},{45.25,38.5},{35.98,59.94},{36.52,60.23},{36.61,59.4},{36.5,56.81},{37.2,58.45},{53.92,36.84},{37.9,58.39},{47.91,33.35},{54.16,36.9},{37.59,58.72},{35.68,58.43},{36.15,57.41},{47.66,34.75},{37.05,59.11},{35.69,57.86},{35.48,58.67},{44.97,42.58},{53.38,36.7},{36.3,57.86},{42.64,35.39},{53.63,36.77},{48.78,34.52},{53.07,36.61},{50.92,37.23}},
[zoneIDs.UNDERCITY] = {{57.82,63.6},{58.43,64.13},{76.71,27.62},{56.96,25.43},{52.76,55.96},{73.87,63.84},{56.39,26.07},{50.61,56.53},{55.13,23.62},{78.68,26.13},{50.97,57.45},{66.37,37.57},{66,37.76},{65.65,37.56},{65.45,36.74},{66.59,36.75}},
[zoneIDs.STORMWIND_CITY] = {{22.15,52.35},{22.02,51.4},{22.45,52.47},{23.01,52.87},{22.57,53.63},{22.95,51.91},{22.72,53.18},{22.16,52.74},{22.57,51.67},{45.32,57.29},{45.35,57.86},{31.29,63.89},{63.92,52.51},{31.1,64.18},{45.33,57.48},{63.81,52.38},{31.39,63.77},{45.34,57.68},{55.53,33.67}},
[zoneIDs.IRONFORGE] = {{29.85,18.67},{29.1,19.58},{30.72,19.34},{31.43,19.12},{31.42,16.83},{31.76,18.09},{30.45,20.68},{32.61,18.02},{32.16,15.77},{65.43,26.28},{65.06,25.57}},
[zoneIDs.ORGRIMMAR] = {{41.97,32.52},{41.51,30.6},{40.45,30.64},{40.98,30.18},{40.61,30.1},{41.53,32.96},{40.49,31.65},{69.75,30.22},{48.86,77.18},{49.25,77.38},{69.88,30.02},{69.61,30.4},{49.44,77.48}},
[zoneIDs.THUNDER_BLUFF] = {{72.0,26.37},{71.24,27.05},{71.12,25.74},{71.58,27.15},{71.02,26.7},{54.96,50.34},{54.95,52.01},{54.96,51.85},{54.95,50.95}},
[zoneIDs.DARNASSUS] = {{31.88,13.19},{31.22,12.15},{32.14,11.9},{32.26,12.73},{31.31,13.0},{31.63,11.64},{69.77,43.22},{69.3,38.49},{68.94,43.19},{67.66,43.25},{69.36,43.22},{68.53,43.2}},
},
},
[180772] = { -- Cluster Launcher
[objectKeys.spawns] = {
[zoneIDs.MOONGLADE] = {{36.43,57.61},{36.77,59.74},{35.88,58.39},{53.23,36.66},{53.5,36.74},{37.15,57.61},{35.87,57.31},{35.48,59.15},{44.59,38.64},{37.32,58.85},{36.05,59.5},{37.16,59.96},{54.05,36.87},{42.53,34.3},{53.79,36.8},{37.92,58.14},{36.44,59.26},{36.74,56.71},{54.29,36.93}},
[zoneIDs.UNDERCITY] = {{65.48,37.17},{66.54,37.17},{55.7,22.96},{52.43,55.02},{74.88,66.58},{73.24,64.33},{74.28,67.11},{77.21,28.36},{78.99,56.28},{79.36,55.39},{78.21,25.35}},
[zoneIDs.STORMWIND_CITY] = {{22.28,52.14},{22.34,52.9},{63.59,52.18},{63.69,52.28},{31.2,64.05},{55.64,34.25},{55.57,33.85},{55.62,34.04}},
[zoneIDs.IRONFORGE] = {{28.84,17.94},{31.36,17.51},{31.75,19.74},{31.14,15.12},{30.36,18.71},{63.49,22.7},{64.26,24.08},{63.88,23.38},{64.67,24.8}},
[zoneIDs.ORGRIMMAR] = {{41.18,30.57},{40.62,31.12},{49.05,77.27},{49.6,77.54}},
[zoneIDs.THUNDER_BLUFF] = {{71.4,25.41},{72.05,25.95},{54.96,50.53},{54.94,52.23},{54.94,52.44},{54.97,50.73}},
[zoneIDs.DARNASSUS] = {{31.96,12.87},{31.87,11.98},{68.89,38.51},{69.76,38.49},{68.09,43.22},{68.52,38.51},{67.96,38.5},{67.4,38.5}},
},
},
[181073] = { -- Fragrant Cauldron
[objectKeys.spawns] = {[zoneIDs.ALTERAC_MOUNTAINS] = {{89.41,75.06}}},
},
[181346] = { -- Flame of Dire Maul
[objectKeys.spawns] = {[zoneIDs.DIRE_MAUL_GORDOK_COMMONS] = {{-1,-1}}},
},
[181349] = { -- Flame of the Scholomance
[objectKeys.spawns] = {[zoneIDs.SCHOLOMANCE_CHAMBER_OF_SUMMONING] = {{-1,-1}},[zoneIDs.SCHOLOMANCE] = {{-1,-1}}},
},
[181598] = { -- Silithyst Geyser
[objectKeys.spawns] = {[zoneIDs.SILITHUS] = {{41.17,77.14},{49.21,44.84},{35.7,66.4},{41.67,27.04},{26.42,81.5},{20.84,81.43},{31.28,65.46},{39.94,22.35},{36.7,77.47},{18.88,80.26},{50.45,50.69},{38.91,80.85},{36.09,29.92},{48.83,85.1},{36.02,38.35},{59.25,58.77},{64.01,70.86},{60.61,63.0},{58.07,49.96}}},
},
[186419] = { -- Wrecked Row Boat
[objectKeys.questStarts] = {4127},
[objectKeys.spawns] = {[zoneIDs.FERALAS] = {{45.79,65.69}}},
[objectKeys.zoneID] = zoneIDs.FERALAS,
},
[186420] = { -- Syndicate Documents
[objectKeys.questStarts] = {},
},
[187260] = { -- Mailbox
[objectKeys.spawns] = {}, -- Mailbox possibly added in TBC. Not there in Era
},
[187273] = { -- Suspicious Hoofprint
[objectKeys.questStarts] = {},
},
[188123] = { -- Mailbox
[objectKeys.spawns] = {}, -- Mailbox possibly added in TBC. Not there in Era
},
[188135] = { -- Ice Stone
[objectKeys.name] = "Ice Stone",
[objectKeys.spawns] = {[zoneIDs.DESOLACE] = {{39.24,30.39}}},
},
[190483] = { -- Document Chest
[objectKeys.spawns] = {[zoneIDs.THOUSAND_NEEDLES] = {{33.76,39.99}}},
[objectKeys.zoneID] = zoneIDs.THOUSAND_NEEDLES,
},
[190484] = { -- Document Chest
[objectKeys.spawns] = {[zoneIDs.THOUSAND_NEEDLES] = {{39.34,41.53}}},
[objectKeys.zoneID] = zoneIDs.THOUSAND_NEEDLES,
},
[375544] = { -- Wooden Figurine
[objectKeys.name] = "Wooden Figurine",
[objectKeys.spawns] = {[zoneIDs.ASHENVALE] = {{26.61,22.03}}},
[objectKeys.zoneID] = zoneIDs.ASHENVALE,
},
-- Fake IDs
-- For Era fixes 400001-409999
[400001] = { -- Unlit Torch
[objectKeys.name] = "Unlit Torch",
[objectKeys.spawns] = {[zoneIDs.ASHENVALE] = {{26.79,22.43}}},
[objectKeys.zoneID] = zoneIDs.ASHENVALE,
},
[400002] = { -- Archaeologist's Cart
[objectKeys.name] = "Archaeologist's Cart",
[objectKeys.spawns] = {[zoneIDs.ASHENVALE] = {{26.68,22.56}}},
[objectKeys.zoneID] = zoneIDs.ASHENVALE,
},
--[[[400003] = { -- REUSE
[objectKeys.name] = "Maraudon Orange Crystal Pool",
[objectKeys.spawns] = {[zoneIDs.DESOLACE] = {{33.22,65.67}}},
[objectKeys.zoneID] = zoneIDs.DESOLACE,
},]]
--[[[400004] = { -- REUSE
[objectKeys.name] = "Rookery Egg", -- Rookery Egg in UBRS
[objectKeys.spawns] = {[zoneIDs.BLACKROCK_SPIRE] = {{-1,-1}}},
[objectKeys.zoneID] = zoneIDs.BLACKROCK_SPIRE,
},]]
--[[[400005] = { -- REUSE
[objectKeys.name] = "Challenge to Urok",
[objectKeys.spawns] = {[zoneIDs.BLACKROCK_SPIRE] = {{-1,-1}}},
[objectKeys.zoneID] = zoneIDs.BLACKROCK_SPIRE,
},]]
[400006] = { -- Feralas Ahi Fishing Location
[objectKeys.name] = "Feralas Ahi Fishing Location",
[objectKeys.questStarts] = {},
[objectKeys.questEnds] = {},
[objectKeys.spawns] = {[zoneIDs.FERALAS] = {{62.1,51.4},{62.2,49.9},{62.4,52.4},{62.4,52.5},{62.6,49.3},{62.6,50.2},{62.7,50.6},{62.8,51.5},{62.9,52.5},{63.5,53.6},{63.7,52.4},{64,53.2}}},
[objectKeys.zoneID] = zoneIDs.FERALAS
},
[400007] = { -- Misty Reed Mahi Mahi Fishing Location
[objectKeys.name] = "Misty Reed Mahi Mahi Fishing Location",
[objectKeys.questStarts] = {},
[objectKeys.questEnds] = {},
[objectKeys.spawns] = {[zoneIDs.SWAMP_OF_SORROWS] = {{74.4,3.7},{74.5,3.3},{74.5,3.8},{75.1,95.9},{76,95.4},{76.3,4.3},{77.4,4.3},{77.4,95.5},{78.7,5.3},{78.9,95.7},{79.1,94.7},{79.8,94.7},{80.2,94.2},{81.2,93.6},{82.1,94.2},{84.4,91.6},{84.5,92.9},{84.9,92.1},{85.6,89.2},{86.2,88},{86.4,86.4},{86.6,16.8},{86.6,85.6},{87.3,80.7},{87.4,82.1},{87.7,79.7},{87.7,81.9},{88.5,76.6},{89.1,20},{89.8,23},{89.9,74.5},{90.2,22.4},{90.3,73.4},{90.4,71.9},{90.4,73.6},{90.5,73.5},{90.6,73},{90.7,72.1},{91.1,82.2},{91.4,30.1},{91.5,82.1},{91.7,30.4},{91.8,82.9},{93.6,37.2},{93.8,66.5},{94,38.4},{94.2,40.6},{94.2,65.1},{94.3,39.3},{94.3,64.3},{94.8,41.6},{95,43.8},{95.1,45.2},{95.2,45.9},{95.3,56.2},{95.7,47.5}}},
[objectKeys.zoneID] = zoneIDs.SWAMP_OF_SORROWS
},
[400008] = { -- Sar'theris Striker Fishing Location
[objectKeys.name] = "Sar'theris Striker Fishing Location",
[objectKeys.questStarts] = {},
[objectKeys.questEnds] = {},
[objectKeys.spawns] = {[zoneIDs.DESOLACE] = {{22.2,87.6},{22.8,76.8},{24.3,82.5},{24.5,81.9},{24.9,81.3},{25.6,81},{25.8,77.4},{25.8,77.5},{25.9,78.7},{26,80.1},{26.2,75.4},{26.2,76.2},{27.2,42.9},{33,36.8},{35.3,31.7},{36.1,32.8},{36.1,34.8},{38.8,23.2},{40.1,22.1}}},
[objectKeys.zoneID] = zoneIDs.DESOLACE
},
[400009] = { -- Savage Coast Blue Sailfin Fishing Location
[objectKeys.name] = "Savage Coast Blue Sailfin Fishing Location",
[objectKeys.questStarts] = {},
[objectKeys.questEnds] = {},
[objectKeys.spawns] = {[zoneIDs.STRANGLETHORN_VALE] = {{13.5,15.7},{19.5,20.9},{22.2,19.8},{24.4,18.8},{24.5,65.7},{24.6,18.9},{25,58.3},{25.3,45.2},{25.4,49.3},{25.5,19.9},{25.7,66.9},{26.2,48.5},{26.3,67.8},{26.9,20.4},{27,39.7},{27.1,40.5},{27.3,68},{27.4,68.9},{27.7,21},{28.7,21.8},{29.2,23.2},{29.4,23.7},{29.4,24.6},{29.4,27.4},{29.4,27.7},{29.5,24.3},{29.5,25.1},{29.5,27.4},{29.5,27.7},{29.6,25.7},{31.9,32.1},{33,31.3},{33,32.1},{33.1,32.5},{34.2,32.4},{34.2,32.5},{34.2,34.7},{34.7,34.5},{34.8,33.7},{34.9,32.4},{35.1,35.6}}},
[objectKeys.zoneID] = zoneIDs.STRANGLETHORN_VALE
},
[400010] = { -- Moonwell
[objectKeys.name] = "Moonwell",
[objectKeys.questStarts] = {},
[objectKeys.questEnds] = {},
[objectKeys.spawns] = {[zoneIDs.MOONGLADE] = {{68,60.2}}},
[objectKeys.zoneID] = zoneIDs.MOONGLADE
},
}
end
-- some objects are shared across factions but require different sources for each faction
function QuestieObjectFixes:LoadFactionFixes()
local objectKeys = QuestieDB.objectKeys
local zoneIDs = ZoneDB.zoneIDs
local objectFixesHorde = {
[103574] = { -- Filled Containment Coffer
[objectKeys.spawns] = {[zoneIDs.UNDERCITY] = {{53.29,74.56},{53.67,76.81},{52.01,75.96},{53.2,71.44}}},
[objectKeys.zoneID] = zoneIDs.UNDERCITY,
},
[105174] = { -- Chest of Containment Coffers
[objectKeys.spawns] = {[zoneIDs.UNDERCITY] = {{85.67,9.91},{85.53,10.03},{85.48,9.9},{85.58,9.95}}},
},
[105175] = { -- Cantation of Manifestation
[objectKeys.spawns] = {[zoneIDs.UNDERCITY] = {{85.78,10.05},{85.7,10.11},{85.65,10.18}}},
},
[177525] = { -- Moonkin Stone
[objectKeys.spawns] = {[zoneIDs.THE_BARRENS] = {{41.96,60.81}}},
[objectKeys.zoneID] = zoneIDs.THE_BARRENS,
},
[180743] = { -- Carefully Wrapped Present
[objectKeys.spawns] = {[zoneIDs.ORGRIMMAR] = {{52.39,69.52}}},
},
[180746] = { -- Gently Shaken Gift
[objectKeys.spawns] = {[zoneIDs.ORGRIMMAR] = {{52.33,69.42}}},
},
[180747] = { -- Gaily Wrapped Present
[objectKeys.spawns] = {[zoneIDs.ORGRIMMAR] = {{52.3,69.18}}},
},
[180748] = { -- Ticking Present
[objectKeys.spawns] = {[zoneIDs.ORGRIMMAR] = {{52.28,69.29}}},
},
[180793] = { -- Festive Gift
[objectKeys.spawns] = {[zoneIDs.ORGRIMMAR] = {{52.42,69.32}}},
},
}
local objectFixesAlliance = {
[103574] = { -- Filled Containment Coffer
[objectKeys.spawns] = {[zoneIDs.STORMWIND_CITY] = {{40.87,89.04},{40.75,92.13},{41.27,90.54},{40.26,88.13},{40.89,87.75},{40.47,91.94}}},
[objectKeys.zoneID] = zoneIDs.STORMWIND_CITY,
},
[105174] = { -- Chest of Containment Coffers
[objectKeys.spawns] = {[zoneIDs.STORMWIND_CITY] = {{38.48,78.89},{38.55,79.04},{38.54,78.97},{38.62,79.02}}},
},
[105175] = { -- Cantation of Manifestation
[objectKeys.spawns] = {[zoneIDs.STORMWIND_CITY] = {{38.68,78.73},{38.69,78.81},{38.73,78.84}}},
},
[177525] = { -- Moonkin Stone
[objectKeys.spawns] = {[zoneIDs.DARKSHORE] = {{43.5,45.97}}},
[objectKeys.zoneID] = zoneIDs.DARKSHORE,
},
[180743] = { -- Carefully Wrapped Present
[objectKeys.spawns] = {[zoneIDs.IRONFORGE] = {{33.86,65.69}}},
},
[180746] = { -- Gently Shaken Gift
[objectKeys.spawns] = {[zoneIDs.IRONFORGE] = {{33.46,65.57}}},
},
[180747] = { -- Gaily Wrapped Present
[objectKeys.spawns] = {[zoneIDs.IRONFORGE] = {{33.78,66.4}}},
},
[180748] = { -- Ticking Present
[objectKeys.spawns] = {[zoneIDs.IRONFORGE] = {{33.9,66.68}}},
},
[180793] = { -- Festive Gift
[objectKeys.spawns] = {[zoneIDs.IRONFORGE] = {{33.96,65.86}}},
},
}
if UnitFactionGroup("Player") == "Horde" then
return objectFixesHorde
else
return objectFixesAlliance
end
end
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
File diff suppressed because it is too large Load Diff
@@ -1,350 +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 {
[2287] = { -- Haunch of Meat (modified to add new SoD vendors to food vendor townsfolk)
[itemKeys.vendors] = {982,1464,2365,2388,2814,3025,3089,3312,3368,3411,3489,3621,3705,3881,3882,3933,3935,3960,4084,4169,4255,4782,4875,4879,4891,4894,4954,4963,5111,5124,5611,5620,5870,6928,6929,6930,7485,7731,7733,7736,7941,8125,9356,10367,11118,11187,12196,12794,12959,14624,15174,241664},
},
[2320] = { -- Coarse Thread (modified to add new SoD vendors to trade goods vendor townsfolk)
[itemKeys.vendors] = {66,777,843,960,989,1148,1250,1286,1347,1454,1456,1465,1474,1672,1692,2118,2225,2381,2393,2394,2668,2669,2670,2672,2697,2698,2699,2810,2816,2819,2821,2846,3005,3081,3091,3096,3168,3187,3364,3366,3367,3482,3485,3499,3556,3614,3779,3954,3955,3958,4168,4189,4194,4225,4229,4561,4577,4589,4775,4877,4897,5100,5128,5135,5154,5163,5565,5783,5817,5944,6301,6567,6568,6574,6576,6731,7852,7854,7940,7947,8145,8160,8363,8681,8934,9636,11189,11557,11874,12022,12028,12043,12245,12941,12942,12943,12956,12957,12958,15165,15179,240631,240632},
},
[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
},
[8766] = { -- Morning Glory Dew (modified to add new SoD vendors to drink vendor townsfolk)
[itemKeys.vendors] = {258,274,295,465,734,955,982,1237,1247,1328,1464,1697,2303,2352,2364,2366,2388,2803,2832,3086,3298,3411,3546,3577,3621,3689,3708,3881,3882,3883,3884,3934,3937,3959,3961,4167,4169,4181,4190,4191,4192,4195,4255,4266,4554,4555,4571,4782,4875,4879,4893,4963,4981,5111,5112,5140,5611,5620,5688,5814,5871,6091,6272,6495,6727,6734,6735,6736,6737,6738,6739,6740,6741,6746,6747,6790,6791,6807,6928,6929,6930,7485,7714,7731,7733,7736,7737,7744,7941,7943,8125,8137,8143,8150,8152,8931,9356,9501,10367,11038,11103,11106,11116,11118,11187,11287,12019,12026,12196,12794,12959,14371,14624,14731,14961,14962,14963,14964,15124,15125,15174,16256,16458,241664},
},
[9279] = { -- White Punch Card
[itemKeys.npcDrops] = {216667,216668,216669,216670,216671},
},
[9309] = { -- Robo-mechanical Guts
[itemKeys.npcDrops] = {215728,216666,216668,216669,216670,216671,217582,217733,218242,218243,218244,218245,218537,220072},
},
[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},
},
[208205] = { -- Blackrat's Note
[itemKeys.npcDrops] = {6123,6124},
},
[208609] = { -- Glade Flower
[itemKeys.objectDrops] = {407247},
},
[208612] = { -- Severed Spider Head
[itemKeys.npcDrops] = {1998,1999,2000,2001},
},
[208689] = { -- Ferocious Idol
[itemKeys.npcDrops] = {98,117,452,500,1065,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,1782,1924},
},
[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},
},
[220345] = { -- Sanguine Sorcery
[itemKeys.objectDrops] = {441247},
},
[220349] = { -- Stonewrought Design
[itemKeys.objectDrops] = {441251},
},
[221326] = { -- Sacred Stag Heart
[itemKeys.class] = itemClasses.QUEST,
},
[221191] = { -- Dreamstone
[itemKeys.npcDrops] = {211956},
},
[225954] = { -- Charred Spell Notes
[itemKeys.npcDrops] = {227324},
},
[226122] = { -- Dalton's Horn
[itemKeys.class] = itemClasses.QUEST,
},
[226523] = { -- Dalton's Horn
[itemKeys.class] = itemClasses.QUEST,
},
[226545] = { -- Dalton's Horn
[itemKeys.class] = itemClasses.QUEST,
},
[227768] = { -- Dreamjuice
[itemKeys.class] = itemClasses.QUEST,
},
[228141] = { -- Necromancy 101
[itemKeys.objectDrops] = {463211},
},
[229362] = { -- Storehouse Key
[itemKeys.npcDrops] = {230775},
},
[231298] = { -- Scroll of Lesser Spatial Mending
[itemKeys.class] = itemClasses.QUEST,
},
[231797] = { -- Soul of the Void
[itemKeys.npcDrops] = {232875},
},
[231798] = { -- Soul of Enthralling
[itemKeys.npcDrops] = {230146},
},
[231799] = { -- Soul of Devouring
[itemKeys.npcDrops] = {232896},
},
[231842] = { -- Nandieb's Stave
[itemKeys.npcDrops] = {232529},
},
[231904] = { -- Tarnished Horn
[itemKeys.class] = itemClasses.QUEST,
},
[234006] = { -- Monstrous Silithid Chitin
[itemKeys.npcDrops] = {11698,11722,11724,11727,11729,13136,15240,15286,15288,15341,15348,234798},
},
[234007] = { -- Spiked Silithid Chitin
[itemKeys.npcDrops] = {11698,11722,11723,11724,11727,13136,15230,15233,15235,15236,15240,15318,15319,15320,15323,15324,15325,15327,15336,234798},
},
[234008] = { -- Qiraji Silk
[itemKeys.npcDrops] = {11880,11881,11882,11883,14479,15201,15202,15213,15247,15249,15263,15343,15516,15541,15542,234762,234800},
},
[234011] = { -- Qiraji Stalker Venom
[itemKeys.npcDrops] = {6551,6552,6553,6554,6555,6582,11698,11722,11723,11724,11726,11727,11728,11729,11730,11732,11733,11734,13136,15235,15236,15325,15327,15509},
},
[235045] = { -- Imperial Qiraji Regalia
[itemKeys.npcDrops] = {15275,15276,15299,15509,15510,15511,15516,15517,15543,15544},
},
[235046] = { -- Imperial Qiraji Armaments
[itemKeys.npcDrops] = {15275,15276,15299,15509,15510,15511,15516,15517,15543,15544},
},
[235788] = { -- Enthusiastic Wisp
[itemKeys.npcDrops] = {238431},
},
[235789] = { -- Flame of Life
[itemKeys.npcDrops] = {1045,1046,1047,1048,1049,1050},
},
[235790] = { -- Enchanted Firebrand
[itemKeys.class] = itemClasses.QUEST,
},
[236350] = { -- The Phylactery of Kel'Thuzad
[itemKeys.npcDrops] = {15990},
},
[236786] = { -- Heart of Doom
[itemKeys.objectDrops] = {525416},
},
[237143] = { -- Orders from the High General
[itemKeys.objectDrops] = {600002}, -- fake for tooltips
},
[238794] = { -- Unappetizing Leftovers
[itemKeys.objectDrops] = {526132,526143,526144},
},
[237163] = { -- Ancient Hero's Skull
[itemKeys.objectDrops] = {518117},
},
[238811] = { -- Juicy Apple
[itemKeys.npcDrops] = {240998,240978},
},
[238830] = { -- Apple Scope
[itemKeys.objectDrops] = {526217},
[itemKeys.class] = itemClasses.QUEST,
},
[238831] = { -- Apple Rope
[itemKeys.objectDrops] = {526220},
[itemKeys.class] = itemClasses.QUEST,
},
[238899] = { -- Assorted Fish
[itemKeys.objectDrops] = {526809},
},
[238960] = { -- Quartermaster's Crate
[itemKeys.objectDrops] = {526937},
},
[239016] = { -- Holy Salts
[itemKeys.npcDrops] = {240998,241048,241119,241120,241121,241122,241123,241877,242367,242757},
},
[239092] = { -- Preposterously Prosed Postage
[itemKeys.class] = itemClasses.QUEST,
},
[239119] = { -- Holy Arrow
[itemKeys.objectDrops] = {527513},
},
[239216] = { -- Lightforged Iron
[itemKeys.npcDrops] = {240794,240811,240812,241021,241772,241768,241769,241770,243021,243269},
},
[239223] = { -- House Prop
[itemKeys.objectDrops] = {527821},
},
[239764] = { -- Crimson Bladeleaf
[itemKeys.objectDrops] = {528481},
},
[240835] = { -- Crate of Moonglade Supplies
[itemKeys.objectDrops] = {529731},
},
[240848] = { -- Nordrassil Detritus
[itemKeys.objectDrops] = {529720},
},
[241652] = { -- Discolored Beast Heart
[itemKeys.npcDrops] = {1815,1816,1817,1821,1822,1824,8596,8597,8598,8600,8601,8602,8603,8605,240247},
},
[241655] = { -- Mishandled Healing Potion
[itemKeys.objectDrops] = {531291},
},
[241656] = { -- Mishandled Healing Potion
[itemKeys.objectDrops] = {531291},
},
[242018] = { -- Plaguelands Bleeding Heart
[itemKeys.objectDrops] = {531301},
},
[242257] = { -- Mysterious Alchemical Sample
[itemKeys.objectDrops] = {531545},
},
[242258] = { -- Research Notes
[itemKeys.objectDrops] = {531545},
},
[242319] = { -- New Plague Samples
[itemKeys.class] = itemClasses.QUEST,
},
[242320] = { -- New Plague Samples
[itemKeys.class] = itemClasses.QUEST,
},
}
end
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,636 +0,0 @@
---@class QuestieTBCItemFixes
local QuestieTBCItemFixes = QuestieLoader:CreateModule("QuestieTBCItemFixes")
---@type QuestieDB
local QuestieDB = QuestieLoader:ImportModule("QuestieDB")
function QuestieTBCItemFixes:Load()
local itemKeys = QuestieDB.itemKeys
local itemClasses = QuestieDB.itemClasses
return {
[2633] = { -- Jungle Remedy
[itemKeys.npcDrops] = {937,940,941,942},
},
[4503] = {
[itemKeys.npcDrops] = {2557,2556,2555,2553,2552,2558,2554},
},
[5445] = {
[itemKeys.npcDrops] = {3943},
},
[5060] = {
[itemKeys.vendors] = {1325,1326,1457,2622,3090,3135,3334,3490,3542,3551,3561,3969,4585,5139,5169,6779,7166,10364,12096,12097,15175,16268,16683,16829,18006,18019,20121},
},
[5359] = { -- Lorgalis Manuscript
[itemKeys.npcDrops] = {},
},
[5883] = { -- Forked Mudrock Tongue
[itemKeys.npcDrops] = {4397},
},
[5959] = {
[itemKeys.npcDrops] = {4376,4378,4379,4380},
},
[6083] = {
[itemKeys.npcDrops] = {},
},
[7923] = { -- Defias Tower Key
[itemKeys.npcDrops] = {7051},
},
[8073] = {
[itemKeys.npcDrops] = {},
},
[12366] = {
[itemKeys.npcDrops] = {7457,7458,7459,7460},
},
[12740] = { -- Fifth Mosh'aru Tablet
[itemKeys.npcDrops] = {},
},
[17126] = { -- Elegant Letter
[itemKeys.npcDrops] = {332,918,3327,3328,3401,4163,4214,4215,4582,4583,4584,5165,5166,5167,15285,16279,16684,16685,16686},
},
[20023] = {
[itemKeys.npcDrops] = {6375,6377,6378,6379,6380,8759,8761,8762,8763,8764,8766,},
},
[22435] = {
[itemKeys.npcDrops] = {6551,6552,6553,6554,6555,10040,10041},
},
[22775] = {
[itemKeys.npcDrops] = {16442},
},
[22776] = {
[itemKeys.npcDrops] = {16443},
},
[22777] = {
[itemKeys.npcDrops] = {16444},
},
[23217] = {
[itemKeys.npcDrops] = {16933},
},
[23339] = { -- Arelion's Journal
[itemKeys.npcDrops] = {},
[itemKeys.objectDrops] = {},
[itemKeys.itemDrops] = {31955},
},
[23361] = {
[itemKeys.class] = itemClasses.QUEST,
},
[23417] = {
[itemKeys.class] = itemClasses.QUEST,
},
[23486] = {
[itemKeys.npcDrops] = {17034},
},
[23552] = {
[itemKeys.objectDrops] = {184079},
},
[23614] = {
[itemKeys.objectDrops] = {181616},
},
[23645] = {
[itemKeys.class] = itemClasses.QUEST,
},
[23670] = {
[itemKeys.objectDrops] = {181632},
},
[23686] = { -- Lacy Handkerchief
[itemKeys.npcDrops] = {17210},
},
[23750] = {
[itemKeys.objectDrops] = {107047},
},
[23789] = {
[itemKeys.npcDrops] = {17186,17187,17188},
},
[23792] = {
[itemKeys.class] = itemClasses.QUEST,
},
[23801] = {
[itemKeys.class] = itemClasses.QUEST,
},
[23818] = {
[itemKeys.class] = itemClasses.QUEST,
},
[23837] = { -- Weathered Treasure Map
[itemKeys.npcDrops] = {17421},
},
[23848] = {
[itemKeys.npcDrops] = {3546},
},
[23878] = {
[itemKeys.objectDrops] = {181779},
},
[23879] = {
[itemKeys.objectDrops] = {181780},
},
[23880] = {
[itemKeys.objectDrops] = {181781},
},
[23894] = {
[itemKeys.npcDrops] = {17370,17371,17377,17381,17395,17397,17398,17414,17429,17491,17624,17626,},
},
[23901] = { -- Nazan's Head
[itemKeys.npcDrops] = {17307},
},
[23984] = {
[itemKeys.npcDrops] = {17324,17327,17339,17342,17343,17344,17346,17347,17348,17350,17352,17353,17522,17523,17527,17588,17589,17661,17683,17322,17323,17325,17326,17328,17329,17330,17334,17336,17337,17338,17340,17341,17358,17494,17550,17604,17606,17607,17608,17609,17610,17713,17714,17715},
},
[24084] = {
[itemKeys.class] = itemClasses.QUEST,
},
[24099] = {
[itemKeys.class] = itemClasses.QUEST,
},
[24132] = {
[itemKeys.objectDrops] = {410001},
},
[24156] = {
[itemKeys.npcDrops] = {17544},
},
[24226] = {
[itemKeys.npcDrops] = {17832},
},
[24246] = {
[itemKeys.npcDrops] = {},
},
[24278] = {
[itemKeys.class] = itemClasses.QUEST,
},
[24285] = {
[itemKeys.npcDrops] = {16683},
},
[24286] = {
[itemKeys.npcDrops] = {16611},
},
[24287] = {
[itemKeys.class] = itemClasses.QUEST,
},
[24289] = {
[itemKeys.class] = itemClasses.QUEST,
},
[24317] = {
[itemKeys.objectDrops] = {182074},
},
[24335] = {
[itemKeys.class] = itemClasses.QUEST,
},
[24355] = {
[itemKeys.class] = itemClasses.QUEST,
},
[24467] = {
[itemKeys.class] = itemClasses.QUEST,
},
[24474] = {
[itemKeys.class] = itemClasses.QUEST,
},
[24483] = { -- Withered Basidium
[itemKeys.startQuest] = 9827,
},
[24501] = {
[itemKeys.class] = itemClasses.QUEST,
},
[24502] = {
[itemKeys.npcDrops] = {17138,18037,18064,18065},
[itemKeys.class] = itemClasses.QUEST,
},
[24573] = {
[itemKeys.npcDrops] = {18197},
},
[25458] = {
[itemKeys.class] = itemClasses.QUEST,
},
[25460] = {
[itemKeys.npcDrops] = {},
},
[25461] = {
[itemKeys.npcDrops] = {18472},
},
[25462] = {
[itemKeys.npcDrops] = {16807},
},
[25465] = {
[itemKeys.class] = itemClasses.QUEST,
},
[25539] = {
[itemKeys.class] = itemClasses.QUEST,
},
[25552] = {
[itemKeys.class] = itemClasses.QUEST,
},
[25554] = {
[itemKeys.npcDrops] = {},
},
[25555] = {
[itemKeys.class] = itemClasses.QUEST,
},
[25604] = {
[itemKeys.class] = itemClasses.QUEST,
},
[25642] = {
[itemKeys.objectDrops] = {185201},
},
[25658] = {
[itemKeys.class] = itemClasses.QUEST,
},
[25807] = {
[itemKeys.npcDrops] = {18476,18477},
},
[25853] = {
[itemKeys.class] = itemClasses.QUEST,
},
[28038] = {
[itemKeys.class] = itemClasses.QUEST,
},
[28106] = {
[itemKeys.class] = itemClasses.QUEST,
},
[28132] = {
[itemKeys.class] = itemClasses.QUEST,
},
[28478] = {
[itemKeys.class] = itemClasses.QUEST,
},
[28607] = {
[itemKeys.class] = itemClasses.QUEST,
},
[29112] = {
[itemKeys.npcDrops] = {18907},
},
[29324] = {
[itemKeys.class] = itemClasses.QUEST,
},
[29460] = {
[itemKeys.class] = itemClasses.QUEST,
},
[29473] = {
[itemKeys.class] = itemClasses.QUEST,
},
[29482] = {
[itemKeys.class] = itemClasses.QUEST,
},
[29742] = {
[itemKeys.class] = itemClasses.QUEST,
},
[29769] = { -- Diagnostic Results
[itemKeys.objectDrops] = {184609},
},
[29778] = {
[itemKeys.class] = itemClasses.QUEST,
},
[29795] = {
[itemKeys.class] = itemClasses.QUEST,
},
[29796] = {
[itemKeys.class] = itemClasses.QUEST,
},
[30259] = {
[itemKeys.class] = itemClasses.QUEST,
},
[30426] = {
[itemKeys.npcDrops] = {19762,19768,19789},
[itemKeys.class] = itemClasses.QUEST,
},
[30430] = {
[itemKeys.objectDrops] = {184715},
},
[30451] = {
[itemKeys.npcDrops] = {19799,19800,19802,21337,21656},
},
[30540] = {
[itemKeys.class] = itemClasses.QUEST,
},
[30639] = {
[itemKeys.class] = itemClasses.QUEST,
},
[30658] = {
[itemKeys.npcDrops] = {21727},
},
[30659] = {
[itemKeys.npcDrops] = {21725},
},
[30672] = {
[itemKeys.class] = itemClasses.QUEST,
},
[30712] = {
[itemKeys.class] = itemClasses.QUEST,
},
[30719] = {
[itemKeys.class] = itemClasses.QUEST,
},
[30721] = {
[itemKeys.class] = itemClasses.QUEST,
},
[30743] = {
[itemKeys.npcDrops] = {21821,20021},
},
[30782] = {
[itemKeys.npcDrops] = {21817,20021},
},
[30783] = {
[itemKeys.npcDrops] = {21820,20021},
},
[30808] = {
[itemKeys.npcDrops] = {18667},
},
[30823] = {
[itemKeys.npcDrops] = {19678},
},
[31085] = { -- Top Shard of the Arcatraz Key
[itemKeys.npcDrops] = {17977},
},
[31086] = { -- Bottom Shard of the Arcatraz Key
[itemKeys.npcDrops] = {19220},
},
[31121] = {
[itemKeys.class] = itemClasses.QUEST,
},
[31122] = {
[itemKeys.class] = itemClasses.QUEST,
},
[31130] = {
[itemKeys.npcDrops] = {21387},
},
[31252] = {
[itemKeys.npcDrops] = {18733},
},
[31261] = {
[itemKeys.npcDrops] = {19826,19827,21386},
},
[31279] = {
[itemKeys.class] = itemClasses.QUEST,
},
[31316] = {
[itemKeys.class] = itemClasses.QUEST,
},
[31530] = {
[itemKeys.objectDrops] = {177281},
},
[31495] = {
[itemKeys.class] = itemClasses.QUEST,
},
[31517] = {
[itemKeys.class] = itemClasses.QUEST,
},
[31518] = {
[itemKeys.class] = itemClasses.QUEST,
},
[31607] = {
[itemKeys.npcDrops] = {22258},
},
[31655] = {
[itemKeys.class] = itemClasses.QUEST,
},
[31664] = {
[itemKeys.class] = itemClasses.QUEST,
},
[31702] = {
[itemKeys.class] = itemClasses.QUEST,
},
[31708] = {
[itemKeys.objectDrops] = {185224},
},
[31709] = {
[itemKeys.objectDrops] = {185226},
},
[31710] = {
[itemKeys.objectDrops] = {185225},
},
[31716] = {
[itemKeys.npcDrops] = {17301},
},
[31721] = {
[itemKeys.npcDrops] = {17798},
},
[31722] = {
[itemKeys.npcDrops] = {18708},
},
[31813] = {
[itemKeys.npcDrops] = {18884},
},
[31880] = { -- Blood Elf Orphan Whistle
[itemKeys.class] = itemClasses.QUEST,
},
[31881] = { -- Draenei Orphan Whistle
[itemKeys.class] = itemClasses.QUEST,
},
[31941] = { -- Mark of the Nexus-King
[itemKeys.npcDrops] = {20888,20889,22825,22826,22827,22828},
},
[31951] = {
[itemKeys.vendors] = {21643},
},
[31955] = { -- Arelion's Knapsack
[itemKeys.objectDrops] = {184115},
},
[31957] = {
[itemKeys.npcDrops] = {20520},
},
[31994] = { -- Ethereum Key Tablet - Alpha
[itemKeys.class] = itemClasses.QUEST,
},
[32061] = { -- Evidence from Alpha
[itemKeys.npcDrops] = {20889,22920},
},
[32364] = {
[itemKeys.objectDrops] = {185566},
[itemKeys.npcDrops] = {23002},
},
[32379] = { -- Grulloc's Dragon Skull
[itemKeys.npcDrops] = {},
},
[32383] = { -- Skulloc's Soul
[itemKeys.npcDrops] = {},
},
[32406] = {
[itemKeys.class] = itemClasses.QUEST,
},
[32598] = {
[itemKeys.objectDrops] = {185920},
},
[32601] = {
[itemKeys.objectDrops] = {185921},
},
[32723] = {
[itemKeys.npcDrops] = {},
},
[32742] = {
[itemKeys.npcDrops] = {23363},
},
[32971] = {
[itemKeys.class] = itemClasses.QUEST,
[itemKeys.objectDrops] = {186234},
},
[33071] = {
[itemKeys.npcDrops] = {},
},
[33039] = {
[itemKeys.npcDrops] = {},
},
[33041] = {
[itemKeys.objectDrops] = {186283},
},
[33061] = {
[itemKeys.class] = itemClasses.QUEST,
},
[33086] = {
[itemKeys.npcDrops] = {},
},
[33087] = {
[itemKeys.npcDrops] = {4328,4329,4331},
},
[33112] = {
[itemKeys.npcDrops] = {},
},
[33175] = {
[itemKeys.npcDrops] = {},
},
[33814] = {
[itemKeys.npcDrops] = {17377},
},
[33815] = {
[itemKeys.npcDrops] = {16808},
},
[33821] = {
[itemKeys.npcDrops] = {17942},
},
[33826] = {
[itemKeys.npcDrops] = {17882},
},
[33827] = {
[itemKeys.npcDrops] = {17798},
},
[33833] = {
[itemKeys.npcDrops] = {17307},
},
[33834] = {
[itemKeys.npcDrops] = {18473},
},
[33835] = {
[itemKeys.npcDrops] = {18344},
},
[33836] = {
[itemKeys.npcDrops] = {18373},
},
[33837] = {
[itemKeys.npcDrops] = {18096},
},
[33840] = {
[itemKeys.npcDrops] = {18708},
},
[33847] = {
[itemKeys.npcDrops] = {18096},
},
[33858] = {
[itemKeys.npcDrops] = {17881},
},
[33859] = {
[itemKeys.npcDrops] = {17977},
},
[33860] = {
[itemKeys.npcDrops] = {19220},
},
[33861] = {
[itemKeys.npcDrops] = {20912},
},
[34130] = { -- Recovery Diver's Potion
[itemKeys.class] = itemClasses.QUEST,
},
[34160] = {
[itemKeys.npcDrops] = {24664},
},
[34246] = {
[itemKeys.npcDrops] = {},
},
[34338] = {
[itemKeys.npcDrops] = {24960,24966},
},
[34475] = {
[itemKeys.class] = itemClasses.QUEST,
},
[34477] = {
[itemKeys.class] = itemClasses.QUEST,
},
[35229] = {
[itemKeys.objectDrops] = {410014},
},
[35277] = {
[itemKeys.npcDrops] = {25866,25863,25924},
},
[35568] = {
[itemKeys.objectDrops] = {188129},
},
[35569] = {
[itemKeys.objectDrops] = {188128},
},
[37736] = { -- 2021 Brewfest item (Alliance)
[itemKeys.name] = "\"Brew of the Month\" Club Membership Form",
[itemKeys.startQuest] = 12420,
[itemKeys.itemLevel] = 1,
[itemKeys.requiredLevel] = 1,
[itemKeys.ammoType] = 0,
[itemKeys.class] = itemClasses.QUEST,
[itemKeys.subClass] = 0,
[itemKeys.vendors] = {23710,27478},
},
[37737] = { -- 2021 Brewfest item (Horde)
[itemKeys.name] = "\"Brew of the Month\" Club Membership Form",
[itemKeys.startQuest] = 12421,
[itemKeys.itemLevel] = 1,
[itemKeys.requiredLevel] = 1,
[itemKeys.ammoType] = 0,
[itemKeys.class] = itemClasses.QUEST,
[itemKeys.subClass] = 0,
[itemKeys.vendors] = {24495,27489},
},
[185956] = { -- Shimmering Vessel
[itemKeys.name] = "Shimmering Vessel",
[itemKeys.class] = itemClasses.QUEST,
},
}
end
-- This should allow manual fix for item availability
function QuestieTBCItemFixes:LoadFactionFixes()
local itemKeys = QuestieDB.itemKeys
local itemFixesHorde = {
[17126] = { -- Elegant Letter
[itemKeys.npcDrops] = {3327,3328,3401,4582,4583,4584,15285,16279,16684,16685,16686},
},
[25911] = { -- Salvaged Wood
[itemKeys.objectDrops] = {182936},
},
[25912] = { -- Salvaged Metal
[itemKeys.objectDrops] = {182937, 182938},
},
[30712] = { -- The Doctor's Key
[itemKeys.npcDrops] = {21779},
},
[30713] = { -- The Art of Fel Reaver Maintenance
[itemKeys.objectDrops] = {185233},
},
}
local itemFixesAlliance = {
[17126] = { -- Elegant Letter
[itemKeys.npcDrops] = {332,918,4163,4214,4215,5165,5166,5167},
},
[25911] = { -- Salvaged Wood
[itemKeys.objectDrops] = {182799},
},
[25912] = { -- Salvaged Metal
[itemKeys.objectDrops] = {182798, 182797},
},
[30712] = { -- The Doctor's Key
[itemKeys.npcDrops] = {21778},
},
[30713] = { -- The Art of Fel Reaver Maintenance
[itemKeys.objectDrops] = {184947},
},
}
if UnitFactionGroup("Player") == "Horde" then
return itemFixesHorde
else
return itemFixesAlliance
end
end
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,75 +0,0 @@
254 - not sure yet
339 - ok
340 - ok
341 - ok
342 - ok
349 - ok
403 - not sure yet
410 - ok
431 - ok
558 - not sure yet, can't test
593 - ok
779 - ok
795 - ok
813 - ok
925 - not sure yet, can't test
926 - ok
960 - this one needs available changes
961 - this one needs available changes
972 - this one needs available changes
1103 - this one needs available changes
1442 - not sure yet
1462 - this one needs available changes
1463 - this one needs available changes
1464 - this one needs available changes
1655 - not sure yet
1714 - not sure yet
2842 - not child
3357 - this one needs available changes
4041 - not sure yet
4561 - not sure yet
4661 - not sure yet
4785 - not sure yet
4962 - not sure yet
4963 - not sure yet
5421 - not child
6545 - ok
6546 - ok
6547 - ok
6581 - ok
7645 - not sure yet
8353 - ok
8354 - ok
8355 - ok
8356 - ok
8357 - ok
8358 - ok
8359 - ok
8360 - ok
8508 - ok
8599 - not sure
8732 - ok
9483 - ok
10850 - ok
10919 - ok
11920 - i remember something off about this one
12541 - child quest with 3 parent quests (!)
12557 - ok
12597 - ok
12598 - ok
12599 - ok
12663 - this one needs available changes
12664 - this one needs available changes
12673 - ok (99% sure)
12686 - ok (99% sure)
12690 - ok (99% sure)
13625 - we handle this in a special way
13666 - we handle this in a special way
13669 - we handle this in a special way
13670 - we handle this in a special way
13671 - we handle this in a special way
13673 - we handle this in a special way
13674 - we handle this in a special way
13675 - we handle this in a special way
13676 - we handle this in a special way
13677 - we handle this in a special way
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large Load Diff
@@ -1,908 +0,0 @@
---@class QuestieWotlkObjectFixes
local QuestieWotlkObjectFixes = QuestieLoader:CreateModule("QuestieWotlkObjectFixes")
---@type QuestieDB
local QuestieDB = QuestieLoader:ImportModule("QuestieDB")
---@type ZoneDB
local ZoneDB = QuestieLoader:ImportModule("ZoneDB")
function QuestieWotlkObjectFixes:Load()
local objectKeys = QuestieDB.objectKeys
local zoneIDs = ZoneDB.zoneIDs
return {
[269] = { -- Guarded Thunder Ale Barrel
[objectKeys.questStarts] = {403},
},
[140911] = { -- Spool of Light Chartreuse Silk Thread
[objectKeys.spawns] = {[zoneIDs.STORMWIND_CITY] = {{50.58,60.14}}},
},
[141980] = { -- Spectral Lockbox
[objectKeys.questEnds] = {2701},
},
[176213] = {
[objectKeys.spawns] = {
[zoneIDs.WESTERN_PLAGUELANDS]={{35.9,57.4},{35.9,57.5},{36.4,53.7},{36.5,53.6},{38.2,56.3},{39.7,69.4},{39.7,69.6},{40.6,73.1},{40.7,57.4},{40.8,57.5},{41.4,62.1},{41.5,62.1},{41.9,70.5},{42.2,54.9},{42.8,64.2},{43.3,68.3},{43.6,70.4},{43.7,70.5},{44.2,65},{44.4,71.6},{44.5,53.3},{44.5,71.7},{44.6,53.5},{45.8,71.5},{45.9,51.1},{45.9,71.4},{46.7,34.4},{46.8,34.5},{47,59.9},{47,67.1},{47.6,70},{47.9,53.1},{49.4,68.1},{49.8,33.3},{52.2,66.5},{52.3,55},{52.3,66.3},{53,64.2},{53.2,66.5},{53.3,65.1},{53.3,66.2},{53.4,63.4},{53.5,63.3},{53.5,63.5},{54.9,27.1},{55.2,69.4},{55.3,69.6},{56.7,34.7},{57.8,66.4},{57.8,66.5},{62,58.3},{62,58.5},{62.9,57.2},{62.9,57.9},{63.2,59.2},{63.6,75.4},{63.6,75.5},{64,48.7},{64.1,57.9},{64.9,74.4},{64.9,74.5},{65.8,76.8},{66.4,42.1},{66.5,42.2},{67,53.9},{67.8,84.6},{68,44.7},{68.3,81.4},{68.3,81.6},{68.4,77.1},{68.5,77.1},{68.7,49.2},{68.7,79.2},{68.9,73.8},{69.5,78.6},},
[zoneIDs.EASTERN_PLAGUELANDS]={{4.3,45.2},{5.3,48.8},{11.1,58.7},{16.7,55},{17.1,60.7},{18.2,67.3},{18.7,78.3},{20.8,81.2},{22.5,68.2},{22.8,64.1},{23.2,63.2},{23.6,68.9},{23.7,58.2},{25,79},{25.5,72.1},{27,59.4},{27,59.5},{28.3,64.6},{29.7,27.7},{30.2,61.5},{30.2,73.6},{30.3,73.4},{30.7,70.2},{30.8,21.2},{31.8,66.7},{31.8,69.2},{32.7,32.9},{32.8,64.2},{33.1,59.5},{33.5,62},{34.5,26.6},{34.5,48.3},{34.6,22},{34.8,31.2},{35.9,44.4},{37.2,59.4},{37.2,59.7},{37.2,73},{38.3,69.1},{40.5,28.2},{42,58},{42,68.2},{43,35.4},{43.1,35.7},{43.5,73.3},{44.5,30.5},{45.7,40.2},{45.8,70.7},{47.2,63.8},{48.8,45},{51.4,57.6},{51.9,69.6},{52.3,75.2},{52.6,65.3},{52.7,65.6},{52.9,69.8},{53.2,72.9},{53.6,72.8},{53.7,58.7},{54.4,56},{54.4,69.6},{54.5,56.2},{54.5,69.4},{55,61.3},{56.8,63.7},{58.5,61.3},{59.5,59},{59.6,74.2},{60.8,47.3},{62.3,60.6},{62.9,64},{63,68},{63.3,71.7},{63.5,74.1},{63.7,65.1},{63.7,76.6},{65.2,74.2},{65.4,63.2},{65.8,68.4},{65.9,68.7},{66.8,71.7},{67.8,63.6},{67.8,75.4},{68.1,70.1},{68.3,45.5},{68.5,76.7},{69.1,52.8},{70,49.5},{70.2,76.4},{70.2,76.6},{70.5,45},{70.6,71.7},{71,66.3},{72.9,51.7},{73.1,60.9},{73.3,57.5},{74.6,53.9},},
[zoneIDs.TIRISFAL_GLADES]={{82.8,72.7},{83,71.4},{83,71.5}},
},
},
[177272] = { -- Moonwell
[objectKeys.spawns] = {
[zoneIDs.STORMWIND_CITY]={{35.45,65.71}},
[zoneIDs.TELDRASSIL]={{56.02,61.99}},
[zoneIDs.ASHENVALE]={{62.07,51.04},{60.21,72.91}},
[zoneIDs.FERALAS]={{32.56,43.91},{57.97,44.49}},
},
},
[179832] = {
[objectKeys.spawns] = {[zoneIDs.SEARING_GORGE] = {{45.86,29.68}}},
},
[180669] = {
[objectKeys.spawns] = {[zoneIDs.AZSHARA] = {{65.82,54.77}}},
},
[180715] = {
[objectKeys.spawns] = {
[zoneIDs.THE_EXODAR]={{55.84,48.41}},
[zoneIDs.STORMWIND_CITY]={{62.13,69.51}},
[zoneIDs.IRONFORGE]={{37.41,70.19}},
[zoneIDs.SHATTRATH_CITY]={{50.42,46.09}},
[zoneIDs.ORGRIMMAR]={{53.57,67.17}},
[zoneIDs.THUNDER_BLUFF]={{42.78,54.3}},
[zoneIDs.UNDERCITY]={{67.33,38.0}},
[zoneIDs.SILVERMOON_CITY]={{62.53,80.89}},
},
},
[180771] = {
[objectKeys.spawns] = {
[zoneIDs.MOONGLADE]={{35.95,58.69},{37.38,59.26},{36.92,56.77},{37.39,59.64},{36.45,57.12},{37.15,57.88},{45.25,38.5},{35.98,59.94},{36.52,60.23},{36.61,59.4},{36.5,56.81},{37.2,58.45},{53.92,36.84},{37.9,58.39},{47.91,33.35},{54.16,36.9},{37.59,58.72},{35.68,58.43},{36.15,57.41},{47.66,34.75},{37.05,59.11},{35.69,57.86},{35.48,58.67},{44.97,42.58},{53.38,36.7},{36.3,57.86},{42.64,35.39},{53.63,36.77},{48.78,34.52},{53.07,36.61},{50.92,37.23}},
[zoneIDs.UNDERCITY]={{57.82,63.6},{58.43,64.13},{76.71,27.62},{56.96,25.43},{52.76,55.96},{73.87,63.84},{56.39,26.07},{50.61,56.53},{55.13,23.62},{78.68,26.13},{50.97,57.45},{66.37,37.57},{66,37.76},{65.65,37.56},{65.45,36.74},{66.59,36.75}},
[zoneIDs.STORMWIND_CITY]={{37.14,64.42},{36.83,65.25},{37.26,65.59},{37.44,64.6},{37.14,65.93},{37.48,65.34},{37.05,65.03},{36.72,64.21},{36.81,64.95},{54.76,69.07},{43.96,73.78},{69.05,64.97},{54.75,68.92},{43.74,74.1},{69.13,65.06},{43.89,73.88},{54.77,69.21},{54.75,68.77},{62.64,50.49}},
[zoneIDs.IRONFORGE]={{29.85,18.67},{29.1,19.58},{30.72,19.34},{31.43,19.12},{31.42,16.83},{31.76,18.09},{30.45,20.68},{32.61,18.02},{32.16,15.77},{65.43,26.28},{65.06,25.57}},
[zoneIDs.ORGRIMMAR]={{41.97,32.52},{41.51,30.6},{40.45,30.64},{40.98,30.18},{40.61,30.1},{41.53,32.96},{40.49,31.65},{69.75,30.22},{48.86,77.18},{49.25,77.38},{69.88,30.02},{69.61,30.4},{49.44,77.48}},
[zoneIDs.THUNDER_BLUFF]={{72.0,26.37},{71.24,27.05},{71.12,25.74},{71.58,27.15},{71.02,26.7},{54.96,50.34},{54.95,52.01},{54.96,51.85},{54.95,50.95}},
[zoneIDs.DARNASSUS]={{31.88,13.19},{31.22,12.15},{32.14,11.9},{32.26,12.73},{31.31,13.0},{31.63,11.64},{69.77,43.22},{69.3,38.49},{68.94,43.19},{67.66,43.25},{69.36,43.22},{68.53,43.2}},
[zoneIDs.SILVERMOON_CITY]={{73.64,82.59},{74.17,84.25},{74.2,83.7},{73.81,82.88},{73.79,84.14},{73.4,83.34},{73.25,83.03}},
[zoneIDs.THE_EXODAR]={{73.75,57.47},{73.47,57.45},{72.77,57.41},{72.5,57.87},{72.74,58.41},{73.42,58.3},{73.73,58.28}},
[zoneIDs.SHATTRATH_CITY]={{48.46,37.28},{48.65,37.64},{49.1,38.49},{49.51,38.54},{53.35,33.66},{53.44,34.12},{53.59,35.17},{53.35,35.61},{53.05,35.32},{52.88,34.29},{52.8,33.84},{48.95,36.77},{49.12,37.08},{49.61,37.91}},
[zoneIDs.DALARAN]={{48.48,44.82},{50.41,44.76},{50.52,44.51},{49.96,45.29},{48.76,45.12},{49.13,45.4},{48.3,44.58}},
},
},
[180772] = {
[objectKeys.spawns] = {
[zoneIDs.MOONGLADE]={{36.43,57.61},{36.77,59.74},{35.88,58.39},{53.23,36.66},{53.5,36.74},{37.15,57.61},{35.87,57.31},{35.48,59.15},{44.59,38.64},{37.32,58.85},{36.05,59.5},{37.16,59.96},{54.05,36.87},{42.53,34.3},{53.79,36.8},{37.92,58.14},{36.44,59.26},{36.74,56.71},{54.29,36.93}},
[zoneIDs.UNDERCITY]={{65.48,37.17},{66.54,37.17},{55.7,22.96},{52.43,55.02},{74.88,66.58},{73.24,64.33},{74.28,67.11},{77.21,28.36},{78.99,56.28},{79.36,55.39},{78.21,25.35}},
[zoneIDs.STORMWIND_CITY]={{36.96,65.37},{36.92,64.78},{43.82,74.0},{68.96,64.89},{68.88,64.81},{62.71,50.77},{62.68,50.63},{62.73,50.93}},
[zoneIDs.IRONFORGE]={{28.84,17.94},{31.36,17.51},{31.75,19.74},{31.14,15.12},{30.36,18.71},{63.49,22.7},{64.26,24.08},{63.88,23.38},{64.67,24.8}},
[zoneIDs.ORGRIMMAR]={{41.18,30.57},{40.62,31.12},{49.05,77.27},{49.6,77.54}},
[zoneIDs.THUNDER_BLUFF]={{71.4,25.41},{72.05,25.95},{54.96,50.53},{54.94,52.23},{54.94,52.44},{54.97,50.73}},
[zoneIDs.DARNASSUS]={{31.96,12.87},{31.87,11.98},{68.89,38.51},{69.76,38.49},{68.09,43.22},{68.52,38.51},{67.96,38.5},{67.4,38.5}},
[zoneIDs.SILVERMOON_CITY]={{73.33,83.88},{74.2,83.21}},
[zoneIDs.THE_EXODAR]={{73.02,56.92},{73,58.67}},
[zoneIDs.SHATTRATH_CITY]={{49.57,37.38},{48.74,38.4},{53.77,34.63},{52.78,34.99}},
[zoneIDs.DALARAN]={{48.93,45.25},{50.15,45.12}},
},
},
[186325] = {
[objectKeys.spawns] = {[zoneIDs.HOWLING_FJORD]={{28.03,10.61},{28.88,12.86},{27.54,14.08},{31.44,14.83},{34.28,18.91},{29.98,15.54},{27.13,14.59},{27.98,15.12},{28.94,14.64},{28.6,16.93},{28.99,16.32},{31.18,15.05},{31.53,15.33},{29.77,20.04},{30.33,20.77},{30.16,20.15},{29.73,20.71},{29.4,19.81},{28.53,16.24},{28.86,15.48},{29.82,16.2},{29.84,17.67},{30.0,18.22},{28.49,15.65},{28.2,14.23},{29.55,17.85},{29.75,18.25},{29.04,16.97},{29.52,16.11},{29.75,15.39},{29.51,15.83},{32.68,21.82},{32.62,22.15},{32.42,22.5},{30.74,20.87},{30.56,20.37},{31.09,20.93},{30.96,20.58},{31.94,20.72},{31.3,18.91},{31.57,19.19},{31.46,19.58},{30.17,17.75},{31.56,18.95},{31.22,17.9},{31.07,18.14},{30.94,18.08},{31.08,17.77},{31.89,18.58},{32.05,17.1},{28.02,12.58},{27.5,12.63},{28.78,12.27},{26.95,11.59},{27.58,11.0},{33.76,20.46},{33.98,20.05}}},
[objectKeys.zoneID] = zoneIDs.HOWLING_FJORD,
},
[186419] = {
[objectKeys.questStarts] = {4127},
},
[186640] = {
[objectKeys.spawns] = {[zoneIDs.HOWLING_FJORD]={{54.93,57.47}}},
[objectKeys.zoneID] = zoneIDs.HOWLING_FJORD,
},
[187674] = {
[objectKeys.spawns] = {[zoneIDs.BOREAN_TUNDRA] = {{43,56.3}}},
[objectKeys.zoneID] = zoneIDs.BOREAN_TUNDRA,
},
[187981] = {
[objectKeys.spawns] = {[zoneIDs.BOREAN_TUNDRA] = {{59.87,23.97},{59.92,28.31},{57.2,26.9},{60.64,33.67},{60.91,33.12},{61.08,28.28},{62.97,36.9},{60.41,34.93},{60.57,29.82},{61.07,29.32},{61.17,30.69},{62.3,28.49},{59.84,37.61},{60.07,25.64},{60.46,27.08},{63.7,34.67},{63.4,37.6},{59.36,40.29},{59.78,39.61},{59.03,39.42},{59.53,38.78},{63.94,36.74},{61.57,29.67},{63.34,36.14},{62.18,27.35},{61.19,35.93},{60.94,34.22},{61.72,36.84},{61.7,35.23},{62.45,35.46},{61.21,39.43},{61.13,37.99},{61.13,41.04},{61.44,40.16},{60.49,40.25},{65.73,35.87},{64.4,34.31}}},
[objectKeys.zoneID] = zoneIDs.BOREAN_TUNDRA,
},
[188019] = {
[objectKeys.spawns] = {[zoneIDs.BOREAN_TUNDRA] = {{61.08,40.07},{59.59,39.21},{60.85,33.6},{61.12,30.14},{61.66,35.96},{63.38,37.0}}},
[objectKeys.zoneID] = zoneIDs.BOREAN_TUNDRA,
},
[188066] = {
[objectKeys.spawns] = {[zoneIDs.BOREAN_TUNDRA] = {{53.64,24.53}}},
[objectKeys.zoneID] = zoneIDs.BOREAN_TUNDRA,
},
[188123] = {
[objectKeys.factionID] = 1732,
},
[188287] = {
[objectKeys.spawns] = {[zoneIDs.GRIZZLY_HILLS] = {{13.24,60.87}}},
[objectKeys.zoneID] = zoneIDs.GRIZZLY_HILLS,
},
[188358] = {
[objectKeys.spawns] = {[zoneIDs.GRIZZLY_HILLS] = {{45,28.36}}},
[objectKeys.zoneID] = zoneIDs.GRIZZLY_HILLS,
},
[188434] = {
[objectKeys.spawns] = {[65]={{61.82,22.78},{60.27,19.98},{60.63,21.82},{59.36,21.21},{58.64,23.76},{58.14,24.32},{60.43,13.04},{61.57,15.52},{59.85,26.94},{59.33,23.94}}},
[objectKeys.zoneID] = zoneIDs.DRAGONBLIGHT,
},
[188474] = {
[objectKeys.spawns] = {[zoneIDs.DRAGONBLIGHT] = {{32.29,71.72}}},
},
[188525] = {
[objectKeys.spawns] = {[zoneIDs.GRIZZLY_HILLS] = {{70.92,19.26},{70.37,19.47},{71.04,19.41},{70.48,19.29},{71.5,20.03},{71.38,19.87},{71.73,20.33},{71.62,20.18},{70.27,19.64},{69.9,20.24},{70.58,19.12},{70.81,19.1},{69.92,20.58},{70.15,20.89},{71.63,20.84},{71.74,20.67},{71.43,21.18},{70.62,21.5},{71.53,21.01},{70.74,21.66},{70.86,21.81},{71.09,21.77}}},
[objectKeys.zoneID] = zoneIDs.GRIZZLY_HILLS,
},
[189973] = {
[objectKeys.spawns] = {[zoneIDs.AHNKAHET_THE_OLD_KINGDOM]={{-1,-1}},[zoneIDs.AZJOL_NERUB]={{-1,-1}},[3711]={{43.89,40.53},{58.8,25.89},{29.27,79.62},{53.89,33.25},{48.43,28.55},{47.2,43.63},{24.66,49.38},{32.7,40.28},{53.74,26.86},{31.93,49.22},{28.97,61.38},{56.23,33.75},{39.99,27.31},{59.24,34.41},{49.44,44.71},{57.63,80.38},{70.42,71.71},{59.85,81.17},{30.68,50.31},{27.06,74.68},{32.06,79.65},{67.28,70.74},{51.55,42.5},{44.53,42.11},{44.35,38.96},{32.78,83.46},{71.26,69.28},{56.99,76.0},{50.26,42.84},{24.17,47.7},{31.24,49.45},{32.45,57.42},{23.32,53.98},{28.93,42.05},{33.43,46.14},{25.03,52.17},{47.01,33.2},{59.27,36.36},{25.42,78.25},{57.13,36.31},{58.0,78.15},{35.76,86.23},{28.54,44.65},{32.99,60.61},{42.26,35.79},{33.49,34.92},{58.78,31.46},{52.21,25.27},{35.65,32.51},{26.68,46.52},{31.61,59.56},{23.54,51.34},{27.15,81.24},{51.62,28.73},{34.04,42.83},{33.09,80.49},{55.43,35.76}},[3537]={{69.67,43.78},{79.23,41.04},{39.73,67.89},{34.66,51.6},{50.02,75.98},{43.03,75.64},{48.2,7.52},{47.7,21.75},{59.97,51.8},{41.03,44.99},{51.65,64.32},{49.72,25.53},{62.55,13.47},{57.75,52.14},{47.19,44.79},{62.44,41.4},{43.54,42.73},{57.05,34.01},{65.99,39.49},{48.44,48.38},{53.22,22.43},{53.47,19.23},{61.79,46.85},{54.96,54.35},{76.51,43.61},{76.76,31.97},{60.83,57.35},{41.92,36.9},{79.89,32.6},{75.59,28.94},{58.88,30.58},{54.74,43.75},{64.7,11.54},{53.34,47.31},{50.25,21.3},{65.48,14.23},{55.77,30.35},{72.42,20.53},{57.79,47.2},{59.12,54.29},{53.31,39.7},{74.83,25.53},{56.23,50.18},{51.08,69.59},{44.84,5.81},{55.23,53.76},{45.34,42.65},{54.27,61.36},{46.91,70.16},{47.97,74.52},{53.04,28.18},{50.5,50.39},{42.56,40.09},{40.39,48.93},{40.73,73.33},{46.15,73.39},{43.86,71.81},{78.9,36.49},{69.96,17.32},{61.74,60.41},{34.01,61.05}},[495]={{34.38,76.15},{58.36,40.1},{30.84,63.42},{46.79,71.61},{48.71,62.73},{52.47,60.53},{50.97,34.16},{67.14,74.89},{73.61,49.43},{74.1,44.8},{45.9,50.1},{65.76,72.47},{34.9,46.17},{78.29,44.51},{76.36,67.86},{60.44,81.25},{66.54,33.4},{67.17,24.39},{72.36,18.52},{69.92,51.09},{41.72,34.22},{46.26,31.4},{48.73,21.2},{29.43,31.82},{25.24,11.83},{28.59,18.06},{27.06,29.59},{33.43,76.37},{35.59,77.8},{69.39,24.62},{56.75,18.68},{45.04,59.5},{54.68,64.97},{52.33,17.85},{71.22,24.99},{26.41,7.93},{52.78,71.41},{54.88,19.69},{29.01,22.29},{48.58,30.02},{34.59,50.45},{47.12,28.95},{31.29,33.24},{33.92,79.19},{23.77,14.03},{46.39,54.32},{37.03,44.93},{29.96,69.22},{47.96,59.18},{26.75,60.88},{50.18,16.63},{68.21,21.95},{73.27,66.74},{56.53,21.25},{58.46,22.76},{69.98,22.13},{69.78,19.15},{38.96,54.25},{32.65,32.59},{28.26,25.71},{27.14,20.74},{49.03,42.36},{51.06,41.85},{42.06,27.71},{44.63,29.75},{59.16,50.31},{28.08,9.14},{29.17,12.03},{70.45,32.36},{58.96,55.52},{75.49,60.7},{79.15,49.69},{57.2,55.85},{56.95,67.15},{65.79,26.83},{76.27,42.81},{75.42,50.8},{33.21,63.56},{59.52,51.54},{26.87,14.58},{70.61,66.0},{69.73,69.61},{34.85,34.07},{70.08,71.98},{67.85,59.59},{63.71,28.01},{70.05,47.3},{48.21,18.06},{80.43,46.21},{49.24,72.09},{71.53,54.86},{73.57,26.69},{62.6,80.4},{60.96,26.08},{40.88,40.17},{51.86,59.16},{66.6,64.92},{76.85,49.84},{73.18,58.5},{76.68,63.9},{48.65,48.05},{50.44,63.88},{59.93,76.85},{39.23,33.09},{27.05,12.15},{52.45,32.16},{35.73,53.67},{43.36,44.08},{68.15,32.91},{64.87,67.63},{51.05,48.28},{36.99,39.9}},[394]={{82.23,56.11},{55.85,36.08},{10.68,34.62},{72.74,34.88},{25.24,31.3},{59.75,30.76},{11.3,69.48},{75.91,45.72},{45.75,31.14},{32.2,37.31},{27.12,38.42},{14.21,53.25},{15.02,50.41},{47.22,27.35},{49.2,27.28},{24.89,37.32},{64.67,26.49},{12.87,59.24},{68.54,21.52},{73.83,23.36},{62.72,27.49},{70.65,31.26},{75.87,38.32},{9.08,39.65},{24.35,33.15},{12.89,45.59},{12.29,55.76},{80.03,45.24},{78.15,42.57},{12.15,36.31},{14.74,61.38},{24.16,28.11},{21.94,25.63},{30.29,34.68},{73.84,28.26},{56.11,33.12},{76.78,50.7},{70.6,22.1},{54.6,31.33},{80.03,53.97},{52.0,28.6},{72.01,49.89},{12.69,41.68},{42.79,28.88},{63.64,24.02}},[65]={{65.62,74.62},{45.93,46.92},{64.79,77.14},{65.06,71.76},{63.56,70.58},{47.51,52.14},{49.24,50.53},{48.6,45.91}}},
},
[190094] = {
[objectKeys.spawns] = {[zoneIDs.THE_CULLING_OF_STRATHOLME]={{73.42,54.98},{83.87,59.05},{81.21,59.75},{77.85,54.92},{70.12,51.25},{-1,-1}}},
},
[190095] = {
[objectKeys.spawns] = {[zoneIDs.THE_CULLING_OF_STRATHOLME]={{73.42,54.98},{83.87,59.05},{81.21,59.75},{77.85,54.92},{70.12,51.25},{-1,-1}}},
},
[190127] = {
[objectKeys.spawns] = {[zoneIDs.DRAGONBLIGHT]={{63.84,27.58}}},
[objectKeys.zoneID] = zoneIDs.DRAGONBLIGHT,
},
[190169] = {
[objectKeys.spawns] = {[zoneIDs.AHNKAHET_THE_OLD_KINGDOM]={{-1,-1}},[zoneIDs.AZJOL_NERUB]={{-1,-1}},[3537]={{53.21,48.35},{52.68,41.46},{49.37,43.1},{52.65,47.97},{49.66,45.51},{53.29,44.11},{52.18,46.23},{52.35,46.02},{52.83,41.43},{49.6,45.38},{53.89,42.45},{52.26,45.85},{52.11,46.22},{54.12,46.55},{53.52,44.86},{54.0,42.61},{49.27,43.22},{54.15,46.28},{53.16,44.66},{53.56,45.59},{52.6,48.09}},[3711]={{64.16,46.35},{69.47,66.68},{60.11,85.28},{54.55,85.58},{56.37,86.67},{22.67,61.31},{32.81,61.48},{63.85,48.85},{25.25,59.03},{47.13,61.12},{46.72,64.88},{47.92,60.03},{50.22,55.92},{53.15,85.23},{49.53,69.37},{57.47,83.22},{53.52,86.75},{43.57,75.3},{46.21,72.78},{48.51,51.64},{50.17,65.06},{49.56,65.75},{68.64,66.59},{46.93,65.54},{49.46,60.74},{50.47,62.58},{47.12,74.54},{48.41,68.8},{48.07,70.47},{48.71,60.34},{46.22,63.07},{50.23,64.27},{49.43,71.11},{48.43,59.75},{59.7,86.36},{69.29,68.4},{46.44,63.84},{48.58,53.35},{47.58,49.58},{43.63,74.1},{32.7,64.51},{30.72,64.84},{56.29,84.83},{32.31,60.43},{27.16,61.08},{49.93,63.64},{59.22,86.3},{23.88,61.03},{49.46,52.33},{62.97,47.98},{45.96,49.71},{49.02,50.08},{44.67,49.08},{63.73,47.29},{22.34,60.32},{51.59,86.36},{58.28,86.63},{31.34,60.68},{68.45,67.95},{30.58,60.01},{47.96,73.95},{29.13,61.8},{29.1,63.7},{45.92,51.13},{23.89,59.83}},[495]={{55.07,47.6},{60.17,37.71},{59.99,32.38},{54.56,57.78},{39.23,19.92},{59.6,54.17},{30.27,25.6},{43.79,23.64},{22.18,25.96},{66.79,19.17},{67.93,18.93},{56.85,57.08},{22.7,26.32},{67.14,22.33},{68.42,20.74},{53.38,55.67},{59.69,55.83},{52.74,53.39},{60.25,52.35},{32.61,25.82},{47.21,41.4},{52.83,44.98},{42.4,39.81},{31.69,25.71},{52.47,50.02},{55.47,47.34},{35.09,23.86},{49.31,40.25},{40.29,21.76},{41.97,24.3},{26.44,27.38},{64.09,25.81},{53.38,57.71},{36.82,22.68},{62.81,28.91},{58.91,35.07},{53.43,52.1},{29.02,26.35},{46.26,18.85}},[394]={{22.07,41.69},{38.05,35.08},{62.76,50.06},{41.96,35.26},{29.18,55.86},{28.03,41.23},{25.77,40.56},{27.53,61.81},{56.12,51.0},{39.97,32.83},{29.31,52.46},{20.11,40.65},{32.27,43.86},{36.08,31.71},{9.7,41.06},{8.51,37.15},{15.46,38.36},{31.13,46.07},{54.22,44.3},{61.34,49.21},{53.23,48.28},{60.93,53.04},{10.33,38.88},{25.1,71.67},{13.97,41.1},{8.72,34.96},{27.38,65.75},{62.7,49.51},{29.06,58.87},{29.2,62.45},{34.47,42.43},{62.93,52.6},{11.8,39.29},{64.88,52.82},{37.15,41.59},{30.21,39.64},{16.82,40.6},{27.6,69.79},{66.61,54.91},{11.75,29.25},{30.12,43.2}}},
},
[190354] = {
[objectKeys.spawns] = {[zoneIDs.DRAGONBLIGHT] = {{54.45,31.44}}},
},
[190483] = { -- Document Chest
[objectKeys.name] = "Document Chest #2",
},
[190484] = { -- Document Chest
[objectKeys.name] = "Document Chest #3",
},
[190510] = {
[objectKeys.spawns] = {[65]={{55.39,10.45},{55.01,10.65},{51.22,20.0},{51.56,19.98},{50.01,16.49},{50.0,17.04},{53.1,17.57},{52.68,17.74},{50.9,15.47},{50.66,15.91},{51.34,15.14},{51.61,15.13},{54.63,12.28},{54.43,12.06},{53.61,10.84}}},
[objectKeys.zoneID] = zoneIDs.DRAGONBLIGHT,
},
[190550] = {
[objectKeys.spawns] = {[zoneIDs.ZUL_DRAK] = {{47.16,82.32},{46.73,84.73},{44.59,83.48},{46.28,82.08},{47.4,81.02},{48.55,85.13},{48.71,84.16},{46.75,80.34},{45.71,81.37},{47.84,82.14},{48.47,83.12},{49.17,85.13},{49.8,85.17},{50.51,85.83},{51.0,86.93},{47.31,85.01},{47.05,83.63},{46.82,83.03},{45.65,84.19},{45.46,83.16},{44.96,81.71},{47.69,83.91},{47.84,83.05}}},
},
[190558] = {
[objectKeys.spawns] = {[zoneIDs.SHOLAZAR_BASIN] = {{48.3,49.1},{49.4,53.1},{49.6,50.9},{49.7,54.4},{49.7,54.5},{49.8,49.1},{50,51.7},{50,59.8},{50.2,47.5},{50.3,53.3},{50.3,58.5},{50.4,47.2},{50.4,50.4},{50.4,56.8},{50.4,58.3},{50.5,50.4},{50.5,50.5},{50.6,55.5},{50.6,56.9},{50.9,52},{50.9,54.6},{51.1,58.8},{51.4,52.6},{51.4,53.6},{51.4,57.8},{51.5,52.4},{51.5,53.5},{51.5,57.8},{51.6,49.8},{51.7,49.4},{51.7,62.6},{51.8,54.7},{51.9,58.6},{52,61.3},{52.3,61.7},{52.4,53.1},{52.4,56.2},{52.5,51.6},{52.5,53.1},{52.5,56.2},{52.6,60.5},{52.7,60.3},{52.7,62.1},{52.8,54.9},{53.1,50.5},{53.2,47.4},{53.2,47.6},{53.2,50.3},{53.3,59.3},{53.4,49.4},{53.4,53.5},{53.5,49.5},{53.5,53.4},{53.5,53.5},{53.5,61.7},{53.7,60.8},{54.2,51.4},{54.2,51.5},{54.3,48.9},{54.3,59.9},{54.5,49.1},{54.7,57.9},{54.7,60.8},{54.9,51.5},{55,53.7},{55.1,51.2},{55.3,60.2},{55.5,60.2},{55.6,57.4},{55.6,57.6},{55.7,58.6},{55.8,48.9},{55.8,52.8},{55.9,56.3},{56.2,50.9},{56.2,55.2},{56.7,53.4},{56.7,53.5},{56.9,56.3},{56.9,56.5},{57.1,52.2},{57.1,58.8},{57.2,60.6},{57.3,54.5},{57.3,60.1},{57.5,54.4},{58,60.4},{58,60.5},{58.4,58.9},{58.7,53.8},{58.7,55.9},{58.8,62.3},{59.1,57.9},{59.1,60.2},{59.8,55},{59.8,60.4},{59.8,60.5},{59.9,57.3},{60.1,63.9},{60.3,61.9},},},
},
[190629] = {
[objectKeys.spawns] = {[zoneIDs.DRAKTHARON_KEEP_UPPER_LEVEL]={{37.5,13.07}},[zoneIDs.DRAKTHARON_KEEP]={{-1,-1}}},
},
[190663] = {
[objectKeys.spawns] = {[zoneIDs.THE_CULLING_OF_STRATHOLME_CITY]={{30.6,46.7}},[zoneIDs.THE_CULLING_OF_STRATHOLME]={{-1,-1}}},
},
[190717] = {
[objectKeys.spawns] = {[zoneIDs.ZUL_DRAK] = {{71.2,62.2},{68.66,56.48},{73.33,62.91},{74.58,58.37},{74.99,62.63},{74.61,59.84},{73.84,61.03},{76.02,56.13},{71.41,56.52},{71.76,58.37},{75.72,59.72},{78.31,62.39},{69.33,58.32},{69.33,58.91}}},
},
[190777] = {
[objectKeys.spawns] = {[zoneIDs.SHOLAZAR_BASIN] = {{72.1,57.44}}},
[objectKeys.zoneID] = zoneIDs.SHOLAZAR_BASIN,
},
[190781] = {
[objectKeys.spawns] = {[zoneIDs.SHOLAZAR_BASIN] = {{33.56,74.96}}},
},
[190782] = {
[objectKeys.name] = "Altar of Kartak",
},
[191092] = {
[objectKeys.spawns] = {[zoneIDs.PLAGUELANDS_THE_SCARLET_ENCLAVE] = {{63.12,68.33}}},
},
[191179] = {
[objectKeys.spawns] = {[zoneIDs.SHOLAZAR_BASIN] = {{17.58,51.25},{23.34,37.24},{26.7,33.46},{26.23,35.68}}},
[objectKeys.zoneID] = zoneIDs.SHOLAZAR_BASIN,
},
[191349] = {
[objectKeys.spawns] = {[zoneIDs.BAND_OF_ALIGNMENT]={{47.6,85.9}},[zoneIDs.THE_OCULUS]={{-1,-1}}},
},
[191577] = {
[objectKeys.name] = "Acherus Soul Prison",
[objectKeys.spawns] = {[zoneIDs.PLAGUELANDS_THE_SCARLET_ENCLAVE]={{48.09,29.6},{48.57,30.83},{48.86,30.91},{49.17,30.83},{49.43,30.56},{49.59,30.17},{49.65,29.73},{49.16,28.66},{48.87,28.58},{48.57,28.67},{48.31,28.94},{48.15,29.29}}},
},
[191746] = {
[objectKeys.spawns] = {[zoneIDs.PLAGUELANDS_THE_SCARLET_ENCLAVE]={{50.42,28.18},{47.32,31.31},{47.83,27.42}}},
},
[191761] = { -- Prototype Console
[objectKeys.spawns] = {[zoneIDs.STORM_PEAKS]={{37.54,46.9}}},
[objectKeys.questStarts] = {13843},
[objectKeys.questEnds] = {12889,13843},
},
[191878] = { -- Candy Bucket
[objectKeys.spawns] = {[zoneIDs.ZUL_DRAK]={{59.33,57.20}}}, -- Zim'Torga
[objectKeys.zoneID] = zoneIDs.ZUL_DRAK,
[objectKeys.questStarts] = {12940},
[objectKeys.questEnds] = {12940},
},
[191879] = { -- Candy Bucket
[objectKeys.spawns] = {[zoneIDs.ZUL_DRAK]={{40.79,66.01}}}, -- The Argent Stand
[objectKeys.zoneID] = zoneIDs.ZUL_DRAK,
[objectKeys.questStarts] = {12941},
[objectKeys.questEnds] = {12941},
},
[191880] = { -- Candy Bucket
[objectKeys.questStarts] = {12946},
[objectKeys.questEnds] = {12946},
[objectKeys.spawns] = {[zoneIDs.GRIZZLY_HILLS]={{20.56,64.36}}}, -- Conquest Hold
[objectKeys.zoneID] = zoneIDs.GRIZZLY_HILLS,
},
[191881] = { -- Candy Bucket
[objectKeys.name] = "Candy Bucket",
[objectKeys.questStarts] = {12947},
[objectKeys.questEnds] = {12947},
[objectKeys.spawns] = {[zoneIDs.GRIZZLY_HILLS]={{65.42,47.07}}}, -- Camp Oneqwah
[objectKeys.zoneID] = zoneIDs.GRIZZLY_HILLS,
},
[191882] = { -- Candy Bucket
[objectKeys.questStarts] = {12944},
[objectKeys.questEnds] = {12944},
[objectKeys.spawns] = {[zoneIDs.GRIZZLY_HILLS]={{31.94,60.21}}}, -- Amberpine Lodge
[objectKeys.zoneID] = zoneIDs.GRIZZLY_HILLS,
},
[191883] = { -- Candy Bucket
[objectKeys.name] = "Candy Bucket",
[objectKeys.questStarts] = {12945},
[objectKeys.questEnds] = {12945},
[objectKeys.spawns] = {[zoneIDs.GRIZZLY_HILLS]={{59.59,26.53}}}, -- Westfall Brigade Encampment
[objectKeys.zoneID] = zoneIDs.GRIZZLY_HILLS,
},
[192018] = { -- Candy Bucket
[objectKeys.questStarts] = {12950},
[objectKeys.questEnds] = {12950},
[objectKeys.spawns] = {[zoneIDs.SHOLAZAR_BASIN]={{26.71,59.85}}}, -- Nesingwary Base Camp
[objectKeys.zoneID] = zoneIDs.SHOLAZAR_BASIN,
},
[192124] = {
[objectKeys.spawns] = {},
},
[192127] = {
[objectKeys.spawns] = {[zoneIDs.STORM_PEAKS] = {{73.4,62.9},{73.5,63.4},{75,63.5},{75.4,62.9},{75.6,63.6},{75.7,63},{75.9,64.5},{76.9,62.2},{76.9,63.1},{77,63.9},{77.6,62.4},{77.6,62.5},}},
[objectKeys.zoneID] = zoneIDs.STORM_PEAKS,
},
[192536] = {
[objectKeys.spawns] = {[zoneIDs.STORM_PEAKS] = {{52.36,73.26},{43.61,67.3},{43.76,67.21},{45.46,66.73},{43.87,67.74},{45.52,67.16},{45.19,66.82},{52.66,75.17},{52.36,75.08},{52.36,75.43},{53.28,75.10},{53.57,74.88},{53.53,74.64}}},
},
[192788] = {
[objectKeys.spawns] = {[zoneIDs.THE_NEXUS] = {{18.9,51.7},{-1,-1}}},
[objectKeys.zoneID] = zoneIDs.THE_NEXUS,
},
[192818] = {
[objectKeys.spawns] = {[zoneIDs.THE_UNDERBELLY] = {{30.4,51.5},{30.5,51.3},{34.8,52.2},{35,42.4},{35.1,35.5},{35.3,42.9},{35.3,53},{35.4,35.1},{35.5,35.2},{35.5,35.5},{35.5,43},{35.7,52.4},{39.3,28.4},{39.3,28.6},{39.3,39.9},{39.4,40.6},{39.5,28.6},{39.5,40.4},{39.7,47},{39.8,28.3},{40,47.7},{43.3,32.6},{43.4,32.3},{43.5,32.2},{43.6,32.6},{44.4,65.1},{44.4,65.6},{44.5,65.1},{45.3,58.2},{45.6,58.1},{45.8,58.8},{47.3,56},{47.4,28.4},{47.4,56.9},{48,29.5},{48,55.5},{48.2,55.4},{48.3,29.4},{48.4,40.4},{48.4,40.7},{48.5,29.4},{48.5,29.8},{48.5,41.1},{50.4,25.6},{50.4,26.6},{50.4,52.8},{50.6,25.9},{50.6,26.6},{51.2,53},{51.2,53.6},{51.4,42.1},{51.4,42.5},{51.5,42.2},{51.5,42.6},{51.6,53.4},{51.8,53.8},{54.3,66.2},{54.7,66.8},{55,66.2},{55.3,56.3},{55.4,56.9},{55.5,57.6},{55.6,56.3},{55.7,56.7},{55.8,58.6},{56.7,40.1},{56.8,40.7},{57.4,41.5},{57.4,47.4},{57.5,40.9},{57.6,41.5},{57.6,47.4},{58,47.6},{59,12.5},{59.4,35},{59.4,35.6},{59.5,35.3},{59.7,11.7},{60.6,14.3},{61.8,9.2},{62.3,10.5},{62.4,10},{62.6,10},{64.2,15.1},{64.2,15.6},},},
[objectKeys.zoneID] = zoneIDs.THE_UNDERBELLY,
},
[192826] = {
[objectKeys.spawns] = {[zoneIDs.GUNDRAK] = {{-1,-1}},[zoneIDs.GUNDRAK_LOWER_LEVEL] = {{-1,-1}}},
},
[192941] = {
[objectKeys.spawns] = {[zoneIDs.UTGARDE_PINNACLE] = {{-1,-1}},[zoneIDs.UTGARDE_PINNACLE_LOWER_LEVEL] = {{-1,-1}}},
},
[192942] = {
[objectKeys.spawns] = {[zoneIDs.UTGARDE_PINNACLE] = {{-1,-1}},[zoneIDs.UTGARDE_PINNACLE_LOWER_LEVEL] = {{-1,-1}}},
},
[192943] = {
[objectKeys.spawns] = {[zoneIDs.UTGARDE_PINNACLE] = {{-1,-1}},[zoneIDs.UTGARDE_PINNACLE_LOWER_LEVEL] = {{-1,-1}}},
},
[192944] = {
[objectKeys.spawns] = {[zoneIDs.UTGARDE_PINNACLE] = {{-1,-1}},[zoneIDs.UTGARDE_PINNACLE_LOWER_LEVEL] = {{-1,-1}}},
},
[192945] = {
[objectKeys.spawns] = {[zoneIDs.UTGARDE_PINNACLE] = {{-1,-1}},[zoneIDs.UTGARDE_PINNACLE_LOWER_LEVEL] = {{-1,-1}}},
},
[193004] = {
[objectKeys.spawns] = {[zoneIDs.ICECROWN] = {{57.85,74.37},{59.35,71.77},{58.08,70.64}}},
},
[193051] = {
[objectKeys.spawns] = {[zoneIDs.HADRONOXS_LAIR] = {{-1,-1}},[zoneIDs.AZJOL_NERUB] = {{-1,-1}}},
},
[193052] = {
[objectKeys.name] = "Portal to Orgrimmar",
[objectKeys.spawns] = {[zoneIDs.EASTERN_PLAGUELANDS]={{84.55,50.45}}},
},
[193053] = {
[objectKeys.name] = "Portal to Stormwind",
[objectKeys.spawns] = {[zoneIDs.EASTERN_PLAGUELANDS]={{83.66,51.34}}},
},
[193057] = {
[objectKeys.spawns] = {[zoneIDs.AHNKAHET_THE_OLD_KINGDOM] = {{12.29,50.82},{-1,-1}}},
},
[193059] = {
[objectKeys.spawns] = {[zoneIDs.UTGARDE_KEEP_UPPER_LEVEL] = {{-1,-1}},[zoneIDs.UTGARDE_KEEP_MIDDLE_LEVEL] = {{-1,-1}},[zoneIDs.UTGARDE_KEEP] = {{-1,-1}}},
},
[193091] = {
[objectKeys.spawns] = {[zoneIDs.ICECROWN] = {{34.7,66.0}}},
},
[193092] = {
[objectKeys.spawns] = {[zoneIDs.ICECROWN] = {{36.6,67.6}}},
},
[193580] = {
[objectKeys.spawns] = {[zoneIDs.ICECROWN] = {{60.84,63.38},{61.55,63.96},{62.26,63.38}}},
},
[193597] = {
[objectKeys.spawns] = {[zoneIDs.THE_CULLING_OF_STRATHOLME_CITY]={{30.6,46.7}},[zoneIDs.THE_CULLING_OF_STRATHOLME]={{-1,-1}}},
},
[193603] = {
[objectKeys.spawns] = {[zoneIDs.BAND_OF_ALIGNMENT]={{47.6,85.9}},[zoneIDs.THE_OCULUS]={{-1,-1}}},
},
[193980] = {
[objectKeys.name] = "Bloodstained Stone",
[objectKeys.spawns] = {[zoneIDs.ICECROWN] = {{49.7,73.4}}},
[objectKeys.zoneID] = zoneIDs.ICECROWN,
},
[193997] = {
[objectKeys.spawns] = {[zoneIDs.STORM_PEAKS] = {{55.4,68},{57,65},{58.6,60.3},{60.7,57.5},{62.8,60.1},{63.5,57.9},{65.4,60.8},{68.4,55.7},{68.9,54.8},{69.7,63.1},{71.1,62.4},{72.6,61.9},{75.3,48.5},},},
},
[194023] = {
[objectKeys.name] = "Bloodstained Stone",
[objectKeys.spawns] = {[zoneIDs.ICECROWN] = {{49.2,73.9}}},
[objectKeys.zoneID] = zoneIDs.ICECROWN,
},
[194024] = {
[objectKeys.name] = "Bloodstained Stone",
[objectKeys.spawns] = {[zoneIDs.ICECROWN] = {{48.3,72.8}}},
[objectKeys.zoneID] = zoneIDs.ICECROWN,
},
[194032] = {
[objectKeys.questStarts] = {13440},
[objectKeys.questEnds] = {13440},
},
[194033] = {
[objectKeys.questStarts] = {13441},
[objectKeys.questEnds] = {13441},
},
[194034] = {
[objectKeys.questStarts] = {13450},
[objectKeys.questEnds] = {13450},
},
[194035] = {
[objectKeys.questStarts] = {13442},
[objectKeys.questEnds] = {13442},
},
[194036] = {
[objectKeys.questStarts] = {13443},
[objectKeys.questEnds] = {13443},
},
[194037] = {
[objectKeys.questStarts] = {13451},
[objectKeys.questEnds] = {13451},
},
[194038] = {
[objectKeys.questStarts] = {13444},
[objectKeys.questEnds] = {13444},
},
[194039] = {
[objectKeys.questStarts] = {13453},
[objectKeys.questEnds] = {13453},
},
[194040] = {
[objectKeys.questStarts] = {13445},
[objectKeys.questEnds] = {13445},
},
[194042] = {
[objectKeys.questStarts] = {13454},
[objectKeys.questEnds] = {13454},
},
[194043] = {
[objectKeys.questStarts] = {13455},
[objectKeys.questEnds] = {13455},
},
[194044] = {
[objectKeys.questStarts] = {13446},
[objectKeys.questEnds] = {13446},
},
[194045] = {
[objectKeys.questStarts] = {13447},
[objectKeys.questEnds] = {13447},
},
[194046] = {
[objectKeys.questStarts] = {13457},
[objectKeys.questEnds] = {13457},
},
[194048] = {
[objectKeys.questStarts] = {13458},
[objectKeys.questEnds] = {13458},
},
[194049] = {
[objectKeys.questStarts] = {13449},
[objectKeys.questEnds] = {13449},
},
[194056] = { -- Candy Bucket
[objectKeys.questStarts] = {13433},
[objectKeys.questEnds] = {13433},
[objectKeys.spawns] = {[zoneIDs.HOWLING_FJORD]={{58.39,62.79}}}, -- Valgarde
[objectKeys.zoneID] = zoneIDs.HOWLING_FJORD,
},
[194057] = { -- Candy Bucket
[objectKeys.questStarts] = {13434},
[objectKeys.questEnds] = {13434},
[objectKeys.spawns] = {[zoneIDs.HOWLING_FJORD]={{30.81,41.47}}}, -- Westguard Keep
[objectKeys.zoneID] = zoneIDs.HOWLING_FJORD,
},
[194058] = { -- Candy Bucket
[objectKeys.name] = "Candy Bucket",
[objectKeys.questStarts] = {13435},
[objectKeys.questEnds] = {13435},
[objectKeys.spawns] = {[zoneIDs.HOWLING_FJORD]={{60.5,15.8}}}, -- Fort Wildervar
[objectKeys.zoneID] = zoneIDs.HOWLING_FJORD,
},
[194059] = { -- Candy Bucket
[objectKeys.name] = "Candy Bucket",
[objectKeys.questStarts] = {13436},
[objectKeys.questEnds] = {13436},
[objectKeys.spawns] = {[zoneIDs.BOREAN_TUNDRA]={{58.56,68.2}}}, -- Valiance Keep
[objectKeys.zoneID] = zoneIDs.BOREAN_TUNDRA,
},
[194060] = { -- Candy Bucket
[objectKeys.questStarts] = {13437},
[objectKeys.questEnds] = {13437},
[objectKeys.spawns] = {[zoneIDs.BOREAN_TUNDRA]={{57.06,18.77}}}, -- Fizzcrank Airstrip
[objectKeys.zoneID] = zoneIDs.BOREAN_TUNDRA,
},
[194061] = { -- Candy Bucket
[objectKeys.questStarts] = {13438},
[objectKeys.questEnds] = {13438},
[objectKeys.spawns] = {[zoneIDs.DRAGONBLIGHT]={{29.33,55.96}}}, -- Stars' Rest
[objectKeys.zoneID] = zoneIDs.DRAGONBLIGHT,
},
[194062] = { -- Candy Bucket
[objectKeys.name] = "Candy Bucket",
[objectKeys.questStarts] = {13439},
[objectKeys.questEnds] = {13439},
[objectKeys.spawns] = {[zoneIDs.DRAGONBLIGHT]={{77.52,51.51}}}, -- Wintergarde Keep
[objectKeys.zoneID] = zoneIDs.DRAGONBLIGHT,
},
[194063] = { -- Candy Bucket
[objectKeys.questStarts] = {13448},
[objectKeys.questEnds] = {13448},
[objectKeys.spawns] = {[zoneIDs.STORM_PEAKS]={{28.84,74.31}}}, -- Frosthold
[objectKeys.zoneID] = zoneIDs.STORM_PEAKS,
},
[194065] = { -- Candy Bucket
[objectKeys.name] = "Candy Bucket",
[objectKeys.questStarts] = {13452},
[objectKeys.questEnds] = {13452},
[objectKeys.spawns] = {[zoneIDs.HOWLING_FJORD]={{25.45,59.87}}}, -- Kamagua
[objectKeys.zoneID] = zoneIDs.HOWLING_FJORD,
},
[194066] = { -- Candy Bucket
[objectKeys.questStarts] = {13456},
[objectKeys.questEnds] = {13456},
[objectKeys.spawns] = {[zoneIDs.DRAGONBLIGHT]={{60.1,53.52}}}, -- Wyrmrest Temple
[objectKeys.zoneID] = zoneIDs.DRAGONBLIGHT,
},
[194067] = { -- Candy Bucket
[objectKeys.questStarts] = {13459},
[objectKeys.questEnds] = {13459},
[objectKeys.spawns] = {[zoneIDs.DRAGONBLIGHT]={{48.13,74.86}}}, -- Moa'ki Harbor
[objectKeys.zoneID] = zoneIDs.DRAGONBLIGHT,
},
[194068] = { -- Candy Bucket
[objectKeys.name] = "Candy Bucket",
[objectKeys.questStarts] = {13460},
[objectKeys.questEnds] = {13460},
[objectKeys.spawns] = {[zoneIDs.BOREAN_TUNDRA]={{78.42,49.2}}}, -- Unu'pe
[objectKeys.zoneID] = zoneIDs.BOREAN_TUNDRA,
},
[194069] = { -- Candy Bucket
[objectKeys.questStarts] = {13461},
[objectKeys.questEnds] = {13461},
[objectKeys.spawns] = {[zoneIDs.STORM_PEAKS]={{41.14,85.92}}}, -- K3
[objectKeys.zoneID] = zoneIDs.STORM_PEAKS,
},
[194070] = { -- Candy Bucket
[objectKeys.name] = "Candy Bucket",
[objectKeys.questStarts] = {13462},
[objectKeys.questEnds] = {13462},
[objectKeys.spawns] = {[zoneIDs.STORM_PEAKS]={{30.86,37.41}}}, -- Bouldercrag's Refuge
[objectKeys.zoneID] = zoneIDs.STORM_PEAKS,
},
[194073] = { -- Candy Bucket
[objectKeys.name] = "Candy Bucket",
[objectKeys.questStarts] = {13464},
[objectKeys.questEnds] = {13464},
[objectKeys.spawns] = {[zoneIDs.HOWLING_FJORD]={{49.56,10.81}}}, -- Camp Winterhoof
[objectKeys.zoneID] = zoneIDs.HOWLING_FJORD,
},
[194074] = { -- Candy Bucket
[objectKeys.name] = "Candy Bucket",
[objectKeys.questStarts] = {13465},
[objectKeys.questEnds] = {13465},
[objectKeys.spawns] = {[zoneIDs.HOWLING_FJORD]={{51.99,66.15}}}, -- New Agamand
[objectKeys.zoneID] = zoneIDs.HOWLING_FJORD,
},
[194075] = { -- Candy Bucket
[objectKeys.name] = "Candy Bucket",
[objectKeys.questStarts] = {13466},
[objectKeys.questEnds] = {13466},
[objectKeys.spawns] = {[zoneIDs.HOWLING_FJORD]={{78.98,30.9}}}, -- Vengeance Landing
[objectKeys.zoneID] = zoneIDs.HOWLING_FJORD,
},
[194076] = { -- Candy Bucket
[objectKeys.name] = "Candy Bucket",
[objectKeys.questStarts] = {13467},
[objectKeys.questEnds] = {13467},
[objectKeys.spawns] = {[zoneIDs.BOREAN_TUNDRA]={{76.61,37.33}}}, -- Taunka'le Village
[objectKeys.zoneID] = zoneIDs.BOREAN_TUNDRA,
},
[194077] = { -- Candy Bucket
[objectKeys.questStarts] = {13468},
[objectKeys.questEnds] = {13468},
[objectKeys.spawns] = {[zoneIDs.BOREAN_TUNDRA]={{41.9,54.56}}}, -- Warsong Hold
[objectKeys.zoneID] = zoneIDs.BOREAN_TUNDRA,
},
[194078] = { -- Candy Bucket
[objectKeys.questStarts] = {13469},
[objectKeys.questEnds] = {13469},
[objectKeys.spawns] = {[zoneIDs.DRAGONBLIGHT]={{37.66,46.4}}}, -- Agmar's Hammer
[objectKeys.zoneID] = zoneIDs.DRAGONBLIGHT,
},
[194079] = { -- Candy Bucket
[objectKeys.questStarts] = {13470},
[objectKeys.questEnds] = {13470},
[objectKeys.spawns] = {[zoneIDs.DRAGONBLIGHT]={{76.79,63.13}}}, -- Venomspite
[objectKeys.zoneID] = zoneIDs.DRAGONBLIGHT,
},
[194080] = { -- Candy Bucket
[objectKeys.name] = "Candy Bucket",
[objectKeys.questStarts] = {13471},
[objectKeys.questEnds] = {13471},
[objectKeys.spawns] = {[zoneIDs.STORM_PEAKS]={{67.66,50.57}}}, -- Camp Tunka'lo
[objectKeys.zoneID] = zoneIDs.STORM_PEAKS,
},
[194081] = { -- Candy Bucket
[objectKeys.questStarts] = {13474},
[objectKeys.questEnds] = {13474},
},
[194084] = { -- Candy Bucket
[objectKeys.name] = "Candy Bucket",
[objectKeys.questStarts] = {13501},
[objectKeys.questEnds] = {13501},
[objectKeys.spawns] = {[zoneIDs.BOREAN_TUNDRA]={{49.77,10.61}}}, -- Bor'gorok Outpost
[objectKeys.zoneID] = zoneIDs.BOREAN_TUNDRA,
},
[194092] = { -- Blackened Urn
[objectKeys.name] = "Blackened Urn",
[objectKeys.spawns] = {[zoneIDs.KARAZHAN]={{-1,-1}}},
[objectKeys.zoneID] = zoneIDs.KARAZHAN,
},
[194119] = { -- Candy Bucket
[objectKeys.name] = "Candy Bucket",
[objectKeys.questStarts] = {13548},
[objectKeys.questEnds] = {13548},
[objectKeys.spawns] = {[zoneIDs.STORM_PEAKS]={{37.1,49.63}}}, -- Grom'arsh Crash Site
[objectKeys.zoneID] = zoneIDs.STORM_PEAKS,
},
[194123] = {
[objectKeys.spawns] = {[zoneIDs.STORM_PEAKS] = {{64.5,46.9}}},
[objectKeys.zoneID] = zoneIDs.STORM_PEAKS,
},
[194147] = {
[objectKeys.spawns] = {[zoneIDs.THE_UNDERBELLY] = {{33.52,56.26}}},
},
[194200] = {
[objectKeys.spawns] = {[zoneIDs.THE_INNER_SANCTUM_OF_ULDUAR]={{64.1,60.2}},[zoneIDs.ULDUAR]={{-1,-1}}},
[objectKeys.zoneID] = zoneIDs.ULDUAR,
},
[194201] = {
[objectKeys.spawns] = {[zoneIDs.THE_INNER_SANCTUM_OF_ULDUAR]={{64.1,60.2}},[zoneIDs.ULDUAR]={{-1,-1}}},
[objectKeys.zoneID] = zoneIDs.ULDUAR,
},
[194313] = {
[objectKeys.spawns] = {[zoneIDs.THE_INNER_SANCTUM_OF_ULDUAR]={{70.7,48.5}},[zoneIDs.ULDUAR]={{-1,-1}}},
[objectKeys.zoneID] = zoneIDs.ULDUAR,
},
[194314] = {
[objectKeys.spawns] = {[zoneIDs.THE_INNER_SANCTUM_OF_ULDUAR]={{70.7,48.5}},[zoneIDs.ULDUAR]={{-1,-1}}},
[objectKeys.zoneID] = zoneIDs.ULDUAR,
},
[194327] = {
[objectKeys.spawns] = {[zoneIDs.THE_INNER_SANCTUM_OF_ULDUAR]={{53,25.4}},[zoneIDs.ULDUAR]={{-1,-1}}},
[objectKeys.zoneID] = zoneIDs.ULDUAR,
},
[194331] = {
[objectKeys.spawns] = {[zoneIDs.THE_INNER_SANCTUM_OF_ULDUAR]={{53,25.4}},[zoneIDs.ULDUAR]={{-1,-1}}},
[objectKeys.zoneID] = zoneIDs.ULDUAR,
},
[194463] = {
[objectKeys.spawns] = {[zoneIDs.STORM_PEAKS] = {{40.1,60.5},{43.5,54.9},{45,57},{41,54},{39,60},{46.1,61},{46.2,59.2}}},
[objectKeys.zoneID] = zoneIDs.STORM_PEAKS,
},
[194481] = {
[objectKeys.spawns] = {[zoneIDs.SUNWELL_PLATEAU]={{-1,-1}}},
[objectKeys.zoneID] = zoneIDs.SUNWELL_PLATEAU,
},
[194555] = {
[objectKeys.spawns] = {[zoneIDs.THE_ARCHIVUM]={{15.6,90.3}},[zoneIDs.ULDUAR]={{-1,-1}}},
[objectKeys.zoneID] = zoneIDs.ULDUAR,
},
[194821] = {
[objectKeys.spawns] = {[zoneIDs.ULDUAR]={{-1,-1}}},
[objectKeys.zoneID] = zoneIDs.ULDUAR,
},
[194822] = {
[objectKeys.spawns] = {[zoneIDs.ULDUAR]={{-1,-1}}},
[objectKeys.zoneID] = zoneIDs.ULDUAR,
},
[194957] = {
[objectKeys.spawns] = {[zoneIDs.THE_SPARK_OF_IMAGINATION]={{43.7,40.9}},[zoneIDs.ULDUAR]={{-1,-1}}},
[objectKeys.zoneID] = zoneIDs.ULDUAR,
},
[194958] = {
[objectKeys.spawns] = {[zoneIDs.THE_SPARK_OF_IMAGINATION]={{43.7,40.9}},[zoneIDs.ULDUAR]={{-1,-1}}},
[objectKeys.zoneID] = zoneIDs.ULDUAR,
},
[195036] = {
[objectKeys.spawns] = {[zoneIDs.THE_DESCENT_OF_MADNESS]={{57.7,72.6},{59.2,68},{59.2,54.9},{57.2,52.7}},[zoneIDs.ULDUAR]={{-1,-1}}},
[objectKeys.zoneID] = zoneIDs.ULDUAR,
},
[195309] = {
[objectKeys.spawns] = {[zoneIDs.STORM_PEAKS] = {{42.65,58.43},{42.25,60.1},{43.36,60.69},{43.4,57.84},{42.94,56.95},{43.22,55.94},{42.52,55.01},{43.09,54.6},{41.51,53.56},{41.19,52.62},{40.67,53.31},{40.06,52.53},{39.38,53.79},{38.55,53.96},{38.46,55.05},{37.61,56.07},{38.38,58.33},{37.73,59.86},{38.57,61.28},{38.87,60.57},{39.23,61.41},{40.61,60.33},{41.53,60.01},{42.24,60.09},{43.36,60.69},{44.68,59.4},{45.55,59.06},{45.47,60.13},{45.06,60.94},{45.15,61.93},{44.54,61.9},{46,61.18},{46.5,62.41},{46.08,63.36},{46.7,64.01},{47.35,62.49},{47.72,61.55},{46.88,59.91},{46.29,58.52},{45.85,57.6},{45.92,57.02},{45.77,55.82},{42.4,53.88},{43.38,59.28},{43.82,61.93},{46.69,60.7},{45.03,56.98},{45.15,55.61},{45.03,56.96},{43.9,56.55},{43.38,59.28},{44.27,61.01},{46.82,63.05},{44.34,58.48},{46.56,62.92},{38.21,62.04},{38.03,58.85},{37.67,57.9},{38.13,57.05},{39.95,61.25},{38.84,59.57},{40.56,62.92},{39.99,61.76},{39.96,60.23}}},
[objectKeys.zoneID] = zoneIDs.STORM_PEAKS,
},
[201590] = {
[objectKeys.spawns] = {[4813]={{66.2,59},{70.2,55.2},{68.3,52.1},{-1,-1}}},
},
[201592] = {
[objectKeys.spawns] = {[4813]={{45.76,43.09},{49.18,40.72},{63.89,51.99},{47.4,36.08},{48.26,38.37},{43.1,67.65},{45.82,76.61},{45.12,49.64},{45.51,40.91},{48.7,40.28},{62.34,57.16},{46.55,52.52},{37.62,79.09},{63.72,58.71},{62.55,48.93},{42.18,67.15},{56.28,39.67},{45.72,38.59},{43.46,77.04},{46.95,35.44},{41.91,65.83},{-1,-1}}},
},
[201742] = { -- Runeforge
[objectKeys.spawns] = {[zoneIDs.ICECROWN_CITADEL]={{43,21.9},{-1,-1}}},
[objectKeys.zoneID] = zoneIDs.ICECROWN_CITADEL,
[objectKeys.questEnds] = {24545},
},
[201794] = {
[objectKeys.spawns] = {[zoneIDs.SUNWELL_PLATEAU]={{-1,-1}}},
[objectKeys.zoneID] = zoneIDs.SUNWELL_PLATEAU,
},
[201873] = {
[objectKeys.spawns] = {[zoneIDs.ICECROWN_CITADEL]={{-1,-1}}},
[objectKeys.zoneID] = zoneIDs.ICECROWN_CITADEL,
},
[201937] = {
[objectKeys.spawns] = {[zoneIDs.DRAGONBLIGHT]={{75.1,20.5}}},
[objectKeys.zoneID] = zoneIDs.DRAGONBLIGHT,
},
[201959] = {
[objectKeys.spawns] = {[zoneIDs.ICECROWN_CITADEL_UPPER_SPIRE]={{76.7,73.7}},[zoneIDs.ICECROWN_CITADEL]={{-1,-1}}},
[objectKeys.zoneID] = zoneIDs.ICECROWN_CITADEL_UPPER_SPIRE,
},
[202080] = {
[objectKeys.name] = "Dart's Nest",
[objectKeys.spawns] = {[zoneIDs.DUSTWALLOW_MARSH]={{46.4,17.2},{46.6,17.2},{47.9,19},{48,14.5},{48.1,14.2},{49.1,17.3},{49.2,17.5}}},
},
[202081] = {
[objectKeys.spawns] = {[zoneIDs.THE_BARRENS]={{58.5,8.3},{59.5,8.6},{60.3,10.1},{60.7,13.4}}},
},
[202082] = {
[objectKeys.spawns] = {[zoneIDs.UN_GORO_CRATER]={{62,65.2},{62,73.2},{62,73.5},{63,63.2},{68.9,66.6},{69,61.3}}},
},
[202083] = {
[objectKeys.name] = "Razormaw Matriarch's Nest",
[objectKeys.spawns] = {[zoneIDs.WETLANDS]={{67.6,30.7},{69.1,31.6},{70,29.1},{71.1,30.9}}},
},
[202168] = {
[objectKeys.spawns] = {[zoneIDs.PIT_OF_SARON]={{59.37,60.48},{45.33,58.72},{43.77,66.77},{55.92,65.86},{55.84,39.13},{56.22,64.93},{58.71,60.9},{55.55,43.2},{53.46,65.12},{47.55,61.06},{41.77,65.25},{52.89,64.84},{49.63,69.36},{61.14,59.63},{60.06,49.25},{55.16,65.87},{55.64,63.33},{62.08,59.4},{54.38,36.42},{60.94,49.22},{55.5,38.28},{55.82,41.31},{60.23,60.09},{54.38,65.36},{50.54,68.04},{58.8,48.69},{48.83,69.23},{61.78,49.56},{38.6,66.65},{37.5,69},{34,70.5},{33.8,68.9},{34.3,65.9},{33.5,63.7},{34.8,61.5},{36.7,61.1},{40.3,55.9},{41,58.1},{42.2,59.5},{42.8,60.5},{45.3,55.8},{43.8,56.7},{42.3,54.5}}},
},
[202239] = {
[objectKeys.spawns] = {[zoneIDs.ICECROWN_CITADEL_DEATHBRINGERS_RISE]={{71.3,30.7}},[zoneIDs.ICECROWN_CITADEL]={{-1,-1}}},
[objectKeys.zoneID] = zoneIDs.ICECROWN_CITADEL,
},
[202240] = {
[objectKeys.spawns] = {},
},
[202336] = {
[objectKeys.spawns] = {[zoneIDs.HALLS_OF_REFLECTION]={{84,88.1},{-1,-1}}},
[objectKeys.zoneID] = zoneIDs.HALLS_OF_REFLECTION,
},
[300213] = {
[objectKeys.name] = "Mistwhisper Weather Shrine",
[objectKeys.spawns] = {[zoneIDs.SHOLAZAR_BASIN]={{45.4,37.23}}},
[objectKeys.zoneID] = zoneIDs.SHOLAZAR_BASIN,
},
[300224] = {
[objectKeys.name] = "Exposed Lifeblood Pillar Crystal",
[objectKeys.spawns] = {[zoneIDs.SHOLAZAR_BASIN]={{65.52,59.74}}},
[objectKeys.zoneID] = zoneIDs.SHOLAZAR_BASIN,
},
-- Below are fake objects
-- These objects are from previous expansions and they need updated coords
[410002] = {
[objectKeys.name] = "Open the Survival Kit",
[objectKeys.spawns] = {[zoneIDs.ORGRIMMAR]={{47.98,45.93},{43.9,54.63},{38.8,36.37},{79.79,31.42},{67.24,20.2},{38.45,86.13},{35.72,86.9},{32.28,35.73}}},
[objectKeys.zoneID] = zoneIDs.ORGRIMMAR,
},
[410003] = {
[objectKeys.name] = "Equip a Weapon",
[objectKeys.spawns] = {[zoneIDs.ORGRIMMAR]={{47.98,45.93},{43.9,54.63},{38.8,36.37},{79.79,31.42},{67.24,20.2},{38.45,86.13},{35.72,86.9},{32.28,35.73}}},
[objectKeys.zoneID] = zoneIDs.ORGRIMMAR,
},
[410004] = {
[objectKeys.name] = "Open the Survival Kit",
[objectKeys.spawns] = {[zoneIDs.THUNDER_BLUFF]={{77.15,29.82}}},
[objectKeys.zoneID] = zoneIDs.THUNDER_BLUFF,
},
[410005] = {
[objectKeys.name] = "Equip a Weapon",
[objectKeys.spawns] = {[zoneIDs.THUNDER_BLUFF]={{77.15,29.82}}},
[objectKeys.zoneID] = zoneIDs.THUNDER_BLUFF,
},
[410006] = {
[objectKeys.name] = "Train a Spell at your class trainer",
[objectKeys.spawns] = {[zoneIDs.ORGRIMMAR]={{47.98,45.93},{43.9,54.63},{38.8,36.37},{79.79,31.42},{67.24,20.2},{38.45,86.13},{35.72,86.9},{32.28,35.73}}},
[objectKeys.zoneID] = zoneIDs.ORGRIMMAR,
},
[410007] = {
[objectKeys.name] = "Train a Spell at your class trainer",
[objectKeys.spawns] = {[zoneIDs.THUNDER_BLUFF]={{77.15,29.82}}},
[objectKeys.zoneID] = zoneIDs.THUNDER_BLUFF,
},
[410008] = {
[objectKeys.name] = "Spend 5 Talent Points",
[objectKeys.spawns] = {[zoneIDs.ORGRIMMAR]={{47.98,45.93},{43.9,54.63},{38.8,36.37},{79.79,31.42},{67.24,20.2},{38.45,86.13},{35.72,86.9},{32.28,35.73}}},
[objectKeys.zoneID] = zoneIDs.ORGRIMMAR,
},
[410009] = {
[objectKeys.name] = "Spend 5 Talent Points",
[objectKeys.spawns] = {[zoneIDs.THUNDER_BLUFF]={{77.15,29.82}}},
[objectKeys.zoneID] = zoneIDs.THUNDER_BLUFF,
},
[410010] = {
[objectKeys.name] = "Open the Survival Kit",
[objectKeys.spawns] = {[zoneIDs.STORMWIND_CITY]={{49.53,44.6},{80.19,61.26},{48.43,50.22},{39.89,84.19},{49.56,85.8},{36.12,64.42},{67.35,36.25},{80.28,68.58},{67.52,89.42}}},
[objectKeys.zoneID] = zoneIDs.STORMWIND_CITY,
},
[410011] = {
[objectKeys.name] = "Equip a Weapon",
[objectKeys.spawns] = {[zoneIDs.STORMWIND_CITY]={{49.53,44.6},{80.19,61.26},{48.43,50.22},{39.89,84.19},{49.56,85.8},{36.12,64.42},{67.35,36.25},{80.28,68.58},{67.52,89.42}}},
[objectKeys.zoneID] = zoneIDs.STORMWIND_CITY,
},
[410012] = {
[objectKeys.name] = "Train a Spell at your class trainer",
[objectKeys.spawns] = {[zoneIDs.STORMWIND_CITY]={{49.53,44.6},{80.19,61.26},{48.43,50.22},{39.89,84.19},{49.56,85.8},{36.12,64.42},{67.35,36.25},{80.28,68.58},{67.52,89.42}}},
[objectKeys.zoneID] = zoneIDs.STORMWIND_CITY,
},
[410013] = {
[objectKeys.name] = "Spend 5 Talent Points",
[objectKeys.spawns] = {[zoneIDs.STORMWIND_CITY]={{49.53,44.6},{80.19,61.26},{48.43,50.22},{39.89,84.19},{49.56,85.8},{36.12,64.42},{67.35,36.25},{80.28,68.58},{67.52,89.42}}},
[objectKeys.zoneID] = zoneIDs.STORMWIND_CITY,
},
-- For Wotlk fixes 420001-429999
[420001] = {
[objectKeys.name] = "Summoning Stone",
[objectKeys.spawns] = {[zoneIDs.ICECROWN]={{53.77,33.60}}},
[objectKeys.zoneID] = zoneIDs.ICECROWN,
},
[420002] = {
[objectKeys.name] = "Blood Ritual Altar",
[objectKeys.spawns] = {[zoneIDs.ZUL_GURUB] = {{-1,-1}}},
[objectKeys.zoneID] = zoneIDs.ZUL_GURUB,
},
-- TODO: Reuse 420003 - 420032
[420033] = {
[objectKeys.name] = "Drakuru's Brazier",
[objectKeys.spawns] = {[zoneIDs.GRIZZLY_HILLS]={{17.42,36.36}}}, -- Zeb'Halak
[objectKeys.zoneID] = zoneIDs.GRIZZLY_HILLS,
},
[420034] = {
[objectKeys.name] = "Chemical Wagon", -- Orgrimmar
[objectKeys.spawns] = {[zoneIDs.DUROTAR]={{40.13,15.71}}},
[objectKeys.zoneID] = zoneIDs.DUROTAR,
},
[420035] = {
[objectKeys.name] = "Chemical Wagon", -- Ambermill
[objectKeys.spawns] = {[zoneIDs.SILVERPINE_FOREST]={{54.75,61.33}}},
[objectKeys.zoneID] = zoneIDs.SILVERPINE_FOREST,
},
[420036] = {
[objectKeys.name] = "Chemical Wagon", -- Elwynn
[objectKeys.spawns] = {[zoneIDs.ELWYNN_FOREST]={{29.19,65.44}}},
[objectKeys.zoneID] = zoneIDs.ELWYNN_FOREST,
},
[420037] = {
[objectKeys.name] = "Chemical Wagon", -- Darkshore
[objectKeys.spawns] = {[zoneIDs.DARKSHORE]={{42.47,79.46}}},
[objectKeys.zoneID] = zoneIDs.DARKSHORE,
},
[420038] = {
[objectKeys.name] = "Chemical Wagon", -- Hillsbrad
[objectKeys.spawns] = {[zoneIDs.HILLSBRAD_FOOTHILLS]={{28.22,37.63}}},
[objectKeys.zoneID] = zoneIDs.HILLSBRAD_FOOTHILLS,
},
[420039] = {
[objectKeys.name] = "Chemical Wagon", -- Theramore
[objectKeys.spawns] = {[zoneIDs.DUSTWALLOW_MARSH]={{60.83,38.49}}},
[objectKeys.zoneID] = zoneIDs.DUSTWALLOW_MARSH,
},
[420040] = {
[objectKeys.name] = "Chemical Wagon", -- Aerie Peak
[objectKeys.spawns] = {[zoneIDs.THE_HINTERLANDS]={{23.44,53.68}}},
[objectKeys.zoneID] = zoneIDs.THE_HINTERLANDS,
},
[420041] = {
[objectKeys.name] = "Chemical Wagon", -- Everlook
[objectKeys.spawns] = {[zoneIDs.WINTERSPRING]={{64.67,37.36}}},
[objectKeys.zoneID] = zoneIDs.WINTERSPRING,
},
[420042] = {
[objectKeys.name] = "Chemical Wagon", -- Shattrath
[objectKeys.spawns] = {[zoneIDs.TEROKKAR_FOREST]={{41.46,22.52}}},
[objectKeys.zoneID] = zoneIDs.TEROKKAR_FOREST,
},
[420043] = {
[objectKeys.name] = "Chemical Wagon", -- Crystalsong
[objectKeys.spawns] = {[zoneIDs.CRYSTALSONG_FOREST]={{50.5,50.11},{46.44,50.86},{48.46,51.01},{49.09,47.62}}},
[objectKeys.zoneID] = zoneIDs.CRYSTALSONG_FOREST,
},
[420044] = {
[objectKeys.name] = "Spend 5 Talent Points",
[objectKeys.spawns] = {[zoneIDs.EASTERN_PLAGUELANDS]={{80.29,48.02},{80.91,43.78},{83.74,44.58}}},
[objectKeys.zoneID] = zoneIDs.EASTERN_PLAGUELANDS,
},
[420045] = {
[objectKeys.name] = "Open the Survival Kit",
[objectKeys.spawns] = {[zoneIDs.EASTERN_PLAGUELANDS]={{80.29,48.02},{80.91,43.78},{83.74,44.58}}},
[objectKeys.zoneID] = zoneIDs.EASTERN_PLAGUELANDS,
},
[420046] = {
[objectKeys.name] = "Equip a Weapon",
[objectKeys.spawns] = {[zoneIDs.EASTERN_PLAGUELANDS]={{80.29,48.02},{80.91,43.78},{83.74,44.58}}},
[objectKeys.zoneID] = zoneIDs.EASTERN_PLAGUELANDS,
},
[420047] = {
[objectKeys.name] = "Train a Spell at your class trainer",
[objectKeys.spawns] = {[zoneIDs.EASTERN_PLAGUELANDS]={{80.29,48.02},{80.91,43.78},{83.74,44.58}}},
[objectKeys.zoneID] = zoneIDs.EASTERN_PLAGUELANDS,
},
[420048] = {
[objectKeys.name] = "Scourge Enclosure",
[objectKeys.spawns] = {[zoneIDs.ZUL_DRAK]={{19.94,56.12}}},
[objectKeys.zoneID] = zoneIDs.ZUL_DRAK,
},
[420049] = {
[objectKeys.name] = "Drakuru's Brazier",
[objectKeys.spawns] = {[zoneIDs.GRIZZLY_HILLS]={{71.74,26.2}}},
[objectKeys.zoneID] = zoneIDs.GRIZZLY_HILLS,
},
}
end
-- This should allow manual fix for object availability
function QuestieWotlkObjectFixes:LoadFactionFixes()
local objectKeys = QuestieDB.objectKeys
local zoneIDs = ZoneDB.zoneIDs
local objectFixesHorde = {
[186189] = { -- Complimentary Brewfest Sampler
[objectKeys.spawns] = {[zoneIDs.DUROTAR]={{45.27,13.53},{45.27,13.54},{45.28,13.55},{45.26,13.53},{45.08,16.66},{45.08,16.68},{45.1,16.68},{45.1,16.65},{45.27,13.53},{45.28,17.47},{45.28,17.45},{44.86,17.42},{44.87,17.41},{45.16,17.52},{45.19,17.51},{45.17,17.49},{45.18,17.48},{45.26,17.46},{45.27,17.48},{44.85,17.4},{44.87,17.43},{44.53,16.53},{44.52,16.56},{44.51,16.53},{44.53,16.56},{43.97,17.98},{44.22,18.01},{43.96,17.98},{44.21,17.99},{43.61,17.3},{43.62,17.32},{43.61,17.28},{43.96,17.94},{43.63,17.3},{44.19,18.01},{44.2,18.0},{43.98,17.95},{43.86,16.83},{43.84,16.84},{43.85,16.8},{43.83,16.82},{43.63,17.3}}},
},
[201873] = {
[objectKeys.spawns] = {[zoneIDs.ICECROWN_CITADEL_RAMPART_OF_SKULLS]={{47.9,77.3}},[zoneIDs.ICECROWN_CITADEL]={{-1,-1}}},
},
}
local objectFixesAlliance = {
[103574] = { -- Filled Containment Coffer
[objectKeys.spawns] = {[zoneIDs.STORMWIND_CITY]={{51.32,92.34},{50.83,92.63},{51.61,94.5},{51.21,95.73},{50.99,95.58},{51.3,93.34}}},
[objectKeys.zoneID] = zoneIDs.STORMWIND_CITY,
},
[105174] = { -- Chest of Containment Coffers
[objectKeys.spawns] = {[zoneIDs.STORMWIND_CITY]={{49.45,85.48},{49.51,85.6},{49.5,85.55},{49.56,85.58}}},
},
[105175] = { -- Cantation of Manifestation
[objectKeys.spawns] = {[zoneIDs.STORMWIND_CITY]={{49.64,85.44},{49.6,85.36},{49.61,85.42}}},
},
[186189] = { -- Complimentary Brewfest Sampler
[objectKeys.spawns] = {[zoneIDs.DUN_MOROGH]={{46.92,40.66},{46.92,40.69},{46.94,40.65},{47.06,40.06},{47.07,40.08},{47.56,39.68},{47.56,39.66},{47.68,39.65},{47.57,39.66},{47.67,39.66},{47.69,39.66},{47.58,39.69},{47.68,39.67},{47.58,39.67},{47.67,39.65},{48.2,39.01},{48.18,39.03},{47.57,39.66},{48.2,39.05},{47.58,39.69},{47.58,39.67},{47.69,39.66},{47.56,39.66},{48.2,39.05},{47.68,39.67},{48.2,39.03},{47.58,39.69},{48.58,39.91},{48.56,39.92},{48.57,39.91},{49.41,38.44},{49.39,38.45},{48.51,38.24},{48.53,38.24},{49.14,39.69},{49.41,38.47},{49.14,39.72},{49.16,39.68},{48.78,38.19},{48.79,38.16},{48.77,38.16},{49.4,38.48},{49.17,39.71},{48.79,38.18},{48.55,38.25},{47.68,39.67},{48.57,39.91},{46.94,40.65},{48.2,39.03},{48.77,38.16},{48.18,39.03},{48.2,39.05},{48.21,39.04},{49.4,38.48},{48.18,39.03},{47.58,39.69},{48.2,39.03},{47.58,39.67},{47.56,39.68},{48.2,39.05},{48.21,39.04},{49.16,39.68},{52.65,35.28},{52.63,35.29}}},
},
[201873] = {
[objectKeys.spawns] = {[zoneIDs.ICECROWN_CITADEL_RAMPART_OF_SKULLS]={{42.55,76.8}},[zoneIDs.ICECROWN_CITADEL]={{-1,-1}}},
},
}
if UnitFactionGroup("Player") == "Horde" then
return objectFixesHorde
else
return objectFixesAlliance
end
end
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,778 +0,0 @@
---@class QuestieItemDropCorrections
local QuestieItemDropCorrections = QuestieLoader:CreateModule("QuestieItemDropCorrections")
-------------------------
--Import modules.
-------------------------
---@type DropDB
local DropDB = QuestieLoader:ImportModule("DropDB")
local DropKeys = DropDB.correctionKeys
-- These tables contain manual drop corrections.
--
-- Use the following format:
-- [itemID] = { -- Item Name
-- [npcID] = 80.0,
-- }
--
-- This example would be an 80% drop rate.
--
-- Corrections propagate up to the current expansion. For instance, if you make a correction in Era, that
-- correction will be loaded in MoP unless an expansion after Era made a different correction for the same ID.
--
-- This is the same way our normal database corrections system behaves as well.
--
-- You can also use reference corrections. For instance:
--
-- [itemID] = { -- Item Name
-- [npcID] = DropDB.correctionKeys.WOWHEAD,
-- }
--
-- will point to the currently loaded Wowhead data for that item:NPC pair, if it exists.
-- Using a reference correction in an earlier expansion will propagate to later ones, pointing to their own DBs.
-- For instance, if you put the above example into Era corrections, but loaded up MoP, it would show MoP Wowhead data,
-- regardless of whatever data exists in the MoP pserver DB.
QuestieItemDropCorrections.Era = {
[725] = { -- Gnoll Paw
[98] = DropKeys.WOWHEAD,
[117] = DropKeys.WOWHEAD,
[123] = DropKeys.WOWHEAD,
[124] = DropKeys.WOWHEAD,
[125] = DropKeys.WOWHEAD,
[452] = DropKeys.WOWHEAD,
[453] = DropKeys.WOWHEAD,
[500] = DropKeys.WOWHEAD,
[501] = DropKeys.WOWHEAD,
[506] = DropKeys.WOWHEAD,
[1065] = DropKeys.WOWHEAD,
[1426] = DropKeys.WOWHEAD,
},
[829] = { -- Red Leather Bandana
[95] = DropKeys.WOWHEAD,
[502] = DropKeys.WOWHEAD,
[504] = DropKeys.WOWHEAD,
[589] = DropKeys.WOWHEAD,
[590] = DropKeys.WOWHEAD,
},
[884] = { -- Ghoul Rib
[3] = DropKeys.WOWHEAD,
[210] = DropKeys.WOWHEAD,
[570] = DropKeys.WOWHEAD,
[604] = DropKeys.WOWHEAD,
[948] = DropKeys.WOWHEAD,
},
[1129] = { -- Ghoul Fang
[3] = DropKeys.WOWHEAD,
[210] = DropKeys.WOWHEAD,
[570] = DropKeys.WOWHEAD,
[604] = DropKeys.WOWHEAD,
[948] = DropKeys.WOWHEAD,
[1270] = DropKeys.WOWHEAD,
},
[1130] = { -- Vial of Spider Venom
[217] = DropKeys.WOWHEAD,
[539] = DropKeys.WOWHEAD,
[569] = DropKeys.WOWHEAD,
[574] = DropKeys.WOWHEAD,
[930] = DropKeys.WOWHEAD,
[949] = DropKeys.WOWHEAD,
},
[1468] = { -- Murloc Fin
[422] = DropKeys.WOWHEAD,
[544] = DropKeys.WOWHEAD,
[545] = DropKeys.WOWHEAD,
[548] = DropKeys.WOWHEAD,
[578] = DropKeys.WOWHEAD,
[1024] = DropKeys.WOWHEAD,
[1025] = DropKeys.WOWHEAD,
[1026] = DropKeys.WOWHEAD,
[1027] = DropKeys.WOWHEAD,
[1028] = DropKeys.WOWHEAD,
[1029] = DropKeys.WOWHEAD,
[1083] = DropKeys.WOWHEAD,
[1259] = DropKeys.WOWHEAD,
[1418] = DropKeys.WOWHEAD,
[3654] = DropKeys.WOWHEAD,
[3737] = DropKeys.WOWHEAD,
[3739] = DropKeys.WOWHEAD,
[3740] = DropKeys.WOWHEAD,
[3742] = DropKeys.WOWHEAD,
[4818] = DropKeys.WOWHEAD,
[4819] = DropKeys.WOWHEAD,
[4820] = DropKeys.WOWHEAD,
[6243] = DropKeys.WOWHEAD,
[10643] = DropKeys.WOWHEAD,
[14270] = DropKeys.WOWHEAD,
},
[1519] = { -- Bloodscalp Ear
[587] = DropKeys.WOWHEAD,
[588] = DropKeys.WOWHEAD,
[595] = DropKeys.WOWHEAD,
[597] = DropKeys.WOWHEAD,
[660] = DropKeys.WOWHEAD,
[671] = DropKeys.WOWHEAD,
[694] = DropKeys.WOWHEAD,
[697] = DropKeys.WOWHEAD,
[699] = DropKeys.WOWHEAD,
[701] = DropKeys.WOWHEAD,
[702] = DropKeys.WOWHEAD,
},
[1598] = { -- Rot Blossom
[202] = DropKeys.WOWHEAD,
[531] = DropKeys.WOWHEAD,
},
[1894] = { -- Miners' Union Card
[623] = DropKeys.WOWHEAD,
[624] = DropKeys.WOWHEAD,
[625] = DropKeys.WOWHEAD,
},
[2378] = { -- Skeleton Finger
[48] = DropKeys.WOWHEAD,
[202] = DropKeys.WOWHEAD,
[203] = DropKeys.WOWHEAD,
[531] = DropKeys.WOWHEAD,
[785] = DropKeys.WOWHEAD,
[787] = DropKeys.WOWHEAD,
[1110] = DropKeys.WOWHEAD,
},
[2633] = { -- Jungle Remedy
[940] = DropKeys.WOWHEAD,
[941] = DropKeys.WOWHEAD,
[942] = DropKeys.WOWHEAD,
},
[2676] = { -- Shimmerweed
[1397] = DropKeys.WOWHEAD,
},
[2843] = { -- Dirty Knucklebones
[2252] = DropKeys.WOWHEAD,
[2253] = DropKeys.WOWHEAD,
[2254] = DropKeys.WOWHEAD,
[2255] = DropKeys.WOWHEAD,
[2256] = DropKeys.WOWHEAD,
[2287] = DropKeys.WOWHEAD,
[2416] = DropKeys.WOWHEAD,
},
[3297] = { -- Fel Moss
[1988] = DropKeys.WOWHEAD,
},
[3348] = { -- Giant Crocolisk Skin
[2089] = 100,
},
[3476] = { -- Gray Bear Tongue
[2351] = DropKeys.WOWHEAD,
[2354] = DropKeys.WOWHEAD,
[2356] = DropKeys.WOWHEAD,
[14280] = DropKeys.WOWHEAD,
},
[3477] = { -- Creeper Ichor
[2348] = DropKeys.WOWHEAD,
[2349] = DropKeys.WOWHEAD,
[2350] = DropKeys.WOWHEAD,
[14279] = DropKeys.WOWHEAD,
},
[3692] = { -- Hillsbrad Human Skull
[232] = DropKeys.WOWHEAD,
[2244] = DropKeys.WOWHEAD,
[2260] = DropKeys.WOWHEAD,
[2261] = DropKeys.WOWHEAD,
[2264] = DropKeys.WOWHEAD,
[2265] = DropKeys.WOWHEAD,
[2266] = DropKeys.WOWHEAD,
[2267] = DropKeys.WOWHEAD,
[2268] = DropKeys.WOWHEAD,
[2269] = DropKeys.WOWHEAD,
[2270] = DropKeys.WOWHEAD,
[2305] = DropKeys.WOWHEAD,
[2335] = DropKeys.WOWHEAD,
[2360] = DropKeys.WOWHEAD,
[2387] = DropKeys.WOWHEAD,
[2403] = DropKeys.WOWHEAD,
[2404] = DropKeys.WOWHEAD,
[2427] = DropKeys.WOWHEAD,
[2428] = DropKeys.WOWHEAD,
[2448] = DropKeys.WOWHEAD,
[2449] = DropKeys.WOWHEAD,
[2450] = DropKeys.WOWHEAD,
[2451] = DropKeys.WOWHEAD,
[2503] = DropKeys.WOWHEAD,
},
[3714] = { -- Worn Stone Token
[2271] = DropKeys.WOWHEAD,
[2272] = DropKeys.WOWHEAD,
[2358] = DropKeys.WOWHEAD,
[2415] = DropKeys.WOWHEAD,
[2628] = DropKeys.WOWHEAD,
},
[3917] = { -- Singing Blue Crystal
[674] = DropKeys.WOWHEAD,
[675] = DropKeys.WOWHEAD,
[676] = DropKeys.WOWHEAD,
[677] = DropKeys.WOWHEAD,
[4723] = DropKeys.WOWHEAD,
[14492] = DropKeys.WOWHEAD,
},
[3918] = { -- Singing Crystal Shard
[688] = DropKeys.WOWHEAD,
[689] = DropKeys.WOWHEAD,
[690] = DropKeys.WOWHEAD,
[1550] = DropKeys.WOWHEAD,
[1551] = DropKeys.WOWHEAD,
},
[4105] = { -- Elder Crocolisk Skin
[2635] = 100.0,
},
[4627] = { -- Large Stone Slab
[92] = 100,
},
[4628] = { -- Bracers of Rock Binding
[2736] = 20,
},
[5026] = { -- Fire Tar
[3267] = 75,
[3268] = 75,
[3269] = 75,
[3271] = 75,
},
[5055] = { -- Intact Raptor Horn
[3256] = DropKeys.WOWHEAD,
[3257] = DropKeys.WOWHEAD,
[5842] = DropKeys.WOWHEAD,
},
[5078] = { -- Theramore Medal
[3385] = 100,
[3386] = 100,
[3393] = 100,
[3454] = 100,
[3455] = 100,
},
[5085] = { -- Bristleback Quilboar Tusk
[3258] = 100,
[3260] = 100,
[3261] = 100,
[3263] = 100,
},
[5170] = { -- Mossy Tumor
[2027] = DropKeys.WOWHEAD,
[2029] = DropKeys.WOWHEAD,
[2030] = DropKeys.WOWHEAD,
},
[5233] = { -- Stone of Relu
[1020] = 1.5,
[1021] = 1.5,
[1022] = 1.5,
[1023] = 1.5,
},
[5366] = { -- Glowing Soul Gem
[3725] = DropKeys.WOWHEAD,
[3727] = DropKeys.WOWHEAD,
[3728] = DropKeys.WOWHEAD,
[3730] = DropKeys.WOWHEAD,
[3879] = DropKeys.WOWHEAD,
},
[5669] = { -- Dust Devil Debris
[832] = 50.0, -- not 100%, not 5%. Could be more than 50%
},
[5801] = { -- Kraul Guano
[4538] = 100,
[4539] = 100,
},
[5867] = { -- Etched Phial
-- Most comments on Wowhead are from players who didn't realize you have to be on the quest for it to drop.
-- That being said, cmangos claims 100% and it's definitely not 100%. Didn't sit farming them all day, but farmed a few and seems around 20%. -ytt
[4054] = 20,
},
[6250] = { -- Felhound Brain
[4678] = 100,
[4681] = 100,
[4685] = 100,
},
[6251] = { -- Nether Wing
[4679] = 100,
[4682] = 100,
[4684] = 100,
},
[6252] = { -- Doomwarder Blood
[4680] = 100,
[5760] = 100,
[14226] = 100,
},
[6257] = { -- Roc Gizzard
[5428] = DropKeys.WOWHEAD,
[5429] = DropKeys.WOWHEAD,
[5430] = DropKeys.WOWHEAD,
},
[6258] = { -- Ironfur Liver
[5268] = DropKeys.WOWHEAD,
[5272] = DropKeys.WOWHEAD,
[5274] = DropKeys.WOWHEAD,
[5352] = DropKeys.WOWHEAD,
},
[6259] = { -- Groddoc Liver
[5260] = DropKeys.WOWHEAD,
[5262] = DropKeys.WOWHEAD,
},
[6443] = { -- Deviate Hide
[3630] = DropKeys.WOWHEAD,
[3631] = DropKeys.WOWHEAD,
[3632] = DropKeys.WOWHEAD,
[3633] = DropKeys.WOWHEAD,
[3634] = DropKeys.WOWHEAD,
[3636] = DropKeys.WOWHEAD,
[3637] = DropKeys.WOWHEAD,
[3641] = DropKeys.WOWHEAD,
[3653] = DropKeys.WOWHEAD,
[3654] = DropKeys.WOWHEAD,
[3674] = DropKeys.WOWHEAD,
[5048] = DropKeys.WOWHEAD,
[5053] = DropKeys.WOWHEAD,
[5056] = DropKeys.WOWHEAD,
[5755] = DropKeys.WOWHEAD,
[5756] = DropKeys.WOWHEAD,
[5761] = DropKeys.WOWHEAD,
[5762] = DropKeys.WOWHEAD,
[5775] = DropKeys.WOWHEAD,
[5912] = DropKeys.WOWHEAD,
[8886] = DropKeys.WOWHEAD,
},
[6652] = { -- Reagent Pouch
[3199] = 75,
},
[6915] = { -- Large Soran'ruk Fragment
[3855] = 20, -- empyrical value
},
[7267] = { -- Pristine Spider Silk
[930] = 18,
[949] = 100,
},
[7291] = { -- Infernal Orb
[4668] = 100,
},
[9369] = { -- Iridescent Sprite Darter Wing
-- this one is complicated; they drop 0-2, on average you get more than 1 per kill, but they occasionally don't drop any so 100% isn't accurate
[5278] = 95,
[7997] = 95,
},
[10458] = { -- Prayer to Elune
[5860] = 20, -- empyrical value
[5861] = 20, -- empyrical value
[5862] = 20, -- empyrical value
[8419] = 20, -- empyrical value
},
[10552] = { -- Symbol of Ragnaros
[5860] = DropKeys.WOWHEAD,
[5861] = DropKeys.WOWHEAD,
[5862] = DropKeys.WOWHEAD,
[8419] = DropKeys.WOWHEAD,
},
[10639] = { -- Hyacinth Mushroom
[1988] = 80,
},
[11405] = { -- Giant Silver Vein
[6146] = 100,
[6147] = 100,
[6148] = 100,
},
[11478] = { -- Un'Goro Gorilla Pelt
[6514] = DropKeys.WOWHEAD,
},
[11479] = { -- Un'Goro Stomper Pelt
[6513] = DropKeys.WOWHEAD,
},
[11480] = { -- Un'Goro Thunderer Pelt
[6516] = DropKeys.WOWHEAD,
},
[11503] = { -- Blood Amber
[7100] = 100,
[7101] = 100,
[7104] = 100,
},
[11829] = { -- Un'Goro Ash
[6520] = 100.0,
[6521] = 100.0,
[9376] = 10.0,
[14460] = 100.0,
[14461] = 10.0,
},
[12335] = { -- Gemstone of Smolderthorn
[9237] = 10,
},
[12336] = { -- Gemstone of Spirestone
[9196] = 10,
},
[12337] = { -- Gemstone of Bloodaxe
[9568] = 10,
},
[12524] = { -- Blue-feathered Amulet
[7452] = 50,
[7453] = 50,
[7454] = 50,
},
[12733] = { -- Sacred Frostsaber Meat
[7430] = 10,
[7431] = 10,
[7432] = 10,
[7433] = 10,
[7434] = 10,
},
[15849] = { -- Ghost-o-plasm
[11560] = 100,
},
[15852] = { -- Kodo Horn
[3234] = 100,
[3236] = 100,
},
[15881] = { -- Rackmore's Golden Key
[4711] = DropKeys.WOWHEAD,
[4712] = DropKeys.WOWHEAD,
[4713] = DropKeys.WOWHEAD,
[4714] = DropKeys.WOWHEAD,
[4715] = DropKeys.WOWHEAD,
[4716] = DropKeys.WOWHEAD,
[4718] = DropKeys.WOWHEAD,
[4719] = DropKeys.WOWHEAD,
[14229] = DropKeys.WOWHEAD,
},
[17309] = { -- Discordant Bracers
[8519] = 100,
[8520] = 100,
[8521] = 100,
[8522] = 100,
},
[17761] = { -- Gem of the First Khan
[12240] = 100,
},
[17762] = { -- Gem of the Second Khan
[12239] = 100,
},
[17763] = { -- Gem of the Third Khan
[12241] = 100,
},
[17764] = { -- Gem of the Fourth Khan
[12242] = 100,
},
[17765] = { -- Gem of the Fifth Khan
[12243] = 100,
},
[18956] = { -- Miniaturization Residue
[5357] = 100,
[5358] = 100,
[5359] = 100,
[5360] = 100,
[5361] = 100,
[14603] = 100,
[14604] = 100,
[14638] = 100,
[14639] = 100,
[14640] = 100,
},
[20028] = { -- Glittering Dust
[6198] = 25,
[6199] = 25,
},
[20029] = { -- Enchanted Coral
[6195] = 25,
},
[20373] = { -- Stonelash Scorpid Stinger
[11735] = DropKeys.WOWHEAD,
},
[20374] = { -- Stonelash Pincer Stinger
[11736] = DropKeys.WOWHEAD,
},
[20375] = { -- Stonelash Flayer Stinger
[11737] = DropKeys.WOWHEAD,
},
[20376] = { -- Sand Skitterer Fang
[11738] = DropKeys.WOWHEAD,
},
[20377] = { -- Rock Stalker Fang
[11739] = DropKeys.WOWHEAD,
},
[21108] = { -- Draconic for Dummies (Chapter VI)
[10184] = 100,
},
[21110] = { -- Draconic for Dummies (Chapter VIII)
[11502] = 100,
},
[190232] = { -- Withered Scarf
[3782] = 5, -- super bad drop rate, wowhead shows 3%. it's somewhere between 5-10%
[3784] = 5, -- super bad drop rate, wowhead shows 3%. it's somewhere between 5-10%
},
}
QuestieItemDropCorrections.Tbc = { -- Corrections for Old World data should only be put here if they change going from Era->TBC! Otherwise, put them in the Era section!
[2633] = { -- Jungle Remedy
[937] = DropKeys.WOWHEAD,
[940] = DropKeys.WOWHEAD,
[941] = DropKeys.WOWHEAD,
[942] = DropKeys.WOWHEAD,
},
[6487] = { -- Vile Familiar Head
[3101] = 100, -- TO DO double check this. strange that it's TBC only
},
[12334] = { -- Frostmaul Shards
[7428] = 20,
[7429] = 20,
[10198] = 100,
},
[12335] = { -- Gemstone of Smolderthorn
[9237] = 100,
},
[12336] = { -- Gemstone of Spirestone
[9196] = 100,
},
[12337] = { -- Gemstone of Bloodaxe
[9568] = 100,
},
[20934] = { -- Wraith Essence
[15273] = 100,
},
[22934] = { -- Lasher Sample
[16517] = 76,
},
[23336] = { -- Helboar Blood Sample
[16880] = DropKeys.WOWHEAD,
},
[23614] = { -- Red Snapper
[17102] = 100,
},
[23676] = { -- Moongraze Stag Tenderloin
[17200] = 100,
[17201] = 100,
},
[23706] = { -- Arcane Fragment
[16339] = 100,
},
[23733] = { -- Ritual Torch
[17189] = 80,
},
[23849] = { -- Stillpine Grain
[17190] = DropKeys.WOWHEAD,
[17191] = DropKeys.WOWHEAD,
[17192] = DropKeys.WOWHEAD,
[17475] = DropKeys.WOWHEAD,
},
[24156] = { -- Filled Shimmering Vessel
[17544] = 100,
},
[24226] = { -- Blood Knight Insignia
[17832] = 100,
},
[24279] = { -- Vicious Teromoth Sample
[18437] = DropKeys.WOWHEAD,
},
[24372] = { -- Diaphanous Wing
[18132] = DropKeys.WOWHEAD,
[18133] = DropKeys.WOWHEAD,
[18283] = DropKeys.WOWHEAD,
[20197] = DropKeys.WOWHEAD,
[20198] = DropKeys.WOWHEAD,
},
[24374] = { -- Eel Filet
[18138] = DropKeys.WOWHEAD,
},
[24426] = { -- Sporebat Eye
[18128] = DropKeys.WOWHEAD,
[18129] = DropKeys.WOWHEAD,
[18280] = DropKeys.WOWHEAD,
[20387] = DropKeys.WOWHEAD,
},
[24427] = { -- Fen Strider Tentacle
[18134] = DropKeys.WOWHEAD,
[18281] = DropKeys.WOWHEAD,
},
[24473] = { -- Enraged Crusher Core
[18062] = 100,
},
[24485] = { -- Marshlight Bleeder Venom
[18133] = DropKeys.WOWHEAD,
[20198] = DropKeys.WOWHEAD,
},
[25461] = { -- Book of Forgotten Names
[18472] = 100,
},
[25462] = { -- Tome of Dusk
[16807] = 100,
},
[25463] = { -- Pair of Ivory Tusks
[18334] = 100,
},
[25767] = { -- Raliq's Debt
[18585] = 100,
},
[25768] = { -- Coosh'coosh's Debt
[18586] = 100,
},
[25769] = { -- Floon's Debt
[18588] = 100,
},
[25891] = { -- Pristine Shimmerscale Eel
[18750] = DropKeys.WOWHEAD,
},
[28527] = { -- Mana Wraith Essence
[18864] = 60,
},
[28635] = { -- Sunfury Arcanist Robes
-- According to Wowhead comments these were very low in older versions of the game,
-- and wowhead's data shows very low because many non-quest kills, but in reality
-- they were among the quests to have drop rates significantly boosted around 2.4.0,
-- so in Classic versions they're pretty high. Buuut not the 100 cmangos claims.
[20134] = 50,
},
[28636] = { -- Sunfury Researcher Gloves
[20136] = 50,
},
[28637] = { -- Sunfury Guardsman Medallion
[18850] = 50,
},
[28667] = { -- Flawless Greater Windroc Beak
[17129] = DropKeys.WOWHEAD,
},
[28668] = { -- Aged Clefthoof Blubber
[17133] = DropKeys.WOWHEAD,
},
[28970] = { -- Nether Dragon Essence
-- Drakes definitely have lower rates than Dragons, but Dragons are correctly
-- around 80% as cmangos claims, so only including a correction for Drakes
[18877] = 60,
},
[29161] = { -- Void Ridge Soul Shard
[17014] = 100,
[19527] = 100,
},
[29163] = { -- Raw Farahlite
[18885] = 100,
[18886] = 100,
[20202] = 100,
},
[29338] = { -- Loathsome Remnant
[20512] = 50,
[21065] = 50,
},
[29365] = { -- Smithing Hammer
[20409] = 100,
},
[29480] = { -- Parched Hydra Sample
[20324] = DropKeys.WOWHEAD,
},
[29481] = { -- Withered Bog Lord Sample
[19402] = DropKeys.WOWHEAD,
},
[29591] = { -- Prepared Ethereum Wrapping
[20458] = DropKeys.WOWHEAD,
[20459] = DropKeys.WOWHEAD,
},
[29797] = { -- Orders From Kael'thas
[18860] = DropKeys.WOWHEAD,
[20285] = DropKeys.WOWHEAD,
[20326] = DropKeys.WOWHEAD,
},
[29822] = { -- Fragment of Dimensius
[18869] = 40,
[18870] = 40,
},
[30184] = { -- Thunderlord Dire Wolf Tail
[20748] = 100,
},
[30327] = { -- Bonechewer Blood
[16876] = DropKeys.WOWHEAD,
[16925] = DropKeys.WOWHEAD,
[18952] = DropKeys.WOWHEAD,
[19701] = DropKeys.WOWHEAD,
},
[30743] = { -- Proto-Nether Drake Essence
[20021] = 100,
},
[30782] = { -- Adolescent Nether Drake Essence
[20021] = 100,
},
[30783] = { -- Mature Nether Drake Essence
[20021] = 100,
},
[30791] = { -- Silkwing Cocoon
-- Lots of comments claim these have different rates depending on how you interact with the
-- mob, like it's a scripted thing. I tried every single way many many times and did not see
-- a difference in drop rate between methods. But it is definitely not the 80% cmangos claims. -ytt
[20747] = 30,
},
[30792] = { -- Iridescent Wing
[21373] = 60,
[21839] = 60,
},
[30798] = { -- Extra Sharp Daggermaw Tooth
[20751] = DropKeys.WOWHEAD,
},
[30819] = { -- Felfire Spleen
[21408] = DropKeys.WOWHEAD,
},
[30867] = { -- Overdeveloped Felfire Gizzard
[21462] = DropKeys.WOWHEAD,
},
[31119] = { -- Wyrmcult Net
[21809] = 70,
},
[31132] = { -- Crust Burster Venom Gland
[21380] = DropKeys.WOWHEAD,
[21381] = DropKeys.WOWHEAD,
[21849] = DropKeys.WOWHEAD,
[22466] = DropKeys.WOWHEAD,
},
[31316] = { -- Lianthe's Key
-- cmangos claims nearly 100%, definitely lower than that, but nowhere near as low as wowhead's ~3%. more like 20%, tested pretty well
[19792] = 20,
[19796] = 20,
[19806] = 20,
},
[31651] = { -- Bladespire Totem
[20765] = DropKeys.WOWHEAD,
[20766] = DropKeys.WOWHEAD,
},
[31812] = { -- Doom Skull
[21242] = DropKeys.WOWHEAD,
[21285] = DropKeys.WOWHEAD,
},
[31814] = { -- Mature Bone Sifter Carcass
[22482] = 100,
},
[33087] = { -- Black Dragonkin Essence
[4328] = 100,
[4329] = 100,
[4331] = 100,
},
}
QuestieItemDropCorrections.Wotlk = {
}
QuestieItemDropCorrections.Cata = {
}
QuestieItemDropCorrections.MoP = {
[97530] = { -- Kor'kron Lumber
[70997] = 100,
[70998] = 100,
[70999] = 100,
[71001] = 100,
},
[97543] = { -- Kor'kron Stone
[71007] = 100,
[71009] = 100,
[71187] = 100,
[71188] = 100,
},
[97544] = { -- Kor'kron Oil
[71000] = 100,
[71002] = 100,
[71005] = 100,
[71006] = 100,
},
[97545] = { -- Kor'kron Meat
[71010] = 100,
[71011] = 100,
[71012] = 100,
[73590] = 100,
},
}
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,146 +0,0 @@
---@class DropDB
local DropDB = QuestieLoader:CreateModule("DropDB")
-------------------------
--Import modules.
-------------------------
---@type QuestieDB
local QuestieDB = QuestieLoader:ImportModule("QuestieDB")
---@type l10n
local l10n = QuestieLoader:ImportModule("l10n")
---@type Expansions
local Expansions = QuestieLoader:ImportModule("Expansions")
---@type QuestieItemDropCorrections
local QuestieItemDropCorrections = QuestieLoader:ImportModule("QuestieItemDropCorrections")
---@type QuestieClassicItemDrops
local QuestieClassicItemDrops = QuestieLoader:ImportModule("QuestieClassicItemDrops")
---@type QuestieTBCItemDrops
local QuestieTBCItemDrops = QuestieLoader:ImportModule("QuestieTBCItemDrops")
---@type QuestieWotlkItemDrops
local QuestieWotlkItemDrops = QuestieLoader:ImportModule("QuestieWotlkItemDrops")
---@type QuestieCataItemDrops
local QuestieCataItemDrops = QuestieLoader:ImportModule("QuestieCataItemDrops")
---@type QuestieMopItemDrops
local QuestieMopItemDrops = QuestieLoader:ImportModule("QuestieMopItemDrops")
DropDB.tableWowhead = nil
DropDB.tablePserver = nil
DropDB.tableCorrections = nil
DropDB.sourcePserver = "" -- this tracks which pserv DB is loaded so we can display the correct icon in debug mode
DropDB.correctionKeys = { -- all keys must be negative or they'll be parsed as real data
WOWHEAD = -1,
PSERVER = -2,
}
function DropDB:Initialize()
if Questie.IsClassic then
-- Wowhead Classic data was gathered with the SoD QuestieDB, so SoD IDs are included as well;
-- this should not affect Era players because the Era DB will never reference those IDs
DropDB.tableWowhead = loadstring(QuestieClassicItemDrops.wowheadData)()
DropDB.tablePserver = loadstring(QuestieClassicItemDrops.cmangosData)()
DropDB.sourcePserver = "cmangos"
elseif Questie.IsTBC then
DropDB.tableWowhead = loadstring(QuestieTBCItemDrops.wowheadData)()
DropDB.tablePserver = loadstring(QuestieTBCItemDrops.cmangosData)()
DropDB.sourcePserver = "cmangos"
elseif Questie.IsWotlk then
DropDB.tableWowhead = loadstring(QuestieWotlkItemDrops.wowheadData)()
DropDB.tablePserver = loadstring(QuestieWotlkItemDrops.cmangosData)()
DropDB.sourcePserver = "cmangos"
elseif Questie.IsCata then
DropDB.tableWowhead = loadstring(QuestieCataItemDrops.wowheadData)()
DropDB.tablePserver = loadstring(QuestieCataItemDrops.mangos3Data)()
DropDB.sourcePserver = "mangos3"
elseif Questie.IsMoP then
DropDB.tableWowhead = loadstring(QuestieMopItemDrops.wowheadData)()
DropDB.tablePserver = loadstring(QuestieCataItemDrops.mangos3Data)()
DropDB.sourcePserver = "mangos3"
-- we use cata mangos3 data for mop instead because mop DBs are so spotty;
-- this means mop-only quests will use wowhead data exclusively
else
Questie.Error("ItemDrops: Unknown Expansion!")
end
-- Corrections are loaded starting from Era; this means Era corrections are still
-- applied to later expansions unless overridden by later expansions' corrections
DropDB.tableCorrections = QuestieItemDropCorrections.Era
if Expansions.Current >= Expansions.Tbc then
for k,v in pairs(QuestieItemDropCorrections.Tbc) do DropDB.tableCorrections[k] = v end
if Expansions.Current >= Expansions.Wotlk then
for k,v in pairs(QuestieItemDropCorrections.Wotlk) do DropDB.tableCorrections[k] = v end
if Expansions.Current >= Expansions.Cata then
for k,v in pairs(QuestieItemDropCorrections.Cata) do DropDB.tableCorrections[k] = v end
if Expansions.Current >= Expansions.MoP then
for k,v in pairs(QuestieItemDropCorrections.MoP) do DropDB.tableCorrections[k] = v end
end
end
end
end
end
-- To obtain final drop rate data, query QuestieDB.GetItemDroprate(ItemID,NpcID)
-- That function will query DropDB to ascertain the real value.
-- DropDB then determines which data to provide based upon current expansion level and other rules.
-- The number provided is a float; it is up to the end user to determine how to display that.
-- 100.0 would be 100%, 47.254 would be 47.254%, etc.
-- Return values are {dropRate, sourceDB} as {float, str}
-- This function will return nil if the DB is not loaded properly or there is no data match.
-- Be sure you can handle successful nil returns!
---@param itemId ItemId
---@param npcId NpcId
---@return table<number, string>
function DropDB.GetItemDroprate(itemId, npcId)
-- The hierarchy for drop rate data is as follows:
-- 1. Manual Corrections > 2. Pserver Data > 3. Wowhead Data
-- We check each database in order for item:npc matches, and we report the first match we find.
-- Wowhead data consists of the full drop rates (every NPC listed on wowhead for an item), for all items
-- contained in either item objectives or RequiredSourceItems for all quests in that expansion's compiled Questie DB.
-- Pserver (Cmangos/Mangos3) data only consists of items that those databases believe drop only while on a quest (internally specified with a negative drop value).
-- Wowhead's crowdsourced drop data is likely more accurate for items that always drop, but unfortunately, while their looter addon does
-- record active quests when reporting data, item drop rates are not filtered on Wowhead's site to show data only from those on the quest.
-- While some private server data might be wrong for quest items, it is generally far more accurate than Wowhead for quest-only items.
-- For eggregious outliers, we can make manual corrections that take full priority.
-- It is worth noting that in Questie, we only display item drop data on NPCs that QuestieDB itself believes actually drops the item.
-- So if we've manually excluded an NPC from dropping the item in QuestieDB corrections (like for a rare mob), then even if that drop
-- data exists in our drop data DB, it won't ever actually be shown on NPC tooltips, because Questie itself doesn't think it should.
-- This function will still return data for those NPCs in case external addons request it, Questie simply won't ever ask this function to.
if DropDB.tableCorrections and DropDB.tableCorrections[itemId] and DropDB.tableCorrections[itemId][npcId] then
if DropDB.tableCorrections[itemId][npcId] >= 0 then -- If the correction is not a reference, use its value
return {DropDB.tableCorrections[itemId][npcId],"questie"}
end
-- If the correction is a reference to a different DB, use data from that DB instead
if DropDB.tableCorrections[itemId][npcId] == DropDB.correctionKeys.WOWHEAD and DropDB.tableWowhead and DropDB.tableWowhead[itemId] and DropDB.tableWowhead[itemId][npcId] then
return {DropDB.tableWowhead[itemId][npcId],"wowhead"}
elseif DropDB.tableCorrections[itemId][npcId] == DropDB.correctionKeys.PSERVER and DropDB.tablePserver and DropDB.tablePserver[itemId] and DropDB.tablePserver[itemId][npcId] then
return {DropDB.tablePserver[itemId][npcId],DropDB.sourcePserver}
end
Questie.Debug(Questie.DEBUG_CRITICAL,
"ItemDrops: Correction data for item " .. tostring(itemId) .. " dropped by NPC " .. tostring(npcId) .. " was invalid!")
end
-- Rather than these being elseif, they're separate, so that if we find a correction but it's invalid for whatever reason,
-- we still have a chance to fall back rather than returning nil. This may happen for instance if we have a correction
-- that points to Wowhead, but the loaded Wowhead DB doesn't have data for that item:npc pair.
if DropDB.tablePserver and DropDB.tablePserver[itemId] and DropDB.tablePserver[itemId][npcId] then
return {DropDB.tablePserver[itemId][npcId],DropDB.sourcePserver}
elseif DropDB.tableWowhead and DropDB.tableWowhead[itemId] and DropDB.tableWowhead[itemId][npcId] then
return {DropDB.tableWowhead[itemId][npcId],"wowhead"}
end
return nil
end
File diff suppressed because it is too large Load Diff
@@ -1,375 +0,0 @@
-- File was auto-generated by generateFactionTemplate.py
---@type QuestieDB
local QuestieDB = QuestieLoader:ImportModule("QuestieDB")
---@type table<FactionId, EnemyGroup>
QuestieDB.factionTemplate = {
[1] = 12,
[2] = 10,
[3] = 12,
[4] = 12,
[5] = 10,
[6] = 10,
[7] = 0,
[10] = 0,
[11] = 12,
[12] = 4,
[14] = 1,
[15] = 0,
[16] = 1,
[17] = 1,
[18] = 1,
[19] = 1,
[20] = 1,
[21] = 1,
[22] = 1,
[23] = 4,
[24] = 1,
[25] = 0,
[26] = 1,
[27] = 1,
[28] = 1,
[29] = 2,
[30] = 1,
[31] = 0,
[32] = 0,
[33] = 0,
[34] = 0,
[35] = 0,
[36] = 0,
[37] = 1,
[38] = 1,
[39] = 1,
[40] = 1,
[41] = 1,
[42] = 0,
[43] = 0,
[44] = 1,
[45] = 1,
[46] = 1,
[47] = 1,
[48] = 1,
[49] = 1,
[50] = 1,
[51] = 1,
[52] = 0,
[53] = 12,
[54] = 1,
[55] = 4,
[56] = 12,
[57] = 12,
[58] = 0,
[59] = 1,
[60] = 1,
[61] = 1,
[62] = 1,
[63] = 1,
[64] = 4,
[65] = 0,
[66] = 1,
[67] = 1,
[68] = 2,
[69] = 0,
[70] = 1,
[71] = 10,
[72] = 1,
[73] = 1,
[74] = 1,
[76] = 4,
[77] = 0,
[78] = 1,
[79] = 12,
[80] = 4,
[81] = 1,
[82] = 1,
[83] = 2,
[84] = 4,
[85] = 10,
[86] = 0,
[87] = 1,
[88] = 4,
[89] = 1,
[90] = 1,
[91] = 1,
[92] = 1,
[93] = 1,
[94] = 0,
[95] = 1,
[96] = 0,
[97] = 0,
[98] = 10,
[99] = 0,
[100] = 9,
[101] = 4,
[102] = 2,
[103] = 1,
[104] = 2,
[105] = 10,
[106] = 10,
[107] = 1,
[108] = 0,
[109] = 1,
[110] = 1,
[111] = 1,
[112] = 1,
[113] = 0,
[114] = 1,
[115] = 12,
[116] = 10,
[118] = 2,
[119] = 1,
[120] = 0,
[121] = 8,
[122] = 4,
[123] = 4,
[124] = 4,
[125] = 2,
[126] = 2,
[127] = 1,
[128] = 1,
[129] = 1,
[130] = 1,
[131] = 1,
[132] = 1,
[133] = 1,
[134] = 1,
[148] = 1,
[149] = 0,
[150] = 12,
[151] = 4,
[152] = 1,
[153] = 0,
[154] = 1,
[168] = 1,
[188] = 0,
[189] = 0,
[190] = 0,
[208] = 0,
[209] = 0,
[210] = 12,
[230] = 1,
[231] = 8,
[232] = 8,
[233] = 1,
[250] = 8,
[270] = 1,
[290] = 0,
[310] = 1,
[311] = 0,
[312] = 1,
[330] = 0,
[350] = 0,
[370] = 1,
[371] = 4,
[390] = 0,
[410] = 1,
[411] = 1,
[412] = 2,
[413] = 1,
[414] = 1,
[415] = 1,
[416] = 0,
[430] = 0,
[450] = 1,
[470] = 1,
[471] = 0,
[472] = 1,
[473] = 0,
[474] = 0,
[475] = 8,
[494] = 1,
[495] = 8,
[514] = 1,
[534] = 0,
[554] = 7,
[574] = 1,
[575] = 1,
[594] = 0,
[614] = 0,
[634] = 0,
[635] = 0,
[636] = 1,
[637] = 8,
[654] = 1,
[655] = 5,
[674] = 0,
[694] = 4,
[695] = 0,
[714] = 0,
[734] = 0,
[735] = 0,
[736] = 1,
[754] = 1,
[774] = 0,
[775] = 0,
[776] = 0,
[777] = 0,
[778] = 1,
[794] = 0,
[795] = 1,
[814] = 0,
[834] = 1,
[854] = 8,
[855] = 0,
[874] = 4,
[875] = 4,
[876] = 2,
[877] = 10,
[894] = 4,
[914] = 0,
[934] = 1,
[954] = 1,
[974] = 1,
[994] = 0,
[995] = 2,
[996] = 8,
[1014] = 0,
[1015] = 0,
[1034] = 2,
[1054] = 12,
[1055] = 4,
[1074] = 2,
[1075] = 4,
[1076] = 4,
[1077] = 4,
[1078] = 4,
[1080] = 0,
[1081] = 1,
[1094] = 0,
[1095] = 0,
[1096] = 12,
[1097] = 4,
[1114] = 1,
[1134] = 10,
[1154] = 10,
[1174] = 2,
[1194] = 0,
[1214] = 10,
[1215] = 2,
[1216] = 12,
[1217] = 4,
[1234] = 1,
[1235] = 1,
[1236] = 1,
[1254] = 8,
[1274] = 4,
[1275] = 2,
[1294] = 1,
[1314] = 2,
[1315] = 4,
[1334] = 4,
[1335] = 2,
[1354] = 0,
[1355] = 0,
[1374] = 1,
[1375] = 9,
[1394] = 1,
[1395] = 1,
[1414] = 4,
[1415] = 2,
[1434] = 1,
[1454] = 0,
[1474] = 0,
[1475] = 0,
[1494] = 2,
[1495] = 10,
[1496] = 2,
[1514] = 4,
[1515] = 2,
[1534] = 4,
[1554] = 8,
[1555] = 0,
[1574] = 0,
[1575] = 12,
[1576] = 4,
[1577] = 4,
[1594] = 12,
[1595] = 10,
[1596] = 12,
[1597] = 10,
[1598] = 2,
[1599] = 4,
[1600] = 8,
[1601] = 0,
[1605] = 1,
[1606] = 2,
[1607] = 2,
[1608] = 8,
[1611] = 4,
[1612] = 2,
[1613] = 0,
[1614] = 1,
[1615] = 8,
[1616] = 0,
[1617] = 1,
[1618] = 12,
[1619] = 10,
[1620] = 15,
[1621] = 4,
[1622] = 4,
[1624] = 8,
[1625] = 8,
[1626] = 1,
[1630] = 15,
[1634] = 0,
[1635] = 0,
[1641] = 2,
[1642] = 4,
[1673] = 0,
[1676] = 0,
[1677] = 0,
[1878] = 1,
[3149] = 2,
[3150] = 0,
[3151] = 4,
[3152] = 0,
[3267] = 1,
[3386] = 0,
[3387] = 4,
[3388] = 2,
[3389] = 1,
[3421] = 0,
[3422] = 15,
[3425] = 8,
[3426] = 14,
[3427] = 15,
[3434] = 0,
[3439] = 8,
[3440] = 0,
[3441] = 0,
[3442] = 0,
[3443] = 1,
[3444] = 9,
[3445] = 8,
[3447] = 8,
[3456] = 8,
[3461] = 1,
[3462] = 0,
[3463] = 1,
[3464] = 0,
[3465] = 0,
[3472] = 1,
[3473] = 1,
[3474] = 8,
[3492] = 4,
[3493] = 1,
[3495] = 4,
[3496] = 8,
[3497] = 1,
[3498] = 8,
[3499] = 1,
[3532] = 0,
[3533] = 0,
[3535] = 1,
[3536] = 0,
[3539] = 8,
[3542] = 1,
[3543] = 8,
[3546] = 0,
[3548] = 0,
[3549] = 1,
[3551] = 1,
[3552] = 8,
[3559] = 8,
}
File diff suppressed because it is too large Load Diff
@@ -1,617 +0,0 @@
-- File was auto-generated by generateFactionTemplate.py
---@type QuestieDB
local QuestieDB = QuestieLoader:ImportModule("QuestieDB")
---@type table<FactionId, EnemyGroup>
QuestieDB.factionTemplate = {
[1] = 12,
[2] = 10,
[3] = 12,
[4] = 12,
[5] = 10,
[6] = 10,
[7] = 0,
[10] = 0,
[11] = 12,
[12] = 4,
[14] = 1,
[15] = 0,
[16] = 1,
[17] = 1,
[18] = 1,
[19] = 1,
[20] = 1,
[21] = 1,
[22] = 1,
[23] = 4,
[24] = 1,
[25] = 0,
[26] = 1,
[27] = 1,
[28] = 1,
[29] = 2,
[30] = 1,
[31] = 0,
[32] = 0,
[33] = 0,
[34] = 0,
[35] = 0,
[36] = 0,
[37] = 1,
[38] = 1,
[39] = 1,
[40] = 1,
[41] = 1,
[42] = 0,
[43] = 0,
[44] = 1,
[45] = 1,
[46] = 1,
[47] = 1,
[48] = 1,
[49] = 1,
[50] = 1,
[51] = 1,
[52] = 0,
[53] = 12,
[54] = 1,
[55] = 4,
[56] = 12,
[57] = 12,
[58] = 0,
[59] = 1,
[60] = 1,
[61] = 1,
[62] = 1,
[63] = 1,
[64] = 4,
[65] = 0,
[66] = 1,
[67] = 1,
[68] = 2,
[69] = 0,
[70] = 1,
[71] = 10,
[72] = 1,
[73] = 1,
[74] = 1,
[76] = 4,
[77] = 0,
[78] = 1,
[79] = 12,
[80] = 4,
[81] = 1,
[82] = 1,
[83] = 2,
[84] = 4,
[85] = 10,
[86] = 0,
[87] = 1,
[88] = 4,
[89] = 1,
[90] = 1,
[91] = 1,
[92] = 1,
[93] = 1,
[94] = 0,
[95] = 1,
[96] = 0,
[97] = 0,
[98] = 10,
[99] = 0,
[100] = 9,
[101] = 4,
[102] = 2,
[103] = 1,
[104] = 2,
[105] = 10,
[106] = 10,
[107] = 1,
[108] = 0,
[109] = 1,
[110] = 1,
[111] = 1,
[112] = 1,
[113] = 0,
[114] = 1,
[115] = 12,
[116] = 10,
[118] = 2,
[119] = 1,
[120] = 0,
[121] = 8,
[122] = 4,
[123] = 4,
[124] = 4,
[125] = 2,
[126] = 2,
[127] = 1,
[128] = 1,
[129] = 1,
[130] = 1,
[131] = 1,
[132] = 1,
[133] = 1,
[134] = 1,
[148] = 1,
[149] = 0,
[150] = 12,
[151] = 4,
[152] = 1,
[153] = 0,
[154] = 1,
[168] = 1,
[188] = 0,
[189] = 0,
[190] = 0,
[208] = 0,
[209] = 0,
[210] = 12,
[230] = 1,
[231] = 8,
[232] = 8,
[233] = 1,
[250] = 8,
[270] = 1,
[290] = 0,
[310] = 1,
[311] = 0,
[312] = 1,
[330] = 0,
[350] = 0,
[370] = 1,
[371] = 4,
[390] = 0,
[410] = 1,
[411] = 1,
[412] = 2,
[413] = 1,
[414] = 1,
[415] = 1,
[416] = 0,
[430] = 0,
[450] = 1,
[470] = 1,
[471] = 0,
[472] = 1,
[473] = 0,
[474] = 0,
[475] = 8,
[494] = 1,
[495] = 8,
[514] = 1,
[534] = 0,
[554] = 7,
[574] = 1,
[575] = 1,
[594] = 0,
[614] = 0,
[634] = 0,
[635] = 0,
[636] = 1,
[637] = 8,
[654] = 1,
[655] = 5,
[674] = 0,
[694] = 4,
[695] = 0,
[714] = 0,
[734] = 0,
[735] = 0,
[736] = 1,
[754] = 1,
[774] = 0,
[775] = 0,
[776] = 0,
[777] = 0,
[778] = 1,
[794] = 0,
[795] = 1,
[814] = 0,
[834] = 1,
[854] = 8,
[855] = 0,
[874] = 4,
[875] = 4,
[876] = 2,
[877] = 10,
[894] = 4,
[914] = 0,
[934] = 1,
[954] = 1,
[974] = 1,
[994] = 0,
[995] = 2,
[996] = 8,
[1014] = 0,
[1015] = 0,
[1034] = 2,
[1054] = 12,
[1055] = 4,
[1074] = 2,
[1075] = 4,
[1076] = 4,
[1077] = 4,
[1078] = 4,
[1080] = 0,
[1081] = 1,
[1094] = 0,
[1095] = 0,
[1096] = 12,
[1097] = 4,
[1114] = 1,
[1134] = 10,
[1154] = 10,
[1174] = 2,
[1194] = 0,
[1214] = 10,
[1215] = 2,
[1216] = 12,
[1217] = 4,
[1234] = 1,
[1235] = 1,
[1236] = 1,
[1254] = 8,
[1274] = 4,
[1275] = 2,
[1294] = 1,
[1314] = 2,
[1315] = 4,
[1334] = 4,
[1335] = 2,
[1354] = 0,
[1355] = 0,
[1374] = 1,
[1375] = 9,
[1394] = 1,
[1395] = 1,
[1414] = 4,
[1415] = 2,
[1434] = 1,
[1454] = 0,
[1474] = 0,
[1475] = 0,
[1494] = 2,
[1495] = 10,
[1496] = 2,
[1514] = 4,
[1515] = 2,
[1534] = 4,
[1554] = 8,
[1555] = 0,
[1574] = 0,
[1575] = 12,
[1576] = 4,
[1577] = 4,
[1594] = 12,
[1595] = 10,
[1596] = 12,
[1597] = 10,
[1598] = 2,
[1599] = 4,
[1600] = 8,
[1601] = 0,
[1602] = 2,
[1603] = 10,
[1604] = 2,
[1605] = 1,
[1606] = 2,
[1607] = 2,
[1608] = 8,
[1610] = 10,
[1611] = 4,
[1612] = 2,
[1613] = 0,
[1614] = 1,
[1615] = 8,
[1616] = 0,
[1617] = 1,
[1618] = 12,
[1619] = 10,
[1620] = 15,
[1621] = 4,
[1622] = 4,
[1623] = 2,
[1624] = 8,
[1625] = 8,
[1626] = 1,
[1627] = 2,
[1628] = 2,
[1629] = 12,
[1630] = 15,
[1634] = 0,
[1635] = 0,
[1636] = 2,
[1637] = 2,
[1638] = 4,
[1639] = 12,
[1640] = 4,
[1641] = 2,
[1642] = 4,
[1643] = 1,
[1644] = 4,
[1645] = 12,
[1646] = 4,
[1647] = 12,
[1648] = 4,
[1649] = 4,
[1650] = 10,
[1651] = 2,
[1652] = 2,
[1653] = 2,
[1654] = 4,
[1655] = 4,
[1656] = 10,
[1657] = 2,
[1658] = 2,
[1659] = 8,
[1660] = 8,
[1661] = 8,
[1662] = 1,
[1663] = 1,
[1664] = 1,
[1665] = 8,
[1666] = 12,
[1667] = 4,
[1668] = 10,
[1669] = 2,
[1670] = 2,
[1671] = 4,
[1672] = 0,
[1673] = 0,
[1674] = 0,
[1675] = 0,
[1676] = 0,
[1677] = 0,
[1678] = 1,
[1679] = 1,
[1680] = 0,
[1681] = 1,
[1682] = 0,
[1683] = 0,
[1684] = 0,
[1685] = 4,
[1686] = 4,
[1687] = 1,
[1688] = 0,
[1689] = 0,
[1690] = 0,
[1691] = 0,
[1692] = 1,
[1693] = 1,
[1694] = 4,
[1695] = 2,
[1696] = 0,
[1697] = 1,
[1698] = 4,
[1699] = 4,
[1700] = 4,
[1701] = 7,
[1702] = 7,
[1703] = 0,
[1704] = 1,
[1705] = 1,
[1706] = 1,
[1707] = 8,
[1708] = 8,
[1709] = 8,
[1710] = 8,
[1711] = 1,
[1712] = 1,
[1713] = 1,
[1714] = 7,
[1715] = 1,
[1716] = 8,
[1717] = 0,
[1718] = 0,
[1719] = 8,
[1720] = 1,
[1721] = 12,
[1722] = 4,
[1723] = 4,
[1724] = 4,
[1725] = 8,
[1726] = 0,
[1727] = 8,
[1728] = 8,
[1729] = 2,
[1730] = 8,
[1731] = 8,
[1732] = 4,
[1733] = 4,
[1734] = 2,
[1735] = 2,
[1736] = 0,
[1737] = 4,
[1738] = 1,
[1739] = 1,
[1740] = 1,
[1741] = 8,
[1742] = 1,
[1743] = 0,
[1744] = 0,
[1745] = 2,
[1746] = 0,
[1747] = 0,
[1748] = 1,
[1749] = 0,
[1750] = 1,
[1751] = 1,
[1752] = 7,
[1753] = 7,
[1754] = 7,
[1755] = 0,
[1756] = 0,
[1757] = 0,
[1758] = 0,
[1759] = 0,
[1760] = 0,
[1761] = 15,
[1762] = 7,
[1763] = 7,
[1764] = 7,
[1765] = 7,
[1766] = 0,
[1767] = 0,
[1768] = 15,
[1769] = 15,
[1770] = 0,
[1771] = 1,
[1772] = 1,
[1773] = 0,
[1774] = 0,
[1775] = 8,
[1776] = 0,
[1777] = 0,
[1778] = 0,
[1779] = 0,
[1780] = 1,
[1781] = 1,
[1782] = 1,
[1783] = 1,
[1784] = 1,
[1785] = 1,
[1786] = 1,
[1787] = 1,
[1788] = 8,
[1789] = 7,
[1790] = 1,
[1791] = 1,
[1792] = 1,
[1793] = 7,
[1794] = 0,
[1795] = 0,
[1796] = 1,
[1797] = 0,
[1798] = 1,
[1799] = 1,
[1800] = 1,
[1801] = 10,
[1802] = 12,
[1803] = 4,
[1804] = 2,
[1805] = 0,
[1806] = 8,
[1807] = 8,
[1808] = 1,
[1809] = 1,
[1810] = 1,
[1811] = 1,
[1812] = 8,
[1813] = 1,
[1814] = 1,
[1815] = 1,
[1816] = 0,
[1818] = 0,
[1819] = 12,
[1820] = 0,
[1821] = 0,
[1822] = 0,
[1823] = 1,
[1824] = 0,
[1825] = 15,
[1826] = 1,
[1827] = 1,
[1828] = 0,
[1829] = 0,
[1830] = 0,
[1831] = 0,
[1832] = 0,
[1833] = 0,
[1834] = 15,
[1835] = 10,
[1836] = 8,
[1837] = 8,
[1838] = 0,
[1839] = 1,
[1840] = 0,
[1841] = 0,
[1842] = 1,
[1843] = 1,
[1844] = 0,
[1845] = 0,
[1846] = 1,
[1847] = 1,
[1848] = 1,
[1849] = 1,
[1850] = 0,
[1851] = 8,
[1852] = 0,
[1853] = 1,
[1854] = 0,
[1855] = 0,
[1856] = 0,
[1857] = 8,
[1858] = 0,
[1859] = 0,
[1860] = 0,
[1862] = 1,
[1863] = 1,
[1864] = 1,
[1865] = 1,
[1866] = 0,
[1867] = 0,
[1868] = 0,
[1869] = 0,
[1870] = 0,
[1871] = 1,
[1872] = 0,
[1873] = 1,
[1874] = 0,
[1875] = 0,
[1876] = 0,
[1877] = 1,
[1878] = 1,
[1879] = 1,
[1880] = 1,
[1881] = 1,
[1882] = 1,
[1883] = 7,
[1890] = 1,
[1896] = 8,
[1909] = 9,
[1913] = 0,
[1916] = 0,
[1930] = 0,
[1931] = 0,
[1934] = 4,
[1935] = 2,
[1936] = 0,
[1937] = 0,
[1938] = 0,
[1939] = 0,
[1940] = 0,
[1941] = 0,
[1942] = 0,
[1943] = 0,
[1944] = 0,
[1945] = 0,
[1951] = 12,
[1952] = 0,
[1956] = 0,
[1957] = 0,
[1958] = 1,
[1959] = 0,
[1960] = 0,
[1961] = 0,
[1962] = 1,
[1963] = 1,
[1964] = 1,
[1965] = 1,
[1966] = 0,
[1967] = 0,
[1971] = 0,
[1972] = 0,
[1990] = 1,
[1992] = 9,
[1995] = 2,
[1997] = 4,
[1998] = 1,
[2029] = 1,
[2074] = 0,
[3149] = 2,
[3150] = 0,
[3151] = 4,
[3152] = 0,
}
@@ -1,853 +0,0 @@
-- File was auto-generated by generateFactionTemplate.py
---@type QuestieDB
local QuestieDB = QuestieLoader:ImportModule("QuestieDB")
---@type table<FactionId, EnemyGroup>
QuestieDB.factionTemplate = {
[1] = 12,
[2] = 10,
[3] = 12,
[4] = 12,
[5] = 10,
[6] = 10,
[7] = 0,
[10] = 0,
[11] = 12,
[12] = 4,
[14] = 1,
[15] = 0,
[16] = 1,
[17] = 1,
[18] = 1,
[19] = 1,
[20] = 1,
[21] = 1,
[22] = 1,
[23] = 4,
[24] = 1,
[25] = 0,
[26] = 1,
[27] = 1,
[28] = 1,
[29] = 2,
[30] = 1,
[31] = 0,
[32] = 0,
[33] = 0,
[34] = 0,
[35] = 0,
[36] = 0,
[37] = 1,
[38] = 1,
[39] = 1,
[40] = 1,
[41] = 1,
[42] = 0,
[43] = 0,
[44] = 1,
[45] = 1,
[46] = 1,
[47] = 1,
[48] = 1,
[49] = 1,
[50] = 1,
[51] = 1,
[52] = 0,
[53] = 12,
[54] = 1,
[55] = 4,
[56] = 12,
[57] = 12,
[58] = 0,
[59] = 1,
[60] = 1,
[61] = 1,
[62] = 1,
[63] = 1,
[64] = 4,
[65] = 0,
[66] = 1,
[67] = 1,
[68] = 2,
[69] = 0,
[70] = 1,
[71] = 10,
[72] = 1,
[73] = 1,
[74] = 1,
[76] = 4,
[77] = 0,
[78] = 1,
[79] = 12,
[80] = 4,
[81] = 1,
[82] = 1,
[83] = 2,
[84] = 4,
[85] = 10,
[86] = 0,
[87] = 1,
[88] = 4,
[89] = 1,
[90] = 1,
[91] = 1,
[92] = 1,
[93] = 1,
[94] = 0,
[95] = 1,
[96] = 0,
[97] = 0,
[98] = 10,
[99] = 0,
[100] = 9,
[101] = 4,
[102] = 2,
[103] = 1,
[104] = 2,
[105] = 10,
[106] = 10,
[107] = 1,
[108] = 0,
[109] = 1,
[110] = 1,
[111] = 1,
[112] = 1,
[113] = 0,
[114] = 1,
[115] = 12,
[116] = 10,
[118] = 2,
[119] = 1,
[120] = 0,
[121] = 8,
[122] = 4,
[123] = 4,
[124] = 4,
[125] = 2,
[126] = 2,
[127] = 1,
[128] = 1,
[129] = 1,
[130] = 1,
[131] = 1,
[132] = 1,
[133] = 1,
[134] = 1,
[148] = 1,
[149] = 0,
[150] = 12,
[151] = 4,
[152] = 1,
[153] = 0,
[154] = 1,
[168] = 1,
[188] = 0,
[189] = 0,
[190] = 0,
[208] = 0,
[209] = 0,
[210] = 12,
[230] = 1,
[231] = 8,
[232] = 8,
[233] = 1,
[250] = 8,
[270] = 1,
[290] = 0,
[310] = 1,
[311] = 0,
[312] = 1,
[330] = 0,
[350] = 0,
[370] = 1,
[371] = 4,
[390] = 0,
[410] = 1,
[411] = 1,
[412] = 2,
[413] = 1,
[414] = 1,
[415] = 1,
[416] = 0,
[430] = 0,
[450] = 1,
[470] = 1,
[471] = 0,
[472] = 1,
[473] = 0,
[474] = 0,
[475] = 8,
[494] = 1,
[495] = 8,
[514] = 1,
[534] = 0,
[554] = 7,
[574] = 1,
[575] = 1,
[594] = 0,
[614] = 0,
[634] = 0,
[635] = 0,
[636] = 1,
[637] = 8,
[654] = 1,
[655] = 5,
[674] = 0,
[694] = 4,
[695] = 0,
[714] = 0,
[734] = 0,
[735] = 0,
[736] = 1,
[754] = 1,
[774] = 0,
[775] = 0,
[776] = 0,
[777] = 0,
[778] = 1,
[794] = 0,
[795] = 1,
[814] = 0,
[834] = 1,
[854] = 8,
[855] = 0,
[874] = 4,
[875] = 4,
[876] = 2,
[877] = 10,
[894] = 4,
[914] = 0,
[934] = 1,
[954] = 1,
[974] = 1,
[994] = 0,
[995] = 2,
[996] = 8,
[1014] = 0,
[1015] = 0,
[1034] = 2,
[1054] = 12,
[1055] = 4,
[1074] = 2,
[1075] = 4,
[1076] = 4,
[1077] = 4,
[1078] = 4,
[1080] = 0,
[1081] = 1,
[1094] = 0,
[1095] = 0,
[1096] = 12,
[1097] = 4,
[1114] = 1,
[1134] = 10,
[1154] = 10,
[1174] = 2,
[1194] = 0,
[1214] = 10,
[1215] = 2,
[1216] = 12,
[1217] = 4,
[1234] = 1,
[1235] = 1,
[1236] = 1,
[1254] = 8,
[1274] = 4,
[1275] = 2,
[1294] = 1,
[1314] = 2,
[1315] = 4,
[1334] = 4,
[1335] = 2,
[1354] = 0,
[1355] = 0,
[1374] = 1,
[1375] = 9,
[1394] = 1,
[1395] = 1,
[1414] = 4,
[1415] = 2,
[1434] = 1,
[1454] = 0,
[1474] = 0,
[1475] = 0,
[1494] = 2,
[1495] = 10,
[1496] = 2,
[1514] = 4,
[1515] = 2,
[1534] = 4,
[1554] = 8,
[1555] = 0,
[1574] = 0,
[1575] = 12,
[1576] = 4,
[1577] = 4,
[1594] = 12,
[1595] = 10,
[1596] = 12,
[1597] = 10,
[1598] = 2,
[1599] = 4,
[1600] = 8,
[1601] = 0,
[1602] = 2,
[1603] = 10,
[1604] = 2,
[1605] = 1,
[1606] = 2,
[1607] = 2,
[1608] = 8,
[1610] = 10,
[1611] = 4,
[1612] = 2,
[1613] = 0,
[1614] = 1,
[1615] = 8,
[1616] = 0,
[1617] = 1,
[1618] = 12,
[1619] = 10,
[1620] = 15,
[1621] = 4,
[1622] = 4,
[1623] = 2,
[1624] = 8,
[1625] = 8,
[1626] = 1,
[1627] = 2,
[1628] = 2,
[1629] = 12,
[1630] = 7,
[1634] = 0,
[1635] = 0,
[1636] = 2,
[1637] = 2,
[1638] = 4,
[1639] = 12,
[1640] = 4,
[1641] = 2,
[1642] = 4,
[1643] = 1,
[1644] = 4,
[1645] = 12,
[1646] = 4,
[1647] = 12,
[1648] = 4,
[1649] = 4,
[1650] = 10,
[1651] = 2,
[1652] = 2,
[1653] = 2,
[1654] = 4,
[1655] = 4,
[1656] = 10,
[1657] = 2,
[1658] = 2,
[1659] = 8,
[1660] = 8,
[1661] = 8,
[1662] = 1,
[1663] = 1,
[1664] = 1,
[1665] = 8,
[1666] = 12,
[1667] = 4,
[1668] = 10,
[1669] = 2,
[1670] = 2,
[1671] = 4,
[1672] = 0,
[1673] = 0,
[1674] = 0,
[1675] = 0,
[1676] = 0,
[1677] = 0,
[1678] = 1,
[1679] = 1,
[1680] = 0,
[1681] = 1,
[1682] = 0,
[1683] = 0,
[1684] = 0,
[1685] = 4,
[1686] = 4,
[1687] = 1,
[1688] = 0,
[1689] = 0,
[1690] = 0,
[1691] = 0,
[1692] = 1,
[1693] = 1,
[1694] = 4,
[1695] = 2,
[1696] = 0,
[1697] = 1,
[1698] = 4,
[1699] = 4,
[1700] = 4,
[1701] = 7,
[1702] = 7,
[1703] = 0,
[1704] = 1,
[1705] = 1,
[1706] = 1,
[1707] = 8,
[1708] = 8,
[1709] = 8,
[1710] = 8,
[1711] = 1,
[1712] = 1,
[1713] = 1,
[1714] = 7,
[1715] = 1,
[1716] = 8,
[1717] = 0,
[1718] = 0,
[1719] = 8,
[1720] = 1,
[1721] = 12,
[1722] = 4,
[1723] = 4,
[1724] = 4,
[1725] = 8,
[1726] = 0,
[1727] = 8,
[1728] = 8,
[1729] = 2,
[1730] = 8,
[1731] = 8,
[1732] = 4,
[1733] = 4,
[1734] = 2,
[1735] = 2,
[1736] = 0,
[1737] = 4,
[1738] = 1,
[1739] = 1,
[1740] = 1,
[1741] = 8,
[1742] = 1,
[1743] = 0,
[1744] = 0,
[1745] = 2,
[1746] = 0,
[1747] = 0,
[1748] = 1,
[1749] = 0,
[1750] = 1,
[1751] = 1,
[1752] = 7,
[1753] = 7,
[1754] = 7,
[1755] = 0,
[1756] = 0,
[1757] = 0,
[1758] = 0,
[1759] = 0,
[1760] = 0,
[1761] = 15,
[1762] = 7,
[1763] = 7,
[1764] = 7,
[1765] = 7,
[1766] = 0,
[1767] = 0,
[1768] = 15,
[1769] = 15,
[1770] = 0,
[1771] = 1,
[1772] = 1,
[1773] = 0,
[1774] = 0,
[1775] = 8,
[1776] = 0,
[1777] = 0,
[1778] = 0,
[1779] = 0,
[1780] = 1,
[1781] = 1,
[1782] = 1,
[1783] = 1,
[1784] = 1,
[1785] = 1,
[1786] = 1,
[1787] = 1,
[1788] = 8,
[1789] = 7,
[1790] = 1,
[1791] = 1,
[1792] = 1,
[1793] = 7,
[1794] = 0,
[1795] = 0,
[1796] = 1,
[1797] = 0,
[1798] = 1,
[1799] = 1,
[1800] = 1,
[1801] = 10,
[1802] = 12,
[1803] = 4,
[1804] = 2,
[1805] = 0,
[1806] = 8,
[1807] = 8,
[1808] = 1,
[1809] = 1,
[1810] = 1,
[1811] = 1,
[1812] = 8,
[1813] = 1,
[1814] = 1,
[1815] = 1,
[1816] = 0,
[1818] = 0,
[1819] = 12,
[1820] = 0,
[1821] = 0,
[1822] = 0,
[1823] = 1,
[1824] = 0,
[1825] = 15,
[1826] = 1,
[1827] = 1,
[1828] = 0,
[1829] = 0,
[1830] = 0,
[1831] = 0,
[1832] = 0,
[1833] = 0,
[1834] = 15,
[1835] = 10,
[1836] = 8,
[1837] = 8,
[1838] = 0,
[1839] = 1,
[1840] = 0,
[1841] = 0,
[1842] = 1,
[1843] = 1,
[1844] = 0,
[1845] = 0,
[1846] = 1,
[1847] = 1,
[1848] = 1,
[1849] = 1,
[1850] = 0,
[1851] = 8,
[1852] = 0,
[1853] = 1,
[1854] = 0,
[1855] = 0,
[1856] = 0,
[1857] = 8,
[1858] = 0,
[1859] = 0,
[1860] = 0,
[1862] = 1,
[1863] = 1,
[1864] = 1,
[1865] = 1,
[1866] = 0,
[1867] = 0,
[1868] = 0,
[1869] = 0,
[1870] = 0,
[1871] = 1,
[1872] = 0,
[1873] = 1,
[1874] = 0,
[1875] = 0,
[1876] = 0,
[1877] = 1,
[1878] = 1,
[1879] = 1,
[1880] = 1,
[1881] = 1,
[1882] = 1,
[1883] = 7,
[1884] = 1,
[1885] = 1,
[1886] = 1,
[1887] = 0,
[1888] = 1,
[1889] = 1,
[1890] = 1,
[1891] = 4,
[1892] = 4,
[1893] = 4,
[1894] = 1,
[1895] = 1,
[1896] = 8,
[1897] = 2,
[1898] = 4,
[1899] = 4,
[1900] = 2,
[1901] = 2,
[1902] = 1,
[1904] = 1,
[1905] = 0,
[1906] = 1,
[1907] = 8,
[1908] = 0,
[1909] = 9,
[1910] = 0,
[1911] = 0,
[1912] = 0,
[1913] = 0,
[1914] = 1,
[1915] = 0,
[1916] = 0,
[1917] = 1,
[1918] = 2,
[1919] = 1,
[1920] = 4,
[1921] = 2,
[1922] = 2,
[1923] = 2,
[1924] = 1,
[1925] = 9,
[1926] = 4,
[1927] = 4,
[1928] = 2,
[1929] = 2,
[1930] = 0,
[1931] = 0,
[1932] = 15,
[1933] = 0,
[1934] = 4,
[1935] = 2,
[1936] = 0,
[1937] = 0,
[1938] = 0,
[1939] = 0,
[1940] = 0,
[1941] = 0,
[1942] = 0,
[1943] = 0,
[1944] = 0,
[1945] = 15,
[1947] = 15,
[1948] = 1,
[1949] = 0,
[1950] = 0,
[1951] = 12,
[1952] = 0,
[1953] = 1,
[1954] = 1,
[1955] = 1,
[1956] = 0,
[1957] = 0,
[1958] = 1,
[1959] = 0,
[1960] = 0,
[1961] = 0,
[1962] = 1,
[1963] = 1,
[1964] = 1,
[1965] = 1,
[1966] = 0,
[1967] = 0,
[1968] = 8,
[1969] = 1,
[1970] = 1,
[1971] = 0,
[1972] = 0,
[1973] = 4,
[1974] = 4,
[1975] = 7,
[1976] = 4,
[1977] = 4,
[1978] = 2,
[1979] = 2,
[1980] = 2,
[1981] = 2,
[1982] = 1,
[1983] = 1,
[1984] = 1,
[1985] = 1,
[1986] = 8,
[1987] = 0,
[1988] = 7,
[1989] = 1,
[1990] = 1,
[1991] = 7,
[1992] = 9,
[1993] = 4,
[1994] = 4,
[1995] = 2,
[1997] = 4,
[1998] = 1,
[1999] = 0,
[2000] = 0,
[2001] = 1,
[2003] = 1,
[2004] = 4,
[2005] = 7,
[2006] = 0,
[2007] = 0,
[2008] = 0,
[2009] = 0,
[2010] = 0,
[2011] = 0,
[2012] = 0,
[2013] = 0,
[2014] = 0,
[2016] = 0,
[2017] = 0,
[2018] = 7,
[2019] = 2,
[2020] = 2,
[2021] = 4,
[2022] = 1,
[2023] = 6,
[2024] = 2,
[2025] = 4,
[2026] = 4,
[2027] = 4,
[2028] = 0,
[2029] = 1,
[2030] = 1,
[2031] = 0,
[2032] = 4,
[2033] = 1,
[2034] = 2,
[2035] = 7,
[2036] = 8,
[2037] = 4,
[2038] = 0,
[2039] = 1,
[2040] = 4,
[2041] = 0,
[2042] = 7,
[2043] = 7,
[2044] = 4,
[2045] = 2,
[2046] = 8,
[2047] = 0,
[2048] = 0,
[2049] = 0,
[2050] = 0,
[2051] = 0,
[2052] = 0,
[2053] = 0,
[2054] = 0,
[2055] = 2,
[2056] = 2,
[2057] = 1,
[2058] = 0,
[2059] = 0,
[2060] = 0,
[2061] = 0,
[2062] = 0,
[2063] = 0,
[2064] = 0,
[2065] = 0,
[2066] = 0,
[2067] = 8,
[2068] = 7,
[2069] = 7,
[2070] = 0,
[2071] = 0,
[2072] = 0,
[2073] = 0,
[2074] = 0,
[2075] = 1,
[2076] = 0,
[2077] = 0,
[2078] = 0,
[2079] = 0,
[2080] = 7,
[2081] = 0,
[2082] = 0,
[2083] = 0,
[2084] = 0,
[2085] = 0,
[2086] = 1,
[2087] = 1,
[2088] = 1,
[2089] = 1,
[2090] = 0,
[2091] = 0,
[2092] = 0,
[2093] = 0,
[2094] = 0,
[2095] = 1,
[2096] = 0,
[2097] = 1,
[2098] = 1,
[2099] = 1,
[2100] = 8,
[2101] = 0,
[2102] = 1,
[2103] = 1,
[2104] = 0,
[2105] = 0,
[2106] = 1,
[2107] = 0,
[2108] = 1,
[2109] = 1,
[2110] = 8,
[2111] = 1,
[2112] = 0,
[2113] = 1,
[2114] = 1,
[2115] = 8,
[2116] = 1,
[2117] = 8,
[2118] = 0,
[2119] = 1,
[2120] = 1,
[2121] = 2,
[2122] = 2,
[2123] = 2,
[2124] = 1,
[2125] = 1,
[2126] = 1,
[2127] = 0,
[2128] = 0,
[2129] = 10,
[2130] = 12,
[2131] = 0,
[2132] = 2,
[2133] = 1,
[2134] = 0,
[2135] = 0,
[2136] = 0,
[2137] = 0,
[2138] = 0,
[2139] = 1,
[2140] = 0,
[2141] = 8,
[2142] = 12,
[2143] = 4,
[2144] = 0,
[2145] = 7,
[2148] = 0,
[2150] = 1,
[2155] = 4,
[2156] = 0,
[2176] = 2,
[2178] = 4,
[2189] = 15,
[2190] = 15,
[2191] = 15,
[2209] = 7,
[2210] = 0,
[2212] = 7,
[2214] = 0,
[2216] = 0,
[2217] = 0,
[2218] = 0,
[2219] = 0,
[2226] = 0,
[2230] = 0,
[2235] = 2,
[2236] = 4,
[3149] = 2,
[3150] = 0,
[3151] = 4,
[3152] = 0,
}
@@ -1,317 +0,0 @@
---@class MeetingStones
local MeetingStones = QuestieLoader:CreateModule("MeetingStones")
local _MeetingStones = {}
---@type l10n
local l10n = QuestieLoader:ImportModule("l10n")
---@param objectId number
---@return string?, string?
function MeetingStones:GetLocalizedDungeonNameAndLevelRangeByObjectId(objectId)
local tableEntry = _MeetingStones.levelRanges[objectId]
if (not tableEntry) then
return nil, nil
end
return l10n(tableEntry.name), tableEntry.range
end
-- Useful link for level ranges
-- https://www.wowhead.com/guide/dungeon-and-zone-level-and-item-level-requirements-1750
_MeetingStones.levelRanges = {
[178824] = {
name = "Razorfen Downs",
range = "(33-41)"
},
[178825] = {
name = "Razorfen Kraul",
range = "(23-31)"
},
[178826] = {
name = "Dire Maul",
range = "(54-61)"
},
[178827] = {
name = "Maraudon",
range = "(40-52)"
},
[178828] = {
name = "Blackfathom Deeps",
range = "(20-28)"
},
[178829] = {
name = "Zul'Farrak",
range = "(42-50)"
},
[178831] = {
name = "Stratholme",
range = "(56-61)"
},
[178832] = {
name = "Scholomance",
range = "(56-61)"
},
[178833] = {
name = "Uldaman",
range = "(36-44)"
},
[178834] = {
name = "The Deadmines",
range = "(16-24)"
},
[178844] = {
name = "Scarlet Monastery",
range = "(28-44)"
},
[178845] = {
name = "Shadowfang Keep",
range = "(17-25)"
},
[178884] = {
name = "Wailing Caverns",
range = "(16-24)"
},
[179554] = {
name = "The Temple of Atal'Hakkar",
range = "(45-54)"
},
[179555] = {
name = "Gnomeregan",
range = "(24-32)"
},
[179584] = {
name = "Blackrock Mountain",
range = "(48-61)"
},
[179585] = {
name = "Blackrock Mountain",
range = "(48-61)"
},
[179595] = {
name = "The Stockade",
range = "(21-29)"
},
[179596] = {
name = "Ragefire Chasm",
range = "(14-20)"
},
[182558] = {
name = "Coilfang Reservoir",
range = "(61-70)"
},
[182559] = {
name = "Tempest Keep",
range = "(69-70)"
},
[182560] = {
name = "Caverns of Time",
range = "(66-70)"
},
[184455] = {
name = "Hellfire Citadel",
range = "(58-70)"
},
[184456] = {
name = "Magtheridon's Lair",
range = "(70)"
},
[184458] = {
name = "Auchindoun",
range = "(63-70)"
},
[184462] = {
name = "Gruul's Lair",
range = "(70)"
},
[184463] = {
name = "Karazhan",
range = "(70)"
},
[185321] = {
name = "Onyxia's Lair",
range = "(60-70)"
},
[185322] = {
name = "Ahn'Qiraj",
range = "(60-70)"
},
[185433] = {
name = "Zul'Gurub",
range = "(60-70)"
},
[185550] = {
name = "The Black Temple",
range = "(70)"
},
[186251] = {
name = "Zul'Aman",
range = "(70)"
},
[188171] = {
name = "Magisters' Terrace",
range = "(70)"
},
[188172] = {
name = "Sunwell Plateau",
range = "(70)"
},
[188488] = {
name = "Utgarde Keep",
range = "(68-80)"
},
[191227] = {
name = "Azjol-Nerub",
range = "(70-80)"
},
[191529] = {
name = "Drak'Tharon Keep",
range = "(72-80)"
},
[192017] = {
name = "Ulduar",
range = "(75-80)"
},
[192399] = {
name = "Utgarde Pinnacle",
range = "(78-80)"
},
[192557] = {
name = "Gundrak",
range = "(74-80)"
},
[192622] = {
name = "Wyrmrest Temple",
range = "(80)"
},
[193166] = {
name = "Naxxramas",
range = "(77-80)"
},
[193602] = {
name = "The Nexus",
range = "(70-80)"
},
[195013] = {
name = "Vault of Archavon",
range = "(80)"
},
[195498] = {
name = "Argent Tournament",
range = "(80)"
},
[195695] = {
name = "Icecrown Citadel",
range = "(80)"
},
[202184] = {
name = "The Frozen Halls",
range = "(80)"
},
-- Cataclysm
[197315] = {
name = "Ragefire Chasm",
range = "(14-20)"
},
[204962] = {
name = "Throne of the Tides",
range = "(77-85)"
},
[205553] = {
name = "The Stockade",
range = "(21-29)"
},
[205561] = {
name = "Grim Batol",
range = "(83-85)"
},
[205562] = {
name = "The Lost City of the Tol'vir",
range = "(83-85)"
},
[205564] = {
name = "Halls of Origination",
range = "(83-85)"
},
[205565] = {
name = "The Stonecore",
range = "(80-85)"
},
[205566] = {
name = "Blackrock Caverns",
range = "(77-85)"
},
[206668] = {
name = "Baradin Hold",
range = "(85)"
},
[207307] = {
name = "The Vortex Pinnacle",
range = "(80-85)"
},
[207308] = {
name = "Throne of the Four Winds",
range = "(85)"
},
[208225] = {
name = "The Bastion of Twilight",
range = "(85)"
},
[208358] = {
name = "Zul'Gurub",
range = "(85)"
},
[209128] = {
name = "Firelands",
range = "(85)"
},
[211720] = {
name = "Terrace of Endless Spring",
range = "(90)"
},
[212859] = {
name = "Shado-Pan Monastery",
range = "(87-90)"
},
[213170] = {
name = "Temple of the Jade Serpent",
range = "(85-90)"
},
[213254] = {
name = "Mogu'shan Palace",
range = "(87-90)"
},
[213255] = {
name = "Mogu'shan Palace",
range = "(87-90)"
},
[214169] = {
name = "Gate of the Setting Sun",
range = "(88-90)"
},
[214944] = {
name = "Siege of Niuzao Temple",
range = "(90)"
},
[214961] = {
name = "Mogu'shan Vaults",
range = "(90)"
},
[214978] = {
name = "Heart of Fear",
range = "(90)"
},
[214979] = {
name = "Stormstout Brewery",
range = "(85-90)"
},
[219216] = {
name = "Throne of Thunder",
range = "(90)"
},
[221268] = {
name = "Siege of Orgrimmar",
range = "(90)"
},
}
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
File diff suppressed because it is too large Load Diff
@@ -1,136 +0,0 @@
--Contains functions to fetch the Quest Experiance for quests.
---@class QuestXP
local QuestXP = QuestieLoader:CreateModule("QuestXP")
---@type Expansions
local Expansions = QuestieLoader:ImportModule("Expansions")
---@type table<QuestId,table<Level,XP>> -- { questId={level, xp}, ..... }
QuestXP.db = {}
local floor = floor
local UnitLevel = UnitLevel
local globalXPMultiplier = 1
local _GetBuffMultiplier
function QuestXP.Init()
if Expansions.Current >= Expansions.Wotlk then
-- Handle Fast Track "Guild Perk"
-- We don't check for Rank 1, because Blizzard made Rank 2 active for all characters
local isFastTrackActive = IsSpellKnown(78632) -- Fast Track (Rank 2)
if isFastTrackActive then
globalXPMultiplier = globalXPMultiplier + 0.1 -- 10% bonus XP
end
end
end
---@return boolean
local function HasDiscoverersDelight()
for i = 1, 40 do
local _, _, _, _, _, _, _, _, _, spellId = UnitAura("player", i, "HELPFUL")
if spellId == nil then break end
if spellId == 436412 then return true end
end
return false
end
---@param xp XP
---@param qLevel Level
---@param ignorePlayerLevel boolean
---@return XP experience
local function getAdjustedXP(xp, qLevel, ignorePlayerLevel)
local charLevel = UnitLevel("player")
if charLevel == GetMaxPlayerLevel() and (not ignorePlayerLevel) then
return 0
end
--? These calculations are fetched from cmangos
local xpMultiplier = 2 * (qLevel - charLevel) + 20
if (xpMultiplier < 1) then
xpMultiplier = 1
elseif (xpMultiplier > 10) then
xpMultiplier = 10
end
xp = xp * xpMultiplier / 10
--? I am unsure if the first xp <= 100 is actually correct... because some 85 xp quests should actually give 90
if (xp <= 100) then
xp = 5 * floor((xp + 2) / 5)
elseif (xp <= 500) then
xp = 10 * floor((xp + 5) / 10)
elseif (xp <= 1000) then
xp = 25 * floor((xp + 12) / 25)
else
xp = 50 * floor((xp + 25) / 50)
end
return floor(xp * (globalXPMultiplier + _GetBuffMultiplier()))
end
---Get the adjusted XP for a quest.
---@param questId QuestId
---@param ignorePlayerLevel boolean
---@return XP experience
function QuestXP:GetQuestLogRewardXP(questId, ignorePlayerLevel)
if QuestXP.db[questId] then
local level = QuestXP.db[questId][1]
local xp = QuestXP.db[questId][2]
--? We have -1 as a level for quests that are event quests and so on for TBC and WOTLK.
if level > 0 and xp > 0 then
return getAdjustedXP(xp, level, ignorePlayerLevel)
end
end
-- Return 0 if questId or xp data is not found for some reason
return 0
end
local exclusions = {
[78612] = true,
[78872] = true,
[79101] = true,
[79102] = true,
[79103] = true,
[80307] = true,
[80308] = true,
[80309] = true,
}
function QuestXP.GetQuestRewardMoney(questId)
local modifier = 1
if Questie.IsSoD and HasDiscoverersDelight() and (not exclusions[questId]) then
modifier = 3
end
return floor(GetQuestLogRewardMoney(questId) * modifier)
end
---Check for temporary buffs being active that give XP bonuses.
---@return number
_GetBuffMultiplier = function()
local buffMultiplier = 0
for i = 1, 40 do
local _, _, _, _, _, _, _, _, _, spellId, _ = UnitAura("player", i, "HELPFUL")
if spellId == nil then
break
end
if spellId == 377749 then
buffMultiplier = buffMultiplier + (Questie.IsTitanReforged and 1 or 0.5) -- Joyous Journeys
elseif Questie.IsSoD and spellId == 436412 then
buffMultiplier = buffMultiplier + (UnitLevel("player") < 50 and 1.5 or 0.5) -- Discoverer's Delight - 150% bonus XP till level 50 and 50% after
elseif spellId == 46668 then
buffMultiplier = buffMultiplier + 0.1 -- Darkmoon Faire
elseif spellId == 95987 then
buffMultiplier = buffMultiplier + 0.1 -- Unburdened (Hallow's End Alliance)
elseif spellId == 24705 then
buffMultiplier = buffMultiplier + 0.1 -- Grim Visage (Hallow's End Horde)
end
end
return buffMultiplier
end
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
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

Some files were not shown because too many files have changed in this diff Show More