Module:LevelTables: Difference between revisionsGive feedback
Added support for new weapon data structure |
Tag: Manual revert |
||
| (6 intermediate revisions by 3 users not shown) | |||
| Line 1: | Line 1: | ||
local p = {}; | local p = {}; | ||
local Icon = require('Module:Icon') | |||
local Souls = require('Module:Souls') | |||
-- Loads the necessary data from the wiki's JSON pages. | -- Loads the necessary data from the wiki's JSON pages. | ||
| Line 40: | Line 43: | ||
--]] | --]] | ||
p.write_power_increase_table = function(frame) | p.write_power_increase_table = function(frame) | ||
-- Use the same smart sorting for this list. | |||
local function hero_sort(h1, h2) | |||
return get_sortable_name(h1.Name) < get_sortable_name(h2.Name) | |||
end | |||
-- Read and validate the arguments passed from the #invoke call. | -- Read and validate the arguments passed from the #invoke call. | ||
local property = frame.args[1] | local property = frame.args[1] | ||
| Line 61: | Line 68: | ||
end | end | ||
end | end | ||
local max_boons = #pi_souls_list | local max_boons = #pi_souls_list | ||
-- Define the milestones to display in the summary table. | -- Define the milestones to display in the summary table. | ||
local milestones = {10, 20, max_boons} | local milestones = {10, 20, max_boons} | ||
| Line 69: | Line 77: | ||
local filtered_heroes = {} | local filtered_heroes = {} | ||
for _, hero in pairs(heroes_data) do | for _, hero in pairs(heroes_data) do | ||
if (not hero["IsDisabled"] and not hero["InDevelopment"]) then | if (not hero["IsDisabled"] and not hero["InDevelopment"] and hero["Name"]) then | ||
table.insert(filtered_heroes, hero) | table.insert(filtered_heroes, hero) | ||
end | end | ||
| Line 75: | Line 83: | ||
-- Sort the hero list alphabetically, ignoring "The " for proper sorting. | -- Sort the hero list alphabetically, ignoring "The " for proper sorting. | ||
table.sort(filtered_heroes, | table.sort(filtered_heroes, hero_sort) | ||
-- Begin building the main data table. | -- Begin building the main data table. | ||
| Line 95: | Line 101: | ||
local required_souls = pi_souls_list[count] | local required_souls = pi_souls_list[count] | ||
local souls_formatted = string.format("%.1fK", (required_souls + 400) / 1000) | local souls_formatted = string.format("%.1fK", (required_souls + 400) / 1000) | ||
local soul_display = | local soul_display = Souls._render(souls_formatted) | ||
local full_header = header_text .. "<br /><small>(" .. soul_display .. ")</small>" | local full_header = header_text .. "<br /><small>(" .. soul_display .. ")</small>" | ||
header_row:tag("th"):wikitext(full_header):done() | header_row:tag("th"):wikitext(full_header):done() | ||
| Line 106: | Line 112: | ||
local function addHeroRows(hero_data, is_alt_fire) | local function addHeroRows(hero_data, is_alt_fire) | ||
local base, level, suffix | local base, level, suffix | ||
local hero_icon_wikitext = | local hero_icon_wikitext = Icon._render(hero_data['Name']) | ||
-- Determine if this is a main weapon or an alt-fire and set the correct data. | -- Determine if this is a main weapon or an alt-fire and set the correct data. | ||
| Line 173: | Line 179: | ||
local required_souls = pi_souls_list[i] | local required_souls = pi_souls_list[i] | ||
local souls_formatted = string.format("%.1fK", (required_souls + 400) / 1000) | local souls_formatted = string.format("%.1fK", (required_souls + 400) / 1000) | ||
local soul_display = | local soul_display = Souls._render(souls_formatted) | ||
local row_html = string.format("<tr><td>%s</td><td style='text-align:right;'>%.2f</td></tr>", soul_display, total) | local row_html = string.format("<tr><td>%s</td><td style='text-align:right;'>%.2f</td></tr>", soul_display, total) | ||
| Line 305: | Line 311: | ||
local shots = get_stat_value(hero, "BulletsPerShot") | local shots = get_stat_value(hero, "BulletsPerShot") | ||
local hit_once = get_stat_value(hero, "HitOnceAcrossAllBullets") | local hit_once = get_stat_value(hero, "HitOnceAcrossAllBullets") | ||
local hero_icon = | local hero_icon = Icon._render(hero["Name"]) | ||
-- Checks for the special property and changes the output text accordingly. | -- Checks for the special property and changes the output text accordingly. | ||
| Line 324: | Line 330: | ||
local level = math.floor(hero["LevelScaling"]["BulletDamage"] * 100) / 100 | local level = math.floor(hero["LevelScaling"]["BulletDamage"] * 100) / 100 | ||
local shots = get_stat_value(hero, "BulletsPerBurst") | local shots = get_stat_value(hero, "BulletsPerBurst") | ||
local hero_icon = | local hero_icon = Icon._render(hero["Name"]) | ||
local stat_str = "* " .. hero_icon .. ": " .. shots .. " rounds, " | local stat_str = "* " .. hero_icon .. ": " .. shots .. " rounds, " | ||
.. base .. "/bullet, +" .. level .. "/bullet\n" | .. base .. "/bullet, +" .. level .. "/bullet\n" | ||