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 23: | Line 23: | ||
table.sort(rows, function(a, b) | table.sort(rows, function(a, b) | ||
local nameA = getSortName( | local nameA = getSortName(a.name or "") | ||
local nameB = getSortName( | local nameB = getSortName(b.name or "") | ||
return nameA:lower() < nameB:lower() | return nameA:lower() < nameB:lower() | ||
end) | end) | ||
| Line 33: | Line 33: | ||
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 85: | ||
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 138: | ||
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 | ||
| Line 200: | Line 175: | ||
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 | ||
| Line 248: | Line 223: | ||
altBulletsPerShot = data["Weapon>AltFire>BulletsPerShot"] or 0 | altBulletsPerShot = data["Weapon>AltFire>BulletsPerShot"] or 0 | ||
}) | }) | ||
end | end | ||
sortHeroes(rows) | sortHeroes(rows) | ||
| Line 282: | Line 238: | ||
{ 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 276: | ||
altBulletSpeed = data["Weapon>AltFire>BulletSpeed"] or 0 | altBulletSpeed = data["Weapon>AltFire>BulletSpeed"] or 0 | ||
}) | }) | ||
end | end | ||
| Line 329: | Line 285: | ||
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 314: | ||
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 | ||
| Line 381: | Line 331: | ||
{ 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 360: | ||
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 | ||
sortHeroes(rows) | sortHeroes(rows) | ||
| Line 428: | Line 373: | ||
{ 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 395: | ||
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 403: | ||
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 | ||
sortHeroes(rows) | sortHeroes(rows) | ||
| Line 484: | Line 418: | ||
{ label = "Maximum Range (m)", field = "falloffEndRange" }, | { label = "Maximum Range (m)", field = "falloffEndRange" }, | ||
{ label = "Damage Falloff (%)", field = "falloffEndScale" }, | { label = "Damage Falloff (%)", 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 450: | ||
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 | ||
sortHeroes(rows) | sortHeroes(rows) | ||
| Line 546: | Line 472: | ||
} | } | ||
local output = {} | local output = {} | ||
for _, def in ipairs(tableDefs) do | for _, def in ipairs(tableDefs) do | ||
| Line 611: | Line 491: | ||
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 | ||
| Line 648: | Line 528: | ||
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 | ||
| Line 758: | Line 638: | ||
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 | ||
| Line 817: | Line 697: | ||
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 703: | ||
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 | ||
| Line 841: | Line 719: | ||
{ 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 747: | ||
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 967: | Line 843: | ||
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 | ||
| Line 1,000: | Line 876: | ||
table.insert(rows, { | table.insert(rows, { | ||
name = name, | name = name, | ||
gravityScale = (data["GravityChange"] or 0), | gravityScale = "+".. (data["GravityChange"] or 0), | ||
}) | }) | ||
end | end | ||
| Line 1,012: | Line 888: | ||
} | } | ||
} | } | ||
} | } | ||