Module:InfoboxHero: Difference between revisionsGive feedback
Categorise heroes whose abilities Street Brawl changes (with help from vergir-bot LLM) |
Gammaton32 (talk | contribs) round health regen to 3 figs |
||
| (5 intermediate revisions by 2 users not shown) | |||
| Line 30: | Line 30: | ||
local sb_module = require('Module:StreetBrawlAbilities') | local sb_module = require('Module:StreetBrawlAbilities') | ||
local get_stat | -- Shared hero-data lookups, see [[Module:HeroData]]. | ||
local get_stat = hero_module.get_stat | |||
local get_scalings = hero_module.get_scalings | |||
local has_stat = hero_module.has_stat | |||
local has_override_or_stat, stat_number | |||
-------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | ||
| Line 185: | Line 190: | ||
link = 'Health Regen', | link = 'Health Regen', | ||
icon = 'Health regen.png', | icon = 'Health regen.png', | ||
sig_figs = | sig_figs = 3, | ||
}, | }, | ||
{ | { | ||
| Line 323: | 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 = 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 442: | Line 451: | ||
-- Data access | -- Data access | ||
-------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | ||
has_override_or_stat = function(ctx, param, stat) | has_override_or_stat = function(ctx, param, stat) | ||
| Line 547: | Line 523: | ||
if row.stat and row.scaling ~= false then | if row.stat and row.scaling ~= false then | ||
local parts = {} | local parts = {} | ||
for _, scaling in ipairs( | for _, scaling in ipairs(get_scalings(ctx.hero, row.stat)) do | ||
parts[#parts + 1] = hero_module.write_scalar_str(scaling.value, scaling.type) | parts[#parts + 1] = hero_module.write_scalar_str(scaling.value, scaling.type) | ||
end | end | ||
| Line 643: | Line 619: | ||
wrap:tag('div'):addClass('infobox-h-title-hero-left') | wrap:tag('div'):addClass('infobox-h-title-hero-left') | ||
-- Name logo: < | -- Name logo: <Name>_name.svg, or <Name>_name_<lang>.svg on translated pages. | ||
-- Heroes without a logo fall back to their name as plain text. | -- Heroes without a logo fall back to their name as plain text. | ||
local svg = ((ctx.args.name ~= '' and ctx.args.name) or ctx.hero_en) .. '_name' | local svg = ((ctx.args.name ~= '' and ctx.args.name) or ctx.hero_en) .. '_name' | ||
| Line 684: | Line 660: | ||
local tags = {} | local tags = {} | ||
for i = 1, 3 do | for i = 1, 3 do | ||
local tag = hero_module. | local tag = hero_module.hero_tag(ctx.hero_en, i) | ||
if | if tag ~= '' then | ||
tags[#tags + 1] = tag | tags[#tags + 1] = tag | ||
end | end | ||
| Line 704: | Line 680: | ||
return '' | return '' | ||
end | 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 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 | ||
| Line 720: | Line 699: | ||
-- Entry point | -- Entry point | ||
-------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | ||
function p.render(frame) | function p.render(frame) | ||
| Line 745: | Line 712: | ||
end }) | end }) | ||
local hero_key = | -- |key= accepts a hero_* key or the hero's English name; unknown values fall | ||
-- back to the target dummy, the default character in Sandbox mode. | |||
local hero_key = hero_module.find_hero_key(args.key) or DEFAULT_HERO_KEY | |||
local hero = hero_data_all[hero_key] | local hero = hero_data_all[hero_key] | ||