From 175453fa41e351566108e81568f9f48191b09aa9 Mon Sep 17 00:00:00 2001 From: ackis Date: Mon, 25 May 2009 21:59:18 +0000 Subject: [PATCH] Rewrite the vendor scanning via tooltips. --- ARLDatamine.lua | 148 ++++++++++++++----------------------------------------- 1 file changed, 37 insertions(+), 111 deletions(-) diff --git a/ARLDatamine.lua b/ARLDatamine.lua index 06249a3..5351a94 100644 --- a/ARLDatamine.lua +++ b/ARLDatamine.lua @@ -376,6 +376,7 @@ function addon:ScanVendor() ARLDatamineTT:SetOwner(WorldFrame, "ANCHOR_NONE") GameTooltip_SetDefaultAnchor(ARLDatamineTT, UIParent) + -- Parse all the items on the merchant for i=1,GetMerchantNumItems(),1 do local name, _, _, _, numAvailable = GetMerchantItemInfo(i) ARLDatamineTT:SetMerchantItem(i) @@ -394,7 +395,6 @@ end --- Parses the mining tooltip for certain keywords, comparing them with the database flags. -- @name AckisRecipeList:ScanToolTip - function addon:ScanToolTip() --[[ @@ -406,24 +406,24 @@ function addon:ScanToolTip() return end ]]-- - do - local item = false - local recipe = false - local tank = false - local melee = false - local caster = false - local healer = false - local name = false + -- Parse all the lines of the tooltip + for i=1,ARLDatamineTT:NumLines(),1 do + + local linetext = _G["ARLDatamineTTTextLeft" .. i] + local text = linetext:GetText() local enchanting = false + local name = "" + local boprecipe = false + local bopitem = false + local healer = false + local tank = false + local dps = false + local caster = false - -- Read the first line in the tool tip (items name) - local i = 1 + local specialty = false - local name = "" - local linetext = _G["ARLDatamineTTTextLeft" .. i] - local text = linetext:GetText() -- Designs are JC if (strmatch(text,"Design: ")) or -- LW or Tailoring @@ -439,109 +439,35 @@ function addon:ScanToolTip() -- First Aid (strmatch(text,"Manual: ")) then + -- Enchanting has a weird tooltip compared to other recipes if (strmatch(text,"Formula: ")) then enchanting = true - name = text end - -- Check to see if it's a BoP recipe - i = i + 1 - linetext = _G["ARLDatamineTTTextLeft" .. i] - text = linetext:GetText() - - if (strmatch(text,"Binds when picked up")) then - recipe = true - -- Increase line index since this line was BoP - i = i + 1 + name = text + -- Check for recipe/item binding + elseif (strmatch(text,"Binds when picked up")) then + -- The recipe binding is within the first few lines of the tooltip always + if (i < 3) then + boprecipe = true + -- Item binding comes later on in the tooltip else - recipe = false - end - - -- This line will always be "Requires Profession (xxx)" so skip past that - i = i + 1 - - -- This line may be already known if we know it alrady. - linetext = _G["ARLDatamineTTTextLeft" .. i] - text = linetext:GetText() - - if (strmatch(text,"Already Known")) then - -- Increase line index since we had already known - i = 1 + 1 - end - - -- This will be the speciality, rep requirement, or the use - linetext = _G["ARLDatamineTTTextLeft" .. i] - text = linetext:GetText() -self:Print(text) - -- Check for specialities - local specialityfound = false - - if (strmatch(text,"Requires Mooncloth Tailoring")) then - specialityfound = true - elseif (strmatch(text,"Requires Spellfire Tailoring")) then - specialityfound = true - elseif (strmatch(text,"Requires Shadowcloth Tailoring")) then - specialityfound = true - end - - -- We found a speciality so lets increase our index - if (specialityfound == true) then - i = i + 1 - end - - -- Check for reps - local repfound = false - - linetext = _G["ARLDatamineTTTextLeft" .. i] - text = linetext:GetText() -self:Print(text) - if (strmatch(text,"Requires Lower City - Friendly")) then - repfound = true - elseif (strmatch(text,"Requires Lower City - Honored")) then - repfound = true - elseif (strmatch(text,"Requires Lower City - Revered")) then - repfound = true - end - - -- We found a speciality so lets increase our index - if (repfound == true) then - self:Print("Rep found") - i = i + 1 - end - - if (not enchanting) then - -- Next line is the use effect so we can skip it and after that line is a blank line - i = i + 2 - - -- We're now at the name of the item - linetext = _G["ARLDatamineTTTextLeft" .. i] - name = linetext:GetText() - - -- Check to see if it's a BoP item - i = i + 1 - linetext = _G["ARLDatamineTTTextLeft" .. i] - text = linetext:GetText() - - if (strmatch(text,"Binds when picked up")) then - item = true - -- Increase line index and get new text since this line was BoP - i = 1 + 1 - else - item = false - end - else - - end - self:Print("Recipe: " .. name) - if (recipe) then - self:Print("Recipe BoP: Yes") - end - if (item) then - self:Print("Item BoP: Yes") - end - if (repfound) then - self:Print("Rep Req:: Yes") + bopitem = true end + -- Recipe Specialities + elseif (strmatch(text,"Requires Mooncloth Tailoring")) then + specialty = text + -- Recipe Reputatons + elseif (strmatch(text,"Requires Lower City - Friendly")) then + + -- Item Stats + elseif (strmatch(text,"Spell Power")) then + healer = true + caster = true + elseif (strmatch(text,"Defense")) then + tank = true + elseif (strmatch(text,"Block")) then + tank = true end end -- 1.7.9.5