默认调用Template:BanG Dream!/Icon来组成出演列表。如果需要gbp icon可以使用icon_style=gbp来切换成Template:BanG Dream!/GBPIcon。
功能上基本兼容原Template:BanG Dream! 出演列表
当传入的参数含有任一乐队名称时以单团模式工作,角色名可以按任意顺序输入,会按默认顺序输出列表:
{{#invoke:BanG Dream! 出演列表|main|乐队|角色名1|角色名2|......|角色名5|其他参数}}
例如:
{{#invoke:BanG Dream! 出演列表|main|Poppin'Party|ksm|ars|saya|rimi|tae}}
可以使用position参数指定角色顺序,例如使用live站位顺序:
{{#invoke:BanG Dream! 出演列表|main|Poppin'Party|ksm|ars|saya|rimi|tae|position=live}}
目前只支持默认和live站位两种顺序。
若只有某几人出演,依然按照顺序来排列,中间留空:
{{#invoke:BanG Dream! 出演列表|main|Poppin'Party|ksm|ars|tae}}
此外支持附加声优名称和链接,使用with_artist参数,此时中间不会留空:
{{#invoke:BanG Dream! 出演列表|main|Poppin'Party|ksm|ars|tae|with_artist=true}}
当传入参数不含任意乐队名称时,按全体模式工作。角色名可以按任意顺序输入,会按默认顺序输出列表,此时会自动添加声优名称链接:
{{#invoke:BanG Dream! 出演列表|main|角色名1|角色名2|......|角色名n|其他参数}}
例如:
{{#invoke:BanG Dream! 出演列表|main|ksm|ran|aya|ykn|kkr|layer|msr|tmr}}
展示:
爱美
佐仓绫音
前岛亚美
相羽爱奈
伊藤美来
进藤天音
Raychell
羊宫妃那
如果有必要的话也可以支持完全按照传入参数的顺序来排列。
如果不想附加声优名称和链接,使用with_artist=false:
{{#invoke:BanG Dream! 出演列表|main|ksm|ran|aya|ykn|kkr|layer|msr|tmr|with_artist=false}}
目前还不支持远藤祐里香或明坂聪美出演的情况,后续会添加支持。
除角色和乐队名以外的参数:
size: 可选参数,指定icon大小,默认为30。
icon_style: 可选参数,不传值时使用默认图标,值为gbp时使用gbp图标。
with_artist: 可选参数,值为true时在icon后添加声优名称和链接。
position: 可选参数,不传值时使用默认顺序,值为live时使用live站位顺序。
角色和乐队名均为匿名参数,都支持一些缩写和昵称,在下表列出。
乐队 | 参数 | 角色 | 参数 | 效果 | 角色 | 参数 | 效果 | 角色 | 参数 | 效果 | 角色 | 参数 | 效果 | 角色 | 参数 | 效果 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Poppin'Party | Poppin'Party popipa ppp |
户山香澄 | kasumi ksm |
![]() |
花园多惠 | tae | ![]() |
牛込里美 | rimi | ![]() |
山吹沙绫 | saaya saya |
![]() |
市谷有咲 | arisa ars |
![]() |
Afterglow | Afterglow ag |
美竹兰 | ran | ![]() |
青叶摩卡 | moka moca |
![]() |
上原绯玛丽 | himari hmr |
![]() |
宇田川巴 | tomoe | ![]() |
羽泽鸫 | tsugumi tsugu |
![]() |
Pastel*Palettes | Pastel*Palettes pp |
丸山彩 | aya | ![]() |
冰川日菜 | hina | ![]() |
白鹭千圣 | chisato cst |
![]() |
大和麻弥 | maya | ![]() |
若宫伊芙 | eve | ![]() |
Roselia | Roselia roselia |
凑友希那 | yukina ykn |
![]() |
冰川纱夜 | sayo | ![]() |
今井莉莎 | lisa | ![]() |
宇田川亚子 | ako | ![]() |
白金燐子 | rinko rinrin |
![]() |
Hello, Happy World! | Hello, Happy World! hhw |
弦卷心 | kokoro kkr |
![]() |
濑田薰 | kaoru | ![]() |
北泽育美 | hagumi hgm |
![]() |
松原花音 | kanon | ![]() |
奥泽美咲/米歇尔 | misaki msk |
![]() |
Morfonica | Morfonica monica |
仓田真白 | mashiro msr |
![]() |
桐谷透子 | touko toko |
![]() |
广町七深 | nanami nnmm |
![]() |
二叶筑紫 | tsukushi tks |
![]() |
八潮瑠唯 | rui | ![]() |
RAISE A SUILEN | RAISE A SUILEN ras |
和奏瑞依 | layer rei |
![]() |
朝日六花 | lock rokka |
![]() |
佐藤益木 | masking masuki |
![]() |
PAREO | pareo reona |
![]() |
CHU² | chuchu chiyu |
![]() |
MyGO!!!!! | MyGO!!!!! mygo go |
高松灯 | tomori tmr |
![]() |
千早爱音 | anon ano |
![]() |
要乐奈 | rana | ![]() |
长崎爽世 | soyo | ![]() |
椎名立希 | taki | ![]() |
Ave Mujica | Ave Mujica mujica |
三角初华 | uika Dororis |
![]() |
若叶睦 | mutsumi mtm Mortis |
![]() |
八幡海铃 | umiri umr Timoris |
![]() |
祐天寺若麦 | nyamu Amoris |
![]() |
丰川祥子 | sakiko skk Oblivionis |
![]() |
梦限大MewType | 梦限大MewType yumemita ymmt |
仲町阿拉蕾 | arale arl |
![]() |
宫永野乃花 | nonoka nnk |
![]() |
峰月律 | ritsu | ![]() |
藤都子 | miyako | ![]() |
千石由乃 | yuno | ![]() |
local getArgs = require('Module:Arguments').getArgs
local p = {}
local icon_template = "{{BanG Dream!/Icon|#char|#size}}"
local gbp_icon_template = "{{BanG Dream!/GBPIcon|#char|#size}}"
-- 声优映射表只接受角色全名
local artist_map = {
["kasumi"] = "[[爱美(声优)|爱美]]",
["tae"] = "[[大冢纱英]]",
["rimi"] = "[[西本里美]]",
["saaya"] = "[[大桥彩香]]",
["arisa"] = "[[伊藤彩沙]]",
["ran"] = "[[佐仓绫音]]",
["moka"] = "[[三泽纱千香]]",
["himari"] = "[[加藤英美里]]",
["tomoe"] = "[[日笠阳子]]",
["tsugumi"] = "[[金元寿子]]",
["aya"] = "[[前岛亚美]]",
["hina"] = "[[小泽亚李]]",
["chisato"] = "[[上坂堇]]",
["maya"] = "[[中上育实]]",
["eve"] = "[[秦佐和子]]",
["yukina"] = "[[相羽爱奈]]",
["sayo"] = "[[工藤晴香]]",
["lisa"] = "[[中岛由贵]]",
["lisa0"] = "[[远藤祐里香]]",
["ako"] = "[[樱川惠]]",
["rinko"] = "[[志崎桦音]]",
["rinko0"] = "[[明坂聪美]]",
["kokoro"] = "[[伊藤美来]]",
["kaoru"] = "[[田所梓]]",
["hagumi"] = "[[吉田有里]]",
["kanon"] = "[[丰田萌绘]]",
["misaki"] = "[[黑泽朋世]]",
["mashiro"] = "[[进藤天音]]",
["touko"] = "[[直田姬奈]]",
["nanami"] = "[[西尾夕香]]",
["tsukushi"] = "[[Mika(声优)|mika]]",
["rui"] = "[[Ayasa]]",
["layer"] = "[[Raychell]]",
["lock"] = "[[小原莉子]]",
["masking"] = "[[夏芽]]",
["pareo"] = "[[仓知玲凤]]",
["chuchu"] = "[[纺木吏佐]]",
["tomori"] = "[[羊宫妃那]]",
["anon"] = "[[立石凛]]",
["rana"] = "[[青木阳菜]]",
["soyo"] = "[[小日向美香]]",
["taki"] = "[[林鼓子]]",
["uika"] = "[[佐佐木李子]]",
["mutsumi"] = "[[渡濑结月]]",
["umiri"] = "[[冈田梦以]]",
["nyamu"] = "[[米泽茜]]",
["sakiko"] = "[[高尾奏音]]",
["arale"] = "[[仲町阿拉蕾]]",
["nonoka"] = "[[宫永野乃花]]",
["ritsu"] = "[[峰月律]]",
["miyako"] = "[[藤都子]]",
["yuno"] = "[[千石由乃]]",
}
-- 映射乐队名到全名
local band_nickname_map = {
["ppp"] = "Poppin'Party",
["popipa"] = "Poppin'Party",
["Poppin'Party"] = "Poppin'Party",
["ag"] = "Afterglow",
["Afterglow"] = "Afterglow",
["pp"] = "Pastel*Palettes",
["Pastel*Palettes"] = "Pastel*Palettes",
["roselia"] = "Roselia",
["Roselia"] = "Roselia",
["hhw"] = "Hello, Happy World!",
["Hello, Happy World!"] = "Hello, Happy World!",
["mf"] = "Morfonica",
["monica"] = "Morfonica",
["Morfonica"] = "Morfonica",
["ras"] = "RAISE A SUILEN",
["RAISE A SUILEN"] = "RAISE A SUILEN",
["go"] = "MyGO!!!!!",
["mygo"] = "MyGO!!!!!",
["mygoca"] = "MyGO!!!!!", -- 兼容mygo角色出演模板
["MyGO!!!!!"] = "MyGO!!!!!",
["mujica"] = "Ave Mujica",
["Ave Mujica"] = "Ave Mujica",
["ymmt"] = "梦限大MewType",
["yumemita"] = "梦限大MewType",
["梦限大MewType"] = "梦限大MewType",
}
-- 映射角色名到全名
local character_nickname_map = {
["ksm"] = "kasumi",
["kasumi"] = "kasumi",
["ars"] = "arisa",
["arisa"] = "arisa",
["rimi"] = "rimi",
["saya"] = "saaya",
["saaya"] = "saaya",
["tae"] = "tae",
["ran"] = "ran",
["moca"] = "moka",
["moka"] = "moka",
["hmr"] = "himari",
["himari"] = "himari",
["tomoe"] = "tomoe",
["tsugu"] = "tsugumi",
["tsugumi"] = "tsugumi",
["aya"] = "aya",
["hina"] = "hina",
["cst"] = "chisato",
["chisato"] = "chisato",
["maya"] = "maya",
["eve"] = "eve",
["ykn"] = "yukina",
["yukina"] = "yukina",
["sayo"] = "sayo",
["lisa"] = "lisa",
["ako"] = "ako",
["rinrin"] = "rinko",
["rinko"] = "rinko",
["kkr"] = "kokoro",
["kokoro"] = "kokoro",
["kaoru"] = "kaoru",
["hgm"] = "hagumi",
["hagumi"] = "hagumi",
["kanon"] = "kanon",
["msk"] = "misaki",
["misaki"] = "misaki",
["msr"] = "mashiro",
["mashiro"] = "mashiro",
["toko"] = "touko",
["touko"] = "touko",
["nnm"] = "nanami",
["nanami"] = "nanami",
["tks"] = "tsukushi",
["tsukushi"] = "tsukushi",
["rui"] = "rui",
["rei"] = "layer",
["layer"] = "layer",
["rokka"] = "lock",
["lock"] = "lock",
["masuki"] = "masking",
["masking"] = "masking",
["reona"] = "pareo",
["pareo"] = "pareo",
["chiyu"] = "chuchu",
["chuchu"] = "chuchu",
["tmr"] = "tomori",
["tomori"] = "tomori",
["ano"] = "anon",
["anon"] = "anon",
["rana"] = "rana",
["soyo"] = "soyo",
["taki"] = "taki",
["Doloris"] = "uika",
["uika"] = "uika",
["Mortis"] = "mutsumi",
["mtm"] = "mutsumi",
["mutsumi"] = "mutsumi",
["Timoris"] = "umiri",
["umr"] = "umiri",
["umiri"] = "umiri",
["Amoris"] = "nyamu",
["nyamu"] = "nyamu",
["skk"] = "sakiko",
["Oblivionis"] = "sakiko",
["sakiko"] = "sakiko",
["arl"] = "arale",
["arale"] = "arale",
["nnk"] = "nonoka",
["nonoka"] = "nonoka",
["ritsu"] = "ritsu",
["miyako"] = "miyako",
["yuno"] = "yuno",
}
local band_order = {
"Poppin'Party",
"Afterglow",
"Pastel*Palettes",
"Roselia",
"Hello, Happy World!",
"Morfonica",
"RAISE A SUILEN",
"MyGO!!!!!",
"Ave Mujica",
"梦限大MewType",
}
local live_position_map = {
["Poppin'Party"] = {"rimi", "saaya", "kasumi", "arisa", "tae"},
["Afterglow"] = {"himari", "tsugumi", "ran", "tomoe", "moka"},
["Pastel*Palettes"] = {"chisato", "eve", "aya", "maya", "hina"},
["Roselia"] = {"lisa", "rinko", "yukina", "ako", "sayo"},
["Hello, Happy World!"] = {"hagumi", "misaki", "kokoro", "kanon", "kaoru"},
["Morfonica"] = {"rui", "nanami", "mashiro", "tsukushi", "touko"},
["RAISE A SUILEN"] = {"pareo", "masking", "layer", "chuchu", "lock"},
["MyGO!!!!!"] = {"anon", "soyo", "tomori", "taki", "rana"},
["Ave Mujica"] = {"sakiko", "umiri", "uika", "nyamu", "mutsumi"},
["梦限大MewType"] = {"ritsu", "yuno", "arale", "miyako", "nonoka"},
}
local default_position_map = {
["Poppin'Party"] = {"kasumi", "tae", "rimi", "saaya", "arisa"},
["Afterglow"] = {"ran", "moka", "himari", "tomoe", "tsugumi"},
["Pastel*Palettes"] = {"aya", "hina", "chisato", "maya", "eve"},
["Roselia"] = {"yukina", "sayo", "lisa", "ako", "rinko"},
["Hello, Happy World!"] = {"kokoro", "kaoru", "hagumi", "kanon", "misaki"},
["Morfonica"] = {"mashiro", "touko", "nanami", "tsukushi", "rui"},
["RAISE A SUILEN"] = {"layer", "lock", "masking", "pareo", "chuchu"},
["MyGO!!!!!"] = {"tomori", "anon", "rana", "soyo", "taki"},
["Ave Mujica"] = {"uika", "mutsumi", "umiri", "nyamu", "sakiko"},
["梦限大MewType"] = {"arale", "nonoka", "ritsu", "miyako", "yuno"},
}
function p.get_position_list(position, band)
-- 支持默认顺序或者live站位顺序
if (position == "live") then
return live_position_map[band]
end
return default_position_map[band]
end
function p.make_wikitext(args)
local band = nil
local size = args["size"] or 30
local icon_style = args["icon_style"]
local icon_template_with_size = string.gsub(icon_style == "gbp" and gbp_icon_template or icon_template, "#size", size)
local position = args["position"]
local char_map = {}
for k, v in pairs(args) do
if (type(k) == "number") then
if (band_nickname_map[v] ~= nil) then
band = band_nickname_map[v]
elseif (character_nickname_map[v] ~= nil) then
char_map[character_nickname_map[v]] = 1
end
end
end
local with_artist = args["with_artist"]
if (with_artist ~= nil) then
with_artist = with_artist == "true"
end
if (band == nil and with_artist == nil) then
-- 兼容现有模板,全体模式默认添加声优名称链接
with_artist = true
end
local wikitext = ""
for _, current_band in pairs(band_order) do
local position_list = default_position_map[current_band]
if (band ~= nil and band ~= current_band) then
position_list = {}
elseif (band ~= nil and band == current_band) then
position_list = p.get_position_list(position, band)
end
for __, char in pairs(position_list) do
local char_wikitext = string.gsub(icon_template_with_size, "#char", char) .. (with_artist and artist_map[char] or "")
if (char_map[char] ~= nil) then
wikitext = wikitext .. char_wikitext
elseif (band ~= nil and not with_artist) then
wikitext = wikitext .. "{{0|" .. char_wikitext .. "}}"
end
end
end
return wikitext
end
function p.main(frame)
local args = getArgs(frame)
return frame:preprocess(p.make_wikitext(args))
end
return p