模块:EnemyCategory

来自PRTS
跳转到导航 跳转到搜索

此模块的文档可以在模块:EnemyCategory/doc创建

local p = {}
local getArgs = require("Module:Arguments").getArgs

function output(enemys, lc, width)
	local result = '|'
	for k,v in ipairs(enemys) do
		result = result .. mw.getCurrentFrame():expandTemplate{title = '敌人头像', args={(v[3] == 'true') and '无头像' or v[1], index=v[2], px=width, link=v[1]}}
		if k % lc == 0 and k ~= #(enemys) then
			result = result .. '\n|-\n|'
		elseif k ~= #(enemys) then
			result = result .. '\n|'
		else result = result .. '\n'
		end
	end
	local flag = #(enemys) % lc
	if flag == 0 then
		flag = lc
	end
	for i=flag, lc - 1, 1 do
		result = result .. '|\n'
	end
	return result
end

function p.enemy(frame)
	local args = getArgs(frame)
	local lc = args['数量'] or 6
	local width = args['宽度'] or 120
	local extraEnemy = args['敌人'] or ""
	
	local events = mw.text.split(args[1] or "", ";;");
	local exEnemys = mw.text.split(extraEnemy, ";;")
	local enemys = {}
	for k,v in ipairs(events) do
		local enemysdata = mw.getCurrentFrame():callParserFunction('#ask', '[[分类:'..v..'登场的敌人]]', '?', '?编号', '?无头像', 'format=array', 'limit=100', 'link=none', 'sep=;', 'propsep=:', 'sort=id')
		enemysdata = mw.text.split(enemysdata, ';')
		for ki,vi in ipairs(enemysdata) do
			if vi ~= nil and vi ~= "" then
				table.insert(enemys, mw.text.split(vi, ":"))
			end
		end
	end
	for k,v in ipairs(exEnemys) do
		local enemysdata = mw.getCurrentFrame():callParserFunction('#show', v, '?', '?编号', '?无头像', 'format=array', 'link=none', 'sep=;', 'propsep=:')
		enemysdata = mw.text.split(enemysdata, ';')
		for ki,vi in ipairs(enemysdata) do
			if vi ~= nil and vi ~= "" then
				table.insert(enemys, mw.text.split(vi, ":"))
			end
		end
	end
	--mw.logObject(enemys)
	
	return output(enemys, lc, width)
end

function p.enemyFreeInput(frame)
	local args = getArgs(frame)
	local lc = args['数量'] or 6
	local width = args['宽度'] or 120
	
	local enemySrcData = mw.text.split(args[1], ";;");
	local enemys = {}
	for k,v in ipairs(enemySrcData) do
		local enemysdata = mw.getCurrentFrame():callParserFunction('#show', v, '?', '?编号', '?无头像', 'format=array', 'link=none', 'sep=;', 'propsep=:')
		enemysdata = mw.text.split(enemysdata, ';')
		for ki,vi in ipairs(enemysdata) do
			if vi ~= nil and vi ~= "" then
				table.insert(enemys, mw.text.split(vi, ":"))
			end
		end
	end
	--mw.logObject(enemys)
	
	return output(enemys, lc, width)
end

function p.bg(frame)
	local args = getArgs(frame)
	local event = args[1]
	local data = mw.text.jsonDecode(mw.title.new( '光荣之路/data' ):getContent())
	local groups = data['medalGroup']
	for k,v in pairs(groups) do
		local binds = v['bindEvent']
		for i,e in pairs(binds) do
			if e == event then
				return v['background']
			end
		end
	end
	return ""
end

return p