Module:HeroDataArrays: Difference between revisionsGive feedback
No edit summary |
Gammaton32 (talk | contribs) added alt fire stats to all tables where applicable |
||
| (One intermediate revision by the same user not shown) | |||
| Line 31: | Line 31: | ||
-- Helper function to round numeric values | -- Helper function to round numeric values | ||
local function roundValue(value) | local function roundValue(value) | ||
if type(value) == "number" then | |||
-- return util_module.round_to_sig_fig(value, | return util_module.round_to_sig_fig(value, 3) | ||
end | |||
return value | |||
end | |||
-- Round to 4 digits | |||
local function roundValueFour(value) | |||
if type(value) == "number" then | |||
return util_module.round_to_sig_fig(value, 4) | |||
end | |||
return value | return value | ||
end | end | ||
| Line 157: | Line 165: | ||
maxHealth = data["MaxHealth"] or 0, | maxHealth = data["MaxHealth"] or 0, | ||
scalingHealth = "+" .. data["LevelScaling>MaxHealth"] or 0, | scalingHealth = "+" .. data["LevelScaling>MaxHealth"] or 0, | ||
maxScalingHealth = | maxScalingHealth = (data["MaxHealth"] + data["LevelScaling>MaxHealth"] * soul_unlock.get_max("PowerIncrease")) or 0 | ||
}) | }) | ||
end | end | ||
| Line 240: | Line 248: | ||
altBulletsPerShot = data["Weapon>AltFire>BulletsPerShot"] or 0 | altBulletsPerShot = data["Weapon>AltFire>BulletsPerShot"] or 0 | ||
}) | }) | ||
local altBulletDamage = data["Weapon>AltFire>BulletDamage"] | |||
local altDPS = data["Weapon>AltFire>DPS"] | |||
local altRoundsPerSecond = data["Weapon>AltFire>RoundsPerSecond"] | |||
local altBulletsPerShot = data["Weapon>AltFire>BulletsPerShot"] | |||
if altBulletDamage and altBulletDamage ~= 0 then | |||
table.insert(rows, { | |||
name = name, | |||
sortName = name .. " (alt fire)", | |||
nameSuffix = " (alt fire)", | |||
DPS = altDPS, | |||
reloadDelay = data["Weapon>ReloadDelay"] or 0, | |||
reloadTime = data["Weapon>ReloadTime"] or 0, | |||
clipSize = data["Weapon>ClipSize"] or 0, | |||
roundsPerSecond = altRoundsPerSecond, | |||
bulletDamage = altBulletDamage, | |||
bulletsPerShot = altBulletsPerShot | |||
}) | |||
end | |||
end | end | ||
sortHeroes(rows) | sortHeroes(rows) | ||
| Line 255: | Line 282: | ||
{ label = "Bullets Per Shot", field = "bulletsPerShot" }, | { label = "Bullets Per Shot", field = "bulletsPerShot" }, | ||
} | } | ||
} | } | ||
} | } | ||
| Line 293: | Line 310: | ||
altBulletSpeed = data["Weapon>AltFire>BulletSpeed"] or 0 | altBulletSpeed = data["Weapon>AltFire>BulletSpeed"] or 0 | ||
}) | }) | ||
local altBulletSpeed = data["Weapon>AltFire>BulletSpeed"] | |||
if altBulletSpeed and altBulletSpeed ~= 0 then | |||
table.insert(rows, { | |||
name = name, | |||
sortName = name .. " (alt fire)", | |||
nameSuffix = " (alt fire)", | |||
bulletSpeed = altBulletSpeed | |||
}) | |||
end | |||
end | end | ||
| Line 302: | Line 329: | ||
columns = { | columns = { | ||
{ label = "m/s", field = "bulletSpeed" } | { label = "m/s", field = "bulletSpeed" } | ||
} | } | ||
} | } | ||
| Line 336: | Line 357: | ||
ammoConsumedPerShot = data["Weapon>AltFire>AmmoConsumedPerShot"] or 0 | ammoConsumedPerShot = data["Weapon>AltFire>AmmoConsumedPerShot"] or 0 | ||
}) | }) | ||
local ammoConsumedPerShot = data["Weapon>AltFire>AmmoConsumedPerShot"] | |||
if ammoConsumedPerShot and ammoConsumedPerShot ~= 0 then | |||
table.insert(rows, { | |||
name = name, | |||
sortName = name .. " (alt fire)", | |||
nameSuffix = " (alt fire)", | |||
bulletsPerBurst = ammoConsumedPerShot, | |||
clipSize = data["Weapon>ClipSize"] or 0, | |||
spiritClipSize = "+".. (data["SpiritScaling>ClipSize"] or 0), | |||
}) | |||
end | |||
end | end | ||
| Line 348: | Line 381: | ||
{ label = "Spirit Scaling", field = "spiritClipSize" }, | { label = "Spirit Scaling", field = "spiritClipSize" }, | ||
} | } | ||
} | } | ||
} | } | ||
| Line 380: | Line 407: | ||
spiritFireRate = "+".. (data["SpiritScaling>FireRate"] or 0), | spiritFireRate = "+".. (data["SpiritScaling>FireRate"] or 0), | ||
}) | }) | ||
local altRoundsPerSecond = data["Weapon>AltFire>RoundsPerSecond"] | |||
if altRoundsPerSecond and altRoundsPerSecond ~= 0 then | |||
table.insert(rows, { | |||
name = name, | |||
sortName = name .. " (alt fire)", | |||
nameSuffix = " (alt fire)", | |||
roundsPerSecond = altRoundsPerSecond, | |||
spiritRoundsPerSecond = "+".. (data["SpiritScaling>RoundsPerSecond"] or 0), | |||
}) | |||
end | |||
end | end | ||
sortHeroes(rows) | sortHeroes(rows) | ||
| Line 390: | Line 428: | ||
{ label = "Spirit Scaling", field = "spiritRoundsPerSecond" }, | { label = "Spirit Scaling", field = "spiritRoundsPerSecond" }, | ||
} | } | ||
} | } | ||
} | } | ||
| Line 423: | Line 455: | ||
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 = 0, | ||
altExplosionEndScale = (100 * (data["Weapon>AltFire>ExplosionDamageScaleAtMaxRadius"] or 0)) | altExplosionEndScale = (100 * (data["Weapon>AltFire>ExplosionDamageScaleAtMaxRadius"] or 0)) | ||
}) | }) | ||
local altFalloffStartRange = data["Weapon>AltFire>FalloffStartRange"] | |||
local altFalloffEndRange = data["Weapon>AltFire>FalloffEndRange"] | |||
local altExplosionRadius = data["Weapon>AltFire>ExplosionRadius"] or 0 | |||
local altExplosionEndScale = (100 * (data["Weapon>AltFire>ExplosionDamageScaleAtMaxRadius"] or 0)) | |||
if altFalloffStartRange and altFalloffStartRange ~= 0 then | |||
table.insert(rows, { | |||
name = name, | |||
sortName = name .. " (alt fire)", | |||
nameSuffix = " (alt fire)", | |||
falloffStartRange = altFalloffStartRange, | |||
falloffEndRange = altFalloffEndRange, | |||
altExplosionRadius = data["Weapon>AltFire>ExplosionRadius"] or 0, | |||
falloffEndScale = -100 + (100 * (data["Weapon>FalloffEndScale"] or 0)) | |||
}) | |||
end | |||
end | end | ||
sortHeroes(rows) | sortHeroes(rows) | ||
| Line 436: | Line 484: | ||
{ label = "Maximum Range (m)", field = "falloffEndRange" }, | { label = "Maximum Range (m)", field = "falloffEndRange" }, | ||
{ label = "Damage Falloff (%)", field = "falloffEndScale" }, | { label = "Damage Falloff (%)", field = "falloffEndScale" }, | ||
{ label = "Explosion Radius (m)", field = "altExplosionRadius" }, | { label = "Explosion Radius (m)", field = "altExplosionRadius" }, | ||
} | } | ||
| Line 526: | Line 567: | ||
lightMeleeDamage = data["LightMeleeDamage"] or 0, | lightMeleeDamage = data["LightMeleeDamage"] or 0, | ||
lightScalingDamage = "+" .. data["LevelScaling>LightMeleeDamage"] or 0, | lightScalingDamage = "+" .. data["LevelScaling>LightMeleeDamage"] or 0, | ||
lightMaxScalingDamage = ( | lightMaxScalingDamage = (roundValueFour(data["LightMeleeDamage"] + data["LevelScaling>LightMeleeDamage"] * soul_unlock.get_max("PowerIncrease"))) or 0, | ||
heavyMeleeDamage = data["HeavyMeleeDamage"] or 0, | heavyMeleeDamage = data["HeavyMeleeDamage"] or 0, | ||
heavyScalingDamage = "+" .. data["LevelScaling>HeavyMeleeDamage"] or 0, | heavyScalingDamage = "+" .. data["LevelScaling>HeavyMeleeDamage"] or 0, | ||
heavyMaxScalingDamage = ( | heavyMaxScalingDamage = (roundValueFour(data["HeavyMeleeDamage"] + data["LevelScaling>HeavyMeleeDamage"] * soul_unlock.get_max("PowerIncrease"))) or 0, | ||
heavySpiritScalingDamage = "+" .. (data["SpiritScaling>HeavyMeleeDamage"] or 0), | heavySpiritScalingDamage = "+" .. (data["SpiritScaling>HeavyMeleeDamage"] or 0), | ||
}) | }) | ||
| Line 572: | Line 613: | ||
lightMeleeDamage = data["LightMeleeDamage"] or 0, | lightMeleeDamage = data["LightMeleeDamage"] or 0, | ||
scalingDamage = "+" .. data["LevelScaling>LightMeleeDamage"] or 0, | scalingDamage = "+" .. data["LevelScaling>LightMeleeDamage"] or 0, | ||
maxScalingDamage = ( | maxScalingDamage = (roundValueFour(data["LightMeleeDamage"] + data["LevelScaling>LightMeleeDamage"] * soul_unlock.get_max("PowerIncrease"))) or 0, | ||
}) | }) | ||
end | end | ||
| Line 609: | Line 650: | ||
heavyMeleeDamage = data["HeavyMeleeDamage"] or 0, | heavyMeleeDamage = data["HeavyMeleeDamage"] or 0, | ||
scalingDamage = "+" .. data["LevelScaling>HeavyMeleeDamage"] or 0, | scalingDamage = "+" .. data["LevelScaling>HeavyMeleeDamage"] or 0, | ||
maxScalingDamage = ( | maxScalingDamage = (roundValueFour(data["HeavyMeleeDamage"] + data["LevelScaling>HeavyMeleeDamage"] * soul_unlock.get_max("PowerIncrease"))) or 0, | ||
spiritScalingDamage = "+" .. (data["SpiritScaling>HeavyMeleeDamage"] or 0), | spiritScalingDamage = "+" .. (data["SpiritScaling>HeavyMeleeDamage"] or 0), | ||
}) | }) | ||
| Line 1,035: | Line 1,076: | ||
altBulletRadiusInches = roundValueInteger((data["Weapon>AltFire>BulletRadius"] or 0) * 100 * 0.394), | altBulletRadiusInches = roundValueInteger((data["Weapon>AltFire>BulletRadius"] or 0) * 100 * 0.394), | ||
}) | }) | ||
local altBulletRadius = (data["Weapon>AltFire>BulletRadius"] or 0) * 100 | |||
local altBulletRadiusInches = roundValueInteger((data["Weapon>AltFire>BulletRadius"] or 0) * 100 * 0.394) | |||
if altBulletRadius and altBulletRadius ~= 0 then | |||
table.insert(rows, { | |||
name = name, | |||
sortName = name .. " (alt fire)", | |||
nameSuffix = " (alt fire)", | |||
bulletRadius = altBulletRadius, | |||
bulletRadiusInches = altBulletRadiusInches | |||
}) | |||
end | |||
end | end | ||
sortHeroes(rows) | sortHeroes(rows) | ||
| Line 1,044: | Line 1,097: | ||
{ label = "Bullet Radius (cm)", field = "bulletRadius" }, | { label = "Bullet Radius (cm)", field = "bulletRadius" }, | ||
{ label = "Bullet Radius (in)", field = "bulletRadiusInches" }, | { label = "Bullet Radius (in)", field = "bulletRadiusInches" }, | ||
} | } | ||
} | } | ||