Neverwinter Wiki
Advertisement

Для документации этого модуля может быть создана страница Модуль:Item/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 list_of_modules = mw.loadData( "Модуль:Item/list_of_modules" ) -- Список вышедших модулей

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})

	-- Добавляет метку вверху страницы, в каком обновлении добавлен предмет
	if args["модуль"] then
		fields_cargo["module"] = args["модуль"]
		local content_indicator = 'Добавлено в модуле ' .. args["модуль"] .. ': ' .. list_of_modules[args["модуль"]]
	
		mw.getCurrentFrame():extensionTag {
			name = "indicator",
			content = content_indicator,
			args = {
				name = "module"
			}
		}
	end
	
	local item_categories = {}

	if args["тип"] then
		for i in mw.text.gsplit(args["тип"], ",%s*") do
			table.insert(item_categories, mw.ustring.lower(i))
		end
	end
	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["качество"]
	    content
	        :tag('div') 
	            :attr('class', 'title')
		    :tag('span') 
	        	:attr('class', item_quality[mw.ustring.lower(args["качество"])])
		        :wikitext(mw.title.getCurrentTitle().fullText)
		        :tag('br')
			:done()
	else -- Если предмет не имеет качество
	    content
	        :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["уровень предмета"]
		content 		
			: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>, который обычно используют для превращения.')
				:done()
				:tag('br')
		elseif mw.ustring.find( args.item_categories, "[мМ]атериал" ) then
			content	
				:tag('div')
				:wikitext('Ресурс для ремесленных работ.')
				:done()
				:tag('br')
		elseif table.find(item_categories, "шляпа (стиль)") or table.find(item_categories, "тело (стиль)") or table.find(item_categories, "штаны (стиль)") then
			content	
				:tag('div')
					:attr('class', 'right green')
					:wikitext('Щелкните дважды для<br>преобразования')
					:done()
					:tag('br')
		end
	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(amount)
		local formatted = amount
		while true do  
		  formatted, k = string.gsub(formatted, "^(-?%d+)(%d%d%d)", '%1,%2')
			if (k==0) then
				break
			end
		end
		return formatted
	end
		  
	function round(val, decimal)
		if (decimal) then
		  return math.floor( (val * 10^decimal) + 0.5) / (10^decimal)
		else
			return math.floor(val+0.5)
		end
	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["использовать"] 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

		-- Основные параметры
		-- Данный код автоматически рассчитывает параметры предмета за счет уровня предмета
		-- Пример: 0.75 * на уровень предмета (1200) = +900 к критическому урону
		-- каждый один уровень добавляет 0.75/0.90 к параметру/общему рейтенгу

		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 basic_value_stat
					
			-- Шея, Пояс
			if mw.ustring.find(args.item_categories, "[шШ]ея") or mw.ustring.find(args.item_categories, "[пП]ояс") then
				basic_value_stat = round(0.75 * string.gsub(args["уровень предмета"], ",", ""))

			-- Голова, Руки, Доспехи, Ноги
			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, "[нН]оги") then
				if number_of_stats == 3 then
					basic_value_stat = round(0.3 * string.gsub(args["уровень предмета"], ",", ""))
				else				
					basic_value_stat = round(0.45 * string.gsub(args["уровень предмета"], ",", ""))
				end

			-- Артефакт
			elseif mw.ustring.find(args.item_categories, "[аА]ртефакт") then
				basic_value_stat = round(0.75 * string.gsub(args["уровень предмета"], ",", ""))

			-- Сфера, Талисман, Икона, Священный символ, Клинок, Дальний бой, Щит, Гримуар, Темляк
			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, "[щЩ]ит") or mw.ustring.find(args.item_categories, "[гГ]римуар") or mw.ustring.find(args.item_categories, "[тТ]емляк") then
				basic_value_stat = round(0.75 * string.gsub(args["уровень предмета"], ",", ""))

			-- Кольцо
			elseif mw.ustring.find(args.item_categories, "[кК]ольцо") then
				basic_value_stat = round(0.75 * string.gsub(args["уровень предмета"], ",", ""))
			end

	 		-- Значение дополнительного параметра
			local value_stat
			
			-- Шея, Пояс
			if mw.ustring.find(args.item_categories, "[шШ]ея") or mw.ustring.find(args.item_categories, "[пП]ояс") then
				value_stat = round(0.75 * string.gsub(args["уровень предмета"], ",", ""))

			-- Голова, Руки, Доспехи, Ноги
			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, "[нН]оги") then
				if number_of_stats == 1 then
					value_stat = round(0.75 * string.gsub(args["уровень предмета"], ",", ""))
				elseif number_of_stats == 3 then
					value_stat = round(0.225 * string.gsub(args["уровень предмета"], ",", ""))
				elseif not mw.ustring.find(args["параметры"], "[bB]asic") then
					value_stat = round(0.375 * string.gsub(args["уровень предмета"], ",", ""))
				else				
					value_stat = round(0.30 * string.gsub(args["уровень предмета"], ",", ""))
				end

			-- Кольцо
			elseif mw.ustring.find(args.item_categories, "[кК]ольцо") then
				if number_of_stats == 1 then
					value_stat = round(3 * string.gsub(args["уровень предмета"], ",", ""))
				else				
					value_stat = round(0.75 * string.gsub(args["уровень предмета"], ",", ""))
				end

			-- Рубаха, Штаны
			elseif mw.ustring.find(args.item_categories, "[рР]убаха") or mw.ustring.find(args.item_categories, "[шШ]таны") then
				if number_of_stats == 1 then
					value_stat = round(1.5 * string.gsub(args["уровень предмета"], ",", ""))
				else				
					value_stat = round(0.75 * string.gsub(args["уровень предмета"], ",", ""))
				end

			-- Артефакт
			elseif mw.ustring.find(args.item_categories, "[аА]ртефакт") then
				value_stat = round(0.75 * string.gsub(args["уровень предмета"], ",", ""))
				
			-- Сфера, Талисман, Икона, Священный символ, Клинок, Дальний бой, Щит, Гримуар, Темляк
			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, "[щЩ]ит") or mw.ustring.find(args.item_categories, "[гГ]римуар") or mw.ustring.find(args.item_categories, "[тТ]емляк") then
				value_stat = round(0.75 * string.gsub(args["уровень предмета"], ",", ""))

			-- Значение по умолчанию
			else
				value_stat = round(0.75 * string.gsub(args["уровень предмета"], ",", ""))
			end

			local item_level = string.gsub(args["уровень предмета"], "%,", "")

			if mw.ustring.find(args["параметры"], "[тТ]очность") then
				if table.find(item_stats, "боевое преимущество") and tonumber(item_level) < 1000 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, "[сС]вященный символ") 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
					fields_cargo["stat_accuracy"] = value_stat / 2
					group
					:tag('span')
						:wikitext("+".. value_stat / 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"] = basic_value_stat / 1.5
					group
						:tag('span')
							:wikitext("+" .. comma_value(basic_value_stat / 1.5) ..' <span class="slate">Точность</span>')
							:tag('br')
							:done()					
				elseif table.find(item_stats, "точность basic") 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_accuracy"] = basic_value_stat
					group
						:tag('span')
							:wikitext("+" .. comma_value(basic_value_stat) ..' <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"] = basic_value_stat * 3
						group
							:tag('span')
								:wikitext("+" .. comma_value(basic_value_stat * 3) ..' <span class="slate">Точность</span>')
								:tag('br')
								:done()
				elseif mw.ustring.find(args.item_categories, "[кК]ольцо") then
					fields_cargo["stat_accuracy"] = basic_value_stat
					group
						:tag('span')
							:wikitext("+" .. comma_value(basic_value_stat) ..' <span class="slate">Точность</span>')
							:tag('br')
							:done()
				else
					fields_cargo["stat_accuracy"] = value_stat
					group
					:tag('span')
						:wikitext("+" .. comma_value(value_stat) .. ' <span class="slate">Точность</span>')
						:tag('br')
						:done()	
				end
			end
			if table.find(item_stats, "боевое преимущество") or table.find(item_stats, "боевое преимущество basic") 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"] = basic_value_stat / 1.5
					group
						:tag('span')
							:wikitext("+" .. comma_value(basic_value_stat / 1.5) ..' <span class="slate">Боевое преимущество</span>')
							:tag('br')
							:done()
				elseif table.find(item_stats, "боевое преимущество basic") and not (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, "[дД]альний бой") 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
					fields_cargo["stat_combat_advantage"] = basic_value_stat
					group
						:tag('span')
							:wikitext("+" .. comma_value(basic_value_stat) ..' <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"] = basic_value_stat * 3
					group
						:tag('span')
							:wikitext("+" .. comma_value(basic_value_stat * 3) ..' <span class="slate">Боевое преимущество</span>')
							:tag('br')
							:done()
				elseif mw.ustring.find(args.item_categories, "[кК]ольцо") then
					fields_cargo["stat_combat_advantage"] = basic_value_stat
					group
						:tag('span')
							:wikitext("+" .. comma_value(basic_value_stat) ..' <span class="slate">Боевое преимущество</span>')
							:tag('br')
							:done()		
				else
					fields_cargo["stat_combat_advantage"] = value_stat
					group
					:tag('span')
						:wikitext("+" .. comma_value(value_stat) .. ' <span class="slate">Боевое преимущество</span>')
						:tag('br')
						:done()
				end		
			end
			if mw.ustring.find(args["параметры"], "[вВ]ероятность критического удара") then
				if table.find(item_stats, "боевое преимущество") and tonumber(item_level) < 1000 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, "[сС]вященный символ") 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
					fields_cargo["stat_crit_chance"] = value_stat / 2
					group
					:tag('span')
						:wikitext("+".. value_stat / 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"] = basic_value_stat / 1.5
					group
						:tag('span')
							:wikitext("+" .. comma_value(basic_value_stat / 1.5) ..' <span class="slate">Вероятность критического удара</span>')
							:tag('br')
							:done()
				elseif table.find(item_stats, "вероятность критического удара basic") 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"] = basic_value_stat
					group
						:tag('span')
							:wikitext("+" .. comma_value(basic_value_stat) ..' <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"] = basic_value_stat * 4
						group
							:tag('span')
								:wikitext("+" .. comma_value(basic_value_stat * 4) ..' <span class="slate">Вероятность критического удара</span>')
								:tag('br')
								:done()
					else
						fields_cargo["stat_crit_chance"] = basic_value_stat * 3
						group
							:tag('span')
								:wikitext("+" .. comma_value(basic_value_stat * 3) ..' <span class="slate">Вероятность критического удара</span>')
								:tag('br')
								:done()
					end
				elseif mw.ustring.find(args.item_categories, "[кК]ольцо") then
					fields_cargo["stat_crit_chance"] = basic_value_stat
					group
						:tag('span')
							:wikitext("+".. comma_value(basic_value_stat) ..' <span class="slate">Вероятность критического удара</span>')
							:tag('br')
							:done()
				else
					fields_cargo["stat_crit_chance"] = value_stat
					group
					:tag('span')
						:wikitext("+" .. comma_value(value_stat) .. ' <span class="slate">Вероятность критического удара</span>')
						:tag('br')
						:done()
				end
			end
			if mw.ustring.find(args["параметры"], "[сС]ила парирования") then
				-- fields_cargo[""] = basic_value_stat
				group
				:tag('span')
					:wikitext("+" .. comma_value(value_stat) .. ' <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"] = basic_value_stat * 3
					group
						:tag('span')
							:wikitext("+" .. comma_value(basic_value_stat * 3) ..' <span class="slate">Бонус к контролю</span>')
							:tag('br')
							:done()
				else
					fields_cargo["utility_control_bonus"] = value_stat
						group
						:tag('span')
							:wikitext("+" .. comma_value(value_stat) .. ' <span class="slate">Бонус к контролю</span>')
							:tag('br')
							:done()
				end
			end		
			if table.find(item_stats, "уклонение") or table.find(item_stats, "уклонение basic") or table.find(item_stats, "уклонение secondary") then
				if table.find(item_stats, "боевое преимущество") and tonumber(item_level) < 1000 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, "[сС]вященный символ") 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
					fields_cargo["stat_deflection"] = value_stat / 2
					group
					:tag('span')
						:wikitext("+".. value_stat / 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"] = basic_value_stat / 1.5
					group
						:tag('span')
							:wikitext("+".. comma_value(basic_value_stat / 1.5) ..' <span class="slate">Уклонение</span>')
							:tag('br')
							:done()
				elseif table.find(item_stats, "уклонение basic") 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_deflection"] = basic_value_stat
					group
						:tag('span')
							:wikitext("+".. comma_value(basic_value_stat) ..' <span class="slate">Уклонение</span>')
							:tag('br')
							:done()
				elseif mw.ustring.find(args.item_categories, "[кК]ольцо") then
					fields_cargo["stat_deflection"] = basic_value_stat
					group
						:tag('span')
							:wikitext("+" .. comma_value(basic_value_stat) ..' <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, "[шШ]таны")) then
					fields_cargo["stat_deflection"] = basic_value_stat / 0.75
					group
						:tag('span')
							:wikitext("+" .. comma_value(basic_value_stat / 0.75) ..' <span class="slate">Уклонение</span>')
							:tag('br')
							:done()
				else
					fields_cargo["stat_deflection"] = value_stat
					group
					:tag('span')
						:wikitext("+" .. comma_value(value_stat) .. ' <span class="slate">Уклонение</span>')
						:tag('br')
						:done()	
				end
			end
			if mw.ustring.find(args["параметры"], "[сС]ильная сторона") then
				fields_cargo["stat_forte"] = value_stat
				group
					:tag('span')
						:wikitext("+".. comma_value(value_stat) ..' <span class="slate">Сильная сторона</span>')
						:tag('br')
						:done()	
			end
			if table.find(item_stats, "критическое уклонение") or table.find(item_stats, "критическое уклонение basic") or table.find(item_stats, "критическое уклонение secondary") then
				if table.find(item_stats, "боевое преимущество") and tonumber(item_level) < 1000 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, "[сС]вященный символ") 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
					fields_cargo["stat_crit_resist"] = value_stat / 2
					group
					:tag('span')
						:wikitext("+".. value_stat / 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"] = basic_value_stat / 1.5
					group
						:tag('span')
							:wikitext("+" .. comma_value(basic_value_stat / 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"] = basic_value_stat * 2
					group
						:tag('span')
							:wikitext("+" .. comma_value(basic_value_stat * 2) ..' <span class="slate">Критическое уклонение</span>')
							:tag('br')
							:done()
				elseif table.find(item_stats, "критическое уклонение basic") 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_resist"] = basic_value_stat
					group
						:tag('span')
							:wikitext("+" .. comma_value(basic_value_stat) ..' <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, "[шШ]таны")) then
					fields_cargo["stat_crit_resist"] = basic_value_stat / 0.75
					group
						:tag('span')
							:wikitext("+" .. comma_value(basic_value_stat / 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_crit_resist"] = basic_value_stat * 3
					group
						:tag('span')
							:wikitext("+" .. comma_value(basic_value_stat * 3) ..' <span class="slate">Критическое уклонение</span>')
							:tag('br')
							:done()
				else
					fields_cargo["stat_crit_resist"] = value_stat
					group
					:tag('span')
						:wikitext("+" .. comma_value(value_stat) .. ' <span class="slate">Критическое уклонение</span>')
						:tag('br')
						:done()	
				end
			end
			if table.find(item_stats, "критический урон") or table.find(item_stats, "критический урон basic") then
				if table.find(item_stats, "боевое преимущество") and tonumber(item_level) < 1000 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, "[сС]вященный символ") 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
					fields_cargo["stat_critical_severity"] = value_stat / 2
					group
					:tag('span')
						:wikitext("+".. value_stat / 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_critical_severity"] = basic_value_stat / 1.5
					group
						:tag('span')
							:wikitext("+" .. comma_value(basic_value_stat / 1.5) ..' <span class="slate">Критический урон</span>')
							:tag('br')
							:done()
				elseif table.find(item_stats, "критический урон basic") 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_critical_severity"] = basic_value_stat
					group
						:tag('span')
							:wikitext("+" .. comma_value(basic_value_stat) ..' <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"] = basic_value_stat * 3
					group
						:tag('span')
							:wikitext("+" .. comma_value(basic_value_stat * 3) ..' <span class="slate">Критический урон</span>')
							:tag('br')
							:done()
				elseif mw.ustring.find(args.item_categories, "[кК]ольцо") then
					fields_cargo["stat_critical_severity"] = basic_value_stat
					group
						:tag('span')
							:wikitext("+" .. comma_value(basic_value_stat) ..' <span class="slate">Критический урон</span>')
							:tag('br')
							:done()
				else
					fields_cargo["stat_critical_severity"] = value_stat
					group
					:tag('span')
						:wikitext("+" .. comma_value(value_stat) .. ' <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"] = basic_value_stat / 1.5
					group
						:tag('span')
							:wikitext("+" .. comma_value(basic_value_stat / 1.5) ..' <span class="slate">Оборона</span>')
							:tag('br')
							:done()	
				elseif table.find(item_stats, "оборона basic") 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["item_defense"] = value_stat
					group
						:tag('span')
							:wikitext("+" .. comma_value(value_stat) ..' <span class="slate">Оборона</span>')
							:tag('br')
							:done()	
				elseif table.find(item_stats, "оборона basic") and mw.ustring.find(args.item_categories, "[кК]ольцо") then
					fields_cargo["item_defense"] = value_stat *3
						group
							:tag('span')
								:wikitext("+" .. comma_value(value_stat * 3) ..' <span class="slate">Оборона</span>')
								:tag('br')
								:done()	
				else
					fields_cargo["item_defense"] = value_stat
					group
						:tag('span')
							:wikitext("+" .. comma_value(value_stat) .. ' <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_awareness"] = basic_value_stat / 1.5
					group
						:tag('span')
							:wikitext("+" .. comma_value(basic_value_stat / 1.5) ..' <span class="slate">Осведомленность</span>')
							:tag('br')
							:done()
				elseif table.find(item_stats, "осведомленность basic") 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_awareness"] = basic_value_stat
					group
						:tag('span')
							:wikitext("+" .. comma_value(basic_value_stat) ..' <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, "[шШ]таны")) then
					fields_cargo["stat_awareness"] = basic_value_stat / 0.75
					group
						:tag('span')
							:wikitext("+" .. comma_value(basic_value_stat / 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_awareness"] = basic_value_stat * 3
					group
						:tag('span')
							:wikitext("+" .. comma_value(basic_value_stat * 3) ..' <span class="slate">Осведомленность</span>')
							:tag('br')
							:done()
				elseif mw.ustring.find(args.item_categories, "[кК]ольцо") then
					fields_cargo["stat_awareness"] = basic_value_stat
					group
						:tag('span')
							:wikitext("+" .. comma_value(basic_value_stat) ..' <span class="slate">Осведомленность</span>')
							:tag('br')
							:done()						
				else
					fields_cargo["stat_awareness"] = value_stat
					group
						:tag('span')
							:wikitext("+" .. comma_value(value_stat) .. ' <span class="slate">Осведомленность</span>')
							:tag('br')
							:done()	
				end
			end
			if mw.ustring.find(args["параметры"], "[иИ]сходящее лечение") then
				if table.find(item_stats, "исходящее лечение basic") 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["outhealing"] = basic_value_stat
					group
						:tag('span')
							:wikitext("+" .. comma_value(basic_value_stat) ..' <span class="slate">Исходящее лечение</span>')
							:tag('br')
							:done()
				else
					fields_cargo["outhealing"] = value_stat
					group
						:tag('span') 
							:wikitext("+" .. comma_value(value_stat) .. ' <span class="slate">Исходящее лечение</span>')
							:tag('br')
							:done()
				end
			end		
			if mw.ustring.find(args["параметры"], "[сС]опротивляемость контролю") then
					fields_cargo["utility_control_resist "] = value_stat
					group
						:tag('span')
							:wikitext("+" .. comma_value(value_stat) .. ' <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"] = basic_value_stat / 1.5
					group
						:tag('span')
							:wikitext("+" .. comma_value(basic_value_stat / 1.5) ..' <span class="slate">Принимаемое лечение</span>')
							:tag('br')
							:done()	
				elseif table.find(item_stats, "принимаемое лечение basic") 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["utility_incoming_healing"] = basic_value_stat
						group
							:tag('span')
								:wikitext("+" .. comma_value(basic_value_stat) ..' <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"] = basic_value_stat *3
						group
							:tag('span')
								:wikitext("+" .. comma_value(basic_value_stat * 3) ..' <span class="slate">Принимаемое лечение</span>')
								:tag('br')
								:done()			
				else
					fields_cargo["utility_incoming_healing"] = value_stat
					group
							:tag('span')
						:wikitext("+" .. comma_value(value_stat) .. ' <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["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
				local basic_value_stat = comma_value(string.format("%.0f", 0.75 * string.gsub(args["уровень предмета"], ",", "")))
				group 		
					:tag('span')
						:wikitext("+" .. comma_value(basic_value_stat) ..' <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_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_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
				local basic_value_stat = comma_value(string.format("%.0f", 0.75 * string.gsub(args["уровень предмета"], ",", "")))
				group 		
					:tag('span')
						:wikitext("+" .. comma_value(basic_value_stat) ..' <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_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 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
		content:node(group):tag('br'):done()
	end
	if args["тип"] then
		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
		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, "[нН]оги") then
			local value_stat = comma_value(string.format("%.0f", 0.75 * string.gsub(args["уровень предмета"], ",", "")))
			fields_cargo["item_defense"] = value_stat
			group
				:tag('span')
					:wikitext("+" .. comma_value(value_stat) .. ' <span class="slate">Оборона</span>')
					:tag('br')
					:done()	
		end
	end
	-- Общий рейтинг
	if args["уровень предмета"] then
		if args["тип"] then
			local stat_universal = nil
			if not mw.ustring.find(args.item_categories, "[кК]ольцо") then
				stat_universal = comma_value(math.ceil(0.9 * string.gsub(args["уровень предмета"], ",", "")))
				fields_cargo["stat_universal"] = stat_universal
				group
					:tag('span')
						:wikitext("+".. stat_universal ..' <span class="slate">Общий рейтинг</span>')
						:tag('br')
						:done()
			elseif args["модуль"] == '8' and mw.ustring.find(args.item_categories, "[кК]ольцо") then
				stat_universal = comma_value(math.ceil(0.8 * string.gsub(args["уровень предмета"], ",", "")/ 2))
				fields_cargo["stat_universal"] = stat_universal
				group
					:tag('span')
						:wikitext("+".. stat_universal ..' <span class="slate">Общий рейтинг</span>')
						:tag('br')
						:done()
			elseif mw.ustring.find(args.item_categories, "[кК]ольцо") then
				stat_universal = comma_value(math.ceil(0.8 * string.gsub(args["уровень предмета"], ",", "")))
				fields_cargo["stat_universal"] = stat_universal
				group
					:tag('span')
						:wikitext("+".. stat_universal ..' <span class="slate">Общий рейтинг</span>')
						:tag('br')
						:done()	
			end
		end
	end

	if args["использовать"] then
		fields_cargo["item_use"] = args["использовать"]
		group
			:wikitext('<span class="green"">Использовать: </span>' .. args["использовать"])
			:tag('br')
			:done()
	end

	if args["на себе"] then
		if string.find(args["на себе"], ":") then
			local power_name, power_description = args["на себе"]:match("(.+):(.+)")
			fields_cargo["equip"] = args["на себе"]
			group
				:tag('span')
					:wikitext('<span style="color:#1A8000">На себе: </span><span class="green">' .. power_name .. '</span><br> ' .. power_description:gsub("критический удар", '<span class="green">критический удар</span>'):gsub("боевых", '<span class="green">боевых</span>'))
					:tag('br')
					:done()
		else
			fields_cargo["equip"] = args["на себе"]
			group
				:tag('span')
					:wikitext('<span style="color:#1A8000">На себе: </span>'.. args["на себе"])
					:tag('br')
					:done()
		end
	end
	if args["на себе2"] then
		if string.find(args["на себе"], ":") then
			local power_name, power_description = args["на себе2"]:match("(.+):(.+)")
			group
				:tag('span')
					:wikitext('<span style="color:#1A8000">На себе: </span><span class="green">' .. power_name .. '</span><br> ' .. power_description)
					:tag('br')
					:done()
		else
			fields_cargo["equip"] = args["на себе"]
			group
				:tag('span')
					:wikitext('<span style="color:#1A8000">На себе: </span>'.. args["на себе"])
					:tag('br')
					:done()
		end
	end

	-- Вспомогательный текст
	if args.item_categories then
		if mw.ustring.find( args.item_categories, "[иИ]кона" ) then
			group
				:tag('div')
					:wikitext('<span class="green">Модификация: </span>В этой ячейке будет содержаться бонусный параметр, который выбирается из нескольких особых параметров, предоставляемых эпическими и легендарными артефактами. Выберите «Управление артефактными умениями» в меню предмета, чтобы определиться, какой параметр вставить в ячейку.')
					:done()
				:tag('div')
					:wikitext('<span class="green">Модификация: </span>В этой ячейке будет содержаться усиление к одной из 10 классовых особенностей, относящихся к вашему классу. Выберите «Управление артефактными умениями» в меню предмета, чтобы определиться, какое усиление вставить в ячейку.')
					:done()
		end
	end

	-- Ячейка усиления
	if args.item_categories then
		if table.find(item_categories, "голова") or table.find(item_categories, "доспехи") or table.find(item_categories, "руки") or table.find(item_categories, "ноги") or table.find(item_categories, "шея") or table.find(item_categories, "кольцо") or table.find(item_categories, "пояс") or table.find(item_categories, "рубаха") or table.find(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 symbol = args["символ"] or 'nil'
			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 = {}

			if armor_set_powers_data[frame.args["комплект"]].set_items then
				for k, item in ipairs(armor_set_powers_data[frame.args["комплект"]].set_items) do
					set_items[k] = '<div><span class="gray" style="margin-left: 1.25em;">'.. item ..'</span></div>'
				end
			else
				for k, row in ipairs(result) do
					set_items[k] = '<div><span class="gray" style="margin-left: 1.25em;">'..row._pageName..'</span></div>'
				end
			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('style', 'vertical-align: middle; width: 90px;'):wikitext('[[Файл:' .. symbol .. '|60px|ссылка=]]'):done()
			tr:tag("td"):attr('style', 'colspan: 2; display: block; margin: 0px 0px 0px -50px'):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["комплект"]].description .. '</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 symbol = args["символ"] or 'nil'
			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('style', 'vertical-align: middle; width: 90px;'):wikitext('[[Файл:' .. symbol .. '|60px|ссылка=]]'):done()
			tr:tag("td"):attr('style', 'colspan: 2; display: block; margin: 0px 0px 0px -50px'):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["описание"] then
		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

	-- Максимальное количество и недельный лимит валюты
	if args["maximumQuantity"] or args["weeklyLimit"] then
		if args["maximumQuantity"] then
			group
			:tag('span')
				:wikitext('Максимальное количество: ' .. args["maximumQuantity"])
				:tag('br')
				:done()
		end
		if args["weeklyLimit"] then
			group
			:tag('span') 
				:wikitext('Недельный лимит: ' .. args["weeklyLimit"])
				:tag('br')
				:done()
		end
		content:node(group):tag('br'):done()
	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["locations"] then

		local locations = {}
			
		for location in mw.text.gsplit(args["locations"], ";%s*") do
			table.insert(locations, mw.text.nowiki('* ') .. location)
		end

		fields_cargo["locations"] = args["locations"]
		content 		
			:tag('div') 
				:attr('class', 'gold locations')
				:wikitext('<hr>\nЭто можно найти здесь:\n\n' .. table.concat(locations, '\n'))
	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