Module:Abilities/details table: Difference between revisionsGive feedback
m separate tables for each upgrade |
mNo edit summary |
||
| (13 intermediate revisions by the same user not shown) | |||
| Line 2: | Line 2: | ||
local utils = require "Module:Abilities/utils" | local utils = require "Module:Abilities/utils" | ||
local lang = require"Module:Lang" | |||
local commonutils = require"Module:Utilities" | |||
local header_attrs = {'Radius', 'AbilityCastRange', 'AbilityDuration', 'AbilityCooldown', 'AbilityCooldownBetweenCharge', 'AbilityCharges'} | local header_attrs = {'Radius', 'AbilityCastRange', 'AbilityDuration', 'AbilityCooldown', 'AbilityCooldownBetweenCharge', 'AbilityCharges'} | ||
| Line 8: | Line 10: | ||
local hero_name = frame.args[1] | local hero_name = frame.args[1] | ||
local ability_num = frame.args[2] | local ability_num = frame.args[2] | ||
local ability = utils.get_ability_card_data( | local hero_key = utils.get_hero_key(hero_name) | ||
local ability = utils.get_ability_card_data(hero_key, ability_num) | |||
if(ability == nil) then error(string.format('Ability %s#%s not found', hero_name, ability_num)) end | if(ability == nil) then error(string.format('Ability %s#%s not found', hero_name, ability_num)) end | ||
| Line 23: | Line 26: | ||
local scale_value = prop.Scale and prop.Scale.Value or nil | local scale_value = prop.Scale and prop.Scale.Value or nil | ||
local scale_type = prop.Scale and prop.Scale.Type or nil | local scale_type = prop.Scale and prop.Scale.Type or nil | ||
rows = rows .. create_row(prop.Key, prop.Value, scale_type, scale_value) | rows = rows .. create_row(prop.Key, prop.Value, scale_type, scale_value, frame) | ||
end | end | ||
end | end | ||
| Line 32: | Line 35: | ||
local scale_type = prop.Scale and prop.Scale.Type or nil | local scale_type = prop.Scale and prop.Scale.Type or nil | ||
local scale_value = prop.Scale and prop.Scale.Value or nil | local scale_value = prop.Scale and prop.Scale.Value or nil | ||
rows = rows .. create_row(prop.Key, prop.Value, scale_type, scale_value) | rows = rows .. create_row(prop.Key, prop.Value, scale_type, scale_value, frame) | ||
end | end | ||
end | end | ||
| Line 43: | Line 46: | ||
local scale_type = prop.Scale and prop.Scale.Type or nil | local scale_type = prop.Scale and prop.Scale.Type or nil | ||
local scale_value = prop.Scale and prop.Scale.Value or nil | local scale_value = prop.Scale and prop.Scale.Value or nil | ||
rows = rows .. create_row(attr, prop.Value, scale_type, scale_value) | rows = rows .. create_row(attr, prop.Value, scale_type, scale_value, frame) | ||
end | end | ||
end | end | ||
| Line 52: | Line 55: | ||
local scale_type = prop.Scale and prop.Scale.Type or nil | local scale_type = prop.Scale and prop.Scale.Type or nil | ||
local scale_value = prop.Scale and prop.Scale.Value or nil | local scale_value = prop.Scale and prop.Scale.Value or nil | ||
rows = rows .. create_row(attr, prop.Value, scale_type, scale_value) | rows = rows .. create_row(attr, prop.Value, scale_type, scale_value, frame) | ||
end | end | ||
end | end | ||
| Line 59: | Line 62: | ||
end | end | ||
local UPGRADE_COST_MAP = {1, 2, 5} | |||
p.get_upgrade_table = function(frame) | p.get_upgrade_table = function(frame) | ||
local hero_name = frame.args[1] | local hero_name = frame.args[1] | ||
| Line 64: | Line 68: | ||
local upgrade_num = frame.args[3] | local upgrade_num = frame.args[3] | ||
local ability = utils.get_ability_card_data( | local hero_key = utils.get_hero_key(hero_name) | ||
local ability = utils.get_ability_card_data(hero_key, ability_num) | |||
if(ability == nil) then error(string.format('Ability %s#%s not found', hero_name, ability_num)) end | if(ability == nil) then error(string.format('Ability %s#%s not found', hero_name, ability_num)) end | ||
local rows = '' | local rows = '\n|-\n' | ||
for i, upgrade in pairs(ability.Upgrades) do | |||
local data_rows = '' | |||
-- track number of attributes so we can assign the correct rowspan for the upgrade cost column | |||
local num_of_attrs = 0 | |||
for key, value in pairs(upgrade) do | |||
if key ~= 'DescKey' then | |||
local scale_type = upgrade.Scale and upgrade.Scale.Type or nil | |||
local scale_value = upgrade.Scale and upgrade.Scale.Value or nil | |||
data_rows = data_rows .. create_row(key, value, scale_type, scale_value, frame, true) | |||
num_of_attrs = num_of_attrs + 1 | |||
end | |||
end | end | ||
rows = rows .. string.format("\n!rowspan=%s style=\"background-color: #121212; color: #FFEFD7; text-align: center; text-wrap: nowrap;\" | [[File:Ability_point_unlock_icon.png|20px|link=Ability_Point]] '''%s'''\n", num_of_attrs, UPGRADE_COST_MAP[i]) | |||
rows = rows .. data_rows | |||
end | end | ||
| Line 81: | Line 94: | ||
end | end | ||
function create_row(key, value, scale_type, scale_value) | -- with_plus=true will include the "+" symbol before the number, as by default it will be omiitted | ||
function create_row(key, value, scale_type, scale_value, frame, with_plus) | |||
if key == nil or value == nil then | if key == nil or value == nil then | ||
return '' | return '' | ||
end | end | ||
local row = '|' .. | -- get localized label, if none exists, fallback to one that is based on the key | ||
local label = lang.get_string(key..'_label') | |||
if label == '' then | |||
label = commonutils.add_space_before_cap(key) | |||
end | |||
local formatted_value = utils.format_value_with_prepost(key, value, frame, with_plus~=true) | |||
local row = '|' .. label .. '||' .. formatted_value | |||
if scale_type and scale_value then | if scale_type and scale_value then | ||
row = row .. '||' .. scale_type .. '||' .. scale_value | row = row .. '||' .. scale_type .. '||' .. scale_value .. '%' | ||
end | end | ||
return '\n|-\n' | return row .. '\n|-\n' | ||
end | end | ||