Browse Source

Merge 60b279ed6f into 8a6c8fd3a2

pull/27/merge
Kian Soltani 5 months ago committed by GitHub
parent
commit
cfdd91c359
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
  1. 2
      .gitignore
  2. 30
      TradeSkillMaster/Core/Mover.lua
  3. 656
      TradeSkillMaster/Data/Conversions.lua
  4. 3
      TradeSkillMaster_Crafting/Locale/enUS.lua
  5. 22
      TradeSkillMaster_Crafting/Modules/CraftingGUI.lua
  6. 2
      TradeSkillMaster_Crafting/Modules/Gather.lua
  7. 62
      TradeSkillMaster_Crafting/Modules/Inventory.lua
  8. 4
      TradeSkillMaster_ItemTracker/Locale/enUS.lua
  9. 111
      TradeSkillMaster_ItemTracker/Modules/data.lua
  10. 83
      TradeSkillMaster_ItemTracker/TradeSkillMaster_ItemTracker.lua

2
.gitignore vendored

@ -5,3 +5,5 @@
.lua/*
.vscode
.idea
deploy.bat
claude.md

30
TradeSkillMaster/Core/Mover.lua

@ -14,9 +14,23 @@ local AceGUI = LibStub("AceGUI-3.0") -- load the AceGUI libraries
local lib = TSMAPI
local bankType
local ascensionBankType -- Ascension WoW: "personal", "realm", or nil for real guild bank
local fullMoves, splitMoves, bagState = {}, {}, {}
local callbackMsg = {}
-- Ascension WoW: Detect bank type based on first tab name
local function GetAscensionBankType()
local numTabs = GetNumGuildBankTabs()
if numTabs == 0 then return nil end
local firstTabName = GetGuildBankTabInfo(1)
if firstTabName == "Personal Bank" then
return "personal"
elseif firstTabName == "Realm Bank" then
return "realm"
end
return nil
end
-- this is a set of wrapper functions so that I can switch
-- between guildbank and bank function easily (taken from warehousing)
@ -42,6 +56,7 @@ function TSM:OnEnable()
TSM:RegisterEvent("GUILDBANKFRAME_OPENED", function(event)
bankType = "guildbank"
ascensionBankType = GetAscensionBankType() -- Ascension WoW: detect personal/realm bank
end)
TSM:RegisterEvent("BANKFRAME_OPENED", function(event)
@ -50,6 +65,7 @@ function TSM:OnEnable()
TSM:RegisterEvent("GUILDBANKFRAME_CLOSED", function(event, addon)
bankType = nil
ascensionBankType = nil -- Ascension WoW: reset
TSM:UnregisterEvent("GUILDBANKBAGSLOTS_CHANGED")
end)
@ -402,13 +418,23 @@ function TSM.generateMoves(includeSoulbound)
if next(fullMoves) ~= nil then
if bankType == "guildbank" then
TSMAPI:CreateTimeDelay("moveItem", 0.05, TSM.moveItem, 0.35)
-- Ascension WoW: Personal/Realm banks don't need slow delays like real guild banks
if ascensionBankType then
TSMAPI:CreateTimeDelay("moveItem", 0.05, TSM.moveItem, 0.05)
else
TSMAPI:CreateTimeDelay("moveItem", 0.05, TSM.moveItem, 0.35)
end
else
TSMAPI:CreateTimeDelay("moveItem", 0.05, TSM.moveItem, 0.05)
end
elseif next(splitMoves) ~= nil then
if bankType == "guildbank" then
TSMAPI:CreateTimeDelay("moveSplitItem", 0.05, TSM.moveSplitItem, 0.75)
-- Ascension WoW: Personal/Realm banks don't need slow delays like real guild banks
if ascensionBankType then
TSMAPI:CreateTimeDelay("moveSplitItem", 0.05, TSM.moveSplitItem, 0.1)
else
TSMAPI:CreateTimeDelay("moveSplitItem", 0.05, TSM.moveSplitItem, 0.75)
end
else
TSMAPI:CreateTimeDelay("moveSplitItem", 0.05, TSM.moveSplitItem, 0.4)
end

656
TradeSkillMaster/Data/Conversions.lua

@ -12,284 +12,284 @@ local L = LibStub("AceLocale-3.0"):GetLocale("TradeSkillMaster") -- loads the lo
local conversions = {
-- Epic WotLK gems
["item:36919:0:0:0:0:0:0"] = { -- Cardinal Ruby
["item:36910:0:0:0:0:0:0"] = {rate=.03, source="prospect"},
},
["item:36922:0:0:0:0:0:0"] = { -- King's Amber
["item:36910:0:0:0:0:0:0"] = {rate=.03, source="prospect"},
},
["item:36925:0:0:0:0:0:0"] = { -- Majestic Zircon
["item:36910:0:0:0:0:0:0"] = {rate=.03, source="prospect"},
},
["item:36928:0:0:0:0:0:0"] = { -- Dreadstone
["item:36910:0:0:0:0:0:0"] = {rate=.03, source="prospect"},
},
["item:36931:0:0:0:0:0:0"] = { -- Ametrine
["item:36910:0:0:0:0:0:0"] = {rate=.03, source="prospect"},
},
["item:36934:0:0:0:0:0:0"] = { -- Eye of Zul
["item:36910:0:0:0:0:0:0"] = {rate=.03, source="prospect"},
},
-- ["item:36919:0:0:0:0:0:0"] = { -- Cardinal Ruby
-- ["item:36910:0:0:0:0:0:0"] = {rate=.03, source="prospect"},
-- },
-- ["item:36922:0:0:0:0:0:0"] = { -- King's Amber
-- ["item:36910:0:0:0:0:0:0"] = {rate=.03, source="prospect"},
-- },
-- ["item:36925:0:0:0:0:0:0"] = { -- Majestic Zircon
-- ["item:36910:0:0:0:0:0:0"] = {rate=.03, source="prospect"},
-- },
-- ["item:36928:0:0:0:0:0:0"] = { -- Dreadstone
-- ["item:36910:0:0:0:0:0:0"] = {rate=.03, source="prospect"},
-- },
-- ["item:36931:0:0:0:0:0:0"] = { -- Ametrine
-- ["item:36910:0:0:0:0:0:0"] = {rate=.03, source="prospect"},
-- },
-- ["item:36934:0:0:0:0:0:0"] = { -- Eye of Zul
-- ["item:36910:0:0:0:0:0:0"] = {rate=.03, source="prospect"},
-- },
-- common pigments (inks)
["item:39151:0:0:0:0:0:0"] = { -- Alabaster Pigment (Ivory / Moonglow Ink)
["item:765:0:0:0:0:0:0"] = {rate=.5, source="mill"},
["item:2447:0:0:0:0:0:0"] = {rate=.6, source="mill"},
["item:2449:0:0:0:0:0:0"] = {rate=.6, source="mill"},
},
["item:39343:0:0:0:0:0:0"] = { -- Azure Pigment (Ink of the Sea)
["item:39969:0:0:0:0:0:0"] = {rate=.5, source="mill"},
["item:36904:0:0:0:0:0:0"] = {rate=.5, source="mill"},
["item:36907:0:0:0:0:0:0"] = {rate=.5, source="mill"},
["item:36901:0:0:0:0:0:0"] = {rate=.5, source="mill"},
["item:39970:0:0:0:0:0:0"] = {rate=.5, source="mill"},
["item:37921:0:0:0:0:0:0"] = {rate=.5, source="mill"},
["item:36905:0:0:0:0:0:0"] = {rate=.6, source="mill"},
["item:36906:0:0:0:0:0:0"] = {rate=.6, source="mill"},
["item:36903:0:0:0:0:0:0"] = {rate=.6, source="mill"},
},
["item:61979:0:0:0:0:0:0"] = { -- Ashen Pigment (Blackfallow Ink)
["item:52983:0:0:0:0:0:0"] = {rate=.5, source="mill"},
["item:52984:0:0:0:0:0:0"] = {rate=.5, source="mill"},
["item:52985:0:0:0:0:0:0"] = {rate=.5, source="mill"},
["item:52986:0:0:0:0:0:0"] = {rate=.5, source="mill"},
["item:52987:0:0:0:0:0:0"] = {rate=.6, source="mill"},
["item:52988:0:0:0:0:0:0"] = {rate=.6, source="mill"},
},
["item:39334:0:0:0:0:0:0"] = { -- Dusky Pigment (Midnight Ink)
["item:785:0:0:0:0:0:0"] = {rate=.5, source="mill"},
["item:2450:0:0:0:0:0:0"] = {rate=.5, source="mill"},
["item:2452:0:0:0:0:0:0"] = {rate=.5, source="mill"},
["item:2453:0:0:0:0:0:0"] = {rate=.6, source="mill"},
["item:3820:0:0:0:0:0:0"] = {rate=.6, source="mill"},
},
["item:39339:0:0:0:0:0:0"] = { -- Emerald Pigment (Jadefire Ink)
["item:3818:0:0:0:0:0:0"] = {rate=.5, source="mill"},
["item:3821:0:0:0:0:0:0"] = {rate=.5, source="mill"},
["item:3358:0:0:0:0:0:0"] = {rate=.6, source="mill"},
["item:3819:0:0:0:0:0:0"] = {rate=.6, source="mill"},
},
["item:39338:0:0:0:0:0:0"] = { -- Golden Pigment (Lion's Ink)
["item:3355:0:0:0:0:0:0"] = {rate=.5, source="mill"},
["item:3369:0:0:0:0:0:0"] = {rate=.5, source="mill"},
["item:3356:0:0:0:0:0:0"] = {rate=.6, source="mill"},
["item:3357:0:0:0:0:0:0"] = {rate=.6, source="mill"},
},
["item:39342:0:0:0:0:0:0"] = { -- Nether Pigment (Ethereal Ink)
["item:22786:0:0:0:0:0:0"] = {rate=.5, source="mill"},
["item:22785:0:0:0:0:0:0"] = {rate=.5, source="mill"},
["item:22789:0:0:0:0:0:0"] = {rate=.5, source="mill"},
["item:22787:0:0:0:0:0:0"] = {rate=.5, source="mill"},
["item:22790:0:0:0:0:0:0"] = {rate=.6, source="mill"},
["item:22793:0:0:0:0:0:0"] = {rate=.6, source="mill"},
["item:22791:0:0:0:0:0:0"] = {rate=.6, source="mill"},
["item:22792:0:0:0:0:0:0"] = {rate=.6, source="mill"},
},
["item:79251:0:0:0:0:0:0"] = { -- Shadow Pigment (Ink of Dreams)
["item:72237:0:0:0:0:0:0"] = {rate=.5, source="mill"},
["item:72234:0:0:0:0:0:0"] = {rate=.5, source="mill"},
["item:79010:0:0:0:0:0:0"] = {rate=.5, source="mill"},
["item:72235:0:0:0:0:0:0"] = {rate=.5, source="mill"},
["item:79011:0:0:0:0:0:0"] = {rate=.6, source="mill"},
["item:89639:0:0:0:0:0:0"] = {rate=.5, source="mill"},
},
["item:39341:0:0:0:0:0:0"] = { -- Silvery Pigment (Shimmering Ink)
["item:13464:0:0:0:0:0:0"] = {rate=.5, source="mill"},
["item:13463:0:0:0:0:0:0"] = {rate=.5, source="mill"},
["item:13465:0:0:0:0:0:0"] = {rate=.6, source="mill"},
["item:13466:0:0:0:0:0:0"] = {rate=.6, source="mill"},
["item:13467:0:0:0:0:0:0"] = {rate=.6, source="mill"},
},
["item:39340:0:0:0:0:0:0"] = { -- Violet Pigment (Celestial Ink)
["item:4625:0:0:0:0:0:0"] = {rate=.5, source="mill"},
["item:8831:0:0:0:0:0:0"] = {rate=.5, source="mill"},
["item:8838:0:0:0:0:0:0"] = {rate=.5, source="mill"},
["item:8839:0:0:0:0:0:0"] = {rate=.6, source="mill"},
["item:8845:0:0:0:0:0:0"] = {rate=.6, source="mill"},
["item:8846:0:0:0:0:0:0"] = {rate=.6, source="mill"},
},
-- ["item:39151:0:0:0:0:0:0"] = { -- Alabaster Pigment (Ivory / Moonglow Ink)
-- ["item:765:0:0:0:0:0:0"] = {rate=.5, source="mill"},
-- ["item:2447:0:0:0:0:0:0"] = {rate=.6, source="mill"},
-- ["item:2449:0:0:0:0:0:0"] = {rate=.6, source="mill"},
-- },
-- ["item:39343:0:0:0:0:0:0"] = { -- Azure Pigment (Ink of the Sea)
-- ["item:39969:0:0:0:0:0:0"] = {rate=.5, source="mill"},
-- ["item:36904:0:0:0:0:0:0"] = {rate=.5, source="mill"},
-- ["item:36907:0:0:0:0:0:0"] = {rate=.5, source="mill"},
-- ["item:36901:0:0:0:0:0:0"] = {rate=.5, source="mill"},
-- ["item:39970:0:0:0:0:0:0"] = {rate=.5, source="mill"},
-- ["item:37921:0:0:0:0:0:0"] = {rate=.5, source="mill"},
-- ["item:36905:0:0:0:0:0:0"] = {rate=.6, source="mill"},
-- ["item:36906:0:0:0:0:0:0"] = {rate=.6, source="mill"},
-- ["item:36903:0:0:0:0:0:0"] = {rate=.6, source="mill"},
-- },
-- ["item:61979:0:0:0:0:0:0"] = { -- Ashen Pigment (Blackfallow Ink)
-- ["item:52983:0:0:0:0:0:0"] = {rate=.5, source="mill"},
-- ["item:52984:0:0:0:0:0:0"] = {rate=.5, source="mill"},
-- ["item:52985:0:0:0:0:0:0"] = {rate=.5, source="mill"},
-- ["item:52986:0:0:0:0:0:0"] = {rate=.5, source="mill"},
-- ["item:52987:0:0:0:0:0:0"] = {rate=.6, source="mill"},
-- ["item:52988:0:0:0:0:0:0"] = {rate=.6, source="mill"},
-- },
-- ["item:39334:0:0:0:0:0:0"] = { -- Dusky Pigment (Midnight Ink)
-- ["item:785:0:0:0:0:0:0"] = {rate=.5, source="mill"},
-- ["item:2450:0:0:0:0:0:0"] = {rate=.5, source="mill"},
-- ["item:2452:0:0:0:0:0:0"] = {rate=.5, source="mill"},
-- ["item:2453:0:0:0:0:0:0"] = {rate=.6, source="mill"},
-- ["item:3820:0:0:0:0:0:0"] = {rate=.6, source="mill"},
-- },
-- ["item:39339:0:0:0:0:0:0"] = { -- Emerald Pigment (Jadefire Ink)
-- ["item:3818:0:0:0:0:0:0"] = {rate=.5, source="mill"},
-- ["item:3821:0:0:0:0:0:0"] = {rate=.5, source="mill"},
-- ["item:3358:0:0:0:0:0:0"] = {rate=.6, source="mill"},
-- ["item:3819:0:0:0:0:0:0"] = {rate=.6, source="mill"},
-- },
-- ["item:39338:0:0:0:0:0:0"] = { -- Golden Pigment (Lion's Ink)
-- ["item:3355:0:0:0:0:0:0"] = {rate=.5, source="mill"},
-- ["item:3369:0:0:0:0:0:0"] = {rate=.5, source="mill"},
-- ["item:3356:0:0:0:0:0:0"] = {rate=.6, source="mill"},
-- ["item:3357:0:0:0:0:0:0"] = {rate=.6, source="mill"},
-- },
-- ["item:39342:0:0:0:0:0:0"] = { -- Nether Pigment (Ethereal Ink)
-- ["item:22786:0:0:0:0:0:0"] = {rate=.5, source="mill"},
-- ["item:22785:0:0:0:0:0:0"] = {rate=.5, source="mill"},
-- ["item:22789:0:0:0:0:0:0"] = {rate=.5, source="mill"},
-- ["item:22787:0:0:0:0:0:0"] = {rate=.5, source="mill"},
-- ["item:22790:0:0:0:0:0:0"] = {rate=.6, source="mill"},
-- ["item:22793:0:0:0:0:0:0"] = {rate=.6, source="mill"},
-- ["item:22791:0:0:0:0:0:0"] = {rate=.6, source="mill"},
-- ["item:22792:0:0:0:0:0:0"] = {rate=.6, source="mill"},
-- },
-- ["item:79251:0:0:0:0:0:0"] = { -- Shadow Pigment (Ink of Dreams)
-- ["item:72237:0:0:0:0:0:0"] = {rate=.5, source="mill"},
-- ["item:72234:0:0:0:0:0:0"] = {rate=.5, source="mill"},
-- ["item:79010:0:0:0:0:0:0"] = {rate=.5, source="mill"},
-- ["item:72235:0:0:0:0:0:0"] = {rate=.5, source="mill"},
-- ["item:79011:0:0:0:0:0:0"] = {rate=.6, source="mill"},
-- ["item:89639:0:0:0:0:0:0"] = {rate=.5, source="mill"},
-- },
-- ["item:39341:0:0:0:0:0:0"] = { -- Silvery Pigment (Shimmering Ink)
-- ["item:13464:0:0:0:0:0:0"] = {rate=.5, source="mill"},
-- ["item:13463:0:0:0:0:0:0"] = {rate=.5, source="mill"},
-- ["item:13465:0:0:0:0:0:0"] = {rate=.6, source="mill"},
-- ["item:13466:0:0:0:0:0:0"] = {rate=.6, source="mill"},
-- ["item:13467:0:0:0:0:0:0"] = {rate=.6, source="mill"},
-- },
-- ["item:39340:0:0:0:0:0:0"] = { -- Violet Pigment (Celestial Ink)
-- ["item:4625:0:0:0:0:0:0"] = {rate=.5, source="mill"},
-- ["item:8831:0:0:0:0:0:0"] = {rate=.5, source="mill"},
-- ["item:8838:0:0:0:0:0:0"] = {rate=.5, source="mill"},
-- ["item:8839:0:0:0:0:0:0"] = {rate=.6, source="mill"},
-- ["item:8845:0:0:0:0:0:0"] = {rate=.6, source="mill"},
-- ["item:8846:0:0:0:0:0:0"] = {rate=.6, source="mill"},
-- },
-- rare pigments (inks)
["item:43109:0:0:0:0:0:0"] = { -- Icy Pigment (Snowfall Ink)
["item:39969:0:0:0:0:0:0"] = {rate=.05, source="mill"},
["item:36904:0:0:0:0:0:0"] = {rate=.05, source="mill"},
["item:36907:0:0:0:0:0:0"] = {rate=.05, source="mill"},
["item:36901:0:0:0:0:0:0"] = {rate=.05, source="mill"},
["item:39970:0:0:0:0:0:0"] = {rate=.05, source="mill"},
["item:37921:0:0:0:0:0:0"] = {rate=.05, source="mill"},
["item:36905:0:0:0:0:0:0"] = {rate=.1, source="mill"},
["item:36906:0:0:0:0:0:0"] = {rate=.1, source="mill"},
["item:36903:0:0:0:0:0:0"] = {rate=.1, source="mill"},
},
["item:61980:0:0:0:0:0:0"] = { -- Burning Embers (Inferno Ink)
["item:52983:0:0:0:0:0:0"] = {rate=.05, source="mill"},
["item:52984:0:0:0:0:0:0"] = {rate=.05, source="mill"},
["item:52985:0:0:0:0:0:0"] = {rate=.05, source="mill"},
["item:52986:0:0:0:0:0:0"] = {rate=.05, source="mill"},
["item:52987:0:0:0:0:0:0"] = {rate=.1, source="mill"},
["item:52988:0:0:0:0:0:0"] = {rate=.1, source="mill"},
},
["item:43104:0:0:0:0:0:0"] = { -- Burnt Pigment (Dawnstar Ink)
["item:3356:0:0:0:0:0:0"] = {rate=.1, source="mill"},
["item:3357:0:0:0:0:0:0"] = {rate=.1, source="mill"},
["item:3369:0:0:0:0:0:0"] = {rate=.05, source="mill"},
["item:3355:0:0:0:0:0:0"] = {rate=.05, source="mill"},
},
["item:43108:0:0:0:0:0:0"] = { -- Ebon Pigment (Darkflame Ink)
["item:22792:0:0:0:0:0:0"] = {rate=.1, source="mill"},
["item:22790:0:0:0:0:0:0"] = {rate=.1, source="mill"},
["item:22791:0:0:0:0:0:0"] = {rate=.1, source="mill"},
["item:22793:0:0:0:0:0:0"] = {rate=.1, source="mill"},
["item:22786:0:0:0:0:0:0"] = {rate=.05, source="mill"},
["item:22785:0:0:0:0:0:0"] = {rate=.05, source="mill"},
["item:22787:0:0:0:0:0:0"] = {rate=.05, source="mill"},
["item:22789:0:0:0:0:0:0"] = {rate=.05, source="mill"},
},
["item:43105:0:0:0:0:0:0"] = { -- Indigo Pigment (Royal Ink)
["item:3358:0:0:0:0:0:0"] = {rate=.1, source="mill"},
["item:3819:0:0:0:0:0:0"] = {rate=.1, source="mill"},
["item:3821:0:0:0:0:0:0"] = {rate=.05, source="mill"},
["item:3818:0:0:0:0:0:0"] = {rate=.05, source="mill"},
},
["item:79253:0:0:0:0:0:0"] = { -- Misty Pigment (Starlight Ink)
["item:72237:0:0:0:0:0:0"] = {rate=.05, source="mill"},
["item:72234:0:0:0:0:0:0"] = {rate=.05, source="mill"},
["item:79010:0:0:0:0:0:0"] = {rate=.05, source="mill"},
["item:72235:0:0:0:0:0:0"] = {rate=.05, source="mill"},
["item:79011:0:0:0:0:0:0"] = {rate=.1, source="mill"},
["item:89639:0:0:0:0:0:0"] = {rate=.05, source="mill"},
},
["item:43106:0:0:0:0:0:0"] = { -- Ruby Pigment (Fiery Ink)
["item:4625:0:0:0:0:0:0"] = {rate=.05, source="mill"},
["item:8838:0:0:0:0:0:0"] = {rate=.05, source="mill"},
["item:8831:0:0:0:0:0:0"] = {rate=.05, source="mill"},
["item:8845:0:0:0:0:0:0"] = {rate=.1, source="mill"},
["item:8846:0:0:0:0:0:0"] = {rate=.1, source="mill"},
["item:8839:0:0:0:0:0:0"] = {rate=.1, source="mill"},
},
["item:43107:0:0:0:0:0:0"] = { -- Sapphire Pigment (Ink of the Sky)
["item:13463:0:0:0:0:0:0"] = {rate=.05, source="mill"},
["item:13464:0:0:0:0:0:0"] = {rate=.05, source="mill"},
["item:13465:0:0:0:0:0:0"] = {rate=.1, source="mill"},
["item:13466:0:0:0:0:0:0"] = {rate=.1, source="mill"},
["item:13467:0:0:0:0:0:0"] = {rate=.1, source="mill"},
},
["item:43103:0:0:0:0:0:0"] = { -- Verdant Pigment (Hunter's Ink)
["item:2453:0:0:0:0:0:0"] = {rate=.1, source="mill"},
["item:3820:0:0:0:0:0:0"] = {rate=.1, source="mill"},
["item:2450:0:0:0:0:0:0"] = {rate=.05, source="mill"},
["item:785:0:0:0:0:0:0"] = {rate=.05, source="mill"},
["item:2452:0:0:0:0:0:0"] = {rate=.05, source="mill"},
},
-- -- rare pigments (inks)
-- ["item:43109:0:0:0:0:0:0"] = { -- Icy Pigment (Snowfall Ink)
-- ["item:39969:0:0:0:0:0:0"] = {rate=.05, source="mill"},
-- ["item:36904:0:0:0:0:0:0"] = {rate=.05, source="mill"},
-- ["item:36907:0:0:0:0:0:0"] = {rate=.05, source="mill"},
-- ["item:36901:0:0:0:0:0:0"] = {rate=.05, source="mill"},
-- ["item:39970:0:0:0:0:0:0"] = {rate=.05, source="mill"},
-- ["item:37921:0:0:0:0:0:0"] = {rate=.05, source="mill"},
-- ["item:36905:0:0:0:0:0:0"] = {rate=.1, source="mill"},
-- ["item:36906:0:0:0:0:0:0"] = {rate=.1, source="mill"},
-- ["item:36903:0:0:0:0:0:0"] = {rate=.1, source="mill"},
-- },
-- ["item:61980:0:0:0:0:0:0"] = { -- Burning Embers (Inferno Ink)
-- ["item:52983:0:0:0:0:0:0"] = {rate=.05, source="mill"},
-- ["item:52984:0:0:0:0:0:0"] = {rate=.05, source="mill"},
-- ["item:52985:0:0:0:0:0:0"] = {rate=.05, source="mill"},
-- ["item:52986:0:0:0:0:0:0"] = {rate=.05, source="mill"},
-- ["item:52987:0:0:0:0:0:0"] = {rate=.1, source="mill"},
-- ["item:52988:0:0:0:0:0:0"] = {rate=.1, source="mill"},
-- },
-- ["item:43104:0:0:0:0:0:0"] = { -- Burnt Pigment (Dawnstar Ink)
-- ["item:3356:0:0:0:0:0:0"] = {rate=.1, source="mill"},
-- ["item:3357:0:0:0:0:0:0"] = {rate=.1, source="mill"},
-- ["item:3369:0:0:0:0:0:0"] = {rate=.05, source="mill"},
-- ["item:3355:0:0:0:0:0:0"] = {rate=.05, source="mill"},
-- },
-- ["item:43108:0:0:0:0:0:0"] = { -- Ebon Pigment (Darkflame Ink)
-- ["item:22792:0:0:0:0:0:0"] = {rate=.1, source="mill"},
-- ["item:22790:0:0:0:0:0:0"] = {rate=.1, source="mill"},
-- ["item:22791:0:0:0:0:0:0"] = {rate=.1, source="mill"},
-- ["item:22793:0:0:0:0:0:0"] = {rate=.1, source="mill"},
-- ["item:22786:0:0:0:0:0:0"] = {rate=.05, source="mill"},
-- ["item:22785:0:0:0:0:0:0"] = {rate=.05, source="mill"},
-- ["item:22787:0:0:0:0:0:0"] = {rate=.05, source="mill"},
-- ["item:22789:0:0:0:0:0:0"] = {rate=.05, source="mill"},
-- },
-- ["item:43105:0:0:0:0:0:0"] = { -- Indigo Pigment (Royal Ink)
-- ["item:3358:0:0:0:0:0:0"] = {rate=.1, source="mill"},
-- ["item:3819:0:0:0:0:0:0"] = {rate=.1, source="mill"},
-- ["item:3821:0:0:0:0:0:0"] = {rate=.05, source="mill"},
-- ["item:3818:0:0:0:0:0:0"] = {rate=.05, source="mill"},
-- },
-- ["item:79253:0:0:0:0:0:0"] = { -- Misty Pigment (Starlight Ink)
-- ["item:72237:0:0:0:0:0:0"] = {rate=.05, source="mill"},
-- ["item:72234:0:0:0:0:0:0"] = {rate=.05, source="mill"},
-- ["item:79010:0:0:0:0:0:0"] = {rate=.05, source="mill"},
-- ["item:72235:0:0:0:0:0:0"] = {rate=.05, source="mill"},
-- ["item:79011:0:0:0:0:0:0"] = {rate=.1, source="mill"},
-- ["item:89639:0:0:0:0:0:0"] = {rate=.05, source="mill"},
-- },
-- ["item:43106:0:0:0:0:0:0"] = { -- Ruby Pigment (Fiery Ink)
-- ["item:4625:0:0:0:0:0:0"] = {rate=.05, source="mill"},
-- ["item:8838:0:0:0:0:0:0"] = {rate=.05, source="mill"},
-- ["item:8831:0:0:0:0:0:0"] = {rate=.05, source="mill"},
-- ["item:8845:0:0:0:0:0:0"] = {rate=.1, source="mill"},
-- ["item:8846:0:0:0:0:0:0"] = {rate=.1, source="mill"},
-- ["item:8839:0:0:0:0:0:0"] = {rate=.1, source="mill"},
-- },
-- ["item:43107:0:0:0:0:0:0"] = { -- Sapphire Pigment (Ink of the Sky)
-- ["item:13463:0:0:0:0:0:0"] = {rate=.05, source="mill"},
-- ["item:13464:0:0:0:0:0:0"] = {rate=.05, source="mill"},
-- ["item:13465:0:0:0:0:0:0"] = {rate=.1, source="mill"},
-- ["item:13466:0:0:0:0:0:0"] = {rate=.1, source="mill"},
-- ["item:13467:0:0:0:0:0:0"] = {rate=.1, source="mill"},
-- },
-- ["item:43103:0:0:0:0:0:0"] = { -- Verdant Pigment (Hunter's Ink)
-- ["item:2453:0:0:0:0:0:0"] = {rate=.1, source="mill"},
-- ["item:3820:0:0:0:0:0:0"] = {rate=.1, source="mill"},
-- ["item:2450:0:0:0:0:0:0"] = {rate=.05, source="mill"},
-- ["item:785:0:0:0:0:0:0"] = {rate=.05, source="mill"},
-- ["item:2452:0:0:0:0:0:0"] = {rate=.05, source="mill"},
-- },
--Vanilla Gems
["item:774:0:0:0:0:0:0"] = { -- malachite
["item:2770:0:0:0:0:0:0"] = {rate=.5, source="prospect"},
},
["item:818:0:0:0:0:0:0"] = { -- Tigerseye
["item:2770:0:0:0:0:0:0"] = {rate=.5, source="prospect"},
},
["item:1210:0:0:0:0:0:0"] = { -- Shadowgem
["item:2771:0:0:0:0:0:0"] = {rate=.4, source="prospect"},
["item:2770:0:0:0:0:0:0"] = {rate=.1, source="prospect"},
},
["item:1206:0:0:0:0:0:0"] = { -- Moss Agate
["item:2771:0:0:0:0:0:0"] = {rate=.3, source="prospect"},
},
["item:1705:0:0:0:0:0:0"] = { -- Lesser moonstone
["item:2771:0:0:0:0:0:0"] = {rate=.4, source="prospect"},
["item:2772:0:0:0:0:0:0"] = { rate=.3, source="prospect"},
},
["item:1529:0:0:0:0:0:0"] = { -- Jade
["item:2772:0:0:0:0:0:0"] = {rate=.4, source="prospect"},
["item:2771:0:0:0:0:0:0"] = {rate=.03, source="prospect"},
},
["item:3864:0:0:0:0:0:0"] = { -- Citrine
["item:2772:0:0:0:0:0:0"] = {rate=.4, source="prospect"}, -- iron
["item:3858:0:0:0:0:0:0"] = {rate=.3, source="prospect"}, -- mith
["item:2771:0:0:0:0:0:0"] = {rate=.03, source="prospect"}, -- tin
},
["item:7909:0:0:0:0:0:0"] = { -- Aquamarine
["item:3858:0:0:0:0:0:0"] = {rate=.3, source="prospect"},
["item:2772:0:0:0:0:0:0"] = {rate=.05, source="prospect"},
["item:2771:0:0:0:0:0:0"] = {rate=.03, source="prospect"},
},
["item:7910:0:0:0:0:0:0"] = { -- Star Ruby
["item:3858:0:0:0:0:0:0"] = {rate=.4, source="prospect"},
["item:10620:0:0:0:0:0:0"] = {rate=.1, source="prospect"},
["item:2772:0:0:0:0:0:0"] = {rate=.05, source="prospect"},
},
["item:12361:0:0:0:0:0:0"] = { -- Blue Sapphire
["item:10620:0:0:0:0:0:0"] = {rate=.3, source="prospect"},
["item:3858:0:0:0:0:0:0"] = {rate=.03, source="prospect"},
},
["item:12799:0:0:0:0:0:0"] = { -- Large Opal
["item:10620:0:0:0:0:0:0"] = {rate =.3, source="prospect"}, -- thorium
["item:3858:0:0:0:0:0:0"] = {rate=.03, source="prospect"}, -- Mith
},
["item:12800:0:0:0:0:0:0"] = { -- Azerothian Diamond
["item:10620:0:0:0:0:0:0"] = {rate=.3, source="prospect"},
["item:3858:0:0:0:0:0:0"] = {rate=.02, source="prospect"},
},
["item:12364:0:0:0:0:0:0"] = { -- Huge Emerald
["item:10620:0:0:0:0:0:0"] = {rate=.3, source="prospect"},
["item:3858:0:0:0:0:0:0"] = {rate=.02, source="prospect"},
},
-- --Vanilla Gems
-- ["item:774:0:0:0:0:0:0"] = { -- malachite
-- ["item:2770:0:0:0:0:0:0"] = {rate=.5, source="prospect"},
-- },
-- ["item:818:0:0:0:0:0:0"] = { -- Tigerseye
-- ["item:2770:0:0:0:0:0:0"] = {rate=.5, source="prospect"},
-- },
-- ["item:1210:0:0:0:0:0:0"] = { -- Shadowgem
-- ["item:2771:0:0:0:0:0:0"] = {rate=.4, source="prospect"},
-- ["item:2770:0:0:0:0:0:0"] = {rate=.1, source="prospect"},
-- },
-- ["item:1206:0:0:0:0:0:0"] = { -- Moss Agate
-- ["item:2771:0:0:0:0:0:0"] = {rate=.3, source="prospect"},
-- },
-- ["item:1705:0:0:0:0:0:0"] = { -- Lesser moonstone
-- ["item:2771:0:0:0:0:0:0"] = {rate=.4, source="prospect"},
-- ["item:2772:0:0:0:0:0:0"] = { rate=.3, source="prospect"},
-- },
-- ["item:1529:0:0:0:0:0:0"] = { -- Jade
-- ["item:2772:0:0:0:0:0:0"] = {rate=.4, source="prospect"},
-- ["item:2771:0:0:0:0:0:0"] = {rate=.03, source="prospect"},
-- },
-- ["item:3864:0:0:0:0:0:0"] = { -- Citrine
-- ["item:2772:0:0:0:0:0:0"] = {rate=.4, source="prospect"}, -- iron
-- ["item:3858:0:0:0:0:0:0"] = {rate=.3, source="prospect"}, -- mith
-- ["item:2771:0:0:0:0:0:0"] = {rate=.03, source="prospect"}, -- tin
-- },
-- ["item:7909:0:0:0:0:0:0"] = { -- Aquamarine
-- ["item:3858:0:0:0:0:0:0"] = {rate=.3, source="prospect"},
-- ["item:2772:0:0:0:0:0:0"] = {rate=.05, source="prospect"},
-- ["item:2771:0:0:0:0:0:0"] = {rate=.03, source="prospect"},
-- },
-- ["item:7910:0:0:0:0:0:0"] = { -- Star Ruby
-- ["item:3858:0:0:0:0:0:0"] = {rate=.4, source="prospect"},
-- ["item:10620:0:0:0:0:0:0"] = {rate=.1, source="prospect"},
-- ["item:2772:0:0:0:0:0:0"] = {rate=.05, source="prospect"},
-- },
-- ["item:12361:0:0:0:0:0:0"] = { -- Blue Sapphire
-- ["item:10620:0:0:0:0:0:0"] = {rate=.3, source="prospect"},
-- ["item:3858:0:0:0:0:0:0"] = {rate=.03, source="prospect"},
-- },
-- ["item:12799:0:0:0:0:0:0"] = { -- Large Opal
-- ["item:10620:0:0:0:0:0:0"] = {rate =.3, source="prospect"}, -- thorium
-- ["item:3858:0:0:0:0:0:0"] = {rate=.03, source="prospect"}, -- Mith
-- },
-- ["item:12800:0:0:0:0:0:0"] = { -- Azerothian Diamond
-- ["item:10620:0:0:0:0:0:0"] = {rate=.3, source="prospect"},
-- ["item:3858:0:0:0:0:0:0"] = {rate=.02, source="prospect"},
-- },
-- ["item:12364:0:0:0:0:0:0"] = { -- Huge Emerald
-- ["item:10620:0:0:0:0:0:0"] = {rate=.3, source="prospect"},
-- ["item:3858:0:0:0:0:0:0"] = {rate=.02, source="prospect"},
-- },
-- uncommon gems
["item:23117:0:0:0:0:0:0"] = { -- Azure Moonstone
["item:23424:0:0:0:0:0:0"] = {rate=.2, source="prospect"},
["item:23425:0:0:0:0:0:0"] = {rate=.2, source="prospect"},
},
["item:23077:0:0:0:0:0:0"] = { -- Blood Garnet
["item:23424:0:0:0:0:0:0"] = {rate=.2, source="prospect"},
["item:23425:0:0:0:0:0:0"] = {rate=.2, source="prospect"},
},
["item:23079:0:0:0:0:0:0"] = { -- Deep Peridot
["item:23424:0:0:0:0:0:0"] = {rate=.2, source="prospect"},
["item:23425:0:0:0:0:0:0"] = {rate=.2, source="prospect"},
},
["item:21929:0:0:0:0:0:0"] = { -- Flame Spessarite
["item:23424:0:0:0:0:0:0"] = {rate=.2, source="prospect"},
["item:23425:0:0:0:0:0:0"] = {rate=.2, source="prospect"},
},
["item:23112:0:0:0:0:0:0"] = { -- Golden Draenite
["item:23424:0:0:0:0:0:0"] = {rate=.2, source="prospect"},
["item:23425:0:0:0:0:0:0"] = {rate=.2, source="prospect"},
},
["item:23107:0:0:0:0:0:0"] = { -- Shadow Draenite
["item:23424:0:0:0:0:0:0"] = {rate=.2, source="prospect"},
["item:23425:0:0:0:0:0:0"] = {rate=.2, source="prospect"},
},
["item:36917:0:0:0:0:0:0"] = { -- Bloodstone
["item:36909:0:0:0:0:0:0"] = {rate=.25, source="prospect"},
["item:36912:0:0:0:0:0:0"] = {rate=.2, source="prospect"},
["item:36910:0:0:0:0:0:0"] = {rate=.25, source="prospect"},
},
["item:36923:0:0:0:0:0:0"] = { -- Chalcedony
["item:36909:0:0:0:0:0:0"] = {rate=.25, source="prospect"},
["item:36912:0:0:0:0:0:0"] = {rate=.2, source="prospect"},
["item:36910:0:0:0:0:0:0"] = {rate=.25, source="prospect"},
},
["item:36932:0:0:0:0:0:0"] = { -- Dark Jade
["item:36909:0:0:0:0:0:0"] = {rate=.25, source="prospect"},
["item:36912:0:0:0:0:0:0"] = {rate=.2, source="prospect"},
["item:36910:0:0:0:0:0:0"] = {rate=.25, source="prospect"},
},
["item:36929:0:0:0:0:0:0"] = { -- Huge Citrine
["item:36909:0:0:0:0:0:0"] = {rate=.25, source="prospect"},
["item:36912:0:0:0:0:0:0"] = {rate=.2, source="prospect"},
["item:36910:0:0:0:0:0:0"] = {rate=.25, source="prospect"},
},
["item:36926:0:0:0:0:0:0"] = { -- Shadow Crystal
["item:36909:0:0:0:0:0:0"] = {rate=.25, source="prospect"},
["item:36912:0:0:0:0:0:0"] = {rate=.2, source="prospect"},
["item:36910:0:0:0:0:0:0"] = {rate=.25, source="prospect"},
},
["item:36920:0:0:0:0:0:0"] = { -- Sun Crystal
["item:36909:0:0:0:0:0:0"] = {rate=.25, source="prospect"},
["item:36912:0:0:0:0:0:0"] = {rate=.2, source="prospect"},
["item:36910:0:0:0:0:0:0"] = {rate=.25, source="prospect"},
},
-- -- uncommon gems
-- ["item:23117:0:0:0:0:0:0"] = { -- Azure Moonstone
-- ["item:23424:0:0:0:0:0:0"] = {rate=.2, source="prospect"},
-- ["item:23425:0:0:0:0:0:0"] = {rate=.2, source="prospect"},
-- },
-- ["item:23077:0:0:0:0:0:0"] = { -- Blood Garnet
-- ["item:23424:0:0:0:0:0:0"] = {rate=.2, source="prospect"},
-- ["item:23425:0:0:0:0:0:0"] = {rate=.2, source="prospect"},
-- },
-- ["item:23079:0:0:0:0:0:0"] = { -- Deep Peridot
-- ["item:23424:0:0:0:0:0:0"] = {rate=.2, source="prospect"},
-- ["item:23425:0:0:0:0:0:0"] = {rate=.2, source="prospect"},
-- },
-- ["item:21929:0:0:0:0:0:0"] = { -- Flame Spessarite
-- ["item:23424:0:0:0:0:0:0"] = {rate=.2, source="prospect"},
-- ["item:23425:0:0:0:0:0:0"] = {rate=.2, source="prospect"},
-- },
-- ["item:23112:0:0:0:0:0:0"] = { -- Golden Draenite
-- ["item:23424:0:0:0:0:0:0"] = {rate=.2, source="prospect"},
-- ["item:23425:0:0:0:0:0:0"] = {rate=.2, source="prospect"},
-- },
-- ["item:23107:0:0:0:0:0:0"] = { -- Shadow Draenite
-- ["item:23424:0:0:0:0:0:0"] = {rate=.2, source="prospect"},
-- ["item:23425:0:0:0:0:0:0"] = {rate=.2, source="prospect"},
-- },
-- ["item:36917:0:0:0:0:0:0"] = { -- Bloodstone
-- ["item:36909:0:0:0:0:0:0"] = {rate=.25, source="prospect"},
-- ["item:36912:0:0:0:0:0:0"] = {rate=.2, source="prospect"},
-- ["item:36910:0:0:0:0:0:0"] = {rate=.25, source="prospect"},
-- },
-- ["item:36923:0:0:0:0:0:0"] = { -- Chalcedony
-- ["item:36909:0:0:0:0:0:0"] = {rate=.25, source="prospect"},
-- ["item:36912:0:0:0:0:0:0"] = {rate=.2, source="prospect"},
-- ["item:36910:0:0:0:0:0:0"] = {rate=.25, source="prospect"},
-- },
-- ["item:36932:0:0:0:0:0:0"] = { -- Dark Jade
-- ["item:36909:0:0:0:0:0:0"] = {rate=.25, source="prospect"},
-- ["item:36912:0:0:0:0:0:0"] = {rate=.2, source="prospect"},
-- ["item:36910:0:0:0:0:0:0"] = {rate=.25, source="prospect"},
-- },
-- ["item:36929:0:0:0:0:0:0"] = { -- Huge Citrine
-- ["item:36909:0:0:0:0:0:0"] = {rate=.25, source="prospect"},
-- ["item:36912:0:0:0:0:0:0"] = {rate=.2, source="prospect"},
-- ["item:36910:0:0:0:0:0:0"] = {rate=.25, source="prospect"},
-- },
-- ["item:36926:0:0:0:0:0:0"] = { -- Shadow Crystal
-- ["item:36909:0:0:0:0:0:0"] = {rate=.25, source="prospect"},
-- ["item:36912:0:0:0:0:0:0"] = {rate=.2, source="prospect"},
-- ["item:36910:0:0:0:0:0:0"] = {rate=.25, source="prospect"},
-- },
-- ["item:36920:0:0:0:0:0:0"] = { -- Sun Crystal
-- ["item:36909:0:0:0:0:0:0"] = {rate=.25, source="prospect"},
-- ["item:36912:0:0:0:0:0:0"] = {rate=.2, source="prospect"},
-- ["item:36910:0:0:0:0:0:0"] = {rate=.25, source="prospect"},
-- },
-- ["item:52182:0:0:0:0:0:0"] = { -- Jasper
-- ["item:53038:0:0:0:0:0:0"] = {rate=.25, source="prospect"},
-- ["item:52185:0:0:0:0:0:0"] = {rate=.2, source="prospect"},
@ -358,60 +358,60 @@ local conversions = {
-- },
--Rare Gems
["item:23440:0:0:0:0:0:0"] = { -- Dawnstone
["item:23424:0:0:0:0:0:0"] = {rate=.01, source="prospect"},
["item:23425:0:0:0:0:0:0"] = {rate=.04, source="prospect"},
},
["item:23436:0:0:0:0:0:0"] = { -- Living Ruby
["item:23424:0:0:0:0:0:0"] = {rate=.01, source="prospect"},
["item:23425:0:0:0:0:0:0"] = {rate=.04, source="prospect"},
},
["item:23441:0:0:0:0:0:0"] = { -- Nightseye
["item:23424:0:0:0:0:0:0"] = {rate=.01, source="prospect"},
["item:23425:0:0:0:0:0:0"] = {rate=.04, source="prospect"},
},
["item:23439:0:0:0:0:0:0"] = { -- Noble Topaz
["item:23424:0:0:0:0:0:0"] = {rate=.01, source="prospect"},
["item:23425:0:0:0:0:0:0"] = {rate=.04, source="prospect"},
},
["item:23438:0:0:0:0:0:0"] = { -- Star of Elune
["item:23424:0:0:0:0:0:0"] = {rate=.01, source="prospect"},
["item:23425:0:0:0:0:0:0"] = {rate=.04, source="prospect"},
},
["item:23437:0:0:0:0:0:0"] = { -- Talasite
["item:23424:0:0:0:0:0:0"] = {rate=.01, source="prospect"},
["item:23425:0:0:0:0:0:0"] = {rate=.04, source="prospect"},
},
["item:36921:0:0:0:0:0:0"] = { -- Autumn's Glow
["item:36909:0:0:0:0:0:0"] = {rate=.01, source="prospect"},
["item:36912:0:0:0:0:0:0"] = {rate=.04, source="prospect"},
["item:36910:0:0:0:0:0:0"] = {rate=.04, source="prospect"},
},
["item:36933:0:0:0:0:0:0"] = { -- Forest Emerald
["item:36909:0:0:0:0:0:0"] = {rate=.01, source="prospect"},
["item:36912:0:0:0:0:0:0"] = {rate=.04, source="prospect"},
["item:36910:0:0:0:0:0:0"] = {rate=.04, source="prospect"},
},
["item:36930:0:0:0:0:0:0"] = { -- Monarch Topaz
["item:36909:0:0:0:0:0:0"] = {rate=.01, source="prospect"},
["item:36912:0:0:0:0:0:0"] = {rate=.04, source="prospect"},
["item:36910:0:0:0:0:0:0"] = {rate=.04, source="prospect"},
},
["item:36918:0:0:0:0:0:0"] = { -- Scarlet Ruby
["item:36909:0:0:0:0:0:0"] = {rate=.01, source="prospect"},
["item:36912:0:0:0:0:0:0"] = {rate=.04, source="prospect"},
["item:36910:0:0:0:0:0:0"] = {rate=.04, source="prospect"},
},
["item:36924:0:0:0:0:0:0"] = { -- Sky Sapphire
["item:36909:0:0:0:0:0:0"] = {rate=.01, source="prospect"},
["item:36912:0:0:0:0:0:0"] = {rate=.04, source="prospect"},
["item:36910:0:0:0:0:0:0"] = {rate=.04, source="prospect"},
},
["item:36927:0:0:0:0:0:0"] = { -- Twilight Opal
["item:36909:0:0:0:0:0:0"] = {rate=.01, source="prospect"},
["item:36912:0:0:0:0:0:0"] = {rate=.04, source="prospect"},
["item:36910:0:0:0:0:0:0"] = {rate=.04, source="prospect"},
},
-- ["item:23440:0:0:0:0:0:0"] = { -- Dawnstone
-- ["item:23424:0:0:0:0:0:0"] = {rate=.01, source="prospect"},
-- ["item:23425:0:0:0:0:0:0"] = {rate=.04, source="prospect"},
-- },
-- ["item:23436:0:0:0:0:0:0"] = { -- Living Ruby
-- ["item:23424:0:0:0:0:0:0"] = {rate=.01, source="prospect"},
-- ["item:23425:0:0:0:0:0:0"] = {rate=.04, source="prospect"},
-- },
-- ["item:23441:0:0:0:0:0:0"] = { -- Nightseye
-- ["item:23424:0:0:0:0:0:0"] = {rate=.01, source="prospect"},
-- ["item:23425:0:0:0:0:0:0"] = {rate=.04, source="prospect"},
-- },
-- ["item:23439:0:0:0:0:0:0"] = { -- Noble Topaz
-- ["item:23424:0:0:0:0:0:0"] = {rate=.01, source="prospect"},
-- ["item:23425:0:0:0:0:0:0"] = {rate=.04, source="prospect"},
-- },
-- ["item:23438:0:0:0:0:0:0"] = { -- Star of Elune
-- ["item:23424:0:0:0:0:0:0"] = {rate=.01, source="prospect"},
-- ["item:23425:0:0:0:0:0:0"] = {rate=.04, source="prospect"},
-- },
-- ["item:23437:0:0:0:0:0:0"] = { -- Talasite
-- ["item:23424:0:0:0:0:0:0"] = {rate=.01, source="prospect"},
-- ["item:23425:0:0:0:0:0:0"] = {rate=.04, source="prospect"},
-- },
-- ["item:36921:0:0:0:0:0:0"] = { -- Autumn's Glow
-- ["item:36909:0:0:0:0:0:0"] = {rate=.01, source="prospect"},
-- ["item:36912:0:0:0:0:0:0"] = {rate=.04, source="prospect"},
-- ["item:36910:0:0:0:0:0:0"] = {rate=.04, source="prospect"},
-- },
-- ["item:36933:0:0:0:0:0:0"] = { -- Forest Emerald
-- ["item:36909:0:0:0:0:0:0"] = {rate=.01, source="prospect"},
-- ["item:36912:0:0:0:0:0:0"] = {rate=.04, source="prospect"},
-- ["item:36910:0:0:0:0:0:0"] = {rate=.04, source="prospect"},
-- },
-- ["item:36930:0:0:0:0:0:0"] = { -- Monarch Topaz
-- ["item:36909:0:0:0:0:0:0"] = {rate=.01, source="prospect"},
-- ["item:36912:0:0:0:0:0:0"] = {rate=.04, source="prospect"},
-- ["item:36910:0:0:0:0:0:0"] = {rate=.04, source="prospect"},
-- },
-- ["item:36918:0:0:0:0:0:0"] = { -- Scarlet Ruby
-- ["item:36909:0:0:0:0:0:0"] = {rate=.01, source="prospect"},
-- ["item:36912:0:0:0:0:0:0"] = {rate=.04, source="prospect"},
-- ["item:36910:0:0:0:0:0:0"] = {rate=.04, source="prospect"},
-- },
-- ["item:36924:0:0:0:0:0:0"] = { -- Sky Sapphire
-- ["item:36909:0:0:0:0:0:0"] = {rate=.01, source="prospect"},
-- ["item:36912:0:0:0:0:0:0"] = {rate=.04, source="prospect"},
-- ["item:36910:0:0:0:0:0:0"] = {rate=.04, source="prospect"},
-- },
-- ["item:36927:0:0:0:0:0:0"] = { -- Twilight Opal
-- ["item:36909:0:0:0:0:0:0"] = {rate=.01, source="prospect"},
-- ["item:36912:0:0:0:0:0:0"] = {rate=.04, source="prospect"},
-- ["item:36910:0:0:0:0:0:0"] = {rate=.04, source="prospect"},
-- },
-- ["item:52192:0:0:0:0:0:0"] = { -- Dream Emerald
-- ["item:53038:0:0:0:0:0:0"] = {rate=.08, source="prospect"},
-- ["item:52185:0:0:0:0:0:0"] = {rate=.05, source="prospect"},

3
TradeSkillMaster_Crafting/Locale/enUS.lua

@ -168,6 +168,9 @@ L["Total"] = true
L["Vendor"] = true
L["Visit Bank"] = true
L["Visit Guild Bank"] = true
L["Visit Personal Bank"] = true
L["Visit Realm Bank"] = true
L["Realm Bank"] = true
L["Visit Vendor"] = true
L["Warning: The min restock quantity must be lower than the max restock quantity."] = true
L["When you click on the \"Restock Queue\" button enough of each craft will be queued so that you have this maximum number on hand. For example, if you have 2 of item X on hand and you set this to 4, 2 more will be added to the craft queue."] = true

22
TradeSkillMaster_Crafting/Modules/CraftingGUI.lua

@ -2041,7 +2041,12 @@ function GUI:CreateGatheringSelectionFrame(parent)
dropdown:SetMultiselect(true)
dropdown:SetCallback("OnValueChanged", function(_, _, profession, value)
private.gather.professions[profession] = value or nil
GUI:UpdateGatherSelectionWindow()
-- Only update the button state, don't rebuild the dropdown list
if next(private.gather.professions) then
frame.gatherButton:Enable()
else
frame.gatherButton:Disable()
end
end)
frame.professionDropdown = dropdown
@ -2622,8 +2627,19 @@ function GUI:GatheringEventHandler(event)
if not GUI.gatheringFrame or not GUI.gatheringFrame:IsShown() then return end
if event == "GUILDBANKFRAME_OPENED" then
private.currentSource = UnitName("player")
private.currentTask = L["Visit Guild Bank"]
-- Ascension WoW: Detect bank type based on first tab name
local numTabs = GetNumGuildBankTabs()
local firstTabName = numTabs > 0 and GetGuildBankTabInfo(1) or nil
if firstTabName == "Personal Bank" then
private.currentSource = UnitName("player")
private.currentTask = L["Visit Personal Bank"]
elseif firstTabName == "Realm Bank" then
private.currentSource = L["Realm Bank"]
private.currentTask = L["Visit Realm Bank"]
else
private.currentSource = UnitName("player")
private.currentTask = L["Visit Guild Bank"]
end
elseif event == "GUILDBANKFRAME_CLOSED" then
private.currentSource = nil
private.currentTask = nil

2
TradeSkillMaster_Crafting/Modules/Gather.lua

@ -34,7 +34,7 @@ function Gather:gatherItems(source, task)
if source == L["Vendor"] then
Gather:BuyFromMerchant(items)
elseif source == UnitName("player") and (task == L["Visit Bank"] or task == L["Visit Guild Bank"]) then
elseif (source == UnitName("player") or source == L["Realm Bank"]) and (task == L["Visit Bank"] or task == L["Visit Guild Bank"] or task == L["Visit Personal Bank"] or task == L["Visit Realm Bank"]) then
Gather:GatherBank(items)
elseif source == UnitName("player") and task == L["Mail Items"] then
Gather:MailItems(items)

62
TradeSkillMaster_Crafting/Modules/Inventory.lua

@ -75,6 +75,24 @@
end
end
end
-- Ascension WoW: add personal bank counts for all non-ignored characters
for _, player in pairs(TSMAPI:ModuleAPI("ItemTracker", "playerlist") or {}) do
if player == UnitName("player") or not TSM.db.global.ignoreCharacters[player] then
local personalBank = TSMAPI:ModuleAPI("ItemTracker", "personalbank", player) or {}
for itemString, quantity in pairs(personalBank) do
otherTotal[itemString] = (otherTotal[itemString] or 0) + quantity
total[itemString] = (total[itemString] or 0) + quantity
end
end
end
-- Ascension WoW: add realm bank counts
local realmBank = TSMAPI:ModuleAPI("ItemTracker", "realmbank") or {}
for itemString, quantity in pairs(realmBank) do
otherTotal[itemString] = (otherTotal[itemString] or 0) + quantity
total[itemString] = (total[itemString] or 0) + quantity
end
return bagTotal, auctionTotal, otherTotal, total
end
@ -104,6 +122,18 @@
end
end
-- Ascension WoW: add personal bank counts for all non-ignored characters
for _, player in pairs(TSMAPI:ModuleAPI("ItemTracker", "playerlist") or {}) do
if player == UnitName("player") or not TSM.db.global.ignoreCharacters[player] then
local personalBank = TSMAPI:ModuleAPI("ItemTracker", "personalbank", player) or {}
count = count + (personalBank[itemString] or 0)
end
end
-- Ascension WoW: add realm bank count
local realmBank = TSMAPI:ModuleAPI("ItemTracker", "realmbank") or {}
count = count + (realmBank[itemString] or 0)
if TSMAPI.SOULBOUND_MATS[itemString] then
count = count + GetItemCount(itemString, true)
end
@ -119,13 +149,15 @@
local crafterBags = TSMAPI:ModuleAPI("ItemTracker", "playerbags", crafter) or {}
local crafterMail = TSMAPI:ModuleAPI("ItemTracker", "playermail", crafter) or {}
local crafterBank = TSMAPI:ModuleAPI("ItemTracker", "playerbank", crafter) or {}
-- Ascension WoW: crafter's personal bank
local crafterPersonalBank = TSMAPI:ModuleAPI("ItemTracker", "personalbank", crafter) or {}
-- add vendor items
local task = {}
local items = {}
for itemString, quantity in pairs(neededMats) do
if TSMAPI:GetVendorCost(itemString) then
local vendorNeed = quantity - ((crafterBags[itemString] or 0) + (crafterMail[itemString] or 0) + (crafterBank[itemString] or 0))
local vendorNeed = quantity - ((crafterBags[itemString] or 0) + (crafterMail[itemString] or 0) + (crafterBank[itemString] or 0) + (crafterPersonalBank[itemString] or 0))
if vendorNeed > 0 then
items[itemString] = vendorNeed
end
@ -171,10 +203,13 @@
gbank = TSMAPI:ModuleAPI("ItemTracker", "guildbank", guild) or {}
end
local mail = TSMAPI:ModuleAPI("ItemTracker", "playermail", player) or {}
-- Ascension WoW: personal bank for this player
local personalBank = TSMAPI:ModuleAPI("ItemTracker", "personalbank", player) or {}
local bankItems = {}
local gbankItems = {}
local mailItems = {}
local bagItems = {}
local personalBankItems = {}
for itemString in pairs(neededMats) do
local soulboundBagCount, soulboundBankCount
@ -192,6 +227,12 @@
gbankItems[itemString] = gbank[itemString]
end
end
-- Ascension WoW: check personal bank
if personalBank[itemString] and shortItems[itemString] then
if shortItems[itemString] - (crafterMail[itemString] or 0) - (player ~= crafter and bags[itemString] or 0) > 0 then
personalBankItems[itemString] = personalBank[itemString]
end
end
if mail[itemString] and shortItems[itemString] then
mailItems[itemString] = mail[itemString]
end
@ -216,6 +257,10 @@
if next(gbankItems) then
tinsert(task, { taskType = L["Visit Guild Bank"], items = gbankItems })
end
-- Ascension WoW: personal bank task
if next(personalBankItems) then
tinsert(task, { taskType = L["Visit Personal Bank"], items = personalBankItems })
end
if next(mailItems) then
tinsert(task, { taskType = L["Collect Mail"], items = mailItems })
end
@ -227,6 +272,21 @@
end
end
end
-- Ascension WoW: add realm bank as a separate source
local realmBank = TSMAPI:ModuleAPI("ItemTracker", "realmbank") or {}
local realmBankTask = {}
local realmBankItems = {}
for itemString in pairs(neededMats) do
if realmBank[itemString] and shortItems[itemString] then
if shortItems[itemString] - (crafterMail[itemString] or 0) > 0 then
realmBankItems[itemString] = realmBank[itemString]
end
end
end
if next(realmBankItems) then
tinsert(realmBankTask, { taskType = L["Visit Realm Bank"], items = realmBankItems })
tinsert(sources, { sourceName = L["Realm Bank"], isCrafter = false, isVendor = false, isAH = false, tasks = realmBankTask, isCurrent = true })
end
-- add auction house tasks
local auctionTask = {}

4
TradeSkillMaster_ItemTracker/Locale/enUS.lua

@ -14,9 +14,13 @@ local L = LibStub("AceLocale-3.0"):NewLocale("TradeSkillMaster_ItemTracker", "en
if not L then return end
L["%s (%s bags, %s bank, %s AH, %s mail)"] = true
L["%s (%s bags, %s bank, %s AH, %s mail, %s personal)"] = true
L["%s in guild bank"] = true
L["%s in realm bank"] = true
L["%s item(s) total"] = true
L["(%s player, %s alts, %s guild banks, %s AH)"] = true
L["(%s player, %s alts, %s guild, %s AH, %s personal, %s realm)"] = true
L["Realm Bank"] = true
L["AH"] = true
L["Bags"] = true
L["Bank"] = true

111
TradeSkillMaster_ItemTracker/Modules/data.lua

@ -78,12 +78,39 @@ function Data:ThrottleEvent(event)
throttleFrames[event]:Show()
end
-- Ascension WoW bank type constants
local BANK_TYPE_PERSONAL = "personal"
local BANK_TYPE_REALM = "realm"
local BANK_TYPE_GUILD = "guild"
-- Detect the type of bank currently open based on tab names
-- Ascension uses "Personal Bank" and "Realm Bank" as tab names for custom banks
local function GetCurrentBankType()
local numTabs = GetNumGuildBankTabs()
if numTabs == 0 then return nil end
local firstTabName = GetGuildBankTabInfo(1)
if firstTabName == "Personal Bank" then
return BANK_TYPE_PERSONAL
elseif firstTabName == "Realm Bank" then
return BANK_TYPE_REALM
else
return BANK_TYPE_GUILD
end
end
-- Store the current bank type when opened (persists until next open)
local currentOpenBankType = nil
function Data:EventHandler(event, fire)
if isScanning then return end
if fire ~= "FIRE" then
Data:ThrottleEvent(event)
else
if event == "GUILDBANKFRAME_OPENED" then
-- Detect and store the bank type
currentOpenBankType = GetCurrentBankType()
-- Query all tabs of the gbank to ensure all tabs will be scanned.
local initialTab = GetCurrentGuildBankTab()
for tab = 1, GetNumGuildBankTabs() do
@ -93,7 +120,14 @@ function Data:EventHandler(event, fire)
end
QueryGuildBankTab(initialTab)
elseif event == "GUILDBANKBAGSLOTS_CHANGED" then
Data:GetGuildBankData()
-- Route to the appropriate handler based on bank type
if currentOpenBankType == BANK_TYPE_PERSONAL then
Data:GetPersonalBankData()
elseif currentOpenBankType == BANK_TYPE_REALM then
Data:GetRealmBankData()
else
Data:GetGuildBankData()
end
elseif event == "AUCTION_OWNED_LIST_UPDATE" then
Data:ScanPlayerAuctions()
end
@ -128,35 +162,86 @@ function Data:GetBankData(state)
TSM.Sync:BroadcastUpdateRequest()
end
-- scan the guild bank
function Data:GetGuildBankData()
if not TSM.CURRENT_GUILD then
Data:StoreCurrentGuildInfo(true)
if not TSM.CURRENT_GUILD then return end
end
wipe(TSM.guilds[TSM.CURRENT_GUILD].items)
for tab = 1, GetNumGuildBankTabs() do
if select(5, GetGuildBankTabInfo(tab)) > 0 or IsGuildLeader(UnitName("player")) then
-- Helper function to scan all guild bank slots and return items table
local function ScanGuildBankSlots()
local items = {}
local numTabs = GetNumGuildBankTabs()
for tab = 1, numTabs do
local name, icon, isViewable, canDeposit, numWithdrawals = GetGuildBankTabInfo(tab)
-- Ascension WoW: For Personal/Realm banks, always scan (numWithdrawals check may not apply)
local canAccess = (numWithdrawals and numWithdrawals > 0) or IsGuildLeader(UnitName("player")) or (name == "Personal Bank") or (name == "Realm Bank")
if canAccess then
for slot = 1, MAX_GUILDBANK_SLOTS_PER_TAB or 98 do
local itemString = TSMAPI:GetItemString(GetGuildBankItemLink(tab, slot))
local baseItemString = TSMAPI:GetBaseItemString(GetGuildBankItemLink(tab, slot))
if itemString then
local quantity = select(2, GetGuildBankItemInfo(tab, slot))
TSM.guilds[TSM.CURRENT_GUILD].items[itemString] = (TSM.guilds[TSM.CURRENT_GUILD].items[itemString] or 0) + quantity
items[itemString] = (items[itemString] or 0) + quantity
if itemString ~= baseItemString then
TSM.guilds[TSM.CURRENT_GUILD].items[baseItemString] = (TSM.guilds[TSM.CURRENT_GUILD].items[baseItemString] or 0) + quantity
items[baseItemString] = (items[baseItemString] or 0) + quantity
end
end
end
end
end
return items
end
-- scan the guild bank (real guild bank only)
function Data:GetGuildBankData()
if not TSM.CURRENT_GUILD then
Data:StoreCurrentGuildInfo(true)
if not TSM.CURRENT_GUILD then return end
end
wipe(TSM.guilds[TSM.CURRENT_GUILD].items)
local items = ScanGuildBankSlots()
for itemString, quantity in pairs(items) do
TSM.guilds[TSM.CURRENT_GUILD].items[itemString] = quantity
end
if GuildBankFrame and GuildBankFrame:IsVisible() then
TSM.guilds[TSM.CURRENT_GUILD].lastUpdate = time()
end
TSM.Sync:BroadcastUpdateRequest()
end
-- Ascension WoW: scan the personal bank (per character)
function Data:GetPersonalBankData()
-- Initialize personal bank for current player if needed
if not TSM.personalBanks[TSM.CURRENT_PLAYER] then
TSM.personalBanks[TSM.CURRENT_PLAYER] = { items = {}, lastUpdate = 0 }
end
wipe(TSM.personalBanks[TSM.CURRENT_PLAYER].items)
local items = ScanGuildBankSlots()
for itemString, quantity in pairs(items) do
TSM.personalBanks[TSM.CURRENT_PLAYER].items[itemString] = quantity
end
TSM.personalBanks[TSM.CURRENT_PLAYER].lastUpdate = time()
TSM.Sync:BroadcastUpdateRequest()
end
-- Ascension WoW: scan the realm bank (shared across realm)
function Data:GetRealmBankData()
-- Initialize realm bank if needed
if not TSM.realmBank.items then
TSM.realmBank.items = {}
end
wipe(TSM.realmBank.items)
local items = ScanGuildBankSlots()
for itemString, quantity in pairs(items) do
TSM.realmBank.items[itemString] = quantity
end
if GuildBankFrame and GuildBankFrame:IsVisible() then
TSM.realmBank.lastUpdate = time()
end
TSM.Sync:BroadcastUpdateRequest()
end
function Data:ScanPlayerAuctions()
wipe(TSM.characters[TSM.CURRENT_PLAYER].auctions)
TSM.characters[TSM.CURRENT_PLAYER].auctions.time = time()

83
TradeSkillMaster_ItemTracker/TradeSkillMaster_ItemTracker.lua

@ -23,6 +23,10 @@ local savedDBDefaults = {
characters = {},
guilds = {},
ignoreGuilds = {},
-- Ascension WoW: Personal banks (per character, stored by character name)
personalBanks = {},
-- Ascension WoW: Realm bank (shared across all characters on realm)
realmBank = { items = {}, lastUpdate = 0 },
},
-- data that is stored per user profile
@ -47,6 +51,11 @@ local guildDefaults = {
items = {},
lastUpdate = 0,
}
-- Ascension WoW: Personal bank defaults (same structure as guild)
local personalBankDefaults = {
items = {},
lastUpdate = 0,
}
-- Called once the player has loaded into the game
-- Anything that needs to be done in order to initialize the addon should go here
@ -61,6 +70,9 @@ function TSM:OnInitialize()
TSM.characters = TSM.db.realm.characters
TSM.guilds = TSM.db.realm.guilds
-- Ascension WoW: Personal banks and realm bank
TSM.personalBanks = TSM.db.realm.personalBanks
TSM.realmBank = TSM.db.realm.realmBank
-- handle connected realms for characters
local connectedRealms = TSMAPI.GetConnectedRealms and TSMAPI:GetConnectedRealms() or {}
@ -117,6 +129,11 @@ function TSM:OnInitialize()
for _, guildData in pairs(TSM.guilds) do
ClearItemIDs(guildData.items)
end
-- Ascension WoW: Clean up personal banks and realm bank
for _, personalBankData in pairs(TSM.personalBanks) do
ClearItemIDs(personalBankData.items)
end
ClearItemIDs(TSM.realmBank.items)
TSM.Data:Initialize()
TSM:UpdatePlayerLookup()
@ -151,6 +168,11 @@ function TSM:RegisterModule()
{ key = "guildtotal", callback = "GetGuildTotal" },
{ key = "playerguildtotal", callback = "GetPlayerGuildTotal" },
{ key = "playerguild", callback = "GetPlayerGuild" },
-- Ascension WoW: Personal banks and realm bank APIs
{ key = "personalbank", callback = "GetPersonalBank" },
{ key = "realmbank", callback = "GetRealmBank" },
{ key = "personalbankstotal", callback = "GetPersonalBanksTotal" },
{ key = "realmbanktotal", callback = "GetRealmBankTotal" },
}
--TSM.sync = { callback = "Sync:Callback" }
TSM.tooltipOptions = { callback = "Config:LoadTooltipOptions" }
@ -169,9 +191,18 @@ function TSM:GetTooltip(itemString)
local player, alts = TSM:GetPlayerTotal(itemString)
local guild = TSM:GetGuildTotal(itemString)
local auctions = TSM:GetAuctionsTotal(itemString)
grandTotal = grandTotal + player + alts + guild + auctions
-- Ascension WoW: Add personal banks and realm bank
local personalBanks = TSM:GetPersonalBanksTotal(itemString)
local realmBank = TSM:GetRealmBankTotal(itemString)
grandTotal = grandTotal + player + alts + guild + auctions + personalBanks + realmBank
if grandTotal > 0 then
tinsert(text, { left = " " .. "ItemTracker:", right = format(L["(%s player, %s alts, %s guild banks, %s AH)"], "|cffffffff" .. player .. "|r", "|cffffffff" .. alts .. "|r", "|cffffffff" .. guild .. "|r", "|cffffffff" .. auctions .. "|r") })
tinsert(text, { left = " " .. "ItemTracker:", right = format(L["(%s player, %s alts, %s guild, %s AH, %s personal, %s realm)"],
"|cffffffff" .. player .. "|r",
"|cffffffff" .. alts .. "|r",
"|cffffffff" .. guild .. "|r",
"|cffffffff" .. auctions .. "|r",
"|cffffffff" .. personalBanks .. "|r",
"|cffffffff" .. realmBank .. "|r") })
end
elseif TSM.db.global.tooltip == "full" then
for name, data in pairs(TSM.characters) do
@ -179,17 +210,26 @@ function TSM:GetTooltip(itemString)
local bank = data.bank[itemString] or 0
local auctions = data.auctions[itemString] or 0
local mail = data.mail[itemString] or 0
local total = bags + bank + auctions + mail
-- Ascension WoW: Add personal bank for this character
local personalBank = TSM.personalBanks[name] and TSM.personalBanks[name].items[itemString] or 0
local total = bags + bank + auctions + mail + personalBank
grandTotal = grandTotal + total
local bagText = "|cffffffff" .. bags .. "|r"
local bankText = "|cffffffff" .. bank .. "|r"
local auctionText = "|cffffffff" .. auctions .. "|r"
local mailText = "|cffffffff" .. mail .. "|r"
local personalBankText = "|cffffffff" .. personalBank .. "|r"
local totalText = "|cffffffff" .. total .. "|r"
if total > 0 then
tinsert(text, { left = format(" %s:", name), right = format(L["%s (%s bags, %s bank, %s AH, %s mail)"], "|cffffffff" .. totalText, "|cffffffff" .. bagText, "|cffffffff" .. bankText, "|cffffffff" .. auctionText, "|cffffffff" .. mailText) })
tinsert(text, { left = format(" %s:", name), right = format(L["%s (%s bags, %s bank, %s AH, %s mail, %s personal)"],
"|cffffffff" .. totalText,
"|cffffffff" .. bagText,
"|cffffffff" .. bankText,
"|cffffffff" .. auctionText,
"|cffffffff" .. mailText,
"|cffffffff" .. personalBankText) })
end
end
@ -205,6 +245,14 @@ function TSM:GetTooltip(itemString)
end
end
end
-- Ascension WoW: Show realm bank
local realmBank = TSM:GetRealmBankTotal(itemString)
if realmBank > 0 then
grandTotal = grandTotal + realmBank
local realmBankText = "|cffffffff" .. realmBank .. "|r"
tinsert(text, { left = " " .. L["Realm Bank"] .. ":", right = format(L["%s in realm bank"], realmBankText) })
end
end
if #text > 0 then
@ -344,3 +392,30 @@ function TSM:GetPlayerGuild(player)
if not player or not TSM.characters[player] then return end
return TSM.characters[player].guild
end
-- Ascension WoW: Get personal bank data for a player
function TSM:GetPersonalBank(player)
player = player or TSM.CURRENT_PLAYER
player = TSM.playerLookup[player] or player
if not player or not TSM.personalBanks[player] then return end
return TSM.personalBanks[player].items
end
-- Ascension WoW: Get realm bank data
function TSM:GetRealmBank()
return TSM.realmBank.items
end
-- Ascension WoW: Get total items across all personal banks
function TSM:GetPersonalBanksTotal(itemString)
local total = 0
for _, data in pairs(TSM.personalBanks) do
total = total + (data.items[itemString] or 0)
end
return total
end
-- Ascension WoW: Get realm bank total for an item
function TSM:GetRealmBankTotal(itemString)
return TSM.realmBank.items[itemString] or 0
end
Loading…
Cancel
Save