Module:SpellTableUtil/ru
From Heroes of Might and Magic: Olden Era Official Wiki
Documentation for this module may be created at Module:SpellTableUtil/ru/doc
local p = {}
local moduleMap = {
Arcane = "Module:ArcaneSpells/ru",
Daylight = "Module:DaylightSpells",
Nightshade = "Module:NightshadeSpells",
Primal = "Module:PrimalSpells",
Neutral = "Module:NeutralSpells"
}
-- Helper to find spell and its school
local function findSpellByName(name)
for school, moduleName in pairs(moduleMap) do
local spellsModule = require(moduleName)
local spells = spellsModule.spells or spellsModule
local spell = spells[name]
if spell then
return spell, school
end
end
return nil, nil
end
function p.spellTable(frame)
local school = frame.args["school"] or frame:getParent().args["school"]
local tier = frame.args["tier"] or frame:getParent().args["tier"]
local moduleName = moduleMap[school]
if not moduleName then
return "Unknown school: " .. tostring(school)
end
local spellsModule = require(moduleName)
local spells = spellsModule.spells or spellsModule
local html = '{| class="wikitable"\n' ..
'|+ style="margin-bottom:6px;" | ' .. school .. ' — ' .. tier .. '\n' ..
'|-\n' ..
'! style="width:10%;" | Заклинание\n' ..
'! style="width:6%;" align="center" | Мана\n' ..
'! style="width:30%;" | Уровень 1\n' ..
'! style="width:18%;" | Уровень 2\n' ..
'! style="width:18%;" | Уровень 3\n' ..
'! style="width:18%;" | Уровень 4\n'
for _, spell in pairs(spells) do
if spell.tier == tier then
html = html ..
'|-\n| [[' .. spell.name_ru .. ']]\n' ..
'| align="center" | [[File:Mana icon.png|32px]] ' .. (spell.mana or '–') .. '\n' ..
'| ' .. (spell.l1_ru or '') .. '\n' ..
'| ' .. (spell.l2_ru or '') .. '\n' ..
'| ' .. (spell.l3_ru or '') .. '\n' ..
'| ' .. (spell.l4_ru or '') .. '\n'
end
end
html = html .. '|}'
return html
end
function p.spellBoxV(frame)
local args = frame.args
local name = args.name or frame:getParent().args.name
local spell, school = findSpellByName(name)
if not spell then
return "Unknown spell: " .. tostring(name)
end
local spellIcon = name .. ".png"
local manaIcon = "Mana icon.png"
local schoolName = spell.school_ru or school or "Unknown"
local tier = spell.tier_ru or "–"
local mana = spell.mana or "–"
local html = '{| class="wikitable spellboxv" style="margin:1em auto; max-width:600px; background:#1a1a1a; color:#eee; border:2px solid #444; border-radius:8px; box-shadow:0 0 6px rgba(0,0,0,0.4); overflow-x:hidden;"\n'
html = html .. '|-\n| colspan=2 style="background:#304060; color:white; font-weight:bold; font-size:110%; text-align:center; padding:6px;" | ' .. spell.name_ru .. '\n'
html = html .. '|-\n| colspan=2 align="center" style="padding:8px;" | [[File:' .. spellIcon .. '|64px]]\n'
html = html .. '|-\n| style="width:20%; font-weight:bold; text-align:left; background:#222;" | Школа || style="text-align:center;" | ' .. schoolName .. '\n'
html = html .. '|-\n| style="font-weight:bold; text-align:left; background:#222;" | Ранг || style="text-align:center;" | ' .. tier .. '\n'
html = html .. '|-\n| style="font-weight:bold; text-align:left; background:#222;" | Мана || style="text-align:center;" | [[File:' .. manaIcon .. '|24px]] ' .. mana .. '\n'
-- Levels 1–4
for i = 1, 4 do
local key = "l" .. i .. "_ru"
if spell[key] then
html = html .. '|-\n| style="font-weight:bold; text-align:left; background:#222;" | Level ' .. i ..
' || style="text-align:center;" | ' .. spell[key] .. '\n'
end
end
-- Masterful
if spell.masterful_ru then
html = html .. '|-\n| style="font-weight:bold; text-align:left; background:#222;" | Искусный || style="text-align:center;" | ' .. spell.masterful_ru .. '\n'
end
html = html .. '|}'
return html
end
return p


