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>AltFire>ExplosionRadius"}) | ||
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, | ||
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 405: | ||
{ 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 = " | } | ||
} , | |||
{ | |||
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 437: | ||
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 459: | ||
} | } | ||
local output = {} | local output = {} | ||
for _, def in ipairs(tableDefs) do | for _, def in ipairs(tableDefs) do | ||
| Line 611: | Line 478: | ||
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 515: | ||
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 557: | ||
}) | }) | ||
end | end | ||
table.sort(rows, function(a, b) return a.name:lower() < b.name:lower() end) | |||
local tableDefs = { | local tableDefs = { | ||
| Line 714: | Line 581: | ||
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 587: | ||
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 597: | ||
columns = { | columns = { | ||
{ label = "Dash Speed (m/s)", field = "dashSpeed" }, | { label = "Dash Speed (m/s)", field = "dashSpeed" }, | ||
} | } | ||
} | } | ||
| Line 758: | Line 619: | ||
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 655: | ||
}) | }) | ||
end | end | ||
table.sort(rows, function(a, b) return a.name:lower() < b.name:lower() end) | |||
local tableDefs = { | local tableDefs = { | ||
| Line 817: | Line 678: | ||
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 684: | ||
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 700: | ||
{ 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 728: | ||
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 738: | ||
}) | }) | ||
end | end | ||
table.sort(rows, function(a, b) return a.name:lower() < b.name:lower() end) | |||
local tableDefs = { | local tableDefs = { | ||
| Line 937: | Line 794: | ||
}) | }) | ||
end | end | ||
table.sort(rows, function(a, b) return a.name:lower() < b.name:lower() end) | |||
local tableDefs = { | local tableDefs = { | ||
| Line 967: | Line 824: | ||
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 837: | ||
} | } | ||
} | } | ||
} | } | ||