Neverwinter Wiki
Advertisement

Для документации этого модуля может быть создана страница Модуль: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|ссылка=]]&nbsp;' .. 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
Advertisement