Module:InfoboxHero: Difference between revisions

Vergir (talk | contribs)
Use shared HeroData helpers for stat, scaling, hero key and tag lookups instead of local copies (with help from vergir-bot LLM)
round health regen to 3 figs
 
(3 intermediate revisions by 2 users not shown)
Line 190: Line 190:
link    = 'Health Regen',
link    = 'Health Regen',
icon    = 'Health regen.png',
icon    = 'Health regen.png',
sig_figs = 2,
sig_figs = 3,
},
},
{
{
Line 328: Line 328:
-- name: literal, or function(ctx) -> string.  when: function(ctx) -> boolean.
-- name: literal, or function(ctx) -> string.  when: function(ctx) -> boolean.
local CATEGORIES = {
local CATEGORIES = {
{ name = 'Heroes' },
    {
        name = function(ctx) return ctx.is_disabled and 'Unused Heroes' or 'Heroes' end,
        always = true,
    },
{
{
name = function(ctx) return ctx.hero_en end,
name = function(ctx) return (ctx.args.name ~= '' and ctx.args.name) or ctx.hero_en end,
-- Silver (Transformed) is documented on Silver's page and shares her category.
-- Silver (Transformed) is documented on Silver's page and shares her category.
when = function(ctx) return ctx.hero_en ~= 'Silver (Transformed)' end,
when = function(ctx) return ctx.hero_en ~= 'Silver (Transformed)' end,
        always = true,
},
},
{
{
Line 676: Line 680:
return ''
return ''
end
end
if get_stat(ctx.hero, 'IsDisabled') ~= false then return '' end
 
    local is_disabled = get_stat(ctx.hero, 'Name') == 'TargetDummy' or get_stat(ctx.hero, 'IsDisabled')
    ctx.is_disabled = is_disabled


local out = {}
local out = {}
for _, category in ipairs(CATEGORIES) do
for _, category in ipairs(CATEGORIES) do
if category.when == nil or category.when(ctx) then
        if is_disabled and not category.always then
elseif category.when == nil or category.when(ctx) then
local name = category.name
local name = category.name
if type(name) == 'function' then name = name(ctx) end
if type(name) == 'function' then name = name(ctx) end