Для документации этого модуля может быть создана страница Модуль:Mount/doc
local itemIcon = require('Модуль:Item_icon')
local p = {}
function p.Main( frame )
local powersData = mw.loadData( 'Module:Mount/Powers' )
text = powersData[frame.args[1]]
return text
end
function p.mountBonuses(frame)
local cargo = mw.ext.cargo
local tablesI = 'Items'
local fieldsI = 'Items.name, Items.quality, Items.categories, Items.slot1, Items.slot2, Items.slot3, Items.insignia_bonuses, Items.combat_power, Items.equip_power,'
local argsI = {
where = 'Items.categories HOLDS "Скакун" AND Items.name = "' .. frame.args[1] .. '"',
orderBy = 'Items._pageName',
}
local result = cargo.query( tablesI, fieldsI, argsI )
local r = result[1]
local tables = 'Powers'
local fields = 'Powers.name, Powers.type, Powers.item_level, Powers.power_use, item_ui_equip_power, stat_hit_points_max, stat_accuracy, stat_critical_severity, stat_awareness, stat_combat_advantage, stat_crit_chance, stat_crit_resist, stat_defense, stat_deflection, stat_movement, stat_power, stat_universal'
local args_combat_power = {
where = 'Powers.type = "Боевое умение" AND Powers.name = "'.. r['Items.combat_power'] .. '"'
}
local args_equip_power = {
where = 'Powers.type = "Умение экипировки" AND Powers.name = "'.. r['Items.equip_power'] .. '"'
}
local result_combat_power = cargo.query( tables, fields, args_combat_power )
local r_combat_power = result_combat_power[1]
local result_equip_power = cargo.query( tables, fields, args_equip_power )
local r_equip_power = result_equip_power[1]
local mount_stats_value = {
{ name = 'Максимум хитов', value = r_equip_power['stat_hit_points_max'] },
{ name = 'Точность', value = r_equip_power['stat_accuracy'] },
{ name = 'Крит. урон', value = r_equip_power['stat_critical_severity'] },
{ name = 'Осведомленность', value = r_equip_power['stat_awareness'] },
{ name = 'Боевое преимущество', value = r_equip_power['stat_combat_advantage'] },
{ name = 'Вер. крит. удара', value = r_equip_power['stat_crit_chance'] },
{ name = 'Крит. уклонение', value = r_equip_power['stat_crit_resist'] },
{ name = 'Оборона', value = r_equip_power['stat_defense'] },
{ name = 'Уклонение', value = r_equip_power['stat_deflection'] },
{ name = 'Скорость движения', value = r_equip_power['stat_movement'] },
{ name = 'Могущество', value = r_equip_power['stat_power'] },
{ name = 'Общий рейтинг', value = r_equip_power['stat_universal'] },
}
local item_ui_equip_power_value = {
{ name = '', value = r_equip_power['item_ui_equip_power'] },
}
local formatted_wikitext = {}
for _, stat in ipairs(item_ui_equip_power_value) do
if stat.value ~= '' then
table.insert(formatted_wikitext, '<span class="green">'.. stat.name .. '</span>' .. stat.value)
end
end
for _, stat in ipairs(mount_stats_value) do
if stat.value ~= '' then
table.insert(formatted_wikitext, '+' .. stat.value .. ' <span class="slate">'.. stat.name .. '</span>')
end
end
local text = '<li><b>Умение экипировки:</b> ' .. table.concat(formatted_wikitext, '<br>') ..'</li>\n<li><b>Боевое умение:</b> '.. r_combat_power["Powers.power_use"] ..'</li> '
return '<ul>'.. text ..'</ul>' .. frame:expandTemplate{title = 'Список бонусов знака',args = args}
end
function p.mountPowerTable(frame)
local cargo = mw.ext.cargo
local tables = 'Powers'
local fields = 'Powers._pageName, Powers.name, Powers.icon, Powers.item_level, Powers.type, Powers.power_use, item_ui_equip_power, stat_hit_points_max, stat_accuracy, stat_critical_severity, stat_awareness, stat_combat_advantage, stat_crit_chance, stat_crit_resist, stat_defense, stat_deflection, stat_movement, stat_power'
local args = {
where = 'Powers.type = "' .. frame.args[1] .. '"',
orderBy = 'Powers.item_level, Powers._pageName',
}
local result = cargo.query( tables, fields, args )
local tbl = mw.html.create('table')
tbl:addClass('wikitable sortable jquery-tablesorter')
tbl:tag("th"):wikitext("Умение"):done()
tbl:tag("th"):wikitext("Уровень предмета"):done()
tbl:tag("th"):wikitext("Эффект"):done()
tbl:tag("th"):wikitext("Доступно на<br>следующих скакунах"):done()
tbl:done()
for _, power in ipairs(result) do
local item_stats = {}
if power.stat_hit_points_max ~= '' then
table.insert(item_stats, "Максимум хитов")
end
if power.stat_accuracy ~= '' then
table.insert(item_stats, "Точность")
end
if power.stat_critical_severity ~= '' then
table.insert(item_stats, "Критический урон")
end
if power.stat_awareness ~= '' then
table.insert(item_stats, "Осведомленность")
end
if power.stat_combat_advantage ~= '' then
table.insert(item_stats, "Боевое преимущество")
end
if power.stat_crit_chance ~= '' then
table.insert(item_stats, "Вероятность критического удара")
end
if power.stat_crit_resist ~= '' then
table.insert(item_stats, "Критическое уклонение")
end
if power.stat_defense ~= '' then
table.insert(item_stats, "Оборона")
end
if power.stat_deflection ~= '' then
table.insert(item_stats, "Уклонение")
end
if power.stat_movement ~= '' then
table.insert(item_stats, "Скорость движения")
end
if power.stat_power ~= '' then
table.insert(item_stats, "Могущество")
end
tr = tbl:tag("tr"):attr("data-stats", table.concat(item_stats, ", "))
tr:tag("td"):wikitext('[[File:' .. power["Powers.icon"] .. '|32px|link=' .. power["Powers._pageName"] ..']] [[' .. power["Powers._pageName"] .. ']]'):done()
tr:tag("td"):wikitext(power["Powers.item_level"]):done()
if mw.ustring.lower(frame.args[1]) == 'боевое умение' then
tr:tag("td"):wikitext(power["Powers.power_use"]):done()
elseif mw.ustring.lower(frame.args[1]) == 'умение экипировки' then
local mount_stats_value = {
{ name = 'Максимум хитов', value = power.stat_hit_points_max },
{ name = 'Точность', value = power.stat_accuracy },
{ name = 'Крит. урон', value = power.stat_critical_severity },
{ name = 'Осведомленность', value = power.stat_awareness },
{ name = 'Боевое преимущество', value = power.stat_combat_advantage },
{ name = 'Вер. крит. удара', value = power.stat_crit_chance },
{ name = 'Крит. уклонение', value = power.stat_crit_resist },
{ name = 'Оборона', value = power.stat_defense },
{ name = 'Уклонение', value = power.stat_deflection },
{ name = 'Скорость движения', value = power.stat_movement},
{ name = 'Могущество', value = power.stat_power },
}
local item_ui_equip_power_value = {
{ name = 'На себе', value = power.item_ui_equip_power },
}
local formatted_wikitext = {}
for _, stat in ipairs(mount_stats_value) do
if stat.value ~= '' then
table.insert(formatted_wikitext, '+' .. stat.value .. ' <span class="slate">'.. stat.name .. '</span>')
end
end
for _, stat in ipairs(item_ui_equip_power_value) do
if stat.value ~= '' then
table.insert(formatted_wikitext, '<span class="green">'.. stat.name .. ': </span>' .. stat.value)
end
end
tr:tag("td"):wikitext(table.concat(formatted_wikitext, '<br>')):done()
end
local tables_items = 'Items'
local fields_items = 'Items._pageName, Items.quality, Items.combat_power, Items.equip_power'
local args_items = {
where = 'Items.equip_power = "' .. power["Powers.name"] .. '" OR Items.combat_power = "' .. power["Powers.name"] .. '"',
orderBy = 'Items.name, Items.quality',
}
local result_items = cargo.query( tables_items, fields_items, args_items )
local countResults = 0
for _ in pairs(result_items) do countResults = countResults + 1 end
local mounts = {}
for _, item in ipairs(result_items) do
table.insert(mounts, itemIcon.Main({args={item["Items._pageName"],""}}))
end
if countResults > 4 then
tr:tag("td"):tag("div"):attr('style', 'height: 150px; overflow-y: scroll;'):wikitext(table.concat(mounts, "<br>")):done()
else
tr:tag("td"):wikitext(table.concat(mounts, "<br>")):done()
end
end
return tbl
end
function p.InsigniaBonus( frame )
local cargo = mw.ext.cargo
tables = 'Insignia_bonuses'
fields = '_pageName, name, slot1, slot2, slot3, description'
local args = {
--where='',
orderBy = '_pageName',
}
local result = cargo.query( tables, fields, args )
local r = result[1]
local text = {}
for k, v in ipairs(result) do
if frame.args[1] == v.slot1 and frame.args[2] == v.slot2 and frame.args[3] == v.slot3 then
text[k] = v._pageName .. ', '
elseif frame.args[1] == v.slot2 and frame.args[2] == v.slot1 and frame.args[3] == v.slot3 then
text[k] = v._pageName .. ', '
elseif frame.args[1] == v.slot1 and frame.args[2] == v.slot3 and frame.args[3] == v.slot2 then
text[k] = v._pageName .. ', '
elseif frame.args[1] == v.slot3 and frame.args[2] == v.slot1 and frame.args[3] == v.slot2 then
text[k] = v._pageName .. ', '
elseif frame.args[1] == v.slot3 and frame.args[2] == v.slot2 and frame.args[3] == v.slot1 then
text[k] = v._pageName .. ', '
elseif frame.args[1] == v.slot1 and frame.args[2] == v.slot2 and frame.args[3] == 'Универсальная ячейка' then
text[k] = v._pageName .. ', '
elseif frame.args[1] == v.slot1 and frame.args[2] == v.slot3 and frame.args[3] == 'Универсальная ячейка' then
text[k] = v._pageName .. ', '
elseif frame.args[1] == v.slot2 and frame.args[2] == v.slot1 and frame.args[3] == 'Универсальная ячейка' then
text[k] = v._pageName .. ', '
elseif frame.args[1] == v.slot2 and frame.args[2] == v.slot3 and frame.args[3] == 'Универсальная ячейка' then
text[k] = v._pageName .. ', '
elseif frame.args[1] == v.slot3 and frame.args[2] == v.slot2 and frame.args[3] == 'Универсальная ячейка' then
text[k] = v._pageName .. ', '
elseif frame.args[1] == v.slot3 and frame.args[2] == v.slot1 and frame.args[3] == 'Универсальная ячейка' then
text[k] = v._pageName .. ', '
elseif frame.args[1] == v.slot1 and frame.args[2] == 'Универсальная ячейка' and frame.args[3] == 'Универсальная ячейка' then
text[k] = v._pageName .. ', '
elseif frame.args[1] == v.slot2 and frame.args[2] == 'Универсальная ячейка' and frame.args[3] == 'Универсальная ячейка' then
text[k] = v._pageName .. ', '
elseif frame.args[1] == v.slot3 and frame.args[2] == 'Универсальная ячейка' and frame.args[3] == 'Универсальная ячейка' then
text[k] = v._pageName .. ', '
elseif frame.args[1] == 'Универсальная ячейка' and frame.args[2] == 'Универсальная ячейка' and frame.args[3] == 'Универсальная ячейка' then
text[k] = v._pageName .. ', '
else
text[k] = ''
end
end
return table.concat(text)
end
return p