Module:Sandbox/Aurelain/HeroClassSkills
From Heroes of Might and Magic: Olden Era Official Wiki
Documentation for this module may be created at Module:Sandbox/Aurelain/HeroClassSkills/doc
-- This module is intended as a supporting muscle for the HeroClassSkills template.
local p = {}
local UtilQuery = require('Module:UtilQuery')
local FACTION = {
human = 'humans', -- changed!
undead = 'necros', -- changed!
nature = 'nature',
demon = 'demons', -- changed!
unfrozen = 'unfrozen',
dungeon = 'dungeon',
}
-- Displays a variable
------------------------------------------------------------------------------------------------------------------------
local function dump(target)
return '<pre>' .. mw.dumpObject(target) .. '</pre>'
end
------------------------------------------------------------------------------------------------------------------------
local function collectChances(id)
local type, faction = id:match("(.*)_(.*)")
local adaptedId = FACTION[faction] .. '_' .. type .. '_skills_table'
local result = UtilQuery.run([[
tables =
SkillRollWeight = S
|where =
S.table_id = '%s'
|fields =
S.band_kind = band_kind,
S.skill_id = skill_id,
S.weight = weight
]], adaptedId)
return result
end
------------------------------------------------------------------------------------------------------------------------
local function consolidateChances(chancesBulk)
local chances = {}
for _, row in ipairs(chancesBulk) do
local id = row.skill_id or ''
local entry = chances[id]
if not entry then
chances[id] = {
id,
}
end
local band_kind = row.band_kind or ''
local weight = row.weight or ''
chances[id][band_kind] = weight
end
return chances
end
------------------------------------------------------------------------------------------------------------------------
local function computeTotal(chances)
return 1000
end
------------------------------------------------------------------------------------------------------------------------
local function formatChances(chances)
return ''
end
------------------------------------------------------------------------------------------------------------------------
function p.populate(frame)
local lang = frame.args.lang
local id = frame.args.id;
local chancesBulk = collectChances(id);
local chances = consolidateChances(chancesBulk);
do return dump(chances) end
local total = computeTotal(chances);
local formattedChances = formatChances(chances);
local cleanTitle = frame:getTitle():gsub('Module:', '')
return frame:preprocess(mw.ustring.format([[
{{%s/base
| lang = %s
| id = %s
| total = %s
| total = %s
}}
]], cleanTitle, lang, id, total, formattedChances))
end
------------------------------------------------------------------------------------------------------------------------
function p.percent(frame)
local a = frame.args[1]
local b = frame.args[2]
return string.format("%.2f", 100 * a / b)
end
return p


