Editing Module:Sandbox/Vergir

Warning: You are not logged in. Once you make an edit, a temporary account will be created for you. Learn more. Log in or create an account to continue receiving notifications after this account expires, and to access other features.
The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then publish the changes below to finish undoing the edit.
Latest revision Your text
Line 104: Line 104:


     local base  = spirit_scalings(ability, labels)
     local base  = spirit_scalings(ability, labels)
     local tiers = {}   -- { tier = i, list = ... } in tier order
     local tiers = {}
     local upgrades = ability["Upgrades"]
     local upgrades = ability["Upgrades"]
     if type(upgrades) == "table" then
     if type(upgrades) == "table" then
        -- ipairs rather than #: mw.loadJsonData tables have no length.
         for i, tier in ipairs(upgrades) do
         for i, tier in ipairs(upgrades) do
             if type(tier) == "table" then
             if type(tier) == "table" then tiers[i] = spirit_scalings(tier, labels) end
                table.insert(tiers, { tier = i, list = spirit_scalings(tier, labels) })
            end
         end
         end
     end
     end
Line 128: Line 125:
     end
     end
     note_keys(base)
     note_keys(base)
     for _, t in ipairs(tiers) do note_keys(t.list) end
     for _, list in pairs(tiers) do note_keys(list) end


     local function label_of(key)
     local function label_of(key)
Line 152: Line 149:


     local notes = {}
     local notes = {}
     for _, t in ipairs(tiers) do
     for i = 1, (type(upgrades) == "table" and #upgrades or 0) do
         local i, list = t.tier, t.list
         local list = tiers[i]
        local groups, group_order = {}, {}  -- Multiply upgrades, grouped by multiplier
        if list then
        for _, up in ipairs(list) do
            local groups, group_order = {}, {}  -- Multiply upgrades, grouped by multiplier
            local label  = label_of(up.key)
            for _, up in ipairs(list) do
            local current = running[up.key]
                local label  = label_of(up.key)
            if up.multiply then
                local current = running[up.key]
                local group = groups[up.value]
                if up.multiply then
                if not group then
                    local group = groups[up.value]
                    group = { labels = {}, totals = {} }
                    if not group then
                    groups[up.value] = group
                        group = { labels = {}, totals = {} }
                    table.insert(group_order, up.value)
                        groups[up.value] = group
                end
                        table.insert(group_order, up.value)
                table.insert(group.labels, label)
                    end
                if current then
                    table.insert(group.labels, label)
                    running[up.key] = current * up.value
                    if current then
                     table.insert(group.totals, "×" .. format_spirit(running[up.key]))
                        running[up.key] = current * up.value
                        table.insert(group.totals, "×" .. format_spirit(running[up.key]))
                     else
                        table.insert(group.totals, "?")
                    end
                elseif current then
                    running[up.key] = current + up.value
                    table.insert(notes, "T" .. i .. " upgrade adds +×" .. format_spirit(up.value)
                        .. " " .. label .. " scaling (total ×" .. format_spirit(running[up.key]) .. ")")
                 else
                 else
                     table.insert(group.totals, "?")
                    running[up.key] = up.value
                     table.insert(notes, "T" .. i .. " upgrade grants ×" .. format_spirit(up.value)
                        .. " " .. label .. " scaling")
                 end
                 end
            elseif current then
                running[up.key] = current + up.value
                table.insert(notes, "T" .. i .. " upgrade adds +×" .. format_spirit(up.value)
                    .. " " .. label .. " scaling (total ×" .. format_spirit(running[up.key]) .. ")")
            else
                running[up.key] = up.value
                table.insert(notes, "T" .. i .. " upgrade grants ×" .. format_spirit(up.value)
                    .. " " .. label .. " scaling")
             end
             end
        end
            for _, m in ipairs(group_order) do
        for _, m in ipairs(group_order) do
                local group = groups[m]
            local group = groups[m]
                table.insert(notes, "T" .. i .. " upgrade multiplies " .. join_names(group.labels)
            table.insert(notes, "T" .. i .. " upgrade multiplies " .. join_names(group.labels)
                    .. " scaling by " .. format_spirit(m)
                .. " scaling by " .. format_spirit(m)
                    .. " (total " .. table.concat(group.totals, ", ") .. ")")
                .. " (total " .. table.concat(group.totals, ", ") .. ")")
            end
         end
         end
     end
     end
Please note that all contributions to The Deadlock Wiki are considered to be released under the Creative Commons Attribution-NonCommercial-ShareAlike (see Deadlock:Copyrights for details). If you do not want your writing to be edited mercilessly and redistributed at will, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource. Do not submit copyrighted work without permission!
Cancel Editing help (opens in new window)
Preview page with this template

Page included on this page: