Module:HeroDataArrays: Difference between revisionsGive feedback
Jump to navigation
Jump to search
Gammaton32 (talk | contribs) No edit summary |
Split base damage resist stats into multiple tables within the function. |
||
| Line 472: | Line 472: | ||
table.insert(rows, { | table.insert(rows, { | ||
name = name, | name = name, | ||
bulletResist = data["BulletResist"] or 0, | bulletResist = data["BulletResist"] or 0, | ||
bulletScaling = data["LevelScaling>BulletResist"] or 0, | bulletScaling = data["LevelScaling>BulletResist"] or 0, | ||
spiritResist = data["TechResist"] or 0, | spiritResist = data["TechResist"] or 0, | ||
spiritScaling = data["LevelScaling>TechResist"] or 0, | spiritScaling = data["LevelScaling>TechResist"] or 0, | ||
meleeResist = data["MeleeResist"] or 0, | meleeResist = data["MeleeResist"] or 0, | ||
critReduction = data["CritDamageReceivedPercent"] or 0 | critReduction = data["CritDamageReceivedPercent"] or 0 | ||
}) | }) | ||
| Line 482: | Line 482: | ||
table.sort(rows, function(a, b) return a.name:lower() < b.name:lower() end) | table.sort(rows, function(a, b) return a.name:lower() < b.name:lower() end) | ||
local | local tableDefs = { | ||
" | { | ||
title = "Hero Base Bullet Resist Stats", | |||
columns = { | |||
{ label = "Bullet Resist (%)", field = "bulletResist" }, | |||
{ label = "BR per Boon (%)", field = "bulletScaling" }, | |||
} | |||
}, | |||
{ | |||
title = "Hero Base Spirit Resist Stats", | |||
columns = { | |||
{ label = "Spirit Resist (%)", field = "spiritResist" }, | |||
{ label = "SR per Boon (%)", field = "spiritScaling" }, | |||
} | |||
}, | |||
{ | |||
title = "Hero Base Melee Resist Stats", | |||
columns = { | |||
{ label = "Melee Resist (%)", field = "meleeResist" }, | |||
} | |||
}, | |||
{ | |||
title = "Hero Base Crit Reduction Stats", | |||
columns = { | |||
{ label = "Crit Reduction (%)", field = "critReduction" }, | |||
} | |||
}, | |||
} | |||
for _, r in ipairs(rows) do | local output = "" | ||
" | for _, tableDef in ipairs(tableDefs) do | ||
"| style=\"text-align: | local filteredRows = {} | ||
for _, r in ipairs(rows) do | |||
local hasValue = false | |||
for _, col in ipairs(tableDef.columns) do | |||
if r[col.field] ~= 0 then | |||
hasValue = true | |||
break | |||
end | |||
end | |||
if hasValue then | |||
table.insert(filteredRows, r) | |||
end | |||
end | |||
if #filteredRows > 0 then | |||
local header = "" | |||
for _, col in ipairs(tableDef.columns) do | |||
header = header.." !! "..col.label | |||
end | |||
local t = "{| class=\"wikitable sortable mw-collapsible\" style=\"text-align:center\" \n".. | |||
"|+ "..tableDef.title.." \n".. | |||
"! Hero"..header.." \n" | |||
for _, r in ipairs(filteredRows) do | |||
local cells = "" | |||
for _, col in ipairs(tableDef.columns) do | |||
cells = cells.." || "..r[col.field] | |||
end | |||
t = t.. | |||
"|- \n".. | |||
"| style=\"text-align:left;\" | ".. | |||
frame:expandTemplate{title="PageRef", args={r.name}}.. | |||
cells.." \n" | |||
end | |||
t = t.."|}" | |||
output = output..t.."\n\n" | |||
end | |||
end | end | ||
return | return output | ||
end | end | ||
return p | return p | ||