Module:Partnertable:修订间差异

来自Arcaea中文维基
无编辑摘要
(新增 觉醒画师 参数)
 
(未显示3个用户的26个中间版本)
第11行: 第11行:
end
end


function update(version,device,awakenyes,version2)
function update(version,device,awakenyes,version2) --更新时间
if device == 'ns'
if device == 'ns'
then
then
return '<div class="date-box"><div>'..labelText('NS版')..'</div><div>'..version..'</div><div></div></div>'
if awakenyes and version~= version2 and version2
then
return '<div class="date-box"><div>'..labelText('NS版')..'</div><div>搭档:'..version..'<br />觉醒形态:'..version2..'</div><div></div></div>'
end
   return '<div class="date-box"><div>'..labelText('NS版')..'</div><div>'..version..'</div><div></div></div>'
else
else
if awakenyes
if awakenyes and version~= version2 and version2
then 
then 
return '<div class="date-box"><div>'..labelText('移动版')..'</div><div>搭档:'..version..'<br />觉醒形态:'..version2..'</div><div></div></div>'
return '<div class="date-box"><div>'..labelText('移动版')..'</div><div>搭档:'..version..'<br />觉醒形态:'..version2..'</div><div></div></div>'
第24行: 第28行:
end
end


function getImage(normal,awaken,JacketArgs,awakenyes,type,size)
function skill(text,skilldiff,label)
   if skilldiff
   then
   return '<div><span class="label-text">'..label..'</span></div>'..text
   else
   return text
   end
end
 
function version(time)
   local ans
   if string.byte(time,7) == 99 or string.byte(time,7) >= 48 and string.byte(time,7) <= 57
   then if string.byte(time,8) == 99 or string.byte(time,8) >= 48 and string.byte(time,8) <= 57 then ans = 8 else ans = 7 end
   else ans = 6
   end --判定第七、八位是否为c或数字
   return string.sub(time,1,ans)
end
 
function getImage(normal,awaken,normalJacket,awakenJacket,awakenyes,type)
local container,tab=mw.html.create('div'),mw.html.create('div')
local container,tab=mw.html.create('div'),mw.html.create('div')
local tab1,tab2,part1,part2,jacket
local tab1,tab2,part1,part2,jacket
第30行: 第52行:
tab:attr( 'id','tab-'..type ) tab:addClass( 'img-tab' )
tab:attr( 'id','tab-'..type ) tab:addClass( 'img-tab' )
local Jacket=JacketArgs
local JacketNormal=normalJacket
if awaken
if awaken
then
then
tab1,tab2,part1,part2=mw.html.create('div'),mw.html.create('div'),mw.html.create('div'),mw.html.create('div')
tab1,tab2,part1,part2=mw.html.create('div'),mw.html.create('div'),mw.html.create('div'),mw.html.create('div')
 
local JacketAwaken=normalJacket
if awakenJacket
then
JacketAwaken=awakenJacket
end
tab1:wikitext('Normal') tab2:wikitext('Awaken')
tab1:wikitext('Normal') tab2:wikitext('Awaken')
tab1:addClass('img-tab-part normal') tab2:addClass('img-tab-part awaken')
tab1:addClass('img-tab-part normal') tab2:addClass('img-tab-part awaken')
第41行: 第67行:
container:wikitext(tostring(tab))
container:wikitext(tostring(tab))
part1:wikitext('[[文件:'..normal..'|'..size..'px|none]]'..labelText('画师')..Jacket) part2:wikitext('[[文件:'..awaken..'|'..size..'px|none]]'..labelText('画师')..tostring(Jacket)) 
part1:wikitext('[[文件:'..normal..'|300px|none]]'..labelText('画师')..tostring(JacketNormal)) part2:wikitext('[[文件:'..awaken..'|300px|none]]'..labelText('画师')..tostring(JacketAwaken)) 
part1:addClass('active tab-text-'..type) part2:addClass('tab-text-'..type) 
part1:addClass('active tab-text-'..type) part2:addClass('tab-text-'..type) 
container:wikitext(tostring(part1)) container:wikitext(tostring(part2)) 
container:wikitext(tostring(part1)) container:wikitext(tostring(part2)) 
第48行: 第74行:
end
end
return '<div><div class="floatnone">[[文件:'..normal..'|'..size..'px]]</div><div>'..labelText('画师')..Jacket..'</div></div>'
return '<div><div class="floatnone">[[文件:'..normal..'|300px]]</div><div>'..labelText('画师')..JacketNormal..'</div></div>'
end
end


第58行: 第84行:
function p._main(args)
function p._main(args)
local awaken
local awaken --觉醒判定
local size
local size --图片大小
local belongs
local belongs --所属单位
local skillawaken --觉醒技能
local skillsec --第二技能
if args['觉醒形态'] == '有' then awaken=true else awaken=false end
if args['觉醒形态'] == '有' then awaken=true else awaken=false end
if args[' 名称'] == ' 白姬' or args[' 名称'] == ' 凛可' then size=200 else size=300 end
if awaken and args[' 技能'] ~= args[' 觉醒技能'] and args[' 觉醒技能'] ~= nil then skillawaken=true else skillawaken=false end
if args[' 第二技能'] then skillsec=true else skillsec=false end
if args['所属曲包']
if args['所属曲包']
then
then
第69行: 第98行:
if args['所属单曲'] then belongs='所属单曲' else belongs='所属单曲/曲包' end
if args['所属单曲'] then belongs='所属单曲' else belongs='所属单曲/曲包' end
end
end
local imageA=getImage(args['图片'],args['觉醒图片'],args['画师'],awaken,'a',size)
local imageA=getImage(args['图片'],args['觉醒图片'],args[' 画师'],args['觉醒 画师'],awaken,'a')
local imageB=getImage(args['图片'],args['觉醒图片'],args['画师'],awaken,'b',size)
local imageB=getImage(args['图片'],args['觉醒图片'],args[' 画师'],args['觉醒 画师'],awaken,'b')
local infoList = {
local infoList = {
      [1] = { args['名称'], {id = 'title'}},
      [1] = { args['名称'], {id = 'title'}},
第79行: 第108行:
      [6] = { args['类型'], {class = 'data'}},
      [6] = { args['类型'], {class = 'data'}},
      [7] = { belongs, {class = 'label'}},
      [7] = { belongs, {class = 'label'}},
      [8] = { args['所属曲包'] or args['所属单曲'] or '-', {class = 'data'}},
      [8] = { args['所属曲包'] or args['所属单曲'] or args['所属单曲/曲包'] or '-', {class = 'data'}},
      [9] = { '觉醒形态', {class = 'label'}},
      [9] = { '种类', {class = 'label'}},
      [10] = { args['觉醒形态'] or '无', {class = 'data'}},
     [10] = { args['种类'] or '-', {class = 'data'}},
      [11] = { '搭档数据', {class = 'header', id='all-play-header'}},
     [11] = { '觉醒形态', {class = 'label'}},
      [12] = { '搭档数据 (移动版)', {class = 'header', id='mobile-play-header'}},
      [12] = { args['觉醒形态'] or '无', {class = 'data'}},
      [13] = { '等级', {class = 'label'}},
      [13] = { '搭档数据', {class = 'header', id='all-play-header'}},
      [14] = { 'Lv1', {class = 'level-data'}},
      [14] = { '搭档数据 (移动版)', {class = 'header', id='mobile-play-header'}},
      [15] = { 'Lv20', {class = 'level-data'}},
      [15] = { '等级', {class = 'label'}},
      [16] = { 'Lv30', {class = 'awaken-data'}},
      [16] = { 'Lv1', {class = 'level-data'}},
      [17] = { 'Frag', {class = 'label'}},
      [17] = { 'Lv20', {class = 'level-data'}},
      [18] = { args['Frag1'], {class = 'level-data'}},
      [18] = { 'Lv30', {class = 'awaken-data'}},
      [19] = { args['Frag20'], {class = 'level-data'}},
      [19] = { 'Frag', {class = 'label'}},
      [20] = { args['Frag30'], {class = 'awaken-data'}},
      [20] = { args['Frag1'], {class = 'level-data'}},
      [21] = { 'Step', {class = 'label'}},
      [21] = { args['Frag20'], {class = 'level-data'}},
      [22] = { args['Step1'], {class = 'level-data'}},
      [22] = { args['Frag30'], {class = 'awaken-data'}},
      [23] = { args['Step20'], {class = 'level-data'}},
      [23] = { 'Step', {class = 'label'}},
      [24] = { args['Step30'], {class = 'awaken-data'}},
      [24] = { args['Step1'], {class = 'level-data'}},
      [25] = { 'Over', {class = 'label over'}},
      [25] = { args['Step20'], {class = 'level-data'}},
      [26] = { args['Over1'], {class = 'level-data over'}},
      [26] = { args['Step30'], {class = 'awaken-data'}},
      [27] = { args['Over20'], {class = 'level-data over'}},
      [27] = { 'Over', {class = 'label over'}},
      [28] = { args['Over30'], {class = 'awaken-data over'}},
      [28] = { args['Over1'], {class = 'level-data over'}},
      [29] = { '搭档数据 (Nintendo Switch版)', {class = 'header ns', id='ns-play-header'}},
      [29] = { args['Over20'], {class = 'level-data over'}},
      [30] = { '等级', {class = 'label ns'}},
      [30] = { args['Over30'], {class = 'awaken-data over'}},
      [31] = { 'Lv1', {class = 'level-data ns'}},
      [31] = { '搭档数据 (Nintendo Switch版)', {class = 'header ns', id='ns-play-header'}},
      [32] = { 'Lv20', {class = 'level-data ns'}},
      [32] = { '等级', {class = 'label ns'}},
      [33] = { 'Lv30', {class = 'awaken-data ns'}},
      [33] = { 'Lv1', {class = 'level-data ns'}},
      [34] = { 'Frag', {class = 'label ns'}},
      [34] = { 'Lv20', {class = 'level-data ns'}},
      [35] = { args['Frag1NS'], {class = 'level-data ns'}},
      [35] = { 'Lv30', {class = 'awaken-data ns'}},
      [36] = { args['Frag20NS'], {class = 'level-data ns'}},
      [36] = { 'Frag', {class = 'label ns'}},
      [37] = { args['Frag30NS'], {class = 'awaken-data ns'}},
      [37] = { args['Frag1NS'], {class = 'level-data ns'}},
      [38] = { 'Step', {class = 'label ns'}},
      [38] = { args['Frag20NS'], {class = 'level-data ns'}},
      [39] = { args['Step1NS'], {class = 'level-data ns'}},
      [39] = { args['Frag30NS'], {class = 'awaken-data ns'}},
      [40] = { args['Step20NS'], {class = 'level-data ns'}},
      [40] = { 'Step', {class = 'label ns'}},
      [41] = { args['Step30NS'], {class = 'awaken-data ns'}},
      [41] = { args['Step1NS'], {class = 'level-data ns'}},
      [42] = { '技能', {class = 'label', id='skill-label'}},
      [42] = { args['Step20NS'], {class = 'level-data ns'}},
      [43] = { args['技能'] or '-', {class = 'data', id = 'skill-normal'}},
      [43] = { args['Step30NS'], {class = 'awaken-data ns'}},
      [44] = { args['觉醒技能'], {class = 'data', id = 'skill-awaken'}},
      [44] = { '技能', {class = 'label', id='skill-label'}},
      [45] = { '更新时间', {id='update-data-label' ,class = 'label'}},
      [45] = { skill(args['技能'] or '-',skillawaken,'普通形态'), {class = 'data', id = 'skill-normal'}},
      [46] = { update(args['更新时间'] or '无','mobile',awaken,args['觉醒更新时间'] or args['更新时间']), {id='mobile-date-normal', class = 'data'}},
      [46] = { skill(args['觉醒技能'] or args['技能'],skillawaken,'觉醒形态'), {class = 'data', id = 'skill-awaken'}},
      [47] = { update(args['更新时间NS'] or '无','ns',awaken,' '), {id='ns-date-normal', class = 'data'}}
      [47] = { skill(args['技能'],skillsec,args['第一技能说明'] or '第一技能'), {class = 'data', id = 'skill-first'}},
     [48] = { skill(args['第二技能'],skillsec,args['第二技能说明'] or '第二技能'), {class = 'data', id = 'skill-first'}},
     [49] = { '更新时间', {id='update-data-label' ,class = 'label'}},
      [50] = { update(args['更新时间'] or '无','mobile',awaken,args['觉醒更新时间'] or args['更新时间']), {id='mobile-date-normal', class = 'data'}},
      [51] = { update(args['更新时间NS'] or '无','ns',awaken,args[' 觉醒更新时间NS'] or args['更新时间NS']), {id='ns-date-normal', class = 'data'}}
}
}


第124行: 第157行:
--样式控制
--样式控制
box:addClass( "partnerbox" )
box:addClass( "partnerbox arcaeabox" )
if awaken then box:addClass( "awaken" ) end
if awaken then box:addClass( "awaken" ) end
if args['名称'] == ' 白姬' or args['名称'] == '凛可' then box:addClass( "ns-only" ) end
-- if args['名称'] == '' then box:addClass( "ns-only" ) end
if awaken and args['技能'] ~= args['觉醒技能'] and args['觉醒技能'] ~= nil then box:addClass( "skill-different" ) end
if skillawaken then box:addClass( "skill-awaken" ) end
if skillsec then box:addClass( "skill-second" ) end
if args['类型']=='支援型'
if args['类型']=='支援型'
then
then
第142行: 第176行:
--表格生成
--表格生成
local boxList={}
local boxList={}
    for i, o in ipairs(infoList) do
    for _, in ipairs(infoList) do
      boxList[i] = mw.html.create('div')
      box:tag('div'):attr(v[2]):cssText(v[3]):wikitext(v[1]):done()
     boxList[i]
     :attr(infoList[i][2])
     :cssText(infoList[i][3])
     :wikitext(infoList[i][1])
     box:wikitext(tostring(boxList[i]))
    end
    end
--分类添加
--分类添加
    local category = ''
    local category = ''
 
  
   --平台
    if args['更新时间NS']
    if args['更新时间NS']
      then
      then
第167行: 第196行:
    end
    end


    if data('id') or dataNs('id')
    --觉醒
     then
   if awaken
     category = category..'[[分类:'..tostring(choice(getData.pack({data('set')}), data('set'), getData.pack({dataNs('set')}), dataNs('set'))) .. '曲包曲目]]'
   then
 
category = category..'[[分类: 有觉醒形态的搭档]]'
     if dataNs('side') == 1 or args['侧'] == '1'
else
       then
category = category..'[[分类: 没有觉醒形态的搭档]]'
       category = category..'[[分类: 纷争侧曲目]]'
end
     else
       category = category..'[[分类: 光芒侧曲目]]'
     end


     category = category..'[[分 :PST'..infoList[20][1] .. ' 级曲目]]'
   --类型
     category = category..'[[分类:PRS'..infoList[21][1] .. ' 级曲目]]'
   local type=args['类 ']
     category = category..'[[分 :FTR'..infoList[22][1] .. '级曲目]]'
   if type == '???/创世型' or type == '???' then type=' 特殊 ' end
     if byd then category = category..'[[分类:BYD'..infoList[23][1] .. ' 级曲目]]' end
   category = category..'[[分类:'..(type or '平衡型')..' 搭档]]'


     category = category..'[[分类: 采用'..(args['背景'] or data('bg') or dataNs('bg')) .. ' 背景的曲目]]'
   --种类
   local c1,c2=string.sub(args['种类'],1,6),string.sub(args['种类'],-6,-1)
   if c1 == '限时' then c1='限时活动' end
   if c1 == '特殊' then c1='获取方式特殊的' end
   if c2 == '原创' then c2='限时活动' end
   if c2 == '专辑' then c2='Arcaea原声专辑特典' end
   category = category..'[[分类:'..c1.. ' 搭档]]'
   category = category..'[[分类:'..c2.. ' 搭档]]'


     if args[' 曲目版本'] then category = category..'[[分类:'..args[' 曲目版本']:gusb('v', 'V') .. '添加的 曲目]]' end
   --版本
     if args[' 曲目版本NS'] then category = category..'[[分类:NS '..args[' 曲目版本NS']:gusb('v', 'V') .. '添加的 曲目]]' end
   if args[' 更新时间'] then category = category..'[[分类:'..string.gsub(version(args[' 更新时间']),'v','V').. ' 添加的搭档]]' end
   end
   if awaken then category = category..'[[分类:'..string.gsub(version(args['觉醒更新时间'] or args['更新时间']),'v','V').. '添加 觉醒形态 搭档]]' end
   if args[' 更新时间NS'] then category = category..'[[分类:NS '..string.gsub(version(args[' 更新时间NS']),'v','V')..'添加的 搭档]]' end
--手动关闭
if args['nocat'] then category='' end
return tostring(box)
return tostring(box)..category
end
end


return p
return p

2024年1月12日 (五) 15:59的最新版本

可在Module:Partnertable/doc创建此模块的帮助文档

local getArgs = require('Module:Arguments').getArgs
local link = require('Module:Link')._link
local getData = require("Module:data")
local p = {}

function labelText(text,class)
	local span = mw.html.create( 'span' )
	span:addClass( 'label-text' )
	span:wikitext(text)
	return tostring(span)
end

function update(version,device,awakenyes,version2) --更新时间
	if device == 'ns'
	then
		if awakenyes and version~= version2 and version2
		then 
			return '<div class="date-box"><div>'..labelText('NS版')..'</div><div>搭档:'..version..'<br />觉醒形态:'..version2..'</div><div></div></div>'
		end
	    return '<div class="date-box"><div>'..labelText('NS版')..'</div><div>'..version..'</div><div></div></div>'
	else
		if awakenyes and version~= version2 and version2
		then 
			return '<div class="date-box"><div>'..labelText('移动版')..'</div><div>搭档:'..version..'<br />觉醒形态:'..version2..'</div><div></div></div>'
		end
	    return '<div class="date-box"><div>'..labelText('移动版')..'</div><div>'..version..'</div><div></div></div>'
	end
end

function skill(text,skilldiff,label)
    if skilldiff
    then
    	return '<div><span class="label-text">'..label..'</span></div>'..text
    else
    	return text
    end
end

function version(time)
    local ans
    if string.byte(time,7) == 99 or string.byte(time,7) >= 48 and string.byte(time,7) <= 57
    then if string.byte(time,8) == 99 or string.byte(time,8) >= 48 and string.byte(time,8) <= 57 then ans = 8 else ans = 7 end
    else ans = 6
    end --判定第七、八位是否为c或数字
    return string.sub(time,1,ans)
end

function getImage(normal,awaken,normalJacket,awakenJacket,awakenyes,type)
	local container,tab=mw.html.create('div'),mw.html.create('div')
	local tab1,tab2,part1,part2,jacket
	container:addClass( 'container' )
	tab:attr( 'id','tab-'..type ) tab:addClass( 'img-tab' )
	
	local JacketNormal=normalJacket
	
	if awaken
	then
		 	tab1,tab2,part1,part2=mw.html.create('div'),mw.html.create('div'),mw.html.create('div'),mw.html.create('div')
		local JacketAwaken=normalJacket
		if awakenJacket
		then
			JacketAwaken=awakenJacket
		end
		tab1:wikitext('Normal') tab2:wikitext('Awaken')
		tab1:addClass('img-tab-part normal') tab2:addClass('img-tab-part awaken')
		tab:wikitext(tostring(tab1)) tab:wikitext(tostring(tab2))
		container:wikitext(tostring(tab))
		
		part1:wikitext('[[文件:'..normal..'|300px|none]]'..labelText('画师')..tostring(JacketNormal)) part2:wikitext('[[文件:'..awaken..'|300px|none]]'..labelText('画师')..tostring(JacketAwaken)) 
		part1:addClass('active tab-text-'..type) part2:addClass('tab-text-'..type) 
		container:wikitext(tostring(part1)) container:wikitext(tostring(part2)) 
		
		return tostring(container)
	end
	
	return '<div><div class="floatnone">[[文件:'..normal..'|300px]]</div><div>'..labelText('画师')..JacketNormal..'</div></div>'
end

function p.main(frame)
	local args = getArgs(frame)
	return p._main(args)
end

function p._main(args)
	
	local awaken --觉醒判定
	local size --图片大小
	local belongs --所属单位
	local skillawaken --觉醒技能
	local skillsec --第二技能
	if args['觉醒形态'] == '有' then awaken=true else awaken=false end
	if awaken and args['技能'] ~= args['觉醒技能'] and args['觉醒技能'] ~= nil then skillawaken=true else skillawaken=false end
	if args['第二技能'] then skillsec=true else skillsec=false end
	if args['所属曲包']
	then
		belongs='所属曲包'
	else
		if args['所属单曲'] then belongs='所属单曲' else belongs='所属单曲/曲包' end
	end
	local imageA=getImage(args['图片'],args['觉醒图片'],args['画师'],args['觉醒画师'],awaken,'a')
	local imageB=getImage(args['图片'],args['觉醒图片'],args['画师'],args['觉醒画师'],awaken,'b')
	local infoList = {
        [1] = { args['名称'], {id = 'title'}},
        [2] = { imageA, {id = 'top-image'}},
        [3] = { imageB, {id = 'right-image'}},
        [4] = { '搭档信息', {class = 'header'}},
        [5] = { '类型', {class = 'label'}},
        [6] = { args['类型'], {class = 'data'}},
        [7] = { belongs, {class = 'label'}},
        [8] = { args['所属曲包'] or args['所属单曲'] or args['所属单曲/曲包'] or '-', {class = 'data'}},
        [9] = { '种类', {class = 'label'}},
        [10] = { args['种类'] or '-', {class = 'data'}},
        [11] = { '觉醒形态', {class = 'label'}},
        [12] = { args['觉醒形态'] or '无', {class = 'data'}},
        [13] = { '搭档数据', {class = 'header', id='all-play-header'}},
        [14] = { '搭档数据 (移动版)', {class = 'header', id='mobile-play-header'}},
        [15] = { '等级', {class = 'label'}},
        [16] = { 'Lv1', {class = 'level-data'}},
        [17] = { 'Lv20', {class = 'level-data'}},
        [18] = { 'Lv30', {class = 'awaken-data'}},
        [19] = { 'Frag', {class = 'label'}},
        [20] = { args['Frag1'], {class = 'level-data'}},
        [21] = { args['Frag20'], {class = 'level-data'}},
        [22] = { args['Frag30'], {class = 'awaken-data'}},
        [23] = { 'Step', {class = 'label'}},
        [24] = { args['Step1'], {class = 'level-data'}},
        [25] = { args['Step20'], {class = 'level-data'}},
        [26] = { args['Step30'], {class = 'awaken-data'}},
        [27] = { 'Over', {class = 'label over'}},
        [28] = { args['Over1'], {class = 'level-data over'}},
        [29] = { args['Over20'], {class = 'level-data over'}},
        [30] = { args['Over30'], {class = 'awaken-data over'}},
        [31] = { '搭档数据 (Nintendo Switch版)', {class = 'header ns', id='ns-play-header'}},
        [32] = { '等级', {class = 'label ns'}},
        [33] = { 'Lv1', {class = 'level-data ns'}},
        [34] = { 'Lv20', {class = 'level-data ns'}},
        [35] = { 'Lv30', {class = 'awaken-data ns'}},
        [36] = { 'Frag', {class = 'label ns'}},
        [37] = { args['Frag1NS'], {class = 'level-data ns'}},
        [38] = { args['Frag20NS'], {class = 'level-data ns'}},
        [39] = { args['Frag30NS'], {class = 'awaken-data ns'}},
        [40] = { 'Step', {class = 'label ns'}},
        [41] = { args['Step1NS'], {class = 'level-data ns'}},
        [42] = { args['Step20NS'], {class = 'level-data ns'}},
        [43] = { args['Step30NS'], {class = 'awaken-data ns'}},
        [44] = { '技能', {class = 'label', id='skill-label'}},
        [45] = { skill(args['技能'] or '-',skillawaken,'普通形态'), {class = 'data', id = 'skill-normal'}},
        [46] = { skill(args['觉醒技能'] or args['技能'],skillawaken,'觉醒形态'), {class = 'data', id = 'skill-awaken'}},
        [47] = { skill(args['技能'],skillsec,args['第一技能说明'] or '第一技能'), {class = 'data', id = 'skill-first'}},
        [48] = { skill(args['第二技能'],skillsec,args['第二技能说明'] or '第二技能'), {class = 'data', id = 'skill-first'}},
        [49] = { '更新时间', {id='update-data-label' ,class = 'label'}},
        [50] = { update(args['更新时间'] or '无','mobile',awaken,args['觉醒更新时间'] or args['更新时间']), {id='mobile-date-normal', class = 'data'}},
        [51] = { update(args['更新时间NS'] or '无','ns',awaken,args['觉醒更新时间NS'] or args['更新时间NS']), {id='ns-date-normal', class = 'data'}}
	}

	local box = mw.html.create( 'div' )
	
	--样式控制
	box:addClass( "partnerbox arcaeabox" )
	if awaken then box:addClass( "awaken" ) end
	-- if args['名称'] == '' then box:addClass( "ns-only" ) end
	if skillawaken then box:addClass( "skill-awaken" ) end
	if skillsec then box:addClass( "skill-second" ) end
	if args['类型']=='支援型'
	then
		box:addClass( "support" )
	else
		if args['类型']=='挑战型' then box:addClass( "challenge" ) else box:addClass( "balance" ) end
	end

	if args['更新时间NS']
	then
		box:addClass( "ns-box" )
	end
	
	--表格生成
	local boxList={}
    for _, v  in ipairs(infoList) do
        box:tag('div'):attr(v[2]):cssText(v[3]):wikitext(v[1]):done()
    end
	
	--分类添加
    local category = ''
    
    --平台
    if args['更新时间NS']
        then
        if args['更新时间']
            then
            category = category..'[[分类:双平台搭档]]'
        else
            category = category..'[[分类:NS版搭档]]'
        end
    else
        category = category..'[[分类:移动版搭档]]'
    end

    --觉醒
    if awaken
    	then
		category = category..'[[分类:有觉醒形态的搭档]]'
	else
		category = category..'[[分类:没有觉醒形态的搭档]]'
	end

    --类型
    local type=args['类型']
    if type == '???/创世型' or type == '???' then type='特殊类型' end
    category = category..'[[分类:'..(type or '平衡型')..'搭档]]'

    --种类
    local c1,c2=string.sub(args['种类'],1,6),string.sub(args['种类'],-6,-1)
    if c1 == '限时' then c1='限时活动' end
    if c1 == '特殊' then c1='获取方式特殊的' end
    if c2 == '原创' then c2='限时活动' end
    if c2 == '专辑' then c2='Arcaea原声专辑特典' end
    category = category..'[[分类:'..c1.. '搭档]]'
    category = category..'[[分类:'..c2.. '搭档]]'

    --版本
    if args['更新时间'] then category = category..'[[分类:'..string.gsub(version(args['更新时间']),'v','V').. '添加的搭档]]' end
    if awaken then category = category..'[[分类:'..string.gsub(version(args['觉醒更新时间'] or args['更新时间']),'v','V').. '添加觉醒形态的搭档]]' end
    if args['更新时间NS'] then category = category..'[[分类:NS '..string.gsub(version(args['更新时间NS']),'v','V')..'添加的搭档]]' end
	
	--手动关闭
	if args['nocat'] then category='' end
	
	return tostring(box)..category
end

return p