2010-11-08 14:28:59 +01:00
QuestHelper_File [ " manager_completed.lua " ] = " 4.0.1.$svnversion$ "
2010-10-24 23:17:33 +02:00
QuestHelper_Loadtime [ " manager_completed.lua " ] = GetTime ( )
local completed_active = false
local rescan
function QH_Incomplete ( )
if QueryQuestsCompleted then
completed_active = not completed_active
if completed_active then
QuestHelper : TextOut ( " Activating incomplete quest list. Please check your map. " )
else
QuestHelper : TextOut ( " Deactivating incomplete quest list. " )
end
rescan ( )
else
QuestHelper : TextOut ( " This feature isn't available until the WoW 3.3 patch. Sorry! " )
end
end
if not QueryQuestsCompleted then return end
local quests = { }
local temp_notifications = { }
function QH_GetCompletedTable ( )
return quests
end
local notifications = { }
function QH_AddCompletionNotifier ( func )
table.insert ( notifications , func )
end
local function notify ( )
for _ , v in ipairs ( notifications ) do
v ( quests )
end
end
local poll_again = true
local poll_timeout = GetTime ( ) + 30
local poll_first = true
QH_Event ( " QUEST_QUERY_COMPLETE " , function ( )
quests = GetQuestsCompleted ( ) -- entertainingly, we actually want exactly the output of this. How convenient! Blizzard does things right <3 forever
notify ( )
end )
local GetQuestReward_Orig = GetQuestReward
GetQuestReward = function ( ... )
poll_again = true
GetQuestReward_Orig ( ... )
end
QH_OnUpdate ( function ( )
if poll_again and poll_timeout < GetTime ( ) then
QueryQuestsCompleted ( )
--print("QQC")
poll_again = false
poll_first = false
end
end , " quest_completed " )
-- now over here we're rigging up something to scatter waypoints all over the goddamn map
-- we're just tossing them out like sprinkles
-- neon lozenges, scattered upon the ground
-- colors across the leaves, sucrose stars hangin' out across the foliage
-- here comes a squirrel
-- oh look it is eating the candy! how adorable
-- we should take it home and keep it as a pet
-- now you understand waypoints.
-- Aloha.
local waypoint_zone
function rescan ( )
if not waypoint_zone then return end
if not QuestHelper.Astrolabe . WorldMapVisible then return end
QH_POI_Reset ( )
if not completed_active then return end
local questlist = DB_GetItem ( " questlist " , waypoint_zone , true )
if not questlist then return end
local donequests = QH_GetCompletedTable ( )
for _ , v in ipairs ( questlist ) do
if donequests [ v ] then
--print("Done:", v)
else
--print("Not done:", v)
local ql = DB_GetItem ( " quest " , v )
--print(ql.start)
--print(ql.start.loc)
--print(ql.start.loc[1])
QH_POI_Add ( waypoint_zone , ql.start . loc [ 1 ] . x , ql.start . loc [ 1 ] . y , string.format ( " %s (quest #%d) " , ql.name or " (unknown quest name) " , v ) )
end
end
end
QH_AddCompletionNotifier ( rescan )
QH_Event ( " WORLD_MAP_UPDATE " , function ( )
local c , z = QuestHelper.Astrolabe : GetCurrentVirtualMapCZ ( )
--print(c, z)
if not QuestHelper_IndexLookup [ c ] or not QuestHelper_IndexLookup [ c ] [ z ] then return end
QuestHelper : Assert ( QuestHelper_IndexLookup [ c ] )
QuestHelper : Assert ( QuestHelper_IndexLookup [ c ] [ z ] )
waypoint_zone = QuestHelper_IndexLookup [ c ] [ z ]
rescan ( )
end )