vanilla-wow-addons – Rev 1

Subversion Repositories:
Rev:
MINING_NODE_LEVEL = {
        ["Copper Vein"] = 1,
        ["Tin Vein"] = 65,
        ["Incendicite"] = 65,
        ["Silver Vein"] = 75,
        ["Iron Deposit"] = 125,
        ["Indurium Deposit"] = 150,
        ["Lesser Bloodstone Deposit"] = 155,
        ["Gold Vein"] = 155,
        ["Mithril Vein"] = 175,
        ["Truesilver Vein"] = 230,
            ["Small Thorium Vein"] = 245,
        ["Rich Thorium Vein"] = 275,
        ["Ooze Covered Rich Thorium Vein"] = 275,
        ["Hakkari Thorium Vein"] = 250,
        ["Dark Iron Deposit"] = 230,
        ["Small Obsidian Chunk"] = 305,
        ["Large Obsidian Chunk"] = 305
    }

HERBALISM_NODE_LEVEL = {
                ["Peacebloom"] = 1,
                ["Silverleaf"] = 1,
                ["Earthroot"] = 15,
                ["Mageroyal"] = 50,
                ["Briarthorn"] = 70,
                ["Stranglekelp"] = 85,
                ["Bruiseweed"] = 100,
                ["Wild Steelbloom"] = 115,
                ["Grave Moss"] = 120,
                ["Kingsblood"] = 125,
                ["Liferoot"] = 150,
                ["Fadeleaf"] = 160,
                ["Goldthorn"] = 170,
                ["Khadgar's Whisker"] = 185,
                ["Wintersbite"] = 195,
                ["Firebloom"] = 205,
                ["Purple Lotus"] = 210,
                ["Arthas' Tears"] = 220,
                ["Sungrass"] = 230,
                ["Blindweed"] = 235,
                ["Ghost Mushroom"] = 245,
                ["Gromsblood"] = 250,
                ["Golden Sansam"] = 260,
                ["Dreamfoil"] = 270,
                ["Mountain Silversage"] = 280,
                ["Plaguebloom"] = 285,
                ["Icecap"] = 290,
                ["Black Lotus"] = 300
        }

function ProfessionLevel_OnShow()
    local parentFrame = this:GetParent();
    local parentFrameName = parentFrame:GetName();
    local itemName = getglobal(parentFrameName.."TextLeft1"):GetText();
    
    if(MINING_NODE_LEVEL[itemName]) then
        ProfessionLevel_AddMiningInfo(parentFrame, itemName);
    end
    
    if(HERBALISM_NODE_LEVEL[itemName]) then
        ProfessionLevel_AddHerbalismInfo(parentFrame, itemName);
    end
    
    if(ProfessionLevel_IsSkinnable()) then
        ProfessionLevel_AddSkinningInfo(parentFrame, itemName);
        end
end

function ProfessionLevel_GetProfessionLevel(skill)
    local numskills = GetNumSkillLines();
    for c = 1, numskills do
        local skillname, _, _, skillrank = GetSkillLineInfo(c);
        if(skillname == skill) then
            return skillrank;
        end     
    end
    return 0;
end

function ProfessionLevel_AddMiningInfo(frame, itemname)
    if(MINING_NODE_LEVEL[itemname]) then
        local levelreq = MINING_NODE_LEVEL[itemname];
        local MiningLevel = ProfessionLevel_GetProfessionLevel("Mining");
        if(levelreq <= MiningLevel) then
            -- High enough
            frame:AddLine("Mining("..levelreq..") needed",0,1,0); 
        else
            -- Not high enough
            frame:AddLine("Mining("..levelreq..") needed.",1,0,0);
        end
        frame:SetHeight(frame:GetHeight() + 14);
        frame:SetWidth(190);
    end
end    

function ProfessionLevel_AddHerbalismInfo(frame, itemname)
    if(HERBALISM_NODE_LEVEL[itemname]) then
        local levelreq = HERBALISM_NODE_LEVEL[itemname];
        local HerbalismLevel = ProfessionLevel_GetProfessionLevel("Herbalism");
        if(levelreq <= HerbalismLevel) then
            -- High enough
            frame:AddLine("Herbalism("..levelreq..") needed.",0,1,0);
        else
            -- Not high enough
            frame:AddLine("Herbalism("..levelreq..") needed.",1,0,0);
        end
        frame:SetHeight(frame:GetHeight() + 14);
        frame:SetWidth(190);
    end
end

function ProfessionLevel_AddSkinningInfo(frame, itemname)
    local levelreq = 5 * UnitLevel("Mouseover");
    if(levelreq < 100) then levelreq = 1; end
    if(levelreq > 0) then
        local SkinningLevel= ProfessionLevel_GetProfessionLevel("Skinning");
        if(levelreq <= SkinningLevel) then
            -- High enough
                frame:AddLine("Skinning("..levelreq..") needed.",0,1,0);
        else
            -- Not high enough
                frame:AddLine("Skinning("..levelreq..") needed.",1,0,0);
        end
        frame:SetHeight(frame:GetHeight() + 14);
        frame:SetWidth(190);
   end  
end

function ProfessionLevel_IsSkinnable()
    for c = 1, GameTooltip:NumLines() do
        local line = getglobal("GameTooltipTextLeft"..c);
        if(line and line:GetText() == "Skinnable") then return true; end
    end
    return false;
end