Module:Sandbox/Vergir: Difference between revisionsGive feedback
Diagnostic: check InfoboxHero render determinism (with help from vergir-bot LLM) Tag: Replaced |
Temporary probe: dump SpiritScaling entries from Data:HeroData.json (with help from vergir-bot LLM) |
||
| Line 1: | Line 1: | ||
-- TEMPORARY | -- TEMPORARY probe. Dumps every SpiritScaling entry in Data:HeroData.json, | ||
-- | -- together with the label resolution paths available for each stat key. | ||
-- {{#invoke:Sandbox/Vergir|dump}} | |||
-- {{#invoke:Sandbox/Vergir| | |||
local p = {} | local p = {} | ||
local | local heroes_data = mw.loadJsonData("Data:HeroData.json") | ||
local attributes_data = mw.loadJsonData("Data:AttributeData.json") | |||
local lang_module = require('Module:Lang') | |||
local dictionary_module = require('Module:Dictionary') | |||
local hero_data_module = require('Module:HeroData') | |||
local function attr_label_key(stat) | |||
for _, category in pairs(attributes_data) do | |||
if category[stat] ~= nil then | |||
return category[stat]["label"], category[stat]["postfix"] | |||
end | |||
local function | |||
if | |||
end | end | ||
return nil, nil | |||
return nil | |||
end | end | ||
function p. | function p.dump(frame) | ||
local keys = {} | local keys = {} | ||
for hero_key, hero_data in pairs(heroes_data) do | |||
local scaling = hero_data["SpiritScaling"] | |||
table.insert(keys, | if scaling ~= nil and next(scaling) ~= nil then | ||
table.insert(keys, hero_key) | |||
end | end | ||
end | end | ||
table.sort(keys) | |||
local out = {} | local out = {} | ||
local | local stats_seen = {} | ||
for _, hero_key in ipairs(keys) do | for _, hero_key in ipairs(keys) do | ||
local | local hero_data = heroes_data[hero_key] | ||
local | local stat_keys = {} | ||
for stat in pairs(hero_data["SpiritScaling"]) do | |||
table.insert(stat_keys, stat) | |||
stats_seen[stat] = true | |||
table.insert( | |||
end | end | ||
table.sort(stat_keys) | |||
local parts = {} | |||
for _, stat in ipairs(stat_keys) do | |||
local base = hero_data_module.get_stat(hero_data, stat) | |||
table.insert(parts, stat .. '=' .. tostring(hero_data["SpiritScaling"][stat]) .. | |||
' (base ' .. tostring(base) .. ')') | |||
end | |||
table.insert(out, '* <code>' .. hero_key .. '</code> ' .. tostring(hero_data["Name"]) .. | |||
' [dev=' .. tostring(hero_data["InDevelopment"]) .. | |||
' disabled=' .. tostring(hero_data["IsDisabled"]) .. | |||
' labs=' .. tostring(hero_data["InHeroLabs"]) .. | |||
' selectable=' .. tostring(hero_data["IsSelectable"]) .. ']: ' .. | |||
table.concat(parts, ', ')) | |||
end | |||
local stat_list = {} | |||
for stat in pairs(stats_seen) do table.insert(stat_list, stat) end | |||
table.sort(stat_list) | |||
table.insert(out, '') | |||
table.insert(out, 'Label resolution per stat:') | |||
for _, stat in ipairs(stat_list) do | |||
local label_key, postfix_key = attr_label_key(stat) | |||
local lang_str = label_key and lang_module.get_string(label_key) or '' | |||
local postfix_str = postfix_key and lang_module.get_string(postfix_key) or '' | |||
local dict_str = dictionary_module.translate(stat) | |||
table.insert(out, '* <code>' .. stat .. '</code> attr_label=<code>' .. | |||
tostring(label_key) .. '</code> lang="' .. tostring(lang_str) .. | |||
'" postfix="' .. tostring(postfix_str) .. | |||
'" dict="' .. tostring(dict_str) .. '"') | |||
end | end | ||
return | return table.concat(out, '\n') | ||
end | end | ||
return p | return p | ||