Для документации этого модуля может быть создана страница Модуль:Project Set Weapon/doc
local p = {}
local itemIcon = require('Модуль:Item_icon')
local data = mw.loadData('Модуль:Item/WeaponSetPowersData')
local cargo = mw.ext.cargo
-- Check to see if the data module is loaded
function checkDataLoaded()
if (data == nil) then
error("Data is not loaded!")
return false
end
return true
end
function p.main(frame)
tables = 'Items'
fields = '_pageName,item_set,requires_class'
local args = {
where='item_set = "'.. frame.args[1] .. '" AND requires_class HOLDS "' .. frame.args['класс'] .. '"',
orderBy = '_pageName',
}
local result = cargo.query( tables, fields, args )
local r = result[1]
if (frame.args[1] == nil) then
return ""
end
if (checkDataLoaded() == false) then
return
end
local setBonus = data[frame.args[1]]
if (setBonus == nil) then
error("Бонус комплекта с названием "..frame.args[1].." не существует")
return
end
local setItems = {}
for k,row in ipairs(result) do
setItems[k] = '<div><span class="gray" style="margin-left: 1.25em;">'..row._pageName..'</span></div>'
end
set = '<div>Часть комплекта «' .. frame.args[1] .. '» (0/2)</div>' .. table.concat(setItems) ..'<span style="vertical-align: top; width: 111px;" class="gray">2 из комплекта:</span><span class="gray"> ' .. setBonus .. '</span>'
return set
end
function p.set(frame)
tables = 'Items'
fields = '_pageName,name,icon,item_set, stat_universal, stat_accuracy, stat_accuracy, stat_critical_severity, stat_awareness, stat_combat_advantage, stat_crit_chance, stat_crit_resist, stat_forte,stat_defense, stat_deflection'
local args = {
where='item_set="'..frame.args[1]..'"',
groupBy = '_pageName',
orderBy = '_pageName',
}
if frame.args ["класс"] ~= nil then
args.where = args.where .. ' AND requires_class HOLDS LIKE "%' .. frame.args ["класс"] .. '%"'
end
local result = cargo.query( tables, fields, args )
local r = result[1]
local tbl = mw.html.create('table')
tbl:addClass('wikitable')
tbl:tag("th"):wikitext("Предмет"):done()
tbl:tag("th"):attr('style','width: 20%'):wikitext("Параметры"):done()
tbl:tag("th"):wikitext("Бонус за комплект"):done()
tbl:done()
--Construct the rows in the table
setBonus = data[frame.args[1]]
if (setBonus == nil) then
error("Бонус комплекта с названием "..frame.args[1].." не существует")
return
end
tr = tbl:tag("tr")
tr:tag('td'):wikitext():done()
tr:tag('td'):wikitext():done()
tr:tag('td'):attr("rowspan", "6"):wikitext('2 из комплекта: ' .. setBonus):done()
for _, row in ipairs(result) do
tr = tbl:tag("tr")
tr:tag('td'):wikitext(itemIcon.Main({args={row._pageName,""}})):done()
local stat_universal = ''
local stat_accuracy = ''
local stat_critical_severity = ''
local stat_awareness = ''
local stat_combat_advantage = ''
local stat_crit_chance = ''
local stat_crit_resist = ''
local stat_forte = ''
local stat_defense = ''
local stat_deflection = ''
if row.stat_universal ~= '' then
stat_universal = '+' .. row.stat_universal .. '<span class="slate"> Общий рейтинг</span><br>'
end
if row.stat_critical_severity ~= '' then
stat_critical_severity = '+' .. row.stat_critical_severity ..'<span class="slate"> Критический урон</span><br>'
end
if row.stat_awareness ~= '' then
stat_awareness = '+' .. row.stat_awareness ..'<span class="slate"> Осведомленность</span><br>'
end
if row.stat_crit_chance ~= '' then
stat_crit_chance = '+' .. row.stat_crit_chance ..'<span class="slate"> Вер. крит. удара</span><br>'
end
if row.stat_accuracy ~= '' then
stat_accuracy = '+' .. row.stat_accuracy ..'<span class="slate"> Точность</span><br>'
end
if row.stat_deflection ~= '' then
stat_deflection = '+' .. row.stat_deflection ..'<span class="slate"> Уклонение</span><br>'
end
if row.stat_combat_advantage ~= '' then
stat_combat_advantage = '+' .. row.stat_combat_advantage ..'<span class="slate"> Боевое преимущество</span><br>'
end
if row.stat_crit_resist ~= '' then
stat_crit_resist = '+' .. row.stat_crit_resist ..'<span class="slate"> Критическое уклонение</span><br>'
end
if row.stat_forte ~= '' then
stat_forte = '+' .. row.stat_forte ..'<span class="slate"> Сильная сторона</span><br>'
end
if row.stat_defense ~= '' then
stat_defense = '+' .. row.stat_defense ..'<span class="slate"> Оборона</span><br>'
end
tr:tag("td"):wikitext(stat_universal .. ' ' .. stat_critical_severity .. ' ' .. stat_awareness .. ' ' .. stat_crit_chance .. ' ' .. stat_accuracy .. ' ' .. stat_deflection .. ' ' .. stat_combat_advantage .. ' ' .. stat_crit_resist .. ' ' .. stat_forte .. ' ' .. stat_defense):done()
end
return tbl
end
return p