22 Commits

Author SHA1 Message Date
4c9f9eb9ec Add TOC file for MoP 2025-11-25 10:22:07 -05:00
296c95b3a2 Try to work with MoP classic 2025-11-25 09:55:08 -05:00
8ce33b2a2d Fix version 2025-11-25 09:19:11 -05:00
330de41b3e Fix repuation and completed quest detection 2025-11-25 09:08:14 -05:00
4fe4f65882 Update package version 2025-11-24 13:58:15 -05:00
0dee31d633 Update interface version 2024-02-02 18:55:30 -05:00
5ae9aaa8c7 Update version 2023-01-25 16:57:05 -05:00
6da8b8bff1 Fix LibQTip external and update interface version 2023-01-02 08:21:55 -05:00
b14c4a358a Rework how item names are retrieved to avoid concatenation errors 2022-11-04 12:22:32 -04:00
a80d3ded01 Bump version 2022-10-31 15:24:01 -04:00
5b441d1dee Update LibDataBroker external 2022-10-31 15:19:54 -04:00
6afc62a355 Update for Dragonflight 2022-10-31 14:56:24 -04:00
3fd9daf009 Defer updates until fully loaded 2020-12-16 15:31:30 -05:00
c30f0fe3ae Fix localization issue 2020-11-27 09:58:20 -05:00
7ed4da43cd Update for 9.0.2 2020-11-17 12:55:28 -05:00
b6d78b1caf Update version 2020-11-16 17:59:58 -05:00
be513420c2 Fix API call 2020-11-16 17:59:48 -05:00
ecc6f258a2 Adjust level checks
Not sure if 10 is right but can adjust later
2020-11-16 17:59:29 -05:00
d99c214111 Update pkgmeta 2020-11-16 16:06:37 -05:00
294bb6dede Add change from l4r0e - thanks! 2020-11-16 15:55:32 -05:00
f78b71c026 Create README.md 2020-11-16 15:27:53 -05:00
3fc445cc47 Update for Shadowlands 2020-11-16 15:26:19 -05:00
7 changed files with 160 additions and 86 deletions

View File

@@ -2,41 +2,42 @@
externals:
Libs/LibStub:
url: svn://svn.wowace.com/wow/libstub/mainline/trunk
url: https://repos.wowace.com/wow/libstub/trunk
tag: latest
Libs/CallbackHandler-1.0:
url: svn://svn.wowace.com/wow/callbackhandler/mainline/trunk/CallbackHandler-1.0
url: https://repos.wowace.com/wow/ace3/trunk/CallbackHandler-1.0
tag: latest
Libs/LibQTip-1.0:
url: svn://svn.wowace.com/wow/libqtip-1-0/mainline/trunk
tag: latest
url: https://repos.curseforge.com/wow/libqtip-1-0
Libs/LibDataBroker-1.1:
url: git://github.com/tekkub/libdatabroker-1-1.git
url: https://github.com/tekkub/libdatabroker-1-1
tag: latest
Libs/AceLocale-3.0:
url: svn://svn.wowace.com/wow/ace3/mainline/trunk/AceLocale-3.0
url: https://repos.wowace.com/wow/ace3/trunk/AceLocale-3.0
tag: latest
Libs/AceConsole-3.0:
url: svn://svn.wowace.com/wow/ace3/mainline/trunk/AceConsole-3.0
url: https://repos.wowace.com/wow/ace3/trunk/AceConsole-3.0
tag: latest
Libs/AceAddon-3.0:
url: svn://svn.wowace.com/wow/ace3/mainline/trunk/AceAddon-3.0
url: https://repos.wowace.com/wow/ace3/trunk/AceAddon-3.0
tag: latest
Libs/AceEvent-3.0:
url: svn://svn.wowace.com/wow/ace3/mainline/trunk/AceEvent-3.0
url: https://repos.wowace.com/wow/ace3/trunk/AceEvent-3.0
tag: latest
Libs/AceTimer-3.0:
url: svn://svn.wowace.com/wow/ace3/mainline/trunk/AceTimer-3.0
url: https://repos.wowace.com/wow/ace3/trunk/AceTimer-3.0
tag: latest
Libs/AceConfig-3.0:
url: svn://svn.wowace.com/wow/ace3/mainline/trunk/AceConfig-3.0
url: https://repos.wowace.com/wow/ace3/trunk/AceConfig-3.0
tag: latest
Libs/AceDB-3.0:
url: svn://svn.wowace.com/wow/ace3/mainline/trunk/AceDB-3.0
url: https://repos.wowace.com/wow/ace3/trunk/AceDB-3.0
tag: latest
Libs/AceGUI-3.0:
url: svn://svn.wowace.com/wow/ace3/mainline/trunk/AceGUI-3.0
url: https://repos.wowace.com/wow/ace3/trunk/AceGUI-3.0
tag: latest
Libs/LibDBIcon-1.0:
url: svn://svn.wowace.com/wow/libdbicon-1-0/mainline/trunk/LibDBIcon-1.0
url: https://repos.wowace.com/wow/libdbicon-1-0/trunk/LibDBIcon-1.0
tag: latest
enable-nolib-creation: no

View File

@@ -9,7 +9,8 @@ private.QUESTS = {
LOCATION = { 34.4, 46.8 },
MATS = { { COUNT = 1, ITEM_ID = 74864 }, { COUNT = 1, ITEM_ID = 74839 } },
REP_ID = 1277,
RECIPE_ID = 104302
RECIPE_ID = 104302,
COMPLETED = false
},
[30386] = {
NAME = L["A Dish for Ella"],
@@ -17,7 +18,8 @@ private.QUESTS = {
LOCATION = { 31.6, 58.0 },
MATS = { { COUNT = 1, ITEM_ID = 74857 } },
REP_ID = 1275,
RECIPE_ID = 104307
RECIPE_ID = 104307,
COMPLETED = false
},
[30421] = {
NAME = L["A Dish for Farmer Fung"],
@@ -25,7 +27,8 @@ private.QUESTS = {
LOCATION = { 48.2, 33.8 },
MATS = { { COUNT = 1, ITEM_ID = 74839 } },
REP_ID = 1283,
RECIPE_ID = 104310
RECIPE_ID = 104310,
COMPLETED = false
},
[30427] = {
NAME = L["A Dish for Fish"],
@@ -33,7 +36,8 @@ private.QUESTS = {
LOCATION = { 41.6, 30.0 },
MATS = { { COUNT = 2, ITEM_ID = 74865 } },
REP_ID = 1282,
RECIPE_ID = 104311
RECIPE_ID = 104311,
COMPLETED = false
},
[30390] = {
NAME = L["A Dish for Gina"],
@@ -41,7 +45,8 @@ private.QUESTS = {
LOCATION = { 53.2, 51.6 },
MATS = { { COUNT = 1, ITEM_ID = 74856 } },
REP_ID = 1281,
RECIPE_ID = 104304
RECIPE_ID = 104304,
COMPLETED = false
},
[30414] = {
NAME = L["A Dish for Haohan"],
@@ -49,7 +54,8 @@ private.QUESTS = {
LOCATION = { 44.6, 34.0 },
MATS = { { COUNT = 1, ITEM_ID = 74833 } },
REP_ID = 1279,
RECIPE_ID = 104298
RECIPE_ID = 104298,
COMPLETED = false
},
[30439] = {
NAME = L["A Dish for Jogu"],
@@ -57,7 +63,8 @@ private.QUESTS = {
LOCATION = { 53.6, 52.4 },
MATS = { { COUNT = 2, ITEM_ID = 74841 } },
REP_ID = 1273,
RECIPE_ID = 104301
RECIPE_ID = 104301,
COMPLETED = false
},
[30396] = {
NAME = L["A Dish for Old Hillpaw"],
@@ -65,7 +72,8 @@ private.QUESTS = {
LOCATION = { 31.0, 53.0 },
MATS = { { COUNT = 1, ITEM_ID = 74837 }, { COUNT = 5, ITEM_ID = 74841 } },
REP_ID = 1276,
RECIPE_ID = 104305
RECIPE_ID = 104305,
COMPLETED = false
},
[30408] = {
NAME = L["A Dish for Sho"],
@@ -73,7 +81,8 @@ private.QUESTS = {
LOCATION = { 29.6, 30.6 },
MATS = { { COUNT = 1, ITEM_ID = 74856 }, { COUNT = 5, ITEM_ID = 74848 } },
REP_ID = 1278,
RECIPE_ID = 104299
RECIPE_ID = 104299,
COMPLETED = false
},
[30433] = {
NAME = L["A Dish for Tina"],
@@ -81,6 +90,7 @@ private.QUESTS = {
LOCATION = { 45.0, 33.8 },
MATS = { { COUNT = 1, ITEM_ID = 74859 }, { COUNT = 5, ITEM_ID = 74843 } },
REP_ID = 1280,
RECIPE_ID = 104308
RECIPE_ID = 104308,
COMPLETED = false
}
}
}

View File

@@ -34,7 +34,7 @@ L["Need"] = true
L["Gather:"] = true
L["Done"] = true
L["Disabled until level 90"] = true
L["Disabled until level 10"] = true
L["Best Friends with everyone"] = true

1
README.md Normal file
View File

@@ -0,0 +1 @@
# TillerTracker

View File

@@ -197,9 +197,8 @@ function TillerTracker:OnInitialize()
private.pinned = false
private.need_index = 1
private.loaded = false
private.item_wait_table = {}
private.item_wait_count = 0
private.item_name_table = {}
-- Get rid of settings from before AceDB
if TillerTrackerDB then
TillerTrackerDB["SORT_FIELD"] = nil
@@ -223,9 +222,9 @@ function TillerTracker:OnInitialize()
end
function TillerTracker:OnEnable()
-- Disable if the player is less than 90
if (UnitLevel("player") < 90) then
LDB.text = L["Disabled until level 90"]
-- Disable if the player is less than 10
if (UnitLevel("player") < 10) then
LDB.text = L["Disabled until level 10"]
-- Register to get player level events
self:RegisterEvent("PLAYER_LEVEL_UP")
@@ -244,7 +243,7 @@ function TillerTracker:OnEnable()
end
function TillerTracker:PLAYER_LEVEL_UP(event, newLevel)
if (tonumber(newLevel) >= 90) then
if (tonumber(newLevel) >= 10) then
-- Do the real enable
TillerTracker:OnEnableCore()
@@ -258,66 +257,56 @@ function TillerTracker:OnEnableCore()
TillerTracker:Print(L["Loading..."])
LDB.text = L["Loading..."]
-- Register to get item info events for now
self:RegisterEvent("GET_ITEM_INFO_RECEIVED")
-- Attempt to load the cache
-- Load item info from cache
TillerTracker:LoadCache()
-- If everything is cached we're good to go
if (private.item_wait_count == 0) then
TillerTracker:OnLoaded(self)
end
end
function TillerTracker:LoadCache()
local item_count = 0
local item_loaded_count = 0
local item_table = {}
private.item_name_table = {}
-- Loop over each quest in the data
for _, quest_info in pairs(private.QUESTS) do
-- Get the item ID of the food
local food_id = quest_info["FOOD_ID"]
-- Add the food to the list of items
item_table[food_id] = Item:CreateFromItemID(food_id)
item_count = item_count + 1
-- Try to get the info for the food
local food_name = GetItemInfo(food_id)
-- If the information wasn't available add it to the list of waiting items
if (food_name == nil) then
private.item_wait_table[food_id] = true
private.item_wait_count = private.item_wait_count + 1
end
-- Loop over the mats required to cook the food for the quest
for _, mat_data in pairs(quest_info["MATS"]) do
-- Get the item ID of the mat
local mat_id = mat_data["ITEM_ID"]
-- Try to get the info for the mat
local mat_name = GetItemInfo(mat_id)
-- If the information wasn't available add it to the list of waiting items
if (mat_name == nil) then
if (private.item_wait_table[mat_id] == nil) then
private.item_wait_table[mat_id] = true
private.item_wait_count = private.item_wait_count + 1
end
-- Add the mat to the list of items
if (item_table[mat_id] == nil) then
item_table[mat_id] = Item:CreateFromItemID(mat_id)
item_count = item_count + 1
end
end
end
end
function TillerTracker:GET_ITEM_INFO_RECEIVED()
for id, _ in pairs(private.item_wait_table) do
if GetItemInfo(id) then
private.item_wait_table[id] = nil
-- Loop over all items we need to cache
for _, item in pairs(item_table) do
-- Wait for the item to load
item:ContinueOnItemLoad(function()
private.item_wait_count = private.item_wait_count - 1
end
end
-- If everything is cached we're good to go
if (private.item_wait_count == 0) then
TillerTracker:OnLoaded(self)
-- Save the name
private.item_name_table[item:GetItemID()] = item:GetItemName()
item_loaded_count = item_loaded_count + 1
-- If everything is cached we're good to go
if (item_count == item_loaded_count) then
TillerTracker:OnLoaded(self)
end
end)
end
end
@@ -326,9 +315,6 @@ function TillerTracker:OnLoaded(self)
TillerTracker:Print(L["Loaded"])
LDB.text = L["Loaded"]
-- Done with item info events
self:UnregisterEvent("GET_ITEM_INFO_RECEIVED")
self:RegisterEvent("QUEST_LOG_UPDATE")
self:RegisterEvent("BAG_UPDATE")
@@ -344,9 +330,10 @@ local function Entry_OnMouseUp(frame, info, button)
return
end
local m = TomTom:GetCurrentPlayerPosition()
local location = info["LOCATION"]
_G.TomTom:AddMFWaypoint(807, nil, location[1] / 100, location[2] / 100, { title = info["NAME"] })
_G.TomTom:AddWaypoint(m, location[1] / 100, location[2] / 100, { title = info["NAME"] })
end
end
@@ -362,16 +349,20 @@ local function SetSort(cell, sort)
private.db.global.sort_dir = "ASC"
end
if not private.loaded then
return
end
TillerTracker:UpdateData()
TillerTracker:UpdateTooltip()
end
function TillerTracker:ReputationDone(reputationId)
-- Get the reputation information
local _, friendRep = GetFriendshipReputation(reputationId)
local friendRep = C_GossipInfo.GetFriendshipReputation(reputationId).standing
-- Done if over exalted
return (friendRep > 42000)
return (friendRep >= 42000)
end
function TillerTracker:AllReputationsDone()
@@ -384,9 +375,25 @@ function TillerTracker:AllReputationsDone()
return true
end
function TillerTracker:GetAllCompletedQuestIDs()
if C_QuestLog.GetAllCompletedQuestIDs then
return C_QuestLog.GetAllCompletedQuestIDs()
elseif GetQuestsCompleted then
local completedQuestIds = {}
local questsCompleted = GetQuestsCompleted()
for quest_id in pairs(questsCompleted) do
table.insert(completedQuestIds, quest_id)
end
return completedQuestIds
end
end
function TillerTracker:UpdateData()
-- Get information on all quests completed
local questsCompleted = GetQuestsCompleted()
local questsCompleted = TillerTracker:GetAllCompletedQuestIDs()
-- Create a table to store our current inventory of required mats
local inv_table = {}
@@ -397,6 +404,9 @@ function TillerTracker:UpdateData()
-- Loop over each quest in the data
for _, quest_info in pairs(private.QUESTS) do
-- Reset completed to false
quest_info["COMPLETED"] = false
-- Loop over the mats required to cook the food for the quest
for _, mat_data in pairs(quest_info["MATS"]) do
@@ -412,6 +422,15 @@ function TillerTracker:UpdateData()
end
end
-- Loop over each quest completed
for _, quest_id in pairs(questsCompleted) do
-- Set completed to true if it is one we're tracking
if (private.QUESTS[quest_id]) then
private.QUESTS[quest_id]["COMPLETED"] = true
end
end
-- Create a table to hold the information to display for each quest
private.quest_table = {}
private.quest_count = 0
@@ -426,7 +445,7 @@ function TillerTracker:UpdateData()
local food_id = quest_info["FOOD_ID"]
-- Get the name of the food for display
local food_name = GetItemInfo(food_id)
local food_name = private.item_name_table[food_id]
-- Get how many of the food we have in our bags
local food_count = GetItemCount(food_id, true, false)
@@ -443,7 +462,7 @@ function TillerTracker:UpdateData()
local quest_status = ""
local can_craft = 0
if (questsCompleted[quest_id]) then
if (quest_info["COMPLETED"]) then
-- Quest has already been completed today
quest_status = L["|cFF00FF00Complete|r"]
else
@@ -487,7 +506,7 @@ function TillerTracker:UpdateData()
if (mat_count > 0) then
-- Get the name of the mat
local mat_name = GetItemInfo(mat_id)
local mat_name = private.item_name_table[mat_id]
-- Set the mat need string to the count needed and the name
local mat_need = mat_count .. " " .. mat_name
@@ -626,7 +645,7 @@ function TillerTracker:UpdateText()
-- Loop over the need table
for need_id, need_count in pairs(private.need_table) do
if need_index == private.need_index then
LDB.text = L["Gather:"] .. " " .. need_count .. " " .. GetItemInfo(need_id)
LDB.text = L["Gather:"] .. " " .. need_count .. " " .. private.item_name_table[need_id]
return
end
@@ -647,6 +666,10 @@ function LDB.OnEnter(self)
end
function TillerTracker:QUEST_LOG_UPDATE()
if not private.loaded then
return
end
TillerTracker:UpdateData()
TillerTracker:UpdateText()
@@ -658,6 +681,10 @@ function TillerTracker:QUEST_LOG_UPDATE()
end
function TillerTracker:BAG_UPDATE()
if not private.loaded then
return
end
TillerTracker:UpdateData()
TillerTracker:UpdateText()
@@ -717,6 +744,10 @@ end
function TillerTracker:SetPlanAhead(value)
private.db.global.plan_ahead = value
if not private.loaded then
return
end
TillerTracker:UpdateData()
TillerTracker:UpdateText()
@@ -725,4 +756,4 @@ function TillerTracker:SetPlanAhead(value)
end
TillerTracker:UpdateTooltip()
end
end

View File

@@ -1,6 +1,6 @@
## Interface: 70100
## Interface: 110205
## Title: Tiller Tracker
## Version: 1.14.0
## Version: 11.0.4
## Notes: Helps with the daily Tiller food quests ("A Dish for...") by keeping track of what quests have been completed that day, how many dishes need to be cooked, and what materials are required.
## Author: Amanoa
## SavedVariables: TillerTrackerDB

31
TillerTracker_Mists.toc Normal file
View File

@@ -0,0 +1,31 @@
## Interface: 50500
## Title: Tiller Tracker
## Version: 11.0.4
## Notes: Helps with the daily Tiller food quests ("A Dish for...") by keeping track of what quests have been completed that day, how many dishes need to be cooked, and what materials are required.
## Author: Amanoa
## SavedVariables: TillerTrackerDB
## OptionalDeps: Ace3, AceEvent-3.0, LibQTip-1.0, LibStub, AceTimer-3.0, AceConsole-3.0
#@no-lib-strip@
Libs\LibStub\LibStub.lua
Libs\CallbackHandler-1.0\CallbackHandler-1.0.xml
Libs\AceAddon-3.0\AceAddon-3.0.xml
Libs\AceConsole-3.0\AceConsole-3.0.xml
Libs\AceEvent-3.0\AceEvent-3.0.xml
Libs\AceLocale-3.0\AceLocale-3.0.xml
Libs\AceTimer-3.0\AceTimer-3.0.xml
Libs\AceDB-3.0\AceDB-3.0.xml
Libs\AceGUI-3.0\AceGUI-3.0.xml
Libs\AceConfig-3.0\AceConfig-3.0.xml
Libs\LibQTip-1.0\lib.xml
Libs\LibDataBroker-1.1\LibDataBroker-1.1.lua
Libs\LibDBIcon-1.0\LibDBIcon-1.0.lua
#@end-no-lib-strip@
Locale\enUS.lua
Locale\frFR.lua
Locale\deDE.lua
Data.lua
Sort.lua
TillerTracker.lua