Для документации этого модуля может быть создана страница Модуль:Item/Test/doc
local get_args = require('Модуль:Arguments').getArgs
local powers_data = mw.loadData('Module:Mount/Powers')-- База данных специальных умений экипировки "на себе"
local armor_set_powers_data = mw.loadData('Модуль:Item/ArmorSetPowersData') -- База данных умений комплектов экипировки
local weapon_set_powers_data = mw.loadData('Модуль:Item/WeaponSetPowersData') -- База данных умений комплектов оружия
local companion_set_powers_data = mw.loadData('Module:Companion/Powers') -- База данных умений компаньонов
local p = {}
local h = {}
local fields_cargo = {} -- В этот массив записивааются все данные взятые со всех переменных fields_cargo[" название рядка в таблице Cargo (например, "name") "] = значение (например, название предмета "name")
local cargo = mw.ext.cargo
local gsub = mw.ustring.gsub
local find = mw.ustring.find
local sub = mw.ustring.sub
local len = mw.ustring.len
-- Проверяет, загружен ли модуль данных
function check_data_loaded()
if (data == nil) then
error("Data is not loaded!") -- Выводит ошибку, если данные не загружены.
return false
end
return true -- Если данные загружены, продолжить выполнение модуля.
end
-- Функция для поиска совпадений в массиве (используется в основном для args.item_categories (категории предмета))
function table.find(t, value)
if type(t) ~= "table" or t[1] == nil then
error("is not a array") -- Выводит ошибку, если входящие данные не являются массивом.
return
end
for k, v in ipairs(t) do
if v == value then
return true, t[k]
end
end
return false, nil
end
-- Начало функции Item
function p.item(frame)
local args = get_args(frame, {parentFirst = true})
local container = mw.html.create('div')
:attr('class', 'tooltip-content tooltip tooltipright')
container
:tag('div')
:attr('class', 'top')
:tag('div')
:attr('class', 'tlcorner')
:done()
:tag('div')
:attr('class', 'trcorner')
:done()
:tag('div')
:attr('class', 'tedge')
:done()
local content = h.divContent()
local group = h.Group()
-- Качество предмета
local item_quality = {
["обычный"] = 'common',
["необычный"] = 'uncommon',
["редкий"] = 'rare',
["эпический"] = 'epic',
["легендарный"] = 'legendary',
["мифический"] = 'mythic',
}
-- Название предмета
fields_cargo["name"] = mw.title.getCurrentTitle().fullText
if args["качество"] then -- Если предмет имеет качество
fields_cargo["quality"] = args["качество"]
group = h.Group()
:tag('div')
:attr('class', 'title')
:tag('span')
:attr('class', item_quality[mw.ustring.lower(args["качество"])])
:wikitext(mw.title.getCurrentTitle().fullText)
:tag('br')
:done()
else -- Если предмет не имеет качество
group = h.Group()
:tag('div')
:attr('class', 'title')
:tag('span')
:attr('class', 'common')
:wikitext(mw.title.getCurrentTitle().fullText)
:tag('br')
:done()
end
-- Уровень предмета
if args["уровень предмета"] then
fields_cargo["level"] = args["уровень предмета"]
group
:tag('div')
:attr('class', 'white itemlevel')
:wikitext('Уровень предмета: ' .. args["уровень предмета"])
:tag('br')
:done()
end
-- Привязка предмета
if args["привязка"] then
fields_cargo["bind"] = args["привязка"]
if mw.ustring.lower(args["привязка"]) == "привязка при использовании (к персонажу)" then
group
:tag('div')
:attr('class', 'right binding')
:wikitext('[[Файл:Icons_Inventory_Binds.png|baseline|ссылка=]] <span class=common>Привязка при<br>использовании (к персонажу)</span>')
elseif mw.ustring.lower(args["привязка"]) == "привязка при использовании (учетная запись)" then
group
:tag('div')
:attr('class', 'right binding')
:wikitext('[[Файл:Icons_Inventory_Binds.png|baseline|ссылка=]] <span class=common>Привязка при<br>использовании (учетная запись)</span>')
elseif mw.ustring.lower(args["привязка"]) == "привязка при получении (к персонажу)" then
group
:tag('div')
:attr('class', 'right binding')
:wikitext('[[Файл:Icons_Inventory_Binds.png|baseline|ссылка=]] <span class=common>Привязка при<br>получении (к персонажу)</span>')
elseif mw.ustring.lower(args["привязка"]) == "привязка при получении (учетная запись)" then
group
:tag('div')
:attr('class', 'right binding')
:wikitext('[[Файл:Icons_Inventory_Binds.png|baseline|ссылка=]] <span class=common>Привязка при<br>получении (учетная запись)</span>')
elseif mw.ustring.lower(args["привязка"]) == "привязка при получении (к учетной записи)" then
group
:tag('div')
:attr('class', 'right binding')
:wikitext('[[Файл:Icons_Inventory_Binds.png|baseline|ссылка=]] <span class=common>Привязка при<br>получении (к учетной записи)</span>')
end
end
-- Вторая привязка предмета
if args["привязка2"] then
fields_cargo["bind2"] = args["привязка2"]
if mw.ustring.lower(args["привязка2"]) == "привязка при использовании (к персонажу)" then
group
:tag('div')
:attr('class', 'right binding')
:wikitext('[[Файл:Icons_Inventory_Binds.png|baseline|ссылка=]] <span class=common>Привязка при<br>использовании (к персонажу)</span>')
elseif mw.ustring.lower(args["привязка2"]) == "привязка при использовании (учетная запись)" then
group
:tag('div')
:attr('class', 'right binding')
:wikitext('[[Файл:Icons_Inventory_Binds.png|baseline|ссылка=]] <span class=common>Привязка при<br>использовании (учетная запись)</span>')
elseif mw.ustring.lower(args["привязка2"]) == "привязка при получении (к персонажу)" then
group
:tag('div')
:attr('class', 'right binding')
:wikitext('[[Файл:Icons_Inventory_Binds.png|baseline|ссылка=]] <span class=common>Привязка при<br>получении (к персонажу)</span>')
elseif mw.ustring.lower(args["привязка2"]) == "привязка при получении (учетная запись)" then
group
:tag('div')
:attr('class', 'right binding')
:wikitext('[[Файл:Icons_Inventory_Binds.png|baseline|ссылка=]] <span class=common>Привязка при<br>получении (учетная запись)</span>')
end
end
content:node(group):tag('br'):done()
-- Вспомогательный текст
if args.item_categories then
if mw.ustring.find( args.item_categories, "[тТ]олько для спутников" ) then
content
:tag('div')
:attr('class', 'right gold')
:wikitext('Только для спутников')
:tag('br')
:done()
elseif mw.ustring.find( args.item_categories, "[кК]упон") then
content
:tag('div')
:attr('class', 'right green')
:wikitext('Дважды щелкните,<br>чтобы использовать купон')
:tag('br')
:done()
elseif mw.ustring.find( args.item_categories, "[бБ]есплатное изменение внешнего вида" ) then
content
:tag('div')
:wikitext('Это предмет <b>первого уровня</b>, который обычно используют для превращения.')
:tag('br')
:done()
end
end
-- Вспомогательный текст артефактов
if args["символ"] then
group = h.Group()
local tbl = mw.html.create('table')
tr = tbl:tag("tr")
tr:tag("td"):attr("colspan", "2"):wikitext('<hr>'):done()
tr = tbl:tag("tr")
tr:tag("td"):attr('style', 'vertical-align: middle; width: 90px;'):wikitext('[[Файл:' .. args["символ"] .. '|80px|ссылка=]]'):done()
if not mw.ustring.find(args.item_categories, "[аА]ртефакт") then
if args["описание"] then
tr:tag("td"):wikitext('<span class="gold">Артефактная экипировка (максимум)</span>' .. "<br>" .. '<span class="slate"><i>' .. args["описание"] .. '</i></span>'):done()
else
tr:tag("td"):wikitext('<span class="gold">Артефактная экипировка (максимум)</span>' .. "<br>" .. '<span class="slate"><i>Описание отсутствует</i></span>'):done()
end
else
tr:tag("td"):wikitext('<span class="gold">Артефакт (максимум)</span>' .. "<br>" .. '<span class="slate"><i>' .. args["описание"] .. '</i></span>'):done()
end
tr = tbl:tag("tr")
tr:tag("td"):attr("colspan", "2"):wikitext('<hr>'):done()
group
:tag('span')
:wikitext(tostring(tbl))
:done()
content:node(group):done()
end
if args.item_categories == "Артефакт" or args.item_categories == "артефакт" then
-- Время восстановления артефактов в секундах.
local rank = {
["необычный"] = '180',
["редкий"] = '160',
["эпический"] = '140',
["легендарный"] = '120',
["мифический"] = '60',
}
content
:wikitext('<span class="beige" style="display: block;">Время восстановления: ' .. rank[mw.ustring.lower(args["качество"])] .. 'с</span>')
:tag('br')
:done()
end
-- Параметры предмета т.к. могущество, уклонение, оборона и т. д.
-- Функция для разделения чисел запятой
function comma_value(n) -- credit http://richard.warburton.it
local left,num,right = string.match(n,'^([^%d]*%d)(%d*)(.-)$')
return left..(num:reverse():gsub('(%d%d%d)','%1,'):reverse())..right
end
if args["умение усиления"] or args["параметры"] or args["бонусное умение игрока"] or args["боевое умение"] or args["умение экипировки"] or args["общий рейтинг"] or args["максимум хитов"] or args["могущество"] or args["оборона"] or args["осведомленность"] or args["вероятность критического удара"] or args["критическое уклонение"] or args["критический урон"] or args["восстановления здоровья"] or args["боевое преимущество"] or args["уклонение"] or args["точность"] or args["на себе"] or args["на себе2"] or args["использовать"] then
group = h.Group('item_stats')
if args["умение усиления"] then
fields_cargo["enhancement_power"] = args["умение усиления"]
if companion_set_powers_data[args["умение усиления"]] == nil then
group
:wikitext('<span class="green">Умение усиления: </span> '.. args["умение усиления"])
:tag('br')
:done()
elseif companion_set_powers_data[args["умение усиления"]].quality == nil then
group
:wikitext('<span class="green">Умение усиления: </span> '.. companion_set_powers_data[args["умение усиления"]])
:tag('br')
:done()
else
group
:wikitext('<span class="green">Умение усиления: </span> '.. companion_set_powers_data[args["умение усиления"]].quality[item_quality[mw.ustring.lower(args["качество"])]])
:tag('br')
:done()
end
end
if args["бонусное умение игрока"] then
fields_cargo["player_bonus_power"] = args["бонусное умение игрока"]
if companion_set_powers_data[args["бонусное умение игрока"]] == nil then
group
:wikitext('<span class="green">Бонусное умение игрока: </span> '.. args["бонусное умение игрока"])
:tag('br')
:done()
elseif companion_set_powers_data[args["бонусное умение игрока"]].quality == nil then
group
:wikitext('<span class="green">Бонусное умение игрока: </span> '.. companion_set_powers_data[args["бонусное умение игрока"]])
:tag('br')
:done()
else
group
:wikitext('<span class="green">Бонусное умение игрока: </span> '.. companion_set_powers_data[args["бонусное умение игрока"]].quality[item_quality[mw.ustring.lower(args["качество"])]])
:tag('br')
:done()
end
end
-- Умения скакуна
if args["боевое умение"] then
fields_cargo["combat_power"] = args["боевое умение"]
if mw.ustring.find( args.item_categories, "[сС]какун" ) then
if powers_data[args["боевое умение"]] == nil then
group
:wikitext('<span class="green">Боевое умение: </span> '.. args["боевое умение"])
:tag('br')
:done()
else
group
:wikitext('<span class="green">Боевое умение: </span> '.. powers_data[args["боевое умение"]])
:tag('br')
:done()
end
end
end
if args["умение экипировки"] then
fields_cargo["equip_power"] = args["умение экипировки"]
if mw.ustring.find( args.item_categories, "[сС]какун" ) then
if powers_data[args["умение экипировки"]] == nil then
group
:wikitext('<span class="green">Умение экипировки: </span> '.. args["умение экипировки"])
:tag('br')
:done()
else
group
:wikitext('<span class="green">Умение экипировки: </span> '.. powers_data[args["умение экипировки"]])
:tag('br')
:done()
end
end
end
local rankEnchantment = {
["1"] = "9",
["2"] = "18",
["3"] = "27",
["4"] = "34",
["5"] = "42",
["6"] = "54",
["7"] = "63",
["8"] = "72",
["9"] = "81",
["10"] = "90",
["11"] = "108",
["12"] = "126",
["13"] = "144",
["14"] = "162",
["15"] = "180",
["140"] = "140"
}
local rankRunestones = {
["1"] = "8",
["2"] = "16",
["3"] = "24",
["4"] = "32",
["5"] = "40",
["6"] = "48",
["7"] = "56",
["8"] = "64",
["9"] = "72",
["10"] = "80",
["11"] = "96",
["12"] = "112",
["13"] = "128",
["14"] = "144",
["15"] = "160"
}
-- Основные параметры
-- Данный код автоматически рассчитывает параметры предмета за счет уровня предмета
-- Пример: 0.75 * на уровень предмета (1200) = +900 к критическому урону
-- каждый один уровень добавляет 0.75/0.90 к параметру/общему рейтенгу
local stat_value = 0
if args["уровень предмета"] then
if mw.ustring.find(args.item_categories, "[гГ]олова") or mw.ustring.find(args.item_categories, "[рР]уки") or mw.ustring.find(args.item_categories, "[дД]оспехи") or mw.ustring.find(args.item_categories, "[нН]оги") then
stat_value = string.format("%.0f", 0.45 * string.gsub(args["уровень предмета"], ",", "")) -- Формула расчета параметров экипировки
else
stat_value = string.format("%.0f", 0.75 * string.gsub(args["уровень предмета"], ",", "")) -- Формула расчета параметров экипировки
end
end
if args["сила"] then
fields_cargo["attrib_strength"] = args["сила"]
group
:tag('span')
:wikitext('+' .. args["сила"] .. ' <span class="slate">СИЛ</span>')
:tag('br')
:done()
end
if args["выносливость"] then
fields_cargo["attrib_constitution"] = args["выносливость"]
group
:tag('span')
:wikitext('+' .. args["выносливость"] .. ' <span class="slate">ВЫН</span>')
:tag('br')
:done()
end
if args["ловкость"] then
fields_cargo["attrib_dexterity"] = args["ловкость"]
group
:tag('span')
:wikitext('+' .. args["ловкость"] .. ' <span class="slate">ЛОВ</span>')
:tag('br')
:done()
end
if args["интеллект"] then
fields_cargo["attrib_intelligence"] = args["интеллект"]
group
:tag('span')
:wikitext('+' .. args["интеллект"] .. ' <span class="slate">ИНТ</span>')
:tag('br')
:done()
end
if args["мудрость"] then
fields_cargo["attrib_wisdom"] = args["мудрость"]
group
:tag('span')
:wikitext('+' .. args["мудрость"] .. ' <span class="slate">МДР</span>')
:tag('br')
:done()
end
if args["обаяние"] then
fields_cargo["attrib_charisma"] = args["обаяние"]
group
:tag('span')
:wikitext('+' .. args["обаяние"] .. ' <span class="slate">ОБА</span>')
:tag('br')
:done()
end
if args["параметры"] then
local item_stats = {}
for i in mw.text.gsplit(args["параметры"], ",%s*") do
table.insert(item_stats, mw.ustring.lower(i))
end
local number_of_stats = 0
number_of_stats = #item_stats
--[[for i in pairs(item_stats) do
number_of_stats = 0
number_of_stats = number_of_stats + 1
end]]--
local item_level = string.gsub(args["уровень предмета"], "%,", "")
if mw.ustring.find(args["параметры"], "[тТ]очность") then
if mw.ustring.find(args["параметры"], "[бБ]оевое преимущество") and tonumber(item_level) < 1000 and not (mw.ustring.find(args.item_categories, "[шШ]ея") or mw.ustring.find(args.item_categories, "[пП]ояс")) then
fields_cargo["stat_accuracy"] = stat_value / 2
group
:tag('span')
:wikitext("+".. stat_value / 2 ..' <span class="slate">Точность</span>')
:tag('br')
:done()
elseif number_of_stats == 3 and (mw.ustring.find(args.item_categories, "[шШ]ея") or mw.ustring.find(args.item_categories, "[пП]ояс")) then
fields_cargo["stat_accuracy"] = stat_value / 1.5
group
:tag('span')
:wikitext("+".. stat_value / 1.5 ..' <span class="slate">Точность</span>')
:tag('br')
:done()
elseif table.find(item_stats, "точность basic") and (mw.ustring.find(args.item_categories, "[гГ]олова") or mw.ustring.find(args.item_categories, "[рР]уки") or mw.ustring.find(args.item_categories, "[дД]оспехи") or mw.ustring.find(args.item_categories, "[нН]оги")) then
fields_cargo["stat_accuracy"] = stat_value / 0.75
group
:tag('span')
:wikitext("+".. stat_value / 0.75 ..' <span class="slate">Точность</span>')
:tag('br')
:done()
elseif table.find(item_stats, "точность basic") and mw.ustring.find(args.item_categories, "[кК]ольцо") then
fields_cargo["stat_accuracy"] = stat_value * 3
group
:tag('span')
:wikitext("+".. stat_value * 3 ..' <span class="slate">Точность</span>')
:tag('br')
:done()
else
fields_cargo["stat_accuracy"] = stat_value
group
:tag('span')
:wikitext("+".. stat_value ..' <span class="slate">Точность</span>')
:tag('br')
:done()
end
end
if mw.ustring.find(args["параметры"], "[бБ]оевое преимущество") then
if number_of_stats == 3 and (mw.ustring.find(args.item_categories, "[шШ]ея") or mw.ustring.find(args.item_categories, "[пП]ояс")) then
fields_cargo["stat_combat_advantage"] = stat_value / 1.5
group
:tag('span')
:wikitext("+".. stat_value / 1.5 ..' <span class="slate">Боевое преимущество</span>')
:tag('br')
:done()
elseif mw.ustring.find(args["параметры"], "повышено") then
fields_cargo["stat_combat_advantage"] = stat_value - 200
group
:tag('span')
:wikitext("+".. stat_value - 200 ..' <span class="slate">Боевое преимущество</span>')
:tag('br')
:done()
elseif table.find(item_stats, "боевое преимущество basic") and (mw.ustring.find(args.item_categories, "[гГ]олова") or mw.ustring.find(args.item_categories, "[рР]уки") or mw.ustring.find(args.item_categories, "[дД]оспехи") or mw.ustring.find(args.item_categories, "[нН]оги")) then
fields_cargo["stat_combat_advantage"] = stat_value / 0.75
group
:tag('span')
:wikitext("+".. stat_value / 0.75 ..' <span class="slate">Боевое преимущество</span>')
:tag('br')
:done()
elseif table.find(item_stats, "боевое преимущество basic") and mw.ustring.find(args.item_categories, "[кК]ольцо") then
fields_cargo["stat_combat_advantage"] = stat_value * 3
group
:tag('span')
:wikitext("+".. stat_value * 3 ..' <span class="slate">Боевое преимущество</span>')
:tag('br')
:done()
else
fields_cargo["stat_combat_advantage"] = stat_value
group
:tag('span')
:wikitext("+".. stat_value ..' <span class="slate">Боевое преимущество</span>')
:tag('br')
:done()
end
end
if mw.ustring.find(args["параметры"], "[вВ]ероятность критического удара") then
if mw.ustring.find(args["параметры"], "[бБ]оевое преимущество") and tonumber(item_level) < 1000 and not (mw.ustring.find(args.item_categories, "[кК]ольцо") or mw.ustring.find(args.item_categories, "[шШ]ея") or mw.ustring.find(args.item_categories, "[пП]ояс")) then
fields_cargo["stat_crit_chance"] = stat_value / 2
group
:tag('span')
:wikitext("+".. stat_value / 2 ..' <span class="slate">Вероятность критического удара</span>')
:tag('br')
:done()
elseif number_of_stats == 3 and (mw.ustring.find(args.item_categories, "[шШ]ея") or mw.ustring.find(args.item_categories, "[пП]ояс")) then
fields_cargo["stat_crit_chance"] = stat_value / 1.5
group
:tag('span')
:wikitext("+".. stat_value / 1.5 ..' <span class="slate">Вероятность критического удара</span>')
:tag('br')
:done()
elseif table.find(item_stats, "вероятность критического удара basic") and mw.ustring.find(args.item_categories, "[кК]ольцо") then
if number_of_stats == 1 then
fields_cargo["stat_crit_chance"] = stat_value * 4
group
:tag('span')
:wikitext("+".. stat_value * 4 ..' <span class="slate">Вероятность критического удара</span>')
:tag('br')
:done()
else
fields_cargo["stat_crit_chance"] = stat_value * 3
group
:tag('span')
:wikitext("+".. stat_value * 3 ..' <span class="slate">Вероятность критического удара</span>')
:tag('br')
:done()
end
elseif table.find(item_stats, "вероятность критического удара basic") and (mw.ustring.find(args.item_categories, "[гГ]олова") or mw.ustring.find(args.item_categories, "[рР]уки") or mw.ustring.find(args.item_categories, "[дД]оспехи") or mw.ustring.find(args.item_categories, "[нН]оги")) then
fields_cargo["stat_crit_chance"] = stat_value / 0.75
group
:tag('span')
:wikitext("+".. stat_value / 0.75 ..' <span class="slate">Вероятность критического удара</span>')
:tag('br')
:done()
else
fields_cargo["stat_crit_chance"] = stat_value
group
:tag('span')
:wikitext("+".. stat_value ..' <span class="slate">Вероятность критического удара</span>')
:tag('br')
:done()
end
end
if mw.ustring.find(args["параметры"], "[сС]ила парирования") then
-- fields_cargo[""] = stat_value
group
:tag('span')
:wikitext("+".. stat_value ..' <span class="slate">Сила парирования</span>')
:tag('br')
:done()
end
if mw.ustring.find(args["параметры"], "[бБ]онус к контролю") then
if table.find(item_stats, "бонус к контролю basic") and mw.ustring.find(args.item_categories, "[кК]ольцо") then
fields_cargo["utility_control_bonus"] = stat_value * 3
group
:tag('span')
:wikitext("+".. stat_value * 3 ..' <span class="slate">Бонус к контролю</span>')
:tag('br')
:done()
else
fields_cargo["utility_control_bonus"] = stat_value
group
:tag('span')
:wikitext("+".. stat_value ..' <span class="slate">Бонус к контролю</span>')
:tag('br')
:done()
end
end
if table.find(item_stats, "уклонение") then
if mw.ustring.find(args["параметры"], "[бБ]оевое преимущество") and tonumber(item_level) < 1000 and not (mw.ustring.find(args.item_categories, "[шШ]ея") or mw.ustring.find(args.item_categories, "[пП]ояс")) then
fields_cargo["stat_deflection"] = stat_value / 2
group
:tag('span')
:wikitext("+".. stat_value / 2 ..' <span class="slate">Уклонение</span>')
:tag('br')
:done()
elseif number_of_stats == 3 and (mw.ustring.find(args.item_categories, "[шШ]ея") or mw.ustring.find(args.item_categories, "[пП]ояс")) then
fields_cargo["stat_deflection"] = stat_value / 1.5
group
:tag('span')
:wikitext("+".. stat_value / 1.5 ..' <span class="slate">Уклонение</span>')
:tag('br')
:done()
elseif mw.ustring.find(args["параметры"], "повышено") then
fields_cargo["stat_deflection"] = stat_value / 1.5
group
:tag('span')
:wikitext("+".. stat_value / 1.5 ..' <span class="slate">Уклонение</span>')
:tag('br')
:done()
else
fields_cargo["stat_deflection"] = stat_value
group
:tag('span')
:wikitext("+".. stat_value ..' <span class="slate">Уклонение</span>')
:tag('br')
:done()
end
end
if mw.ustring.find(args["параметры"], "[сС]ильная сторона") then
fields_cargo["stat_forte"] = stat_value
group
:tag('span')
:wikitext("+".. stat_value ..' <span class="slate">Сильная сторона</span>')
:tag('br')
:done()
end
if mw.ustring.find(args["параметры"], "[оО]сведомленность") then
if number_of_stats == 3 and (mw.ustring.find(args.item_categories, "[шШ]ея") or mw.ustring.find(args.item_categories, "[пП]ояс")) then
fields_cargo["stat_awareness"] = stat_value / 1.5
group
:tag('span')
:wikitext("+".. stat_value / 1.5 ..' <span class="slate">Осведомленность</span>')
:tag('br')
:done()
elseif table.find(item_stats, "осведомленность basic") and (mw.ustring.find(args.item_categories, "[гГ]олова") or mw.ustring.find(args.item_categories, "[рР]уки") or mw.ustring.find(args.item_categories, "[дД]оспехи") or mw.ustring.find(args.item_categories, "[нН]оги")) then
fields_cargo["stat_awareness"] = stat_value / 0.75
group
:tag('span')
:wikitext("+".. stat_value / 0.75 ..' <span class="slate">Осведомленность</span>')
:tag('br')
:done()
else
fields_cargo["stat_awareness"] = stat_value
group
:tag('span')
:wikitext("+".. stat_value ..' <span class="slate">Осведомленность</span>')
:tag('br')
:done()
end
end
if mw.ustring.find(args["параметры"], "[кК]ритическое уклонение") then
if mw.ustring.find(args["параметры"], "[бБ]оевое преимущество") and tonumber(item_level) < 1000 and not (mw.ustring.find(args.item_categories, "[шШ]ея") or mw.ustring.find(args.item_categories, "[пП]ояс")) then
fields_cargo["stat_crit_resist"] = stat_value / 2
group
:tag('span')
:wikitext("+".. stat_value / 2 ..' <span class="slate">Критическое уклонение</span>')
:tag('br')
:done()
elseif number_of_stats == 3 and (mw.ustring.find(args.item_categories, "[шШ]ея") or mw.ustring.find(args.item_categories, "[пП]ояс")) then
fields_cargo["stat_crit_resist"] = stat_value / 1.5
group
:tag('span')
:wikitext("+".. stat_value / 1.5 ..' <span class="slate">Критическое уклонение</span>')
:tag('br')
:done()
elseif number_of_stats == 1 and (mw.ustring.find(args.item_categories, "[шШ]ея") or mw.ustring.find(args.item_categories, "[пП]ояс")) then
fields_cargo["stat_crit_resist"] = stat_value * 2
group
:tag('span')
:wikitext("+".. stat_value * 2 ..' <span class="slate">Критическое уклонение</span>')
:tag('br')
:done()
elseif mw.ustring.find(args["параметры"], "повышено") then
fields_cargo["stat_crit_resist"] = stat_value / 0.75
group
:tag('span')
:wikitext("+".. stat_value / 0.75 ..' <span class="slate">Критическое уклонение</span>')
:tag('br')
:done()
else
fields_cargo["stat_crit_resist"] = stat_value
group
:tag('span')
:wikitext("+".. stat_value ..' <span class="slate">Критическое уклонение</span>')
:tag('br')
:done()
end
end
if mw.ustring.find(args["параметры"], "[кК]ритический урон") then
if mw.ustring.find(args["параметры"], "[бБ]оевое преимущество") and tonumber(item_level) < 1000 and not (mw.ustring.find(args.item_categories, "[шШ]ея") or mw.ustring.find(args.item_categories, "[пП]ояс")) then
fields_cargo["stat_critical_severity"] = stat_value / 2
group
:tag('span')
:wikitext("+".. stat_value / 2 ..' <span class="slate">Критический урон</span>')
:tag('br')
:done()
elseif (number_of_stats == 3 or mw.ustring.find(args["параметры"], "повышено")) and (mw.ustring.find(args.item_categories, "[шШ]ея") or mw.ustring.find(args.item_categories, "[пП]ояс")) then
fields_cargo["stat_critical_severity"] = stat_value / 1.5
group
:tag('span')
:wikitext("+".. stat_value / 1.5 ..' <span class="slate">Критический урон</span>')
:tag('br')
:done()
elseif table.find(item_stats, "критический урон basic") and mw.ustring.find(args.item_categories, "[кК]ольцо") then
fields_cargo["stat_critical_severity"] = stat_value *3
group
:tag('span')
:wikitext("+".. stat_value * 3 ..' <span class="slate">Критический урон</span>')
:tag('br')
:done()
elseif table.find(item_stats, "критический урон basic") and (mw.ustring.find(args.item_categories, "[гГ]олова") or mw.ustring.find(args.item_categories, "[рР]уки") or mw.ustring.find(args.item_categories, "[дД]оспехи") or mw.ustring.find(args.item_categories, "[нН]оги")) then
fields_cargo["stat_critical_severity"] = stat_value / 0.75
group
:tag('span')
:wikitext("+".. stat_value / 0.75 ..' <span class="slate">Критический урон</span>')
:tag('br')
:done()
elseif number_of_stats == 1 then
fields_cargo["stat_critical_severity"] = stat_value * 2
group
:tag('span')
:wikitext("+".. stat_value * 2 ..' <span class="slate">Критический урон</span>')
:tag('br')
:done()
else
fields_cargo["stat_critical_severity"] = stat_value
group
:tag('span')
:wikitext("+".. stat_value ..' <span class="slate">Критический урон</span>')
:tag('br')
:done()
end
end
if mw.ustring.find(args["параметры"], "[оО]борона") then
if number_of_stats == 3 and (mw.ustring.find(args.item_categories, "[шШ]ея") or mw.ustring.find(args.item_categories, "[пП]ояс")) then
fields_cargo["item_defense"] = stat_value / 1.5
group
:tag('span')
:wikitext("+".. stat_value / 1.5 ..' <span class="slate">Оборона</span>')
:tag('br')
:done()
elseif mw.ustring.find(args["параметры"], "[оО]борона basic") and (mw.ustring.find(args.item_categories, "[гГ]олова") or mw.ustring.find(args.item_categories, "[рР]уки") or mw.ustring.find(args.item_categories, "[дД]оспехи") or mw.ustring.find(args.item_categories, "[нН]оги")) then
fields_cargo["stat_accuracy"] = stat_value / 0.75
group
:tag('span')
:wikitext("+".. stat_value / 0.75 ..' <span class="slate">Оборона</span>')
:tag('br')
:done()
else
fields_cargo["item_defense"] = stat_value
group
:tag('span')
:wikitext("+".. stat_value ..' <span class="slate">Оборона</span>')
:tag('br')
:done()
end
end
if mw.ustring.find(args["параметры"], "[иИ]сходящее лечение") then
if table.find(item_stats, "исходящее лечение basic") and (mw.ustring.find(args.item_categories, "[гГ]олова") or mw.ustring.find(args.item_categories, "[рР]уки") or mw.ustring.find(args.item_categories, "[дД]оспехи") or mw.ustring.find(args.item_categories, "[нН]оги")) then
fields_cargo["outhealing"] = stat_value / 0.75
group
:tag('span')
:wikitext("+".. stat_value / 0.75 ..' <span class="slate">Исходящее лечение</span>')
:tag('br')
:done()
else
fields_cargo["outhealing"] = stat_value
group
:tag('span')
:wikitext("+".. stat_value ..' <span class="slate">Исходящее лечение</span>')
:tag('br')
:done()
end
end
if mw.ustring.find(args["параметры"], "[сС]опротивляемость контролю") then
fields_cargo["utility_control_resist "] = stat_value
group
:tag('span')
:wikitext("+".. stat_value ..' <span class="slate">Сопротивляемость контролю</span>')
:tag('br')
:done()
end
if mw.ustring.find(args["параметры"], "[пП]ринимаемое лечение") then
if number_of_stats == 3 and (mw.ustring.find(args.item_categories, "[шШ]ея") or mw.ustring.find(args.item_categories, "[пП]ояс")) then
fields_cargo["utility_incoming_healing"] = stat_value / 1.5
group
:tag('span')
:wikitext("+".. stat_value / 1.5 ..' <span class="slate">Принимаемое лечение</span>')
:tag('br')
:done()
elseif table.find(item_stats, "принимаемое лечение basic") and mw.ustring.find(args.item_categories, "[кК]ольцо") then
fields_cargo["utility_incoming_healing"] = stat_value *3
group
:tag('span')
:wikitext("+".. stat_value * 3 ..' <span class="slate">Принимаемое лечение</span>')
:tag('br')
:done()
else
fields_cargo["utility_incoming_healing"] = stat_value
group
:tag('span')
:wikitext("+".. stat_value ..' <span class="slate">Принимаемое лечение</span>')
:tag('br')
:done()
end
end
if mw.ustring.find(args["параметры"], "[пП]олучение очков действия") then
if number_of_stats == 3 then
-- fields_cargo[""] = '1.5%'
group
:tag('span')
:wikitext('+1.5% <span class="slate">Получение очков действия</span>')
:tag('br')
:done()
elseif number_of_stats == 4 then
-- fields_cargo[""] = '0.75%'
group
:tag('span')
:wikitext('+0.75% <span class="slate">Получение очков действия</span>')
:tag('br')
:done()
end
end
if mw.ustring.find(args["параметры"], "[сС]корость движения") then
if number_of_stats == 3 then
fields_cargo["stat_movement"] = '1.5%'
group
:tag('span')
:wikitext('+1.5% <span class="slate">Скорость движения</span>')
:tag('br')
:done()
elseif number_of_stats == 4 then
fields_cargo["stat_movement"] = '0.75%'
group
:tag('span')
:wikitext('+0.75% <span class="slate">Скорость движения</span>')
:tag('br')
:done()
end
end
if mw.ustring.find(args["параметры"], "[сС]корость восстановления") then
if number_of_stats == 3 then
-- fields_cargo["stat_movement"] = '1.5%'
group
:tag('span')
:wikitext('+1.5% <span class="slate">Скорость восстановления</span>')
:tag('br')
:done()
elseif number_of_stats == 4 then
-- fields_cargo["stat_movement"] = '0.75%'
group
:tag('span')
:wikitext('+0.75% <span class="slate">Скорость восстановления</span>')
:tag('br')
:done()
end
end
if mw.ustring.find(args["параметры"], "[вВ]осстановление здоровья") then
if number_of_stats == 3 then
fields_cargo["stat_regeneration"] = '1.5%'
group
:tag('span')
:wikitext('+1.5% <span class="slate">Восстановление здоровья</span>')
:tag('br')
:done()
elseif number_of_stats == 4 then
fields_cargo["stat_regeneration"] = '0.75%'
group
:tag('span')
:wikitext('+0.75% <span class="slate">Восстановление здоровья</span>')
:tag('br')
:done()
end
end
end
if args["максимум хитов"] then
fields_cargo["hit_points_max"] = args["максимум хитов"]
if mw.ustring.find(args.item_categories, "[вВ]олшебный камень") then
group
:tag('span')
:wikitext('<span class="green">Оборона: </span>+' .. args["максимум хитов"] .. ' <span class="slate">Максимум хитов</span>')
:tag('br')
:done()
elseif mw.ustring.find(args.item_categories, "[нН]абор усиления доспехов") then
group
:tag('span')
:wikitext('<span class="green">На себе: </span><span class="slate">Максимум хитов</span>: +' .. args["максимум хитов"])
:tag('br')
:done()
else
group
:tag('span')
:wikitext("+".. args["максимум хитов"] ..' <span class="slate">Максимум хитов</span>')
:tag('br')
:done()
end
end
if args["оборона"] then
fields_cargo["item_defense"] = args["оборона"]
if mw.ustring.find(args.item_categories, "[вВ]олшебный камень") then
group
:tag('span')
:wikitext('<span class="green">Оборона: </span>+' .. args["оборона"] .. ' <span class="slate">Оборона</span>')
:tag('br')
:done()
elseif mw.ustring.find(args.item_categories, "[нН]абор усиления доспехов") then
group
:tag('span')
:wikitext('<span class="green">На себе: </span><span class="slate">Оборона</span>: +' .. args["оборона"])
:tag('br')
:done()
else
group
:tag('span')
:wikitext("+".. args["оборона"] ..' <span class="slate">Оборона</span>')
:tag('br')
:done()
end
end
if args["осведомленность"] then
fields_cargo["stat_awareness"] = args["осведомленность"]
if mw.ustring.find(args.item_categories, "[вВ]олшебный камень") then
group
:tag('span')
:wikitext('<span class="green">Оборона: </span>+' .. args["осведомленность"] .. ' <span class="slate">Осведомленность</span>')
:tag('br')
:done()
else
group
:tag('span')
:wikitext("+".. args["осведомленность"] ..' <span class="slate">Осведомленность</span>')
:tag('br')
:done()
end
end
if args["вероятность критического удара"] then
fields_cargo["stat_crit_chance"] = args["вероятность критического удара"]
if mw.ustring.find(args.item_categories, "[вВ]олшебный камень") then
group
:tag('span')
:wikitext('<span class="green">Атака: </span>+' .. args["вероятность критического удара"] .. ' <span class="slate">Вероятность критического удара</span>')
:tag('br')
:done()
elseif mw.ustring.find(args.item_categories, "[нН]абор усиления доспехов") then
group
:tag('span')
:wikitext('<span class="green">На себе: </span><span class="slate">Вероятность критического удара</span>: +' .. args["вероятность критического удара"])
:tag('br')
:done()
else
group
:wikitext("+".. args["вероятность критического удара"] ..' <span class="slate">Вероятность критического удара</span>')
:tag('br')
:done()
end
end
if args["могущество"] then
fields_cargo["stat_power"] = args["могущество"]
if mw.ustring.find(args.item_categories, "[вВ]олшебный камень") then
group
:tag('span')
:wikitext('<span class="green">Атака: </span>+' .. args["могущество"] .. ' <span class="slate">Могущество</span>')
:tag('br')
:done()
elseif mw.ustring.find(args.item_categories, "[нН]абор усиления доспехов") then
group
:tag('span')
:wikitext('<span class="green">На себе: </span><span class="slate">Могущество</span>: +' .. args["могущество"])
:tag('br')
:done()
else
group
:tag('span')
:wikitext("+".. args["могущество"] ..' <span class="slate">Могущество</span>')
:tag('br')
:done()
end
end
if args["критическое уклонение"] then
fields_cargo["stat_crit_resist"] = args["критическое уклонение"]
if mw.ustring.find(args.item_categories, "[вВ]олшебный камень") then
group
:tag('span')
:wikitext('<span class="green">Оборона: </span>+' .. args["критическое уклонение"] .. ' <span class="slate">Критическое уклонение</span>')
:tag('br')
:done()
elseif mw.ustring.find(args.item_categories, "[нН]абор усиления доспехов") then
group
:tag('span')
:wikitext('<span class="green">На себе: </span><span class="slate">Критическое уклонение</span>: +' .. args["критическое уклонение"])
:tag('br')
:done()
else
group
:tag('span')
:wikitext("+".. args["критическое уклонение"] ..' <span class="slate">Критическое уклонение</span>')
:tag('br')
:done()
end
end
if args["критический урон"] then
fields_cargo["stat_critical_severity"] = args["критический урон"]
if mw.ustring.find(args.item_categories, "[вВ]олшебный камень") then
group
:tag('span')
:wikitext('<span class="green">Атака: </span>+' .. args["критический урон"] .. ' <span class="slate">Критический урон</span>')
:tag('br')
:done()
elseif mw.ustring.find(args.item_categories, "[нН]абор усиления доспехов") then
group
:tag('span')
:wikitext('<span class="green">На себе: </span><span class="slate">Критический урон</span>: +' .. args["критический урон"])
:tag('br')
:done()
elseif mw.ustring.find(args.item_categories, "[тТ]олько для спутников") then
group
:tag('span')
:wikitext("+".. stat_value ..' <span class="slate">Критический урон</span>')
:tag('br')
:done()
else
group
:tag('span')
:wikitext("+".. args["критический урон"] ..' <span class="slate">Критический урон</span>')
:tag('br')
:done()
end
end
if args["сила парирования"] then
fields_cargo["stat_deflect_sev"] = args["сила парирования"]
if mw.ustring.find(args.item_categories, "[вВ]олшебный камень") then
group
:tag('span')
:wikitext('<span class="green">Оборона: </span>+' .. args["сила парирования"] .. ' <span class="slate">Сила парирования</span>')
:tag('br')
:done()
else
group
:tag('span')
:wikitext("+".. args["сила парирования"] ..' <span class="slate">Сила парирования</span>')
:tag('br')
:done()
end
end
if args["точность"] then
fields_cargo["stat_accuracy"] = args["точность"]
if mw.ustring.find(args.item_categories, "[вВ]олшебный камень") then
group
:tag('span')
:wikitext('<span class="green">Атака: </span>+' .. args["точность"] .. ' <span class="slate">Точность</span>')
:tag('br')
:done()
elseif mw.ustring.find(args.item_categories, "[нН]абор усиления доспехов") then
group
:tag('span')
:wikitext('<span class="green">На себе: </span><span class="slate">Точность</span>: +' .. args["точность"])
:tag('br')
:done()
else
group
:tag('span')
:wikitext("+".. args["точность"] ..' <span class="slate">Точность</span>')
:tag('br')
:done()
end
end
if args["боевое преимущество"] then
fields_cargo["stat_combat_advantage"] = args["боевое преимущество"]
if mw.ustring.find(args.item_categories, "[вВ]олшебный камень") then
group
:tag('span')
:wikitext('<span class="green">Атака: </span>+' .. args["боевое преимущество"] .. ' <span class="slate">Боевое преимущество</span>')
:tag('br')
:done()
elseif mw.ustring.find(args.item_categories, "[тТ]олько для спутников") then
group
:tag('span')
:wikitext("+".. stat_value ..' <span class="slate">Боевое преимущество</span>')
:tag('br')
:done()
else
group
:tag('span')
:wikitext("+".. args["боевое преимущество"] ..' <span class="slate">Боевое преимущество</span>')
:tag('br')
:done()
end
end
if args["уклонение"] then
fields_cargo["stat_deflection"] = args["уклонение"]
if mw.ustring.find(args.item_categories, "[вВ]олшебный камень") then
group
:tag('span')
:wikitext('<span class="green">Оборона: </span>+' .. args["уклонение"] .. ' <span class="slate">Уклонение</span>')
:tag('br')
:done()
elseif mw.ustring.find(args.item_categories, "[нН]абор усиления доспехов") then
group
:tag('span')
:wikitext('<span class="green">На себе: </span><span class="slate">Уклонение</span>: +' .. args["уклонение"])
:tag('br')
:done()
else
group
:tag('span')
:wikitext("+".. args["уклонение"] ..' <span class="slate">Уклонение</span>')
:tag('br')
:done()
end
end
-- Общий рейтинг
if args["уровень предмета"] then
if not mw.ustring.find(args.item_categories, "[кК]ольцо") then
local stat_universal = comma_value(math.ceil(0.9 * string.gsub(args["уровень предмета"], ",", "")))
fields_cargo["stat_universal"] = stat_universal
group
:tag('span')
:wikitext("+".. comma_value(math.ceil(0.9 * string.gsub(args["уровень предмета"], ",", ""))) ..' <span class="slate">Общий рейтинг</span>')
:tag('br')
:done()
elseif mw.ustring.find(args.item_categories, "[кК]ольцо") then
local stat_universal = comma_value(math.ceil(0.8 * string.gsub(args["уровень предмета"], ",", "")))
fields_cargo["stat_universal"] = stat_universal
group
:tag('span')
:wikitext("+".. comma_value(math.ceil(0.8 * string.gsub(args["уровень предмета"], ",", ""))) ..' <span class="slate">Общий рейтинг</span>')
:tag('br')
:done()
end
end
-- Усилители
if args["восстановления здоровья"] then
if mw.ustring.find(args.item_categories, "[нН]абор усиления доспехов") then
group
:tag('span')
:wikitext('<span class="green">На себе: </span><span class="slate">Всстановления здоровья</span>: +' .. args["восстановления здоровья"])
:tag('br')
:done()
end
end
if args["принимаемое лечение"] then
fields_cargo["utility_incoming_healing"] = args["принимаемое лечение"]
if mw.ustring.lower(args.item_categories) == "волшебный камень" then
group
:tag('span')
:wikitext('<span class="green">Полезное: </span>+' .. args["принимаемое лечение"] .. ' <span class="slate">Принимаемое лечение</span>')
:tag('br')
:done()
else
group
:tag('span')
:wikitext('+' .. args["принимаемое лечение"] .. ' <span class="slate">Принимаемое лечение</span>')
:tag('br')
:done()
end
end
if args["исходящее лечение"] then
if mw.ustring.lower(args.item_categories) == "волшебный камень" then
group
:tag('span')
:wikitext('<span class="green">Полезное: </span>+' .. args["исходящее лечение"] .. ' <span class="slate">Исходящее лечение</span>')
:tag('br')
:done()
else
group
:tag('span')
:wikitext('+' .. args["исходящее лечение"] .. ' <span class="slate">Исходящее лечение</span>')
:tag('br')
:done()
end
end
if args["бонус к контролю"] then
fields_cargo["utility_control_bonus"] = args["бонус к контролю"]
if mw.ustring.lower(args.item_categories) == "волшебный камень" then
group
:tag('span')
:wikitext('<span class="green">Полезное: </span>+' .. args["бонус к контролю"] .. ' <span class="slate">Бонус к контролю</span>')
:tag('br')
:done()
else
group
:tag('span')
:wikitext('+' .. args["бонус к контролю"] .. ' <span class="slate">Бонус к контролю</span>')
:tag('br')
:done()
end
end
if args["жажда золота"] then
fields_cargo["utility_gold_boost"] = args["жажда золота"]
if mw.ustring.lower(args.item_categories) == "волшебный камень" then
group
:tag('span')
:wikitext('<span class="green">Полезное: </span>+' .. args["жажда золота"] .. ' <span class="slate">Жажда золота</span>')
:tag('br')
:done()
end
end
if args["сильная сторона"] then
fields_cargo["stat_forte"] = args["сильная сторона"]
if mw.ustring.lower(args.item_categories) == "волшебный камень" then
group
:tag('span')
:wikitext('<span class="green">Полезное: </span>+' .. args["сильная сторона"] .. ' <span class="slate">Сильная сторона</span>')
:tag('br')
:done()
else
group
:tag('span')
:wikitext('+' .. args["сильная сторона"] .. ' <span class="slate">Сильная сторона</span>')
:tag('br')
:done()
end
end
if args["сопротивляемость контролю"] then
fields_cargo["utility_control_resist"] = args["сопротивляемость контролю"]
if mw.ustring.find(args.item_categories, "[вВ]олшебный камень") then
group
:tag('span')
:wikitext('<span class="green">Полезное: </span>+' .. args["сопротивляемость контролю"] .. ' <span class="slate">Сопротивляемость контролю</span>')
:tag('br')
:done()
else
group
:wikitext("+".. args["сопротивляемость контролю"] ..' <span class="slate">Сопротивляемость контролю</span>')
:tag('br')
:done()
end
end
if args["восстановление здоровья"] then
fields_cargo["stat_regeneration"] = args["восстановление здоровья"]
if mw.ustring.find(args.item_categories, "[вВ]олшебный камень") then
group
:tag('span')
:wikitext('<span class="green">Полезное: </span>+' .. args["восстановление здоровья"] .. ' <span class="slate">Восстановление здоровья</span>')
:tag('br')
:done()
else
group
:wikitext("+".. args["восстановление здоровья"] ..' <span class="slate">Восстановление здоровья</span>')
:tag('br')
:done()
end
end
if args["время восстановления"] then
content
:wikitext('<span class="beige" style="display: block;">Время восстановления: ' .. args["время восстановления"] .. 'с</span>')
:done()
end
if args["использовать"] then
fields_cargo["item_use"] = args["использовать"]
group
:wikitext('<span class="green"">Использовать: </span>' .. args["использовать"])
:tag('br')
:done()
end
if args["на себе"] then
fields_cargo["equip"] = args["на себе"]
group
:tag('span')
:wikitext('<span class="green">На себе: </span>' .. args["на себе"])
:tag('br')
:done()
end
if args["на себе2"] then
group
:tag('span')
:wikitext('<span class="green">На себе: </span>' .. args["на себе2"])
:tag('br')
:done()
end
content:node(group):tag('br'):done()
end
-- Ячейка усиления
if args.item_categories then
if mw.ustring.find( args.item_categories, "[гГ]олова") or mw.ustring.find( args.item_categories, "[дД]оспехи") or mw.ustring.find( args.item_categories, "[рР]уки") or mw.ustring.find( args.item_categories, "[нН]оги") or mw.ustring.find( args.item_categories, "[шШ]ея") or mw.ustring.find( args.item_categories, "[кК]ольцо") or mw.ustring.find( args.item_categories, "[пП]ояс") or mw.ustring.find( args.item_categories, "[рР]убаха") or mw.ustring.find( args.item_categories, "[шШ]таны") then
group = h.Group('slots')
:tag('span')
:attr('class', 'irslot')
:wikitext('Усиленный: <span class="gray">Пусто</span>')
:tag('br')
:done()
content:node(group):tag('br'):done()
end
end
-- Комлект предметов
if args["комплект"] then
fields_cargo["item_set"] = args["комплект"]
group = h.Group()
if (args["комплект"] == nil) then
return ""
end
if mw.ustring.find( args.item_categories, "[шШ]ея" ) or mw.ustring.find( args.item_categories, "[пП]ояс" ) or mw.ustring.find( args.item_categories, "[аА]ртефакт" ) then
local tbl = mw.html.create('table')
local tables = 'Items'
local fields = '_pageName, item_set'
local args = {
where = 'item_set = "'.. frame.args["комплект"] .. '"',
orderBy = '_pageName',
}
local result = cargo.query( tables, fields, args )
local r = result[1]
local set_items = {}
for k, row in ipairs(result) do
set_items[k] = '<div><span class="gray" style="margin-left: 1.25em;">'..row._pageName..'</span></div>'
end
local number_of_items_in_the_set = 0
number_of_items_in_the_set = #set_items
tr = tbl:tag("tr")
tr:tag("td"):attr("colspan", "2"):wikitext('<div>Часть комплекта «' .. frame.args["комплект"] .. '» (0/'.. number_of_items_in_the_set ..')</div>'.. table.concat(set_items)):done()
tr = tbl:tag("tr")
tr:tag("td"):attr('style', 'vertical-align: top; width: 130px;'):wikitext('<span style="vertical-align: top; width: 111px;" class="gray">'.. number_of_items_in_the_set ..' из комплекта:</span>'):done()
tr:tag("td"):wikitext('<span class="gray"> ' .. armor_set_powers_data[frame.args["комплект"]] .. '</span>'):done()
group
:tag('span')
:attr("style", "display: block;")
:wikitext(tostring(tbl))
:tag('br')
:done()
elseif mw.ustring.find( args.item_categories, "[оО]ружие" ) or mw.ustring.find(args.item_categories, "[кК]линок") or mw.ustring.find( args.item_categories, "[тТ]емляк" ) or mw.ustring.find( args.item_categories, "[иИ]кона" ) or mw.ustring.find( args.item_categories, "[тТ]алисман" ) or mw.ustring.find( args.item_categories, "[щЩ]ит" ) or mw.ustring.find( args.item_categories, "[гГ]римуар" ) then
local tables = 'Items'
local fields = '_pageName,item_set,requires_class'
local args = {
where = 'item_set = "'.. frame.args["комплект"] .. '" AND requires_class HOLDS LIKE "%' .. frame.args["требуется класс"] .. '%"',
orderBy = '_pageName',
}
local result = cargo.query( tables, fields, args )
local r = result[1]
if (frame.args["комплект"] == nil) then
return ""
end
local set_items = {}
for k,row in ipairs(result) do
set_items[k] = '<div><span class="gray" style="margin-left: 1.25em;">'..row._pageName..'</span></div>'
end
local number_of_items_in_the_set = 0
number_of_items_in_the_set = #set_items
local tbl = mw.html.create('table')
tr = tbl:tag("tr")
tr:tag("td"):attr("colspan", "2"):wikitext('<div>Часть комплекта «' .. frame.args["комплект"] .. '» (0/' .. number_of_items_in_the_set .. ')</div>\n' .. table.concat(set_items)):done()
tr = tbl:tag("tr")
tr:tag("td"):attr('style', 'vertical-align: top; width: 130px;'):wikitext('<span style="vertical-align: top; width: 111px;" class="gray">' .. number_of_items_in_the_set .. ' из комплекта:</span>'):done()
tr:tag("td"):wikitext('<span class="gray"> ' .. weapon_set_powers_data[frame.args["комплект"]] .. '</span>'):done()
group
:tag('span')
:attr("style", "display: block;")
:wikitext(tostring(tbl))
:tag('br')
:done()
end
content:node(group):done()
end
-- Ячейки знаков
if args.item_categories and mw.ustring.lower(args.item_categories) == "скакун" then
group = h.Group('slots')
if args["ячейка1"] then
fields_cargo["slot1"] = args["ячейка1"]
if mw.ustring.lower(args["ячейка1"]) == "универсальная ячейка" then
group
:tag('span')
:attr('class', 'muslot')
:wikitext(mw.getContentLanguage():ucfirst(args["ячейка1"]) .. ': <span class="gray">Нет знаков</span>'):tag('br'):done()
elseif mw.ustring.lower(args["ячейка1"]) == "ячейка царственных знаков" or mw.ustring.lower(args["ячейка1"]) == "ячейка шипастых знаков" or mw.ustring.lower(args["ячейка1"]) == "ячейка украшенных знаков" or mw.ustring.lower(args["ячейка1"]) == "ячейка просвещенных знаков" or mw.ustring.lower(args["ячейка1"]) == "ячейка серповидных знаков" then
group
:tag('span')
:attr('class', 'slot')
:wikitext(mw.getContentLanguage():ucfirst(args["ячейка1"]) .. ': <span class="gray">Нет знаков</span>'):tag('br'):done()
end
end
if args["ячейка2"] then
fields_cargo["slot2"] = args["ячейка2"]
if mw.ustring.lower(args["ячейка2"]) == "универсальная ячейка" then
group
:tag('span')
:attr('class', 'muslot')
:wikitext(mw.getContentLanguage():ucfirst(args["ячейка2"]) .. ': <span class="gray">Нет знаков</span>'):tag('br'):done()
elseif mw.ustring.lower(args["ячейка2"]) == "ячейка царственных знаков" or mw.ustring.lower(args["ячейка2"]) == "ячейка шипастых знаков" or mw.ustring.lower(args["ячейка2"]) == "ячейка украшенных знаков" or mw.ustring.lower(args["ячейка2"]) == "ячейка просвещенных знаков" or mw.ustring.lower(args["ячейка2"]) == "ячейка серповидных знаков" then
group
:tag('span')
:attr('class', 'slot')
:wikitext(mw.getContentLanguage():ucfirst(args["ячейка2"]) .. ': <span class="gray">Нет знаков</span>'):tag('br'):done()
end
end
if args["ячейка3"] then
fields_cargo["slot3"] = args["ячейка3"]
if mw.ustring.lower(args["ячейка3"]) == "универсальная ячейка" then
group
:tag('span')
:attr('class', 'muslot')
:wikitext(mw.getContentLanguage():ucfirst(args["ячейка3"]) .. ': <span class="gray">Нет знаков</span>'):tag('br'):done()
elseif mw.ustring.lower(args["ячейка3"]) == "ячейка царственных знаков" or mw.ustring.lower(args["ячейка3"]) == "ячейка шипастых знаков" or mw.ustring.lower(args["ячейка3"]) == "ячейка украшенных знаков" or mw.ustring.lower(args["ячейка3"]) == "ячейка просвещенных знаков" or mw.ustring.lower(args["ячейка3"]) == "ячейка серповидных знаков" then
group
:tag('span')
:attr('class', 'slot')
:wikitext(mw.getContentLanguage():ucfirst(args["ячейка3"]) .. ': <span class="gray">Нет знаков</span>'):tag('br'):done()
end
end
content:node(group):tag('br'):done()
end
-- Вспомогательный текст для сундука
if args.item_categories and mw.ustring.find(args.item_categories, "[сC]ундук") then
if args["описание"] then
group = h.Group()
:tag('div')
:attr('class', 'slate')
:wikitext('Чтобы открыть этот сундук, нужен <span class="epic">зачарованный ключ</span>.')
:done()
content:node(group):tag('br'):done()
end
end
-- Содержимое сундуков/наборов
if args["содержимое"] then
group = h.Group()
:tag('div')
:attr('class', '')
:wikitext(args["содержимое"])
:done()
content:node(group):tag('br'):done()
end
-- Вспомогательный текст для сундука
if args.item_categories and mw.ustring.find(args.item_categories, "[сC]ундук") then
if args["описание"] == nil then
group = h.Group()
:tag('div')
:attr('class', 'slate')
:wikitext('Чтобы открыть этот сундук, нужен <span class="epic">зачарованный ключ</span>.')
:done()
content:node(group):tag('br'):done()
end
end
-- Описание предмета
if args.item_categories then
if args["описание"] then
fields_cargo["description"] = args["описание"]
if mw.ustring.find(args.item_categories, "[аА]ртефакт") or args["символ"] then
else
group = h.Group()
:tag('span')
:attr("class", "slate")
:wikitext(args["описание"])
:tag('br'):done()
content:node(group):tag('br'):done()
end
end
else
fields_cargo["description"] = args["описание"]
group = h.Group()
:tag('span')
:attr("class", "slate")
:wikitext(args["описание"])
:tag('br'):done()
content:node(group):tag('br'):done()
end
if args["осталось времени"] then
content
:tag('div')
:attr('class', 'left')
:wikitext('Осталось времени: ' .. args["осталось времени"])
end
-- Item coupon message
if args.item_categories and mw.ustring.find( args.item_categories, "[кК]упон" ) then
group = h.Group()
:tag('span')
:wikitext('Посетите рынок ZEN, чтобы использовать купон!<br><br>При покупке можно использовать только один купон. Действие купона не суммируется со специальными скидками. Применяется та скидка, что дает больший эффект.')
:tag('br')
:done()
content:node(group):tag('br'):done()
end
-- Флаги предмета
if args.item_categories then
local itemTypes = {}
for i in mw.text.gsplit(args.item_categories, ",%s*") do
table.insert(itemTypes, mw.getContentLanguage():ucfirst(i))
end
fields_cargo["categories"] = args.item_categories
content
:tag('div')
:attr('class', 'left')
:wikitext(table.concat(itemTypes, ", "))
:done()
end
-- Ранг удивительного предмета
if args.item_categories and mw.ustring.find( args.item_categories, "[уУ]дивительный предмет" ) then
if args["ранг"] == "7" then
content
:tag('span')
:attr('class', 'left')
:wikitext("Ранг: " .. args["ранг"].. " (максимум)")
elseif args["ранг"] > "7" then
error("Не существует удивительного предмета с таким рангом!")
else
local rank = {
["1"] = "1",
["2"] = "3",
["3"] = "10",
["4"] = "25",
["5"] = "100",
["6"] = "500",
}
content
:tag('span')
:attr('class', 'left')
:wikitext("Ранг: " .. args["ранг"].. " (0/" .. rank[args["ранг"]] .. " до следующего ранга)")
end
end
-- Требуемый класс
if args["требуется класс"] then
local requiresClass = {}
for i in mw.text.gsplit(args["требуется класс"], ",%s*") do
table.insert(requiresClass, mw.getContentLanguage():ucfirst(i))
end
fields_cargo["requires_class"] = table.concat(requiresClass, ", ")
content
:tag('div')
:attr('class', 'left')
:wikitext('Требуется класс: ' .. table.concat(requiresClass, ", "))
:done()
end
-- Требуемый уровень
if args["минимальный уровень"] then
fields_cargo["item_min_level"] = args["минимальный уровень"]
content
:tag('div')
:attr('class', 'left')
:wikitext('Минимальный уровень: ' .. args["минимальный уровень"])
else
fields_cargo["item_min_level"] = "Нет требования к уровню"
content
:tag('div')
:attr('class', 'left')
:wikitext('Нет требования к уровню')
end
-- Стоимость продажи предмета
if args["цена продажи"] then
if mw.ustring.lower(args["цена продажи"]) == 'нпнв' then
content
:tag('div')
:attr('class', 'right')
:wikitext("Невозможно продать<br>Нельзя выбросить")
elseif mw.ustring.lower(args["цена продажи"]) == 'невозможно продать' then
content
:tag('div')
:attr('class', 'right')
:wikitext("Невозможно продать")
elseif args["цена продажи"] ~= "" then
content
:tag('div')
:attr('class', 'right')
:wikitext(frame:expandTemplate{title = 'Валюта',args = {args["цена продажи"]}})
end
else
content
:tag('div')
:attr('class', 'right')
:wikitext("Невозможно продать")
end
-- Данная функция проверяет на схожесть три ячейки скакуна со списка бонусов знака, если у скакуна совпадают ячейки со списком бонусов знака, то они добавляются в подсказку предмета.
-- Коротко: упрощает процесс добавления списка бонусов знака (всевозможные комбинации ячеек).
function p.InsigniaBonus(slot1, slot2, slot3)
tables = 'Insignia_bonuses'
fields = '_pageName, name, slot1, slot2, slot3, description'
local args = {
orderBy = '_pageName',
}
local result = cargo.query( tables, fields, args )
local r = result[1]
local text = {}
for k, v in ipairs(result) do
if slot1 == v.slot1 and slot2 == v.slot2 and slot3 == v.slot3 then
text[k] = v._pageName .. ', '
elseif slot1 == v.slot2 and slot2 == v.slot1 and slot3 == v.slot3 then
text[k] = v._pageName .. ', '
elseif slot1 == v.slot1 and slot2 == v.slot3 and slot3 == v.slot2 then
text[k] = v._pageName .. ', '
elseif slot1 == v.slot3 and slot2 == v.slot1 and slot3 == v.slot2 then
text[k] = v._pageName .. ', '
elseif slot1 == v.slot3 and slot2 == v.slot2 and slot3 == v.slot1 then
text[k] = v._pageName .. ', '
elseif slot1 == v.slot1 and slot2 == v.slot2 and slot3 == 'Универсальная ячейка' then
text[k] = v._pageName .. ', '
elseif slot1 == v.slot1 and slot2 == v.slot3 and slot3 == 'Универсальная ячейка' then
text[k] = v._pageName .. ', '
elseif slot1 == v.slot2 and slot2 == v.slot1 and slot3 == 'Универсальная ячейка' then
text[k] = v._pageName .. ', '
elseif slot1 == v.slot2 and slot2 == v.slot3 and slot3 == 'Универсальная ячейка' then
text[k] = v._pageName .. ', '
elseif slot1 == v.slot3 and slot2 == v.slot2 and slot3 == 'Универсальная ячейка' then
text[k] = v._pageName .. ', '
elseif slot1 == v.slot3 and slot2 == v.slot1 and slot3 == 'Универсальная ячейка' then
text[k] = v._pageName .. ', '
elseif slot1 == v.slot1 and slot2 == 'Универсальная ячейка' and slot3 == 'Универсальная ячейка' then
text[k] = v._pageName .. ', '
elseif slot1 == v.slot2 and slot2 == 'Универсальная ячейка' and slot3 == 'Универсальная ячейка' then
text[k] = v._pageName .. ', '
elseif slot1 == v.slot3 and slot2 == 'Универсальная ячейка' and slot3 == 'Универсальная ячейка' then
text[k] = v._pageName .. ', '
elseif slot1 == 'Универсальная ячейка' and slot2 == 'Универсальная ячейка' and slot3 == 'Универсальная ячейка' then
text[k] = v._pageName .. ', '
else
text[k] = ''
end
end
return table.concat(text)
end
if args["коллекция"] then
fields_cargo["collection"] = args["коллекция"]
end
if args["удален"] then
fields_cargo["removed"] = args["удален"]
end
if args["очки обработки"] then
content
:tag('div')
:attr('class', 'right')
:wikitext('[[Файл:Currency_Icon_Refinementpoints.png|x14px|ссылка=]] ' .. args["очки обработки"])
end
if args["иконка"] then
fields_cargo["icon"] = args["иконка"]
content
:tag('div')
:attr('style', 'text-align: center')
:wikitext('[[Файл:' .. args["иконка"] .. '|64px|ссылка=]]')
end
if args["zone_rewards"] then
content
:tag('div')
:attr('class', 'gold')
:wikitext('Это можно найти здесь: ' .. '\t\n* ' .. args["zone_rewards"])
end
container:node(content)
-- Cargo tables
local APPEARANCES_TABLE = "Items"
fields_cargo["insignia_bonuses"] = p.InsigniaBonus(args["ячейка1"], args["ячейка2"], args["ячейка3"])
if args["удален"] == nil then
frame:callParserFunction("#cargo_store:_table=" .. APPEARANCES_TABLE, fields_cargo)
end
container
:tag('div')
:attr('class', 'bottom')
:tag('div')
:attr('class', 'blcorner')
:done()
:tag('div')
:attr('class', 'brcorner')
:done()
:tag('div')
:attr('class', 'bedge')
:done()
return container
end
function h.Group(class)
return mw.html.create('span')
:attr( 'class', 'group ' .. (class or '') )
end
function h.divContent(class)
return mw.html.create('div')
:attr( 'class', 'content ' .. (class or '') )
end
return p