Module:WeaponsmithingRecipes

From RuneTails
Revision as of 01:39, 13 February 2025 by NES (talk | contribs) (Created page with "local p = {} local categories = { Nonconsumable = { 'Broken Glass' } } -- Recipe table format: { Prod1Img, Prod1Qty, Prod1Name, Mat1Img, Mat1Qty, Mat1Name, Mat2Img, Mat2Qty, Mat2Name, Mat3Img, Mat3Qty, Mat3Name, Recipe, LvlReq, Exp, SellValue } p.recipes = { -- LEVEL 1 RECIPES { Prod1Img = 'ScrapShield.png', Prod1Qty = 1, Prod1Name = 'Scrap Shield', Mat1Img = 'BrokenGlass.png', Mat1Qty = 3, Mat1Name =...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Documentation for this module may be created at Module:WeaponsmithingRecipes/doc

local p = {}

local categories = {
    Nonconsumable = {
        'Broken Glass'
    }
}

-- Recipe table format: { Prod1Img, Prod1Qty, Prod1Name, Mat1Img, Mat1Qty, Mat1Name, Mat2Img, Mat2Qty, Mat2Name, Mat3Img, Mat3Qty, Mat3Name, Recipe, LvlReq, Exp, SellValue }

p.recipes = {
-- LEVEL 1 RECIPES
    {
        Prod1Img = 'ScrapShield.png',
        Prod1Qty = 1,
        Prod1Name = 'Scrap Shield',
        Mat1Img = 'BrokenGlass.png',
        Mat1Qty = 3,
        Mat1Name = ':Category:Nonconsumable|Any Nonconsumable Item',
        LvlReq = 1,
        Exp = 50,
        Recipe = 'Scrap Shield Blueprint',
        SellValue = 100
    },
    {
        Prod1Img = 'ClubWood.png',
        Prod1Qty = 1,
        Prod1Name = 'Wood Club',
        Mat1Img = 'Wood.png',
        Mat1Qty = 1,
        Mat1Name = 'Wood',
        LvlReq = 1,
        Exp = 20,
        SellValue = 6
    },
    {
        Prod1Img = 'SpadeWood.png',
        Prod1Qty = 1,
        Prod1Name = 'Wood Spade',
        Mat1Img = 'Wood.png',
        Mat1Qty = 2,
        Mat1Name = 'Wood',
        LvlReq = 1,
        Exp = 40,
        SellValue = 12
    },
    {
        Prod1Img = 'HammerWood.png',
        Prod1Qty = 1,
        Prod1Name = 'Wood Hammer',
        Mat1Img = 'Wood.png',
        Mat1Qty = 3,
        Mat1Name = 'Wood',
        LvlReq = 1,
        Exp = 60,
        SellValue = 14
    },

-- LEVEL 2 RECIPES

    {
        Prod1Img = 'PickaxeWood.png',
        Prod1Qty = 1,
        Prod1Name = 'Wood Pickaxe',
        Mat1Img = 'Wood.png',
        Mat1Qty = 2,
        Mat1Name = 'Wood',
        LvlReq = 2,
        Exp = 40,
        SellValue = 12
    },
    {
        Prod1Img = 'AxeWood.png',
        Prod1Qty = 1,
        Prod1Name = 'Wood Axe',
        Mat1Img = 'Wood.png',
        Mat1Qty = 2,
        Mat1Name = 'Wood',
        LvlReq = 2,
        Exp = 50,
        SellValue = 21
    },
    {
        Prod1Img = 'SwordWood.png',
        Prod1Qty = 1,
        Prod1Name = 'Wood Sword',
        Mat1Img = 'Wood.png',
        Mat1Qty = 3,
        Mat1Name = 'Wood',
        LvlReq = 2,
        Exp = 60,
        SellValue = 25
    },

-- LEVEL 3 RECIPES

    {
        Prod1Img = 'SpadeStone.png',
        Prod1Qty = 1,
        Prod1Name = 'Stone Spade',
        Mat1Img = 'Stone.png',
        Mat1Qty = 1,
        Mat1Name = 'Stone',
        Mat2Img = 'Wood.png',
        Mat2Qty = 1,
        Mat2Name = 'Wood',
        LvlReq = 3,
        Exp = 51,
        SellValue = 18
    },
    {
        Prod1Img = 'ClubStone.png',
        Prod1Qty = 1,
        Prod1Name = 'Stone Club',
        Mat1Img = 'Stone.png',
        Mat1Qty = 2,
        Mat1Name = 'Stone',
        LvlReq = 3,
        Exp = 61,
        SellValue = 36
    },
    {
        Prod1Img = 'HammerStone.png',
        Prod1Qty = 1,
        Prod1Name = 'Stone Hammer',
        Mat1Img = 'Stone.png',
        Mat1Qty = 3,
        Mat1Name = 'Stone',
        Mat2Img = 'Wood.png',
        Mat2Qty = 1,
        Mat2Name = 'Wood',
        LvlReq = 3,
        Exp = 112,
        SellValue = 63
    },

-- LEVEL 4 RECIPES

    {
        Prod1Img = 'SpadeCopper.png',
        Prod1Qty = 1,
        Prod1Name = 'Copper Spade',
        Mat1Img = 'OreCopper.png',
        Mat1Qty = 1,
        Mat1Name = 'Copper Ore',
        Mat2Img = 'Wood.png',
        Mat2Qty = 1,
        Mat2Name = 'Wood',
        LvlReq = 4,
        Exp = 56,
        SellValue = '[Unknown]'
    },
    {
        Prod1Img = 'CopperCup.png',
        Prod1Qty = 1,
        Prod1Name = 'Copper Cup',
        Mat1Img = 'OreCopper.png',
        Mat1Qty = 2,
        Mat1Name = 'Copper Ore',
        LvlReq = 4,
        Exp = 65,
        SellValue = '[Unknown]'
    },
    {
        Prod1Img = 'ClubCopper.png',
        Prod1Qty = 1,
        Prod1Name = 'Copper Club',
        Mat1Img = 'OreCopper.png',
        Mat1Qty = 2,
        Mat1Name = 'Copper Ore',
        LvlReq = 4,
        Exp = 72,
        SellValue = 152
    },
    {
        Prod1Img = 'PickaxeStone.png',
        Prod1Qty = 1,
        Prod1Name = 'Stone Pickaxe',
        Mat1Img = 'Stone.png',
        Mat1Qty = 2,
        Mat1Name = 'Stone',
        Mat2Img = 'Wood.png',
        Mat2Qty = 1,
        Mat2Name = 'Wood',
        LvlReq = 4,
        Exp = 82,
        SellValue = 31
    },
    {
        Prod1Img = 'SwordStone.png',
        Prod1Qty = 1,
        Prod1Name = 'Stone Sword',
        Mat1Img = 'Stone.png',
        Mat1Qty = 3,
        Mat1Name = 'Stone',
        LvlReq = 4,
        Exp = 92,
        SellValue = 90
    },
    {
        Prod1Img = 'AxeStone.png',
        Prod1Qty = 1,
        Prod1Name = 'Stone Axe',
        Mat1Img = 'Stone.png',
        Mat1Qty = 2,
        Mat1Name = 'Stone',
        Mat2Img = 'Wood.png',
        Mat2Qty = 1,
        Mat2Name = 'Wood',
        LvlReq = 4,
        Exp = 102,
        SellValue = 73
    },
    {
        Prod1Img = 'HammerCopper.png',
        Prod1Qty = 1,
        Prod1Name = 'Copper Hammer',
        Mat1Img = 'OreCopper.png',
        Mat1Qty = 3,
        Mat1Name = 'Copper Ore',
        Mat2Img = 'Wood.png',
        Mat2Qty = 1,
        Mat2Name = 'Wood',
        LvlReq = 4,
        Exp = 128,
        SellValue = 216
    },
    {
        Prod1Img = 'SilverSet.png',
        Prod1Qty = 1,
        Prod1Name = 'Silver Set',
        Mat1Img = 'SilverOre.png',
        Mat1Qty = 3,
        Mat1Name = 'Silver Ore',
        LvlReq = 4,
        Exp = 150,
        SellValue = 216
    },

-- LEVEL 5 RECIPES

    {
        Prod1Img = 'PickaxeCopper.png',
        Prod1Qty = 1,
        Prod1Name = 'Copper Pickaxe',
        Mat1Img = 'OreCopper.png',
        Mat1Qty = 2,
        Mat1Name = 'Copper Ore',
        Mat2Img = 'Wood.png',
        Mat2Qty = 1,
        Mat2Name = 'Wood',
        LvlReq = 5,
        Exp = 93,
        SellValue = '[Unknown]'
    },
    {
        Prod1Img = 'SpadeBronze.png',
        Prod1Qty = 1,
        Prod1Name = 'Bronze Spade',
        Mat1Img = 'OreCopper.png',
        Mat1Qty = 1,
        Mat1Name = 'Copper Ore',
        Mat2Img = 'OreTin.png',
        Mat2Qty = 1,
        Mat2Name = 'Tin Ore',
        Mat3Img = 'Wood.png',
        Mat3Qty = 1,
        Mat3Name = 'Wood',
        LvlReq = 5,
        Exp = 93,
        SellValue = '[Unknown]'
    },
    {
        Prod1Img = 'SwordCopper.png',
        Prod1Qty = 1,
        Prod1Name = 'Copper Sword',
        Mat1Img = 'OreCopper.png',
        Mat1Qty = 3,
        Mat1Name = 'Copper Ore',
        LvlReq = 5,
        Exp = 109,
        SellValue = '[Unknown]'
    },
    {
        Prod1Img = 'AxeCopper.png',
        Prod1Qty = 1,
        Prod1Name = 'Copper Axe',
        Mat1Img = 'OreCopper.png',
        Mat1Qty = 2,
        Mat1Name = 'Copper Ore',
        Mat2Img = 'Wood.png',
        Mat2Qty = 1,
        Mat2Name = 'Wood',
        LvlReq = 5,
        Exp = 118,
        SellValue = '[Unknown]'
    },
    {
        Prod1Img = 'ClubBronze.png',
        Prod1Qty = 1,
        Prod1Name = 'Bronze Club',
        Mat1Img = 'OreCopper.png',
        Mat1Qty = 2,
        Mat1Name = 'Copper Ore',
        Mat2Img = 'OreTin.png',
        Mat2Qty = 2,
        Mat2Name = 'Tin Ore',
        LvlReq = 5,
        Exp = 145,
        SellValue = '[Unknown]'
    },
    {
        Prod1Img = 'HammerBronze.png',
        Prod1Qty = 1,
        Prod1Name = 'Bronze Hammer',
        Mat1Img = 'OreCopper.png',
        Mat1Qty = 3,
        Mat1Name = 'Copper Ore',
        Mat2Img = 'OreTin.png',
        Mat2Qty = 3,
        Mat2Name = 'Tin Ore',
        LvlReq = 5,
        Exp = 239,
        SellValue = '[Unknown]'
    },

-- LEVEL 6 RECIPES

    {
        Prod1Img = 'PickaxeBronze.png',
        Prod1Qty = 1,
        Prod1Name = 'Bronze Pickaxe',
        Mat1Img = 'OreCopper.png',
        Mat1Qty = 2,
        Mat1Name = 'Copper Ore',
        Mat2Img = 'OreTin.png',
        Mat2Qty = 2,
        Mat2Name = 'Tin Ore',
        Mat3Img = 'Wood.png',
        Mat3Qty = 1,
        Mat3Name = 'Wood',
        LvlReq = 6,
        Exp = 168,
        SellValue = '[Unknown]'
    },
    {
        Prod1Img = 'AxeBronze.png',
        Prod1Qty = 1,
        Prod1Name = 'Bronze Axe',
        Mat1Img = 'OreCopper.png',
        Mat1Qty = 2,
        Mat1Name = 'Copper Ore',
        Mat2Img = 'OreTin.png',
        Mat2Qty = 2,
        Mat2Name = 'Tin Ore',
        Mat3Img = 'Wood.png',
        Mat3Qty = 1,
        Mat3Name = 'Wood',
        LvlReq = 6,
        Exp = 198,
        SellValue = '[Unknown]'
    },
    {
        Prod1Img = 'SwordBronze.png',
        Prod1Qty = 1,
        Prod1Name = 'Bronze Sword',
        Mat1Img = 'OreCopper.png',
        Mat1Qty = 3,
        Mat1Name = 'Copper Ore',
        Mat2Img = 'OreTin.png',
        Mat2Qty = 3,
        Mat2Name = 'Tin Ore',
        LvlReq = 6,
        Exp = 220,
        SellValue = '[Unknown]'
    },

-- LEVEL 7 RECIPES

    {
        Prod1Img = 'SpadeIron.png',
        Prod1Qty = 1,
        Prod1Name = 'Iron Spade',
        Mat1Img = 'OreIron.png',
        Mat1Qty = 1,
        Mat1Name = 'Iron Ore',
        Mat2Img = 'Wood.png',
        Mat2Qty = 1,
        Mat2Name = 'Wood',
        LvlReq = 7,
        Exp = 116,
        SellValue = '[Unknown]'
    },
    {
        Prod1Img = 'ClubIron.png',
        Prod1Qty = 1,
        Prod1Name = 'Iron Club',
        Mat1Img = 'OreIron.png',
        Mat1Qty = 2,
        Mat1Name = 'Iron Ore',
        LvlReq = 7,
        Exp = 190,
        SellValue = '[Unknown]'
    },
    {
        Prod1Img = 'HammerIron.png',
        Prod1Qty = 1,
        Prod1Name = 'Iron Hammer',
        Mat1Img = 'OreIron.png',
        Mat1Qty = 3,
        Mat1Name = 'Iron Ore',
        Mat2Img = 'Wood.png',
        Mat2Qty = 1,
        Mat2Name = 'Wood',
        LvlReq = 7,
        Exp = 307,
        SellValue = '[Unknown]'
    },

-- LEVEL 8 RECIPES

    {
        Prod1Img = 'PickaxeIron.png',
        Prod1Qty = 1,
        Prod1Name = 'Iron Pickaxe',
        Mat1Img = 'OreIron.png',
        Mat1Qty = 2,
        Mat1Name = 'Iron Ore',
        Mat2Img = 'Wood.png',
        Mat2Qty = 1,
        Mat2Name = 'Wood',
        LvlReq = 8,
        Exp = 214,
        SellValue = '[Unknown]'
    },
    {
        Prod1Img = 'AxeIron.png',
        Prod1Qty = 1,
        Prod1Name = 'Iron Axe',
        Mat1Img = 'OreIron.png',
        Mat1Qty = 2,
        Mat1Name = 'Iron Ore',
        Mat2Img = 'Wood.png',
        Mat2Qty = 1,
        Mat2Name = 'Wood',
        LvlReq = 8,
        Exp = 254,
        SellValue = '[Unknown]'
    },
    {
        Prod1Img = 'SwordIron.png',
        Prod1Qty = 1,
        Prod1Name = 'Iron Sword',
        Mat1Img = 'OreIron.png',
        Mat1Qty = 3,
        Mat1Name = 'Iron Ore',
        LvlReq = 8,
        Exp = 288,
        SellValue = '[Unknown]'
    },

-- LEVEL 9 RECIPES

    {
        Prod1Img = 'SpadeSteel.png',
        Prod1Qty = 1,
        Prod1Name = 'Steel Spade',
        Mat1Img = 'Coal.png',
        Mat1Qty = 3,
        Mat1Name = 'Coal',
        Mat2Img = 'OreIron.png',
        Mat2Qty = 1,
        Mat2Name = 'Iron Ore',
        Mat3Img = 'Wood.png',
        Mat3Qty = 1,
        Mat3Name = 'Wood',
        LvlReq = 9,
        Exp = 167,
        SellValue = '[Unknown]'
    },
    {
        Prod1Img = 'SturdyTankard.png',
        Prod1Qty = 1,
        Prod1Name = 'Sturdy Tankard',
        Mat1Img = 'Coal.png',
        Mat1Qty = 1,
        Mat1Name = 'Coal',
        Mat2Img = 'OreIron.png',
        Mat2Qty = 1,
        Mat2Name = 'Iron Ore',
        Mat3Img = 'Wood.png',
        Mat3Qty = 1,
        Mat3Name = 'Wood',
        LvlReq = 9,
        Exp = 215,
        SellValue = '[Unknown]'
    },
    {
        Prod1Img = 'ClubSteel.png',
        Prod1Qty = 1,
        Prod1Name = 'Steel Club',
        Mat1Img = 'Coal.png',
        Mat1Qty = 6,
        Mat1Name = 'Coal',
        Mat2Img = 'OreIron.png',
        Mat2Qty = 2,
        Mat2Name = 'Iron Ore',
        LvlReq = 9,
        Exp = 291,
        SellValue = '[Unknown]'
    },
    {
        Prod1Img = 'HammerSteel.png',
        Prod1Qty = 1,
        Prod1Name = 'Steel Hammer',
        Mat1Img = 'Coal.png',
        Mat1Qty = 9,
        Mat1Name = 'Coal',
        Mat2Img = 'OreIron.png',
        Mat2Qty = 3,
        Mat2Name = 'Iron Ore',
        Mat3Img = 'Wood.png',
        Mat3Qty = 1,
        Mat3Name = 'Wood',
        LvlReq = 9,
        Exp = 459,
        SellValue = '[Unknown]'
    },

-- LEVEL 10 RECIPES

    {
        Prod1Img = 'PickaxeSteel.png',
        Prod1Qty = 1,
        Prod1Name = 'Steel Pickaxe',
        Mat1Img = 'Coal.png',
        Mat1Qty = 6,
        Mat1Name = 'Coal',
        Mat2Img = 'OreIron.png',
        Mat2Qty = 2,
        Mat2Name = 'Iron Ore',
        Mat3Img = 'Wood.png',
        Mat3Qty = 1,
        Mat3Name = 'Wood',
        LvlReq = 10,
        Exp = 316,
        SellValue = '[Unknown]'
    },
    {
        Prod1Img = 'AxeSteel.png',
        Prod1Qty = 1,
        Prod1Name = 'Steel Axe',
        Mat1Img = 'Coal.png',
        Mat1Qty = 6,
        Mat1Name = 'Coal',
        Mat2Img = 'OreIron.png',
        Mat2Qty = 2,
        Mat2Name = 'Iron Ore',
        Mat3Img = 'Wood.png',
        Mat3Qty = 1,
        Mat3Name = 'Wood',
        LvlReq = 10,
        Exp = 366,
        SellValue = '[Unknown]'
    },
    {
        Prod1Img = 'SwordSteel.png',
        Prod1Qty = 1,
        Prod1Name = 'Steel Sword',
        Mat1Img = 'Coal.png',
        Mat1Qty = 9,
        Mat1Name = 'Coal',
        Mat2Img = 'OreIron.png',
        Mat2Qty = 3,
        Mat2Name = 'Iron Ore',
        LvlReq = 10,
        Exp = 441,
        SellValue = '[Unknown]'
    },
}

function p.get_recipes_by_material(frame)
    local material = frame.args[1] or ''
    local pageName = mw.title.getCurrentTitle().text -- Get the current page name
    local result = ''

    local showAll = (pageName == "Weaponsmithing Recipes")

    for _, recipe in ipairs(p.recipes) do
        local match = showAll

        if not match then
            -- Check if the page is a product
            if pageName == recipe.Prod1Name or (recipe.Prod2Name and pageName == recipe.Prod2Name) then
                match = true
            end
            
            -- Check if the page is a material
            if not match then
                for i = 1, 4 do
                    local matName = recipe["Mat" .. i .. "Name"]
                    if matName then
                        if matName:match(':Category:') then
                            local categoryName = matName:match(':Category:([^|]+)')
                            if categories[categoryName] then
                                for _, categoryItem in ipairs(categories[categoryName]) do
                                    if material == categoryItem then
                                        match = true
                                        break
                                    end
                                end
                            end
                        elseif material == matName then
                            match = true
                        end
                    end
                    if match then break end
                end
            end
        end

        if match then
            result = result .. '<tr>'
            result = result .. '<td style="width: 50px;">[[File:' .. recipe.Prod1Img .. '|50px]]' ..
                (recipe.Prod2Img and '<br>[[File:' .. recipe.Prod2Img .. '|50px]]' or '') .. '</td>'
            result = result .. '<td>' .. recipe.Prod1Qty .. ' x [[' .. recipe.Prod1Name .. ']]' ..
                (recipe.Prod2Name and '<br>' .. recipe.Prod2Qty .. ' x [[' .. recipe.Prod2Name .. ']]' or '') .. '</td>'

            result = result .. '<td>'
            for i = 1, 4 do
                if recipe["Mat" .. i .. "Name"] then
                    result = result .. recipe["Mat" .. i .. "Qty"] .. ' x [[File:' .. recipe["Mat" .. i .. "Img"] .. '|30px]] ' ..
                        ' [[' .. recipe["Mat" .. i .. "Name"] .. ']]' .. '<br>'
                end
            end
            result = result .. '</td>'

            result = result .. '<td>' .. recipe.LvlReq .. '</td>'
            result = result .. '<td>' .. recipe.Exp .. '</td>'
            
            -- Recipe Requirement Column
            result = result .. '<td style="text-align: center;">'
            if recipe.Recipe then
                result = result .. '[[File:Recipe.png|40px|link=' .. recipe.Recipe .. ']]'
            end
            result = result .. '</td>'
            
            result = result .. '<td>' .. recipe.SellValue .. '</td>'
            result = result .. '</tr>'
        end
    end
    return result
end

return p