Neverwinter Wiki
Advertisement

Для документации этого модуля может быть создана страница Модуль:Item/doc

local getArgs = require('Модуль:Arguments').getArgs
local powersData = mw.loadData('Module:Mount/Powers')
local armorSetPowersData = mw.loadData('Модуль:Item/ArmorSetPowersData')
local weaponSetPowersData = mw.loadData('Модуль:Item/WeaponSetPowersData')
local companionPowersData = mw.loadData('Module:Companion/Powers')

local p = {}
local h = {}

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

-------------------------------------------------------------------------
--- Check to see if the data module is loaded
-------------------------------------------------------------------------
function checkDataLoaded()
	if (data == nil)  then
		error("Data is not loaded!")
		return false
	end

	return true
end

-------------------------------------------------------------------------
--- Начало функции Item
-------------------------------------------------------------------------
function p.item(frame)
    local args = getArgs(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 itemQuality = {
		["обычный"] = 'common',	
		["необычный"] = 'uncommon',
		["редкий"] = 'rare',
		["эпический"] = 'epic',
		["легендарный"] = 'legendary',
		["мифический"] = 'mythic',
	}

-------------------------------------------------------------------------
--- Название предмета
-------------------------------------------------------------------------
	if args["качество"] then
	    group = h.Group() 
	        :tag('div') 
	            :attr('class', 'title')
		        :tag('span') 
	            :attr('class', itemQuality[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
		group 		
			:tag('div') 
				:attr('class', 'white itemlevel')
				:wikitext('Уровень предмета: ' .. args["уровень предмета"])
				:tag('br')
				:done()
	end

-------------------------------------------------------------------------
--- Уровень волшебного/рунного камня (устаревшая версия, больше не используют в игре)
-------------------------------------------------------------------------
	--[[if mw.ustring.lower(args.itemCategories) == "волшебный камень" or mw.ustring.lower(args.itemCategories) == "рунный камень" then
		local rank = {
			["1"] = "10",
			["2"] = "20",
	        ["3"] = "30",
	        ["4"] = "40",
	        ["5"] = "50",
	        ["6"] = "60",
	        ["7"] = "70",
	        ["8"] = "80",
	        ["9"] = "90",
	        ["10"] = "100",
	        ["11"] = "120",
		    ["12"] = "140",
		    ["13"] = "160",
	        ["14"] = "180",
	        ["15"] = "200",
		}
		group 		
			:tag('div') 
				:attr('class', 'white itemlevel')
				:wikitext("Уровень предмета:" .. rank[args["ранг"]]--)
				--:tag('br'):done()
	--end

-------------------------------------------------------------------------
--- Привязка предмета
-------------------------------------------------------------------------
	if args["привязка"] then
		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
		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.itemCategories  then
		if mw.ustring.find( args.itemCategories, "[тТ]олько для спутников" ) then
			content
		        :tag('div') 
		            :attr('class', 'right gold')
		            :wikitext('Только для спутников')
		            :tag('br')
		            :done()
	    elseif mw.ustring.find( args.itemCategories, "[кК]упон") then
			content 	
		        :tag('div')
		            :attr('class', 'right green')
					:wikitext('Дважды щелкните,<br>чтобы использовать купон')
					:tag('br')
					:done()
		--[[elseif mw.ustring.lower(args.itemCategories) == "волшебный камень" then
			group = h.Group() 	
		        :tag('div')
					:wikitext('Когда применяется к предмету:')
					:tag('br')
					:done()
			content:node(group):tag('br'):done()
		elseif mw.ustring.lower(args.itemCategories) == "рунный камень" then
			group = h.Group() 	
		        :tag('div')
					:wikitext('Когда применяется к экипировке спутника:')
					:tag('br')
					:done()
			content:node(group):tag('br'):done()]]--
		elseif mw.ustring.find( args.itemCategories, "[бБ]есплатное изменение внешнего вида" ) 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.itemCategories, "[аА]ртефакт") 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>' .. 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.itemCategories == "Артефакт" or args.itemCategories == "артефакт" then
		local rank = {
			["необычный"] = '180',
			["редкий"] = '160',
			["эпический"] = '140',
			["легендарный"] = '120',
			["мифический"] = '60',
		}
		content 		
			:wikitext('<span class="beige" style="display: block;">Время восстановления: ' .. rank[args["качество"]] .. 'с</span>')
			:tag('br')
			:done()
	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["на себе2"] or args["использовать"] then
		group = h.Group('stats')


		if args["умение усиления"] then
			if companionPowersData[args["умение усиления"]] == nil then
				group
					:wikitext('<span class="green">Умение усиления: </span> '..  args["умение усиления"])
					:tag('br')
					:done()
			elseif companionPowersData[args["умение усиления"]].quality == nil then
				group
					:wikitext('<span class="green">Умение усиления: </span> '..  companionPowersData[args["умение усиления"]])
						:tag('br')
						:done()
			else
				group
					:wikitext('<span class="green">Умение усиления: </span> '..  companionPowersData[args["умение усиления"]].quality[itemQuality[mw.ustring.lower(args["качество"])]])
					:tag('br')
					:done()
			end
		end
		if args["бонусное умение игрока"] then
			if companionPowersData[args["бонусное умение игрока"]] == nil then
				group
					:wikitext('<span class="green">Бонусное умение игрока: </span> '..  args["бонусное умение игрока"])
					:tag('br')
					:done()
			elseif companionPowersData[args["бонусное умение игрока"]].quality == nil then
				group
					:wikitext('<span class="green">Бонусное умение игрока: </span> '..  companionPowersData[args["бонусное умение игрока"]])
					:tag('br')
					:done()
			else
				group
					:wikitext('<span class="green">Бонусное умение игрока: </span> '..  companionPowersData[args["бонусное умение игрока"]].quality[itemQuality[mw.ustring.lower(args["качество"])]])
					:tag('br')
					:done()
			end
		end

-------------------------------------------------------------------------
--- Умения скакуна
-------------------------------------------------------------------------
		if args["боевое умение"] then
			if mw.ustring.find( args.itemCategories, "[сС]какун" ) then
				if powersData[args["боевое умение"]] == nil then
					group
						:wikitext('<span class="green">Боевое умение: </span> '.. args["боевое умение"])
						:tag('br')
						:done()
				else
					group
						:wikitext('<span class="green">Боевое умение: </span> '.. powersData[args["боевое умение"]])
						:tag('br')
						:done()	
					end		
				end
			end
		if args["умение экипировки"] then
			if mw.ustring.find( args.itemCategories, "[сС]какун" ) then
				if powersData[args["умение экипировки"]] == nil then
					group
						:wikitext('<span class="green">Умение экипировки: </span> '.. args["умение экипировки"])
						:tag('br')
						:done()
				else
					group
						:wikitext('<span class="green">Умение экипировки: </span> '.. powersData[args["умение экипировки"]])
						:tag('br')
						:done()
					end
				end
			end

-------------------------------------------------------------------------
--- Общий рейтинг
-------------------------------------------------------------------------
		if args["общий рейтинг"] then
			group
				:wikitext("+".. args["общий рейтинг"] ..' <span class="slate">Общий рейтинг</span>')
				:tag('br')
				:done()
		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"
		}

-------------------------------------------------------------------------
--- Основные параметры
-------------------------------------------------------------------------
		if args["максимум хитов"]  then
			if mw.ustring.lower(args.itemCategories) == "волшебный камень" or mw.ustring.lower(args.itemCategories) == "рунный камень" 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.itemCategories) == "волшебный камень" or mw.ustring.lower(args.itemCategories) == "рунный камень" 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.itemCategories) == "волшебный камень" or mw.ustring.lower(args.itemCategories) == "рунный камень" 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.itemCategories) == "волшебный камень" or mw.ustring.lower(args.itemCategories) == "рунный камень" 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
			if mw.ustring.lower(args.itemCategories) == "волшебный камень" or mw.ustring.lower(args.itemCategories) == "рунный камень" 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.itemCategories) == "волшебный камень" or mw.ustring.lower(args.itemCategories) == "рунный камень" 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.itemCategories) == "волшебный камень" or mw.ustring.lower(args.itemCategories) == "рунный камень" 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.itemCategories) == "волшебный камень" or mw.ustring.lower(args.itemCategories) == "рунный камень" 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.itemCategories) == "волшебный камень" or mw.ustring.lower(args.itemCategories) == "рунный камень" 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.itemCategories) == "волшебный камень" or mw.ustring.lower(args.itemCategories) == "рунный камень" 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.itemCategories) == "волшебный камень" or mw.ustring.lower(args.itemCategories) == "рунный камень" 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.itemCategories) == "волшебный камень" 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.itemCategories) == "волшебный камень" 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.itemCategories) == "волшебный камень" 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.itemCategories) == "волшебный камень" then
				group 		
					:tag('span')
						:wikitext('<span class="green">Полезное: </span>+' .. args["жажда золота"] .. ' <span class="slate">Жажда золота</span>')
						:tag('br')
						:done()
			end
		end
		if args["сильная сторона"] then
			if mw.ustring.lower(args.itemCategories) == "волшебный камень" 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.itemCategories) == "волшебный камень" or mw.ustring.lower(args.itemCategories) == "рунный камень" 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
			if mw.ustring.lower(args.itemCategories) == "волшебный камень" or mw.ustring.lower(args.itemCategories) == "рунный камень" 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
			group 		
				:tag('span') 
					:wikitext('+' .. args["сила"] .. ' <span class="slate">СИЛ</span>')
					:tag('br')
					:done()
		end
		if args["выносливость"] then
			group 		
				:tag('span') 
					:wikitext('+' .. args["выносливость"] .. ' <span class="slate">ВЫН</span>')
					:tag('br')
					:done()
		end
		if args["ловкость"] then
			group 		
				:tag('span') 
					:wikitext('+' .. args["ловкость"] .. ' <span class="slate">ЛОВ</span>')
					:tag('br')
					:done()
		end
		if args["интеллект"] then
			group 		
				:tag('span') 
					:wikitext('+' .. args["интеллект"] .. ' <span class="slate">ИНТ</span>')
					:tag('br')
					:done()
		end
		if args["мудрость"] then
			group 		
				:tag('span') 
					:wikitext('+' .. args["мудрость"] .. ' <span class="slate">МДР</span>')
					:tag('br')
					:done()
		end
		if args["обаяние"] then
			group 		
				:tag('span') 
					:wikitext('+' .. args["обаяние"] .. ' <span class="slate">ОБА</span>')
					:tag('br')
					:done()
		end
		if args["использовать"] then
			group
					:wikitext('<span class="green"">Использовать: </span>' .. args["использовать"])
					:tag('br')
					:done()
		end
	--[[if mw.ustring.lower(args.itemCategories) == "волшебный камень" then
			if args["могущество"] or args["критический урон"] or args["вероятность критического удара"] or args["боевое преимущество"] or args["точность"] then
				group
					:tag('span')
						:wikitext('<span class="green">Атака: </span>+' .. rankEnchantment[args["ранг"]]
						-- .. ' <span class="slate">Общий рейтинг</span>')
						--:tag('br')
						--:done()
				--end
			--end
			--[[if args["оборона"] or args["осведомленность"] or args["критическое уклонение"] or args["максимум хитов"] or args["уклонение"] then
				group
					:tag('span')
						:wikitext('<span class="green">Оборона: </span>+' .. rankEnchantment[args["ранг"]]--
						--[[ .. ' <span class="slate">Общий рейтинг</span>')
						:tag('br')
						:done()
			end
			if args["сильная сторона"] or args["скорость движения"] or args["жажда славы"] or args["жажда золота"] or args["принимаемое лечение"] then
				group
					:tag('span')
						:wikitext('<span class="green">Полезность: </span>+' .. rankEnchantment[args["ранг"]] 
						--[[.. ' <span class="slate">Общий рейтинг</span>')
						:tag('br')
						:done()
			end]]--
		if args["на себе"] then
			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["время восстановления"] then
			content
				:wikitext('<span class="beige" style="display: block;">Время восстановления: ' .. args["время восстановления"] .. 'с</span>')
				:done()
		end

-------------------------------------------------------------------------
--- Ячейка усиления
-------------------------------------------------------------------------
if args.itemCategories then
	if mw.ustring.find( args.itemCategories, "[гГ]олова") or mw.ustring.find( args.itemCategories, "[дД]оспехи") or mw.ustring.find( args.itemCategories, "[рР]уки") or mw.ustring.find( args.itemCategories, "[нН]оги") or mw.ustring.find( args.itemCategories, "[шШ]ея") or mw.ustring.find( args.itemCategories, "[кК]ольцо") or mw.ustring.find( args.itemCategories, "[пП]ояс") or mw.ustring.find( args.itemCategories, "[рР]убаха") or mw.ustring.find( args.itemCategories, "[шШ]таны") 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
		group = h.Group()
		if (args["комплект"] == nil) then
			return ""
		end
		
		if mw.ustring.find( args.itemCategories, "[шШ]ея" ) or mw.ustring.find( args.itemCategories, "[пП]ояс" ) or mw.ustring.find( args.itemCategories, "[аА]ртефакт" ) then
		
			local tbl = mw.html.create('table')

			tables = 'Items'
			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 setItems = {}
			for k,row in ipairs(result) do
				setItems[k] = '<div><span class="gray" style="margin-left: 1.25em;">'..row._pageName..'</span></div>'
			end

			itemSet = 0
			for k,v in pairs(result) do
				itemSet = itemSet + 1
			end

			tr = tbl:tag("tr")
			tr:tag("td"):attr("colspan", "2"):wikitext('<div>Часть комплекта «' .. frame.args["комплект"] .. '» (0/'.. itemSet ..')</div>'.. table.concat(setItems)):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">'.. itemSet ..' из комплекта:</span>'):done()
			tr:tag("td"):wikitext('<span class="gray"> ' .. armorSetPowersData[frame.args["комплект"]] .. '</span>'):done()

			group
				:tag('span')
					:attr("style", "display: block;")
					:wikitext(tostring(tbl))
					:tag('br')
					:done()

		elseif mw.ustring.find( args.itemCategories, "[оО]ружие" ) or mw.ustring.find( args.itemCategories, "[тТ]емляк" ) or mw.ustring.find( args.itemCategories, "[иИ]кона" ) or mw.ustring.find( args.itemCategories, "[тТ]алисман" ) or mw.ustring.find( args.itemCategories, "[щЩ]ит" ) or mw.ustring.find( args.itemCategories, "[гГ]римуар" ) then
			
			tables = 'Items'
    		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 setItems = {}
		    for k,row in ipairs(result) do
		        setItems[k] = '<div><span class="gray" style="margin-left: 1.25em;">'..row._pageName..'</span></div>'
		    end
		   
			local tbl = mw.html.create('table')

			tr = tbl:tag("tr")
			tr:tag("td"):attr("colspan", "2"):wikitext('<div>Часть комплекта «' .. frame.args["комплект"] .. '» (0/2)</div>\n' .. table.concat(setItems)):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">2 из комплекта:</span>'):done()
			tr:tag("td"):wikitext('<span class="gray"> ' .. weaponSetPowersData[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.itemCategories then
		if mw.ustring.lower(args.itemCategories) == "скакун"  then
			group = h.Group('slots')
				if args["ячейка1"] then
					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
					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
					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
	end

-------------------------------------------------------------------------
--- Ячейка предмета усиления
-------------------------------------------------------------------------
    --[[if args["ячейка усиления"] then
		group = h.Group()
			:tag('div')
				:wikitext('<span class="green">Ячейка усиления</span>: ' .. args["ячейка усиления"])
				:done()	
		content:node(group):tag('br'):done()
	end]]--

-------------------------------------------------------------------------
--- Вспомогательный текст для сундука
-------------------------------------------------------------------------
	if args.itemCategories then
		if mw.ustring.find(args.itemCategories, "[с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
	end

-------------------------------------------------------------------------
--- Содержимое сундуков/наборов
-------------------------------------------------------------------------
	if args["содержимое"] then
		group = h.Group()
			:tag('div')
				:attr('class', '')
				:wikitext(args["содержимое"])
				:done()
		content:node(group):tag('br'):done()
	end

-------------------------------------------------------------------------
--- Вспомогательный текст для сундука
-------------------------------------------------------------------------
	if args.itemCategories then
		if mw.ustring.find(args.itemCategories, "[с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
	end
    
-------------------------------------------------------------------------
--- Описание предмета
-------------------------------------------------------------------------
	if args.itemCategories then
	 	if args["описание"] then
			if mw.ustring.find(args.itemCategories, "[аА]ртефакт") 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
		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.itemCategories then
	if mw.ustring.find( args.itemCategories, "[кК]упон" ) then
		group = h.Group()
			:tag('span') 
				:wikitext('Посетите рынок ZEN, чтобы использовать купон!<br><br>При покупке можно использовать только один купон. Действие купона не суммируется со специальными скидками. Применяется та скидка, что дает больший эффект.')
				:tag('br')
				:done()
		content:node(group):tag('br'):done()
	end
end

-------------------------------------------------------------------------
--- Флаги предмета
-------------------------------------------------------------------------
	if args.itemCategories then 
    	local itemTypes = {}
		for i in mw.text.gsplit(args.itemCategories, ",%s*") do
			table.insert(itemTypes, mw.getContentLanguage():ucfirst(i))
		end
    	content
	        :tag('div') 
	            :attr('class', 'left')
           		:wikitext(table.concat(itemTypes, ", "))
	            :done()
    end

-------------------------------------------------------------------------
--- Ранг волшебного/рунного камня
-------------------------------------------------------------------------
	if args.itemCategories  then
		if mw.ustring.find( args.itemCategories, "[уУ]дивительный предмет" ) 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
	end
	if args.itemCategories then
	if mw.ustring.lower(args.itemCategories) == "волшебный камень" or mw.ustring.lower(args.itemCategories) == "рунный камень" then
		if args["усиление оружия"] or args["усиление доспехов"] then
			content 		
				:tag('span') 
					:attr('class', 'left')
					:wikitext("Ранг: " .. args["ранг"] .. " (максимум)")
		else		
			if mw.ustring.sub(mw.title.getCurrentTitle().text, 0, 7) == 'Осколок' then
				content 		
					:tag('span') 
						:attr('class', 'left')
						:wikitext(args["ранг"] .. ' <span class="green">- все готово к улучшению!</span>')
			elseif args["ранг"] == "15" then
				content 		
					:tag('span') 
						:attr('class', 'left')
						:wikitext("Ранг: " .. args["ранг"].. " (максимум)")
			elseif args["ранг"] then			
				local rank = {
					["1"] = "2",
					["2"] = "5",
					["3"] = "20",
					["4"] = "75",
					["5"] = "300",
					["6"] = "1,200",
					["7"] = "5,000",
					["8"] = "15,000",
					["9"] = "30,000",
					["10"] = "40,000",
					["11"] = "50,000",
					["12"] = "55,000",
					["13"] = "60,000",
					["14"] = "65,000"
				}
				content 		
					:tag('span') 
						:attr('class', 'left')
						:wikitext("Ранг: " .. args["ранг"].. " (0/" .. rank[args["ранг"]] .. " до следующего ранга)")
			end
		end
	end
end

-------------------------------------------------------------------------
--- Требуемый класс
-------------------------------------------------------------------------
    if args["требуется класс"] then 
    	local requiresClass = {}
		for i in mw.text.gsplit(args["требуется класс"], ",%s*") do
			table.insert(requiresClass, mw.getContentLanguage():ucfirst(i))
		end
    	content
	        :tag('div') 
	            :attr('class', 'left')
           		:wikitext('Требуется класс: ' .. table.concat(requiresClass, ", "))
	            :done()
    end

-------------------------------------------------------------------------
--- Требуемый уровень
-------------------------------------------------------------------------
    if args["минимальный уровень"] then
	    content 		
	        :tag('div') 
	            :attr('class', 'left')
	            :wikitext('Минимальный уровень: ' .. args["минимальный уровень"])
	else
		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

-------------------------------------------------------------------------
--- Получаемые очки обработки при преобразовании предмета
-------------------------------------------------------------------------
    if args["очки обработки"] then
		content 		
			:tag('div') 
				:attr('class', 'right')
				:wikitext('[[Файл:Currency_Icon_Refinementpoints.png|x14px|ссылка=]]&nbsp;' .. args["очки обработки"])
    end
    if args["иконка"] then
		content 		
			:tag('div') 
				:attr('style', 'text-align: center')
				:wikitext('[[Файл:' .. args["иконка"] .. '|64px|ссылка=]]')
    end
    container:node(content)

	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

-------------------------------------------------------------------------
--- Данная функция проверяет на схожесть три ячейки скакуна со списка бонусов знака, если у скакуна совпадают ячейки со списком бонусов знака, то они добавляются в подсказку предмета.
--- Коротко: упрощает процесс добавления списка бонусов знака (всевозможные комбинации ячеек).
-------------------------------------------------------------------------

function p.InsigniaBonus( frame )
	tables = 'Insignia_bonuses'
    fields = '_pageName, name, slot1, slot2, slot3, description'
    local args = {
        --where='',
        orderBy = '_pageName',
    }
    local result = cargo.query( tables, fields, args )
    local r = result[1]
    local text = {}
	for k, v in ipairs(result) do
		if frame.args[1] == v.slot1 and frame.args[2] == v.slot2 and frame.args[3] == v.slot3 then
			text[k] = v._pageName .. ', '
		elseif frame.args[1] == v.slot2 and frame.args[2] == v.slot1 and frame.args[3] == v.slot3 then
			text[k] = v._pageName .. ', '
		elseif frame.args[1] == v.slot1 and frame.args[2] == v.slot3 and frame.args[3] == v.slot2 then
			text[k] = v._pageName .. ', '	
		elseif frame.args[1] == v.slot3 and frame.args[2] == v.slot1 and frame.args[3] == v.slot2 then
			text[k] = v._pageName .. ', '
		elseif frame.args[1] == v.slot3 and frame.args[2] == v.slot2 and frame.args[3] == v.slot1 then
			text[k] = v._pageName .. ', '			
		elseif frame.args[1] == v.slot1 and frame.args[2] == v.slot2 and frame.args[3] == 'Универсальная ячейка' then
			text[k] = v._pageName .. ', '
		elseif frame.args[1] == v.slot1 and frame.args[2] == v.slot3 and frame.args[3] == 'Универсальная ячейка' then
			text[k] = v._pageName .. ', '			
		elseif frame.args[1] == v.slot2 and frame.args[2] == v.slot1 and frame.args[3] == 'Универсальная ячейка' then
			text[k] = v._pageName .. ', '
		elseif frame.args[1] == v.slot2 and frame.args[2] == v.slot3 and frame.args[3] == 'Универсальная ячейка' then
			text[k] = v._pageName .. ', '
		elseif frame.args[1] == v.slot3 and frame.args[2] == v.slot2 and frame.args[3] == 'Универсальная ячейка' then
			text[k] = v._pageName .. ', '		
		elseif frame.args[1] == v.slot3 and frame.args[2] == v.slot1 and frame.args[3] == 'Универсальная ячейка' then
			text[k] = v._pageName .. ', '
		elseif frame.args[1] == v.slot1 and frame.args[2] == 'Универсальная ячейка' and frame.args[3] == 'Универсальная ячейка' then
			text[k] = v._pageName .. ', '
		elseif frame.args[1] == v.slot2 and frame.args[2] == 'Универсальная ячейка' and frame.args[3] == 'Универсальная ячейка' then
			text[k] = v._pageName .. ', '
		elseif frame.args[1] == v.slot3 and frame.args[2] == 'Универсальная ячейка' and frame.args[3] == 'Универсальная ячейка' then
			text[k] = v._pageName .. ', '
		elseif frame.args[1] == 'Универсальная ячейка' and frame.args[2] == 'Универсальная ячейка' and frame.args[3] == 'Универсальная ячейка' then
			text[k] = v._pageName .. ', '
		else
			text[k] = ''
		end
    end
    return table.concat(text)
end

return p
Advertisement