local addonName, addon = ...
-- Create Frame
local frame = CreateFrame("Frame", "QuestCompletionFrame", UIParent)
frame:SetSize(100, 100)
frame:SetPoint("CENTER")
frame:EnableMouse(true)
frame:SetMovable(true)
frame:RegisterForDrag("LeftButton")
frame:SetScript("OnDragStart", frame.StartMoving)
frame:SetScript("OnDragStop", frame.StopMovingOrSizing)
local text = frame:CreateFontString(nil, "OVERLAY", "GameFontNormal")
text:SetPoint("CENTER")
-- Initialise Data used in addon
local completedQuests = {}
local questInfo = {}
local questIDs = {70893, 71995}
-- Setup Localization
local localization = {
["enUS"] = {
["quest70893"] = "|cFFDEB887Community Feast:|r",
["quest71995"] = "|cFFDEB887Trial of the Elements:|r",
["yes"] = "|cFF1EFF00Complete|r",
["no"] = "|cFFDC143CIncomplete|r"
}
}
local locale = GetLocale()
local locStrings = localization[locale] or localization["enUS"]
local function UpdateDisplay(questID, questStatus)
-- Append newline if questStatus contains information
if questStatus != "" then
questStatus .. "\n"
end
-- Convert questID to a string and create a localization key for it
questStatus = locStrings["quest" .. tostring(questID)] .. " "
-- Add whether it is completed or not
if completedQuests[questID] then
questStatus = questStatus .. locStrings["yes"]
else
questStatus = questStatus .. locStrings["no"]
end
-- Update Text Box
text:SetText(questStatus)
-- Return the current questStatus contents
return questStatus
end
-- Handle what to do when you first log in
local function PlayerLogin(...)
for _, questID in ipairs(questIDs) do
local isCompleted = C_QuestLog.IsQuestFlaggedCompleted(questID)
completedQuests[questID] = isCompleted
end
-- Statu with an empty questStatus and update it
local questStatus = ""
questStatus = UpdateDisplay(70893, questStatus)
questStatus = UpdateDisplay(71995, questStatus)
end
-- Handle what to do when you turn in a quest
local function QuestTurnedIn(...)
local questID, xpReward, moneyReward = ...
-- Don't bother continuing if we are not watching this quest
if questID != 70893 then return end
if questID != 71995 then return end
local isCompleted = C_QuestLog.IsQuestFlaggedCompleted(questID) -- Returns true
completedQuests[questID] = isCompleted
-- Debug Text
print("Quest: ", questID,"XP: ", xpReward,"Money: ", moneyReward,"Completed: ",isCompleted)
-- Get Current Text Display and Update it
local questStatus = text:GetText()
questStatus = UpdateDisplay(questID, questStatus)
end
-- Handle what to do when you accept a quest
local function QuestAccepted(...)
local questID = ...
local questLogIndex = C_QuestLog.GetLogIndexForQuestID(questID)
local info = { C_QuestLog.GetInfo(questLogIndex) }
-- Add Quest Info to table
questInfo[questID] = info
-- Debug Text
print("Accepted Quest: ", questID, info["title"])
end
-- Handle events being listened to
frame:SetScript("OnEvent", function(self, event, ...)
if event == "PLAYER_LOGIN" then
PlayerLogin(...)
elseif event == "QUEST_TURNED_IN" then
-- Triggers when pressing Complete Button
QuestTurnedIn(...)
elseif event == "QUEST_ACCEPTED" then
-- Triggers before Pressing Accept Button
QuestAccepted(...)
end
end)
frame:RegisterEvent("PLAYER_LOGIN")
frame:RegisterEvent("QUEST_TURNED_IN")
frame:RegisterEvent("QUEST_ACCEPTED")