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 33: | Line 20: | ||
if type(value) == "number" then | if type(value) == "number" then | ||
return util_module.round_to_sig_fig(value, 3) | return util_module.round_to_sig_fig(value, 3) | ||
end | end | ||
return value | return value | ||
| Line 101: | Line 72: | ||
cells = cells .. " || " .. (r[col.field] or 0) | cells = cells .. " || " .. (r[col.field] or 0) | ||
end | end | ||
t = t .. | t = t .. | ||
"|- \n" .. | "|- \n" .. | ||
"| style=\"text-align:left;\" | " .. | |||
frame:expandTemplate{ title = "PageRef", args = { r.name } } .. | |||
cells .. " \n" | cells .. " \n" | ||
end | end | ||
| Line 163: | Line 125: | ||
table.insert(rows, { | table.insert(rows, { | ||
name = name, | name = name, | ||
maxHealth = data["MaxHealth"] or 0, | maxHealth = tonumber(data["MaxHealth"]) or 0, | ||
scalingHealth = "+" .. data["LevelScaling>MaxHealth"] or 0, | scalingHealth = "+" .. tonumber(data["LevelScaling>MaxHealth"]) or 0, | ||
maxScalingHealth = (data["MaxHealth"] + data["LevelScaling>MaxHealth"] * soul_unlock.get_max("PowerIncrease")) or 0 | maxScalingHealth = tonumber(roundValue(data["MaxHealth"] + data["LevelScaling>MaxHealth"] * soul_unlock.get_max("PowerIncrease"))) or 0 | ||
}) | }) | ||
end | end | ||
table.sort(rows, function(a, b) return a.name:lower() < b.name:lower() end) | |||
local tableDefs = { | local tableDefs = { | ||
| Line 200: | Line 162: | ||
name = name, | name = name, | ||
baseHealthRegen = data["BaseHealthRegen"] or 0, | baseHealthRegen = data["BaseHealthRegen"] or 0, | ||
spiritHealthRegen = "+".. (data["SpiritScaling>BaseHealthRegen"] or 0), | spiritHealthRegen = "+".. (tonumber(data["SpiritScaling>BaseHealthRegen"]) or 0), | ||
}) | }) | ||
end | end | ||
table.sort(rows, function(a, b) return a.name:lower() < b.name:lower() end) | |||
local tableDefs = { | local tableDefs = { | ||
| Line 248: | Line 210: | ||
altBulletsPerShot = data["Weapon>AltFire>BulletsPerShot"] or 0 | altBulletsPerShot = data["Weapon>AltFire>BulletsPerShot"] or 0 | ||
}) | }) | ||
end | end | ||
table.sort(rows, function(a, b) return a.name:lower() < b.name:lower() end) | |||
local tableDefs = { | local tableDefs = { | ||
| Line 282: | Line 225: | ||
{ label = "Bullets Per Shot", field = "bulletsPerShot" }, | { label = "Bullets Per Shot", field = "bulletsPerShot" }, | ||
} | } | ||
} | }, | ||
{ | |||
title = "Base Alt-Fire Damage Stats", | |||
columns = { | |||
{ label = "Damage per sec", field = "altDPS" }, | |||
{ label = "Ammo Per Shot", field = "altAmmoConsumedPerShot" }, | |||
{ label = "Bullets per sec", field = "altRoundsPerSecond" }, | |||
{ label = "Bullet Damage", field = "altBulletDamage" }, | |||
{ label = "Bullets Per Shot", field = "altBulletsPerShot" }, | |||
} | |||
} | |||
} | } | ||
| Line 310: | Line 263: | ||
altBulletSpeed = data["Weapon>AltFire>BulletSpeed"] or 0 | altBulletSpeed = data["Weapon>AltFire>BulletSpeed"] or 0 | ||
}) | }) | ||
end | end | ||
table.sort(rows, function(a, b) | |||
return a.name:lower() < b.name:lower() | |||
end) | |||
local tableDefs = { | local tableDefs = { | ||
| Line 329: | Line 274: | ||
columns = { | columns = { | ||
{ label = "m/s", field = "bulletSpeed" } | { label = "m/s", field = "bulletSpeed" } | ||
} | |||
}, | |||
{ | |||
title = "Base Alt-Fire Bullet Velocity", | |||
columns = { | |||
{ label = "m/s", field = "altBulletSpeed" } | |||
} | } | ||
} | } | ||
| Line 352: | Line 303: | ||
name = name, | name = name, | ||
clipSize = data["Weapon>ClipSize"] or 0, | clipSize = data["Weapon>ClipSize"] or 0, | ||
spiritClipSize = "+".. (data["SpiritScaling>ClipSize"] or 0), | spiritClipSize = "+".. (tonumber(data["SpiritScaling>ClipSize"]) or 0), | ||
bulletsPerBurst = data["Weapon>BulletsPerBurst"] or 0, | bulletsPerBurst = data["Weapon>BulletsPerBurst"] or 0, | ||
burstClipSize = data["Weapon>ClipSize"] or 0 / data["Weapon>BulletsPerBurst"] or 0, | burstClipSize = data["Weapon>ClipSize"] or 0 / data["Weapon>BulletsPerBurst"] or 0, | ||
ammoConsumedPerShot = data["Weapon>AltFire>AmmoConsumedPerShot"] or 0 | ammoConsumedPerShot = data["Weapon>AltFire>AmmoConsumedPerShot"] or 0 | ||
}) | }) | ||
end | end | ||
table.sort(rows, function(a, b) return a.name:lower() < b.name:lower() end) | |||
local tableDefs = { | local tableDefs = { | ||
| Line 381: | Line 320: | ||
{ label = "Spirit Scaling", field = "spiritClipSize" }, | { label = "Spirit Scaling", field = "spiritClipSize" }, | ||
} | } | ||
} | }, | ||
{ | |||
title = "Alt-Fire Ammo Cost", | |||
columns = { | |||
{ label = "Ammo Per Shot", field = "ammoConsumedPerShot" }, | |||
} | |||
} | |||
} | } | ||
| Line 404: | Line 349: | ||
roundsPerSecond = data["Weapon>RoundsPerSecond"] or 0, | roundsPerSecond = data["Weapon>RoundsPerSecond"] or 0, | ||
altRoundsPerSecond = data["Weapon>AltFire>RoundsPerSecond"] or 0, | altRoundsPerSecond = data["Weapon>AltFire>RoundsPerSecond"] or 0, | ||
spiritRoundsPerSecond = "+".. (data["SpiritScaling>RoundsPerSecond"] or 0), | spiritRoundsPerSecond = "+".. (tonumber(data["SpiritScaling>RoundsPerSecond"]) or 0), | ||
spiritFireRate = "+".. (data["SpiritScaling>FireRate"] or 0), | spiritFireRate = "+".. (tonumber(data["SpiritScaling>FireRate"]) or 0), | ||
}) | }) | ||
end | end | ||
table.sort(rows, function(a, b) return a.name:lower() < b.name:lower() end) | |||
local tableDefs = { | local tableDefs = { | ||
| Line 428: | Line 362: | ||
{ label = "Spirit Scaling", field = "spiritRoundsPerSecond" }, | { label = "Spirit Scaling", field = "spiritRoundsPerSecond" }, | ||
} | } | ||
} | }, | ||
{ | |||
title = "Base Alt-Fire Fire Rate", | |||
columns = { | |||
{ label = "Rounds/s", field = "altRoundsPerSecond" }, | |||
} | |||
} | |||
} | } | ||
| Line 444: | Line 384: | ||
p.heroFalloffRangeTable = function(frame) | p.heroFalloffRangeTable = function(frame) | ||
local heroFalloffRangeData = heroDataArray({"Name", "Weapon>FalloffStartRange", "Weapon>FalloffEndRange", "Weapon>AltFire>FalloffStartRange", "Weapon>AltFire>FalloffEndRange", | local heroFalloffRangeData = heroDataArray({"Name", "Weapon>FalloffStartRange", "Weapon>FalloffEndRange", "Weapon>AltFire>FalloffStartRange", "Weapon>AltFire>FalloffEndRange", | ||
"Weapon>AltFire>ExplosionRadius", "Weapon>FalloffEndScale" | "Weapon>AltFire>ExplosionRadius", "Weapon>FalloffEndScale"}) | ||
local rows = {} | local rows = {} | ||
| Line 452: | Line 392: | ||
falloffStartRange = data["Weapon>FalloffStartRange"] or 0, | falloffStartRange = data["Weapon>FalloffStartRange"] or 0, | ||
falloffEndRange = data["Weapon>FalloffEndRange"] or 0, | falloffEndRange = data["Weapon>FalloffEndRange"] or 0, | ||
falloffEndScale = -100 + (100 * (data["Weapon>FalloffEndScale"] or 0)), | falloffEndScale = -100 + (100 * tonumber(data["Weapon>FalloffEndScale"] or 0)), | ||
altFalloffStartRange = data["Weapon>AltFire>FalloffStartRange"] or 0, | altFalloffStartRange = data["Weapon>AltFire>FalloffStartRange"] or 0, | ||
altFalloffEndRange = data["Weapon>AltFire>FalloffEndRange"] or 0, | altFalloffEndRange = data["Weapon>AltFire>FalloffEndRange"] or 0, | ||
altExplosionRadius = | altExplosionRadius = data["Weapon>AltFire>ExplosionRadius"] or 0 | ||
}) | }) | ||
end | end | ||
table.sort(rows, function(a, b) return a.name:lower() < b.name:lower() end) | |||
local tableDefs = { | local tableDefs = { | ||
| Line 483: | Line 406: | ||
{ label = "Minimum Range (m)", field = "falloffStartRange" }, | { label = "Minimum Range (m)", field = "falloffStartRange" }, | ||
{ label = "Maximum Range (m)", field = "falloffEndRange" }, | { label = "Maximum Range (m)", field = "falloffEndRange" }, | ||
{ label = "Damage | { label = "Damage Dropoff (%)", field = "falloffEndScale" }, | ||
} | |||
} , | |||
{ | |||
title = "Base Alt-Fire Falloff Range", | |||
columns = { | |||
{ label = "Minimum Range (m)", field = "altFalloffStartRange" }, | |||
{ label = "Maximum Range (m)", field = "altFalloffEndRange" }, | |||
{ label = "Explosion Radius (m)", field = "altExplosionRadius" }, | { label = "Explosion Radius (m)", field = "altExplosionRadius" }, | ||
} | } | ||
| Line 509: | Line 439: | ||
table.insert(rows, { | table.insert(rows, { | ||
name = name, | name = name, | ||
bulletDamage = data["Weapon>BulletDamage"] or 0, | bulletDamage = tonumber(data["Weapon>BulletDamage"]) or 0, | ||
bulletDamagePerShot = ((data["Weapon>BulletDamage"] or 0) * (data["Weapon>BulletsPerShot"] or 0) * (data["Weapon>BulletsPerBurst"] or 0)), | bulletDamagePerShot = ((data["Weapon>BulletDamage"] or 0) * (data["Weapon>BulletsPerShot"] or 0) * (data["Weapon>BulletsPerBurst"] or 0)), | ||
scalingDamage = "+" .. data["LevelScaling>BulletDamage"] or 0, | scalingDamage = "+" .. tonumber(data["LevelScaling>BulletDamage"]) or 0, | ||
maxScalingDamage = (roundValue(data["Weapon>BulletDamage"] + data["LevelScaling>BulletDamage"] * soul_unlock.get_max("PowerIncrease"))) or 0, | maxScalingDamage = tonumber(roundValue(data["Weapon>BulletDamage"] + data["LevelScaling>BulletDamage"] * soul_unlock.get_max("PowerIncrease"))) or 0, | ||
altBulletDamage = data["Weapon>AltFire>BulletDamage"] or 0, | altBulletDamage = tonumber(data["Weapon>AltFire>BulletDamage"]) or 0, | ||
spiritScalingDamage = "+" .. (data["SpiritScaling>BulletDamage"] or 0), | spiritScalingDamage = "+" .. (tonumber(data["SpiritScaling>BulletDamage"]) or 0), | ||
}) | }) | ||
end | end | ||
table.sort(rows, function(a, b) return a.name:lower() < b.name:lower() end) | |||
local tableDefs = { | local tableDefs = { | ||
| Line 546: | Line 461: | ||
} | } | ||
local output = {} | local output = {} | ||
for _, def in ipairs(tableDefs) do | for _, def in ipairs(tableDefs) do | ||
| Line 611: | Line 480: | ||
table.insert(rows, { | table.insert(rows, { | ||
name = name, | name = name, | ||
lightMeleeDamage = data["LightMeleeDamage"] or 0, | lightMeleeDamage = tonumber(data["LightMeleeDamage"]) or 0, | ||
scalingDamage = "+" .. data["LevelScaling>LightMeleeDamage"] or 0, | scalingDamage = "+" .. tonumber(data["LevelScaling>LightMeleeDamage"]) or 0, | ||
maxScalingDamage = ( | maxScalingDamage = tonumber(roundValue(data["LightMeleeDamage"] + data["LevelScaling>LightMeleeDamage"] * soul_unlock.get_max("PowerIncrease"))) or 0, | ||
}) | }) | ||
end | end | ||
table.sort(rows, function(a, b) return a.name:lower() < b.name:lower() end) | |||
local tableDefs = { | local tableDefs = { | ||
| Line 648: | Line 517: | ||
table.insert(rows, { | table.insert(rows, { | ||
name = name, | name = name, | ||
heavyMeleeDamage = data["HeavyMeleeDamage"] or 0, | heavyMeleeDamage = tonumber(data["HeavyMeleeDamage"]) or 0, | ||
scalingDamage = "+" .. data["LevelScaling>HeavyMeleeDamage"] or 0, | scalingDamage = "+" .. tonumber(data["LevelScaling>HeavyMeleeDamage"]) or 0, | ||
maxScalingDamage = ( | maxScalingDamage = tonumber(roundValue(data["HeavyMeleeDamage"] + data["LevelScaling>HeavyMeleeDamage"] * soul_unlock.get_max("PowerIncrease"))) or 0, | ||
spiritScalingDamage = "+" .. (data["SpiritScaling>HeavyMeleeDamage"] or 0), | spiritScalingDamage = "+" .. (tonumber(data["SpiritScaling>HeavyMeleeDamage"]) or 0), | ||
}) | }) | ||
end | end | ||
table.sort(rows, function(a, b) return a.name:lower() < b.name:lower() end) | |||
local tableDefs = { | local tableDefs = { | ||
| Line 690: | Line 559: | ||
}) | }) | ||
end | end | ||
table.sort(rows, function(a, b) return a.name:lower() < b.name:lower() end) | |||
local tableDefs = { | local tableDefs = { | ||
| Line 714: | Line 583: | ||
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 589: | ||
table.insert(rows, { | table.insert(rows, { | ||
name = name, | name = name, | ||
dashSpeed = data["GroundDashSpeed"] or 0 | dashSpeed = data["GroundDashSpeed"] or 0 | ||
}) | }) | ||
end | end | ||
table.sort(rows, function(a, b) return a.name:lower() < b.name:lower() end) | |||
local tableDefs = { | local tableDefs = { | ||
| Line 733: | Line 599: | ||
columns = { | columns = { | ||
{ label = "Dash Speed (m/s)", field = "dashSpeed" }, | { label = "Dash Speed (m/s)", field = "dashSpeed" }, | ||
} | } | ||
} | } | ||
| Line 758: | Line 621: | ||
table.insert(rows, { | table.insert(rows, { | ||
name = name, | name = name, | ||
reloadTime = data["Weapon>ReloadTime"] or 0 | reloadTime = tonumber(data["Weapon>ReloadTime"]) or 0 | ||
}) | }) | ||
end | end | ||
table.sort(rows, function(a, b) return a.name:lower() < b.name:lower() end) | |||
local tableDefs = { | local tableDefs = { | ||
| Line 794: | Line 657: | ||
}) | }) | ||
end | end | ||
table.sort(rows, function(a, b) return a.name:lower() < b.name:lower() end) | |||
local tableDefs = { | local tableDefs = { | ||
| Line 817: | Line 680: | ||
p.heroMoveSpeedTable = function(frame) | p.heroMoveSpeedTable = function(frame) | ||
local heroMoveSpeedData = heroDataArray({"Name", "MaxMoveSpeed", "SprintSpeed | local heroMoveSpeedData = heroDataArray({"Name", "MaxMoveSpeed", "SprintSpeed", "SpiritScaling>MaxMoveSpeed", "SpiritScaling>SprintSpeed"}) | ||
local rows = {} | local rows = {} | ||
| Line 823: | Line 686: | ||
table.insert(rows, { | table.insert(rows, { | ||
name = name, | name = name, | ||
moveSpeed = data["MaxMoveSpeed"] or 0, | moveSpeed = tonumber(data["MaxMoveSpeed"]) or 0, | ||
sprintSpeed = data["SprintSpeed"] or 0, | sprintSpeed = tonumber(data["SprintSpeed"]) or 0, | ||
totalSpeed = | totalSpeed = tonumber(data["MaxMoveSpeed"] + data["SprintSpeed"]) or 0, | ||
spiritMoveSpeed = "+" .. (tonumber(data["SpiritScaling>MaxMoveSpeed"]) or 0), | |||
spiritSprintSpeed = "+" .. (tonumber(data["SpiritScaling>SprintSpeed"]) or 0), | |||
spiritMoveSpeed = "+" .. (data["SpiritScaling>MaxMoveSpeed"] or 0), | |||
spiritSprintSpeed = "+" .. (data["SpiritScaling>SprintSpeed"] or 0), | |||
}) | }) | ||
end | end | ||
table.sort(rows, function(a, b) return a.name:lower() < b.name:lower() end) | |||
local tableDefs = { | local tableDefs = { | ||
| Line 841: | Line 702: | ||
{ label = "Sprint Speed (m/s)", field = "sprintSpeed" }, | { label = "Sprint Speed (m/s)", field = "sprintSpeed" }, | ||
{ label = "Total Speed (m/s)", field = "totalSpeed" }, | { label = "Total Speed (m/s)", field = "totalSpeed" }, | ||
{ label = "MS Spirit Scaling", field = "spiritMoveSpeed" }, | { label = "MS Spirit Scaling", field = "spiritMoveSpeed" }, | ||
{ label = "SS Spirit Scaling", field = "spiritSprintSpeed" }, | { label = "SS Spirit Scaling", field = "spiritSprintSpeed" }, | ||
| Line 871: | Line 730: | ||
bulletResist = data["BulletResist"] or 0, | bulletResist = data["BulletResist"] or 0, | ||
bulletResistScaling = "+".. (data["LevelScaling>BulletResist"] or 0), | bulletResistScaling = "+".. (data["LevelScaling>BulletResist"] or 0), | ||
bulletResistScalingMax = ((roundValue((data["BulletResist"] or 0) + (data["LevelScaling>BulletResist"] or 0) * soul_unlock.get_max("PowerIncrease"))) or 0), | bulletResistScalingMax = (tonumber(roundValue((data["BulletResist"] or 0) + (data["LevelScaling>BulletResist"] or 0) * soul_unlock.get_max("PowerIncrease"))) or 0), | ||
bulletResistSpiritScaling = "+".. (data["SpiritScaling>BulletResist"] or 0), | bulletResistSpiritScaling = "+".. (data["SpiritScaling>BulletResist"] or 0), | ||
spiritResist = data["TechResist"] or 0, | spiritResist = data["TechResist"] or 0, | ||
spiritResistScaling = "+".. (data["LevelScaling>TechResist"] or 0), | spiritResistScaling = "+".. (data["LevelScaling>TechResist"] or 0), | ||
spiritResistScalingMax = ((roundValue((data["TechResist"] or 0) + (data["LevelScaling>TechResist"] or 0) * soul_unlock.get_max("PowerIncrease"))) or 0), | spiritResistScalingMax = (tonumber(roundValue((data["TechResist"] or 0) + (data["LevelScaling>TechResist"] or 0) * soul_unlock.get_max("PowerIncrease"))) or 0), | ||
spiritResistSpiritScaling = "+".. (data["SpiritScaling>TechResist"] or 0), | spiritResistSpiritScaling = "+".. (data["SpiritScaling>TechResist"] or 0), | ||
meleeResist = data["MeleeResist"] or 0, | meleeResist = data["MeleeResist"] or 0, | ||
| Line 881: | Line 740: | ||
}) | }) | ||
end | end | ||
table.sort(rows, function(a, b) return a.name:lower() < b.name:lower() end) | |||
local tableDefs = { | local tableDefs = { | ||
| Line 937: | Line 796: | ||
}) | }) | ||
end | end | ||
table.sort(rows, function(a, b) return a.name:lower() < b.name:lower() end) | |||
local tableDefs = { | local tableDefs = { | ||
| Line 967: | Line 826: | ||
name = name, | name = name, | ||
spiritScaling = "+".. data["LevelScaling>TechPower"] or 0, | spiritScaling = "+".. data["LevelScaling>TechPower"] or 0, | ||
maxSpiritScaling = (data["LevelScaling>TechPower"] * soul_unlock.get_max("PowerIncrease")) or 0, | maxSpiritScaling = tonumber(data["LevelScaling>TechPower"] * soul_unlock.get_max("PowerIncrease")) or 0, | ||
}) | }) | ||
end | end | ||
table.sort(rows, function(a, b) return a.name:lower() < b.name:lower() end) | |||
local tableDefs = { | local tableDefs = { | ||
| Line 980: | Line 839: | ||
} | } | ||
} | } | ||
} | } | ||