Feed The Beast Wiki

Follow the Feed The Beast Wiki on Discord or Mastodon!

READ MORE

Feed The Beast Wiki
Advertisement

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

local p = {}
function p.gui( f )
        local function getTemplateArgs( str )
            local result = {}
            for v in mw.text.gsplit(str, "+", true) do
                    local pair = mw.text.split(v, "=", true)
                    if table.getn(pair) == 2 then
                            result[pair[1]] = pair[2]
                    else
                            table.insert(result, v)
                    end
            end
            return result
        end
        local args = f.args or f
        if f == mw.getCurrentFrame() and args[1] == nil then
                args = f:getParent().args
        else
                f = mw.getCurrentFrame()
        end
        -- mw.logObject(args)
        local tool = args[1] or ''
        local block = args[2] or ''
        local output = {}
        local total = 0

        -- Iterate through the Scavenge inventory slots and gathers valid cells.
        -- Format should be a Grid Cell template with the weight = number
        for i=3,38 do
                local drop = {}
                if args[i] ~= nil then
                        drop.cell = getTemplateArgs(args[i])
                        drop.weight = tonumber(drop.cell.weight)
                        -- mw.logObject(drop)
                        if drop.cell ~= nil and drop.weight ~= nil then
                                table.insert(output, drop)
                                total = total + drop.weight
                        end
               end
        end

        local result = {tool, block}
        for i,drop in ipairs(output) do
                local cell = drop.cell
                cell.weight = nil
                cell.desc = "&7" .. (drop.weight/total*100) .. "% Chance"
                local title = cell[1]
                if not (cell[1] == "O" or cell[1] == "Gc") then
                        title = "Gc"
                else
                        -- Note: Slow operation but table is small enough
                        table.remove(cell, 1) -- Shift down args to support the templates
                end
                local gc = f:expandTemplate{title = title, args = cell}
                table.insert(result, gc)
        end

        local grid = f:expandTemplate{title = "Cg/Scavenge", args = result}
        -- mw.log(grid)
        return grid
end

return p
Advertisement