Editing Module:HeroDataArraysGive feedback
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 14: | Line 14: | ||
end | end | ||
end | end | ||
end | end | ||
| Line 35: | Line 22: | ||
end | end | ||
return value | return value | ||
end | end | ||
| Line 163: | Line 64: | ||
table.insert(rows, { | table.insert(rows, { | ||
name = name, | name = name, | ||
maxHealth = data["MaxHealth"] or 0, | maxHealth = tonumber(data["MaxHealth"]) or 0, | ||
scalingHealth = | scalingHealth = tonumber(data["LevelScaling>MaxHealth"]) or 0 | ||
}) | }) | ||
end | end | ||
table.sort(rows, function(a, b) return a.name:lower() < b.name:lower() end) | |||
-- Input table will be called a, output wikitable will be called z | |||
local z = "{| class=\"wikitable sortable mw-collapsible\" style=\"text-align:center\" \n".. | |||
"|+ Hero Base Health Stats \n".. | |||
"! Hero !! Starting !! Added per Boon !! At Max Boon \n" | |||
-- Iterate over heroes adding a new row to the wikitable for each | |||
for _, r in ipairs(rows) do | |||
z = z.. | |||
"|- \n".. | |||
{ | "| style=\"text-align:left;\" | ".. | ||
frame:expandTemplate{title="PageRef", args={r.name}}.. | |||
" || "..r.maxHealth.." || +"..r.scalingHealth.." || ".. | |||
tostring(roundValue(r.maxHealth + r.scalingHealth * soul_unlock.get_max('PowerIncrease'))).." \n" | |||
end | |||
z = z.."|}" | |||
return z | |||
return | |||
end | end | ||
p.heroRegenTable = function(frame) | p.heroRegenTable = function(frame) | ||
local heroRegenData = heroDataArray({"Name", " | local heroRegenData = heroDataArray({"Name", "BaseHealthRegen"}) | ||
local rows = {} | local rows = {} | ||
| Line 199: | Line 96: | ||
table.insert(rows, { | table.insert(rows, { | ||
name = name, | name = name, | ||
baseHealthRegen = data["BaseHealthRegen"] or 0 | baseHealthRegen = data["BaseHealthRegen"] or 0 | ||
}) | }) | ||
end | end | ||
table.sort(rows, function(a, b) return a.name:lower() < b.name:lower() end) | |||
local | local z = "{| class=\"wikitable sortable mw-collapsible\" style=\"text-align:center\" \n".. | ||
"|+ Hero Base Health Regen \n".. | |||
"! Hero !! HP/s \n" | |||
for _, r in ipairs(rows) do | |||
for _, | z = z.. | ||
"|- \n".. | |||
"| style=\"text-align:left;\" | ".. | |||
frame:expandTemplate{title="PageRef", args={r.name}}.. | |||
" || "..r.baseHealthRegen.." \n" | |||
end | end | ||
z = z.."|}" | |||
return z | |||
end | end | ||
p.heroDpsTable = function(frame) | p.heroDpsTable = function(frame) | ||
local heroDpsData = heroDataArray({"Name | local heroDpsData = heroDataArray({"Name","Weapon>ReloadSingle","Weapon>ReloadDelay","Weapon>ReloadTime", | ||
"Weapon>ClipSize","Weapon>RoundsPerSecond","Weapon>BulletDamage","Weapon | "Weapon>ClipSize","Weapon>RoundsPerSecond","Weapon>BulletDamage","Weapon>BulletsPerShot"}) | ||
local rows = {} | local rows = {} | ||
| Line 235: | Line 124: | ||
table.insert(rows, { | table.insert(rows, { | ||
name = name, | name = name, | ||
reloadDelay = data["Weapon>ReloadDelay"] or 0, | reloadDelay = data["Weapon>ReloadDelay"] or 0, | ||
reloadTime = data["Weapon>ReloadTime"] or 0, | reloadTime = data["Weapon>ReloadTime"] or 0, | ||
| Line 241: | Line 129: | ||
roundsPerSecond = data["Weapon>RoundsPerSecond"] or 0, | roundsPerSecond = data["Weapon>RoundsPerSecond"] or 0, | ||
bulletDamage = data["Weapon>BulletDamage"] or 0, | bulletDamage = data["Weapon>BulletDamage"] or 0, | ||
bulletsPerShot = data["Weapon | bulletsPerShot = data["Weapon>BulletsPerShot"] or 0 | ||
}) | }) | ||
end | end | ||
table.sort(rows, function(a, b) return a.name:lower() < b.name:lower() end) | |||
local | local z = "{| class=\"wikitable sortable mw-collapsible\" style=\"text-align:center\" \n".. | ||
"|+ Hero Base Damage \n".. | |||
"! Hero !! Reload Delay (s) !! Reload Time (s) !! Ammo !! Bullets per sec !! Bullet Damage !! Bullets Per Shot \n" | |||
for _, r in ipairs(rows) do | |||
z = z.. | |||
"|- \n".. | |||
"| style=\"text-align:left;\" | ".. | |||
{ | frame:expandTemplate{title="PageRef", args={r.name}}.. | ||
" || "..r.reloadDelay.." || "..r.reloadTime.." || "..r.clipSize.. | |||
" || "..r.roundsPerSecond.." || "..r.bulletDamage.." || "..r.bulletsPerShot.." \n" | |||
end | end | ||
z = z.."|}" | |||
return z | |||
end | end | ||
p.heroBulletSpeedTable = function(frame) | p.heroBulletSpeedTable = function(frame) | ||
local heroBulletSpeedData = heroDataArray({ | local heroBulletSpeedData = heroDataArray({"Name", "Weapon>BulletSpeed"}) | ||
local rows = {} | local rows = {} | ||
for name, data in pairs(heroBulletSpeedData) do | for name, data in pairs(heroBulletSpeedData) do | ||
table.insert(rows, { | table.insert(rows, { | ||
name = name, | name = name, | ||
bulletSpeed = data["Weapon | bulletSpeed = data["Weapon>BulletSpeed"] or 0 | ||
}) | }) | ||
end | end | ||
table.sort(rows, function(a, b) return a.name:lower() < b.name:lower() end) | |||
local z = "{| class=\"wikitable sortable mw-collapsible\" style=\"text-align:center\" \n".. | |||
"|+ Base Bullet Velocity \n".. | |||
"! Hero !! m/s \n" | |||
for _, r in ipairs(rows) do | |||
z = z.. | |||
"|- \n".. | |||
"| style=\"text-align:left;\" | ".. | |||
{ | frame:expandTemplate{title="PageRef", args={r.name}}.. | ||
" || "..r.bulletSpeed.." \n" | |||
end | end | ||
z = z.."|}" | |||
return z | |||
end | end | ||
p.heroClipSizeTable = function(frame) | p.heroClipSizeTable = function(frame) | ||
local heroClipSizeData = heroDataArray({"Name", "Weapon | local heroClipSizeData = heroDataArray({"Name", "Weapon>ClipSize"}) | ||
local rows = {} | local rows = {} | ||
| Line 351: | Line 184: | ||
table.insert(rows, { | table.insert(rows, { | ||
name = name, | name = name, | ||
clipSize = data["Weapon>ClipSize | clipSize = data["Weapon>ClipSize"] or 0 | ||
}) | }) | ||
end | end | ||
table.sort(rows, function(a, b) return a.name:lower() < b.name:lower() end) | |||
local | local z = "{| class=\"wikitable sortable mw-collapsible\" style=\"text-align:center\" \n".. | ||
"|+ Base Ammo Count \n".. | |||
"! Hero !! Ammo \n" | |||
for _, r in ipairs(rows) do | |||
for _, | z = z.. | ||
"|- \n".. | |||
"| style=\"text-align:left;\" | ".. | |||
frame:expandTemplate{title="PageRef", args={r.name}}.. | |||
" || "..r.clipSize.." \n" | |||
end | |||
z = z.."|}" | |||
return z | |||
end | |||
p.heroMoveSpeedTable = function(frame) | |||
local heroMoveSpeedData = heroDataArray({"Name", "MoveSpeed"}) | |||
local rows = {} | |||
for name, data in pairs(heroMoveSpeedData) do | |||
table.insert(rows, { | |||
name = name, | |||
moveSpeed = data["MoveSpeed"] or 0 | |||
}) | |||
end | end | ||
table.sort(rows, function(a, b) return a.name:lower() < b.name:lower() end) | |||
local z = "{| class=\"wikitable sortable mw-collapsible\" style=\"text-align:center\" \n".. | |||
"|+ Base Movement Speed \n".. | |||
"! Hero !! m/s \n" | |||
for _, r in ipairs(rows) do | |||
z = z.. | |||
"|- \n".. | |||
"| style=\"text-align:left;\" | ".. | |||
frame:expandTemplate{title="PageRef", args={r.name}}.. | |||
" || "..r.moveSpeed.." \n" | |||
end | |||
z = z.."|}" | |||
return z | |||
end | end | ||
p.heroRoundsPerSecondTable = function(frame) | p.heroRoundsPerSecondTable = function(frame) | ||
local heroRoundsPerSecondData = heroDataArray({"Name", "Weapon>RoundsPerSecond | local heroRoundsPerSecondData = heroDataArray({"Name", "Weapon>RoundsPerSecond"}) | ||
local rows = {} | local rows = {} | ||
| Line 402: | Line 238: | ||
table.insert(rows, { | table.insert(rows, { | ||
name = name, | name = name, | ||
roundsPerSecond = data["Weapon>RoundsPerSecond"] or 0 | roundsPerSecond = data["Weapon>RoundsPerSecond"] or 0 | ||
}) | }) | ||
end | end | ||
table.sort(rows, function(a, b) return a.name:lower() < b.name:lower() end) | |||
local | local z = "{| class=\"wikitable sortable mw-collapsible\" style=\"text-align:center\" \n".. | ||
"|+ Base Fire Rate \n".. | |||
"! Hero !! Rounds/s \n" | |||
for _, r in ipairs(rows) do | |||
for _, | z = z.. | ||
"|- \n".. | |||
"| style=\"text-align:left;\" | ".. | |||
frame:expandTemplate{title="PageRef", args={r.name}}.. | |||
" || "..r.roundsPerSecond.." \n" | |||
end | end | ||
z = z.."|}" | |||
return z | |||
end | end | ||
p.heroFalloffRangeTable = function(frame) | p.heroFalloffRangeTable = function(frame) | ||
local heroFalloffRangeData = heroDataArray({"Name", "Weapon>FalloffStartRange", "Weapon>FalloffEndRange" | local heroFalloffRangeData = heroDataArray({"Name", "Weapon>FalloffStartRange", "Weapon>FalloffEndRange"}) | ||
local rows = {} | local rows = {} | ||
| Line 451: | Line 266: | ||
name = name, | name = name, | ||
falloffStartRange = data["Weapon>FalloffStartRange"] or 0, | falloffStartRange = data["Weapon>FalloffStartRange"] or 0, | ||
falloffEndRange = data["Weapon>FalloffEndRange"] or 0 | falloffEndRange = data["Weapon>FalloffEndRange"] or 0 | ||
}) | }) | ||
end | end | ||
table.sort(rows, function(a, b) return a.name:lower() < b.name:lower() end) | |||
local | local z = "{| class=\"wikitable sortable mw-collapsible\" style=\"text-align:center\" \n".. | ||
"|+ Base Falloff Range \n".. | |||
"! Hero !! Minimum Range (m) !! Maximum Range (m) \n" | |||
for _, r in ipairs(rows) do | |||
for _, | z = z.. | ||
"|- \n".. | |||
"| style=\"text-align:left;\" | ".. | |||
frame:expandTemplate{title="PageRef", args={r.name}}.. | |||
" || "..r.falloffStartRange.." || "..r.falloffEndRange.." \n" | |||
end | end | ||
z = z.."|}" | |||
return z | |||
end | end | ||
p.heroBulletDamageTable = function(frame) | p.heroBulletDamageTable = function(frame) | ||
-- Pull data | -- Pull data | ||
local heroBulletDamageData = heroDataArray({"Name", "Weapon>BulletDamage", "LevelScaling>BulletDamage | local heroBulletDamageData = heroDataArray({"Name", "Weapon>BulletDamage", "LevelScaling>BulletDamage"}) | ||
local rows = {} | local rows = {} | ||
| Line 509: | Line 294: | ||
table.insert(rows, { | table.insert(rows, { | ||
name = name, | name = name, | ||
bulletDamage = | bulletDamage = tonumber(data["Weapon>BulletDamage"]) or 0, | ||
scalingDamage = tonumber(data["LevelScaling>BulletDamage"]) or 0 | |||
scalingDamage = | |||
}) | }) | ||
end | end | ||
table.sort(rows, function(a, b) return a.name:lower() < b.name:lower() end) | |||
local | local z = "{| class=\"wikitable sortable mw-collapsible\" style=\"text-align:center\" \n".. | ||
"|+ Hero Base Bullet Damage Stats \n".. | |||
"! Hero !! Starting !! Added per Boon !! At Max Boon \n" | |||
-- Iterate over heroes adding a new row to the wikitable for each | |||
for _, | for _, r in ipairs(rows) do | ||
z = z.. | |||
"|- \n".. | |||
"| style=\"text-align:left;\" | ".. | |||
frame:expandTemplate{title="PageRef", args={r.name}}.. | |||
" || "..r.bulletDamage.." || +"..r.scalingDamage.." || ".. | |||
tostring(roundValue(r.bulletDamage + r.scalingDamage * soul_unlock.get_max('PowerIncrease'))).." \n" | |||
end | end | ||
z = z.."|}" | |||
return z | |||
return | |||
end | end | ||
| Line 611: | Line 326: | ||
table.insert(rows, { | table.insert(rows, { | ||
name = name, | name = name, | ||
lightMeleeDamage = data["LightMeleeDamage"] or 0, | lightMeleeDamage = tonumber(data["LightMeleeDamage"]) or 0, | ||
scalingDamage = | scalingDamage = tonumber(data["LevelScaling>LightMeleeDamage"]) or 0 | ||
}) | }) | ||
end | end | ||
table.sort(rows, function(a, b) return a.name:lower() < b.name:lower() end) | |||
local z = "{| class=\"wikitable sortable mw-collapsible\" style=\"text-align:center\" \n".. | |||
"|+ Hero Base Light Melee Stats \n".. | |||
"! Hero !! Starting !! Added per Boon !! At Max Boon \n" | |||
-- Iterate over heroes adding a new row to the wikitable for each | |||
for _, r in ipairs(rows) do | |||
z = z.. | |||
"|- \n".. | |||
{ | "| style=\"text-align:left;\" | ".. | ||
frame:expandTemplate{title="PageRef", args={r.name}}.. | |||
" || "..r.lightMeleeDamage.." || +"..r.scalingDamage.." || ".. | |||
tostring(roundValue(r.lightMeleeDamage + r.scalingDamage * soul_unlock.get_max('PowerIncrease'))).." \n" | |||
end | |||
z = z.."|}" | |||
return z | |||
return | |||
end | end | ||
p.heroHeavyMeleeTable = function(frame) | p.heroHeavyMeleeTable = function(frame) | ||
-- Pull data | -- Pull data | ||
local heroHeavyMeleeData = heroDataArray({"Name", "HeavyMeleeDamage", "LevelScaling | local heroHeavyMeleeData = heroDataArray({"Name", "HeavyMeleeDamage", "LevelScaling>HeavyMeleeDamage"}) | ||
local rows = {} | local rows = {} | ||
| Line 648: | Line 358: | ||
table.insert(rows, { | table.insert(rows, { | ||
name = name, | name = name, | ||
heavyMeleeDamage = data["HeavyMeleeDamage"] or 0, | heavyMeleeDamage = tonumber(data["HeavyMeleeDamage"]) or 0, | ||
scalingDamage = | scalingDamage = tonumber(data["LevelScaling>HeavyMeleeDamage"]) or 0 | ||
}) | }) | ||
end | end | ||
table.sort(rows, function(a, b) return a.name:lower() < b.name:lower() end) | |||
local | local z = "{| class=\"wikitable sortable mw-collapsible\" style=\"text-align:center\" \n".. | ||
"|+ Hero Base Heavy Melee Stats \n".. | |||
"! Hero !! Starting !! Added per Boon !! At Max Boon \n" | |||
-- Iterate over heroes adding a new row to the wikitable for each | |||
for _, r in ipairs(rows) do | |||
{ | z = z.. | ||
"|- \n".. | |||
"| style=\"text-align:left;\" | ".. | |||
frame:expandTemplate{title="PageRef", args={r.name}}.. | |||
" || "..r.heavyMeleeDamage.." || +"..r.scalingDamage.." || ".. | |||
tostring(roundValue(r.heavyMeleeDamage + r.scalingDamage * soul_unlock.get_max('PowerIncrease'))).." \n" | |||
end | |||
z = z.."|}" | |||
return z | |||
return | |||
end | end | ||
p.heroStaminaTable = function(frame) | p.heroStaminaTable = function(frame) | ||
local heroStaminaData = heroDataArray({"Name", "Stamina | local heroStaminaData = heroDataArray({"Name", "Stamina"}) | ||
local rows = {} | local rows = {} | ||
| Line 686: | Line 389: | ||
table.insert(rows, { | table.insert(rows, { | ||
name = name, | name = name, | ||
stamina = data["Stamina | stamina = data["Stamina"] or 0 | ||
}) | }) | ||
end | end | ||
table.sort(rows, function(a, b) return a.name:lower() < b.name:lower() end) | |||
local z = "{| class=\"wikitable sortable mw-collapsible\" style=\"text-align:center\" \n".. | |||
"|+ Hero Base Stamina Stats \n".. | |||
"! Hero !! Stamina Bars \n" | |||
for _, r in ipairs(rows) do | |||
z = z.. | |||
"|- \n".. | |||
"| style=\"text-align:left;\" | ".. | |||
frame:expandTemplate{title="PageRef", args={r.name}}.. | |||
{ | " || "..r.stamina.." \n" | ||
end | end | ||
z = z.."|}" | |||
return z | |||
end | end | ||
p.heroDashTable = function(frame) | p.heroDashTable = function(frame) | ||
local heroDashData = heroDataArray({"Name", "GroundDashSpeed | local heroDashData = heroDataArray({"Name", "GroundDashSpeed"}) | ||
local rows = {} | local rows = {} | ||
| Line 720: | Line 416: | ||
table.insert(rows, { | table.insert(rows, { | ||
name = name, | name = name, | ||
duration = tonumber(data.GroundDashSpeed) or 0 | |||
}) | }) | ||
end | end | ||
table.sort(rows, function(a, b) return a.name:lower() < b.name:lower() end) | |||
local | local z = '{| class="wikitable sortable mw-collapsible" style="text-align:center"\n' .. | ||
'|+ Hero Base Dash Speed Stats\n' .. | |||
'! Hero !! Dash Speed (m/s)\n' | |||
for _, r in ipairs(rows) do | |||
z = z .. '|-\n| style="text-align:left;" | ' .. | |||
frame:expandTemplate{title = 'PageRef', args = {r.name}} .. | |||
' || ' .. r.duration .. '\n' | |||
for _, | |||
end | end | ||
return z .. '|}' | |||
return | |||
end | end | ||
p.heroReloadTable = function(frame) | p.heroReloadTable = function(frame) | ||
local heroReloadData = heroDataArray({"Name", "Weapon>ReloadTime"}) | local heroReloadData = heroDataArray({"Name", "Weapon>ReloadTime","Weapon>ReloadDelay"}) | ||
-- 1. collect rows | |||
local rows = {} | local rows = {} | ||
for name, data in pairs(heroReloadData) do | for name, data in pairs(heroReloadData) do | ||
table.insert(rows, { | table.insert(rows, { | ||
name = name, | name = name, | ||
reloadTime = data["Weapon>ReloadTime"] or 0 | reloadTime = tonumber(data["Weapon>ReloadTime"]) or 0, | ||
reloadDelay = tonumber(data["Weapon>ReloadDelay"]) or 0 | |||
}) | }) | ||
end | end | ||
-- 2. alphabetical by hero name | |||
table.sort(rows, function(a, b) return a.name:lower() < b.name:lower() end) | |||
local | -- 3. build table | ||
local z = '{| class="wikitable sortable mw-collapsible" style="text-align:center"\n' .. | |||
'|+ Hero Base Reload Time Stats\n' .. | |||
'! Hero !! Reload Time (s) !! Reload Delay \n' | |||
for _, r in ipairs(rows) do | |||
z = z .. | |||
'|-\n' .. | |||
'| style="text-align:left;" | ' .. | |||
frame:expandTemplate{title = 'PageRef', args = {r.name}} .. | |||
' || '.. r.reloadTime ..' || '..r.reloadDelay..' \n' | |||
for | |||
end | end | ||
return z .. '|}' | |||
return | |||
end | end | ||
p.heroMoveSpeedTable = function(frame) | p.heroMoveSpeedTable = function(frame) | ||
local heroMoveSpeedData = heroDataArray({"Name", "MaxMoveSpeed", " | local heroMoveSpeedData = heroDataArray({"Name", "MaxMoveSpeed", "SprintSpeed"}) | ||
local rows = {} | local rows = {} | ||
| Line 823: | Line 470: | ||
table.insert(rows, { | table.insert(rows, { | ||
name = name, | name = name, | ||
moveSpeed = data["MaxMoveSpeed"] or 0, | moveSpeed = tonumber(data["MaxMoveSpeed"]) or 0, | ||
sprintSpeed = | sprintSpeed = tonumber(data["SprintSpeed"]) or 0 | ||
}) | }) | ||
end | end | ||
table.sort(rows, function(a, b) return a.name:lower() < b.name:lower() end) | |||
local | local z = "{| class=\"wikitable sortable mw-collapsible\" style=\"text-align:center\" \n".. | ||
"|+ Hero Base Move Speed Stats \n".. | |||
"! Hero !! Move Speed (m/s) !! Sprint Speed (m/s) !! Total Sprint Speed (m/s) \n" | |||
for _, r in ipairs(rows) do | |||
for _, | z = z.. | ||
"|- \n".. | |||
"| style=\"text-align:left;\" | ".. | |||
frame:expandTemplate{title="PageRef", args={r.name}}.. | |||
" || "..r.moveSpeed.." || "..r.sprintSpeed.." || "..r.moveSpeed + r.sprintSpeed .." \n" | |||
{ | |||
end | end | ||
z = z.."|}" | |||
return z | |||
return | |||
end | end | ||
return p | return p | ||