Module:Sandbox/One Bar: Difference between revisions

Jump to navigation Jump to search
One Bar (talk | contribs)
m arg fix hopefully
One Bar (talk | contribs)
table fluff
Line 5: Line 5:


local function souls(frame, item)
local function souls(frame, item)
return frame:expandTemplate{ title = 'Souls', args = {item}}
return frame:expandTemplate{ title = "Souls", args = {item}}
end
 
local function hero_icon(frame, hero)
return frame:expandTemplate{ title = "HeroIcon", args = {hero}}
end
 
local key_to_name = {
BulletDamage = "Bullet Damage",
MaxHealth = "Health",
TechPower = "Spirit Power",
LightMeleeDamage = "Light Melee Damage",
HeavyMeleeDamage = "Heavy Melee Damage"
}
 
local function filtered_heroes()
local filtered = {}
for _, hero in ipairs(soul_unlocks_data) do
if (not hero["isDisabled"]) then
table.insert(filtered, hero)
end
end
return filtered
end
end


Line 20: Line 42:
p.pi_table = function(frame)
p.pi_table = function(frame)
local pi_souls_list = get_pi_list()
local pi_souls_list = get_pi_list()
local level_count = 0
for _ in ipairs(T) do level_count = level_count + 1 end
local property = frame.args[1] --frame:getParent().args[1]
local property = frame.args[1] --frame:getParent().args[1]
local name = key_to_name[property]
local suffix = property == "BulletDamage" and " (Full Shot)" or ""
local createTable = mw.html.create('table'):addClass('wikitable sortable'):done()
local createTable = mw.html.create("table"):addClass("wikitable sortable"):done()
local header1 = mw.html.create("tr")
local createTableHeader = mw.html.create('tr')
header1:tag("th"):attr("colspan", (level_count + 3)):wikitext("Base " .. name .. " based on PI"):done()
createTableHeader
createTable:node(header1)
:tag('th'):wikitext('Hero'):done()
local header2 = mw.html.create("tr")
:tag('th'):wikitext('Base'):done()
header2
:tag('th'):wikitext('PL Increase'):done()
:tag("th"):attr("rowspan", 2):wikitext("Hero"):done()
:tag("th"):attr("rowspan", 2):wikitext("Base " .. name .. suffix):done()
:tag("th"):attr("rowspan", 2):wikitext("PL Increase" .. suffix):done()
:tag("th"):attr("colspan", level_count):wikitext("Souls collected"):done()
createTable:node(header2)
local createTableHeader = mw.html.create("tr")
for _, v in ipairs(pi_souls_list) do
for _, v in ipairs(pi_souls_list) do
createTableHeader:tag('th'):wikitext(souls(frame, v)):done()
local souls = string.format("%.1fK", v)
createTableHeader:tag("th"):wikitext(souls(frame, souls)):done()
end
end
createTable:node(createTableHeader)
createTable:node(createTableHeader)
for _, hero in pairs(heroes_data) do
for _, hero in ipairs(filtered_heroes()) do
local base = hero[property]
local base = hero[property]
local level = hero["LevelScaling"][property]
local shots = hero["BulletsPerShot"]
local shots = hero["BulletsPerShot"]
local level = hero["LevelScaling"][property]
local tableData = mw.html.create("tr")
local tableData = mw.html.create('tr')
tableData
tableData
:tag('td'):wikitext(hero["Name"]):done()
:tag("td"):wikitext(hero_icon(hero["Name"])):done()
:tag('td'):wikitext(base):done()
:tag("td"):wikitext(base):done()
:tag('td'):wikitext(level):done()
:tag("td"):wikitext("+" .. level):done()
for i, v in ipairs(pi_souls_list) do
for i, v in ipairs(pi_souls_list) do
local total = (tonumber(base) ~= nil and base or 0) + (tonumber(level) ~= nil and level or 0)  * i
local total = (tonumber(base) ~= nil and base or 0) + (tonumber(level) ~= nil and level or 0)  * i
tableData
tableData
:tag('td'):wikitext(total):done()
:tag("td"):wikitext(total):done()
end
end