Module:Sandbox/Aurelain/SkillSynergies: Difference between revisions
From Heroes of Might and Magic: Olden Era Official Wiki
No edit summary |
No edit summary |
||
| Line 2: | Line 2: | ||
local p = {} | local p = {} | ||
local SkillsOverview = require("Module:Sandbox/Aurelain/SkillsOverview") | local SkillsOverview = require("Module:Sandbox/Aurelain/SkillsOverview") | ||
------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------ | ||
-- Debugs a variable | -- Debugs a variable | ||
| Line 11: | Line 9: | ||
return '<pre>' .. mw.dumpObject(target) .. '</pre>' | return '<pre>' .. mw.dumpObject(target) .. '</pre>' | ||
end | end | ||
------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------ | ||
| Line 21: | Line 18: | ||
------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------ | ||
-- | -- | ||
------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------ | ||
local function findSynergies(allSkills, skill, nameEn, lang) | local function findSynergies(allSkills, skill, nameEn, lang) | ||
| Line 61: | Line 46: | ||
------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------ | ||
-- | -- | ||
------------------------------------------------------------------------------------------------------------------------ | |||
local function emulateSkills(synergies) | |||
local skills = {} | |||
for _, group in ipairs(synergies) do | |||
end | |||
return skills | |||
end | |||
------------------------------------------------------------------------------------------------------------------------ | |||
-- | |||
------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------ | ||
local function findEnglishName(allSkills, skill) | local function findEnglishName(allSkills, skill) | ||
| Line 90: | Line 86: | ||
if not nameEn then return 'Cannot find name for skill "' .. skill .. '"' end | if not nameEn then return 'Cannot find name for skill "' .. skill .. '"' end | ||
local synergies = findSynergies(allSkills, skill, nameEn, lang) | local synergies = findSynergies(allSkills, skill, nameEn, lang) | ||
if 1 then return dump( | local emulatedSkills = emulateSkills(synergies) | ||
if 1 then return dump(emulatedSkills) end | |||
--local markup = p.renderSkills(skills, words, lang) | |||
return 'hello' | return 'hello' | ||
Revision as of 07:59, 9 June 2026
Documentation for this module may be created at Module:Sandbox/Aurelain/SkillSynergies/doc
-- Usage: {{#invoke:SkillSynergies|display|lang=en|skill=skill_assault}}
local p = {}
local SkillsOverview = require("Module:Sandbox/Aurelain/SkillsOverview")
------------------------------------------------------------------------------------------------------------------------
-- Debugs a variable
------------------------------------------------------------------------------------------------------------------------
local function dump(target)
return '<pre>' .. mw.dumpObject(target) .. '</pre>'
end
------------------------------------------------------------------------------------------------------------------------
-- Ejects punctuation from inside quotes. Example: `foo “Bar.”` into `foo “Bar”.`
------------------------------------------------------------------------------------------------------------------------
local function repairEnglishPunctuation(text)
return text:gsub("([%,%.%!%?])”", "”%1")
end
------------------------------------------------------------------------------------------------------------------------
--
------------------------------------------------------------------------------------------------------------------------
local function findSynergies(allSkills, skill, nameEn, lang)
local synergies = {}
for _, group in ipairs(allSkills) do
if group.id ~= skill then
for _, rank in ipairs(group.ranks) do
for _, subSkill in pairs(rank.subSkills) do
local descriptionEn = repairEnglishPunctuation(subSkill.descriptionEn)
if descriptionEn:match('“' .. nameEn .. '”') then
-- We found a subskill that mentions our target skill by name
table.insert(synergies, {
levelName = rank.name,
levelNameEn = rank.nameEn,
levelIcon = rank.icon,
subName = subSkill.name,
subIcon = subSkill.icon,
description = SkillsOverview.linkifyDescription(subSkill.description, descriptionEn, lang)
})
end
end
end
end
end
return synergies
end
------------------------------------------------------------------------------------------------------------------------
--
------------------------------------------------------------------------------------------------------------------------
local function emulateSkills(synergies)
local skills = {}
for _, group in ipairs(synergies) do
end
return skills
end
------------------------------------------------------------------------------------------------------------------------
--
------------------------------------------------------------------------------------------------------------------------
local function findEnglishName(allSkills, skill)
for _, group in ipairs(allSkills) do
if group.id == skill then
return group.nameEn
end
end
end
------------------------------------------------------------------------------------------------------------------------
-- Main public function
------------------------------------------------------------------------------------------------------------------------
function p.display(frame)
--local d = repairEnglishPunctuation('foo “Bar.”')
--if 1 then return dump(d) end
-- Args
local args = frame.args
local lang = args.lang or 'en'
local skill = args.skill
if not skill or skill == '' then return 'You must provide a skill id' end
lang = 'fr'
--skill = 'skill_formation'
local allSkills = SkillsOverview.getSkillsFromCargo(lang)
local nameEn = findEnglishName(allSkills, skill)
if not nameEn then return 'Cannot find name for skill "' .. skill .. '"' end
local synergies = findSynergies(allSkills, skill, nameEn, lang)
local emulatedSkills = emulateSkills(synergies)
if 1 then return dump(emulatedSkills) end
--local markup = p.renderSkills(skills, words, lang)
return 'hello'
end
return p


