本模块用于存储和生成公会及角色列表的展示数据。角色按照游戏系统中设定的公会及身份划分。
所有公会归属和角色信息均位于模块代码中的p.data字典内。若要添加新公会或更新现有角色的信息,请直接修改该区域。
每个公会的数据是一个包含多个角色信息的数组。每个角色的信息格式如下:
{
head_normal = "kasumi_head.webp", -- 必填,默认显示头像(1星头像)
head_hover = "kasumi_head3.webp", -- 选填,悬停时显示的头像(3星头像)
head_turn = "kasumi_head6.webp", -- 选填,6星角色悬停后最终显示的头像(6星头像)
link = "雾原霞", -- 必填,角色对应的条目标题
color = "#B1557A", -- 选填,角色代表色HEX码
display_name = "霞", -- 必填,角色链接显示的名字
note = "请输入文本", -- 选填,如果需要在角色名字后面追加显示内容,可以在这里写入
},
若某一选填字段无内容可写,应直接移除对应字段而非留空。
若有公会有多个名称(或简称)需要适配,请在代码顶部的p.aliases字典中添加别名信息。
格式为:
["别名"] = "p.data中的公会名",
local p = {}
-- 公会的别名,和旧模板的name变量保持一致
p.aliases = {
["哞哞自卫团"] = "自卫团",
["哞哞自卫队"] = "自卫团",
["纯白之翼 兰德索尔分部"] = "纯白之翼 兰德索尔支部",
["圣特蕾莎女子学院"] = "圣特蕾莎女子学院(好友部)",
["圣特蕾莎女子学院(友好部)"] = "圣特蕾莎女子学院(好友部)",
["New Generation"] = "New Generations"
}
-- 公会和成员角色信息
-- 追加/更新数据时请修改这里!
p.data = {
["美食殿堂"] = {
{
head_normal = "pecorine_head.webp",
head_hover = "pecorine_head3.webp",
head_turn = "pecorine_head6.webp",
link = "佩可莉姆",
color = "#FFA438",
display_name = "佩可莉姆",
},
{
head_normal = "kokkoro_head.webp",
head_hover = "kokkoro_head3.webp",
head_turn = "kokkoro_head6.webp",
link = "枣可萝",
color = "#57B497",
display_name = "可可萝",
},
{
head_normal = "kyaru_head.webp",
head_hover = "kyaru_head3.webp",
head_turn = "kyaru_head6.webp",
link = "百地希留耶",
color = "#C44CA6",
display_name = "-{zh-hans:凯露;zh-hant:凱留}-",
},
{
head_normal = "shephy_head.webp",
head_hover = "shephy_head3.webp",
head_turn = "shephy_head6.webp",
link = "阿贺斗紫布菜",
color = "#4EB9E0",
display_name = "雪菲",
},
},
["破晓之星"] = {
{
head_normal = "hiyori_head.webp",
head_hover = "hiyori_head3.webp",
head_turn = "hiyori_head6.webp",
link = "春咲日和莉",
color = "#EF9219",
display_name = "-{zh-hans:日和莉;zh-hant:日和}-",
},
{
head_normal = "yui_head.webp",
head_hover = "yui_head3.webp",
head_turn = "yui_head6.webp",
link = "草野优衣",
color = "#E15A8A",
display_name = "优衣",
},
{
head_normal = "rei_head.webp",
head_hover = "rei_head3.webp",
head_turn = "rei_head6.webp",
link = "士条怜",
color = "#5A68F3",
display_name = "-{怜}-",
},
},
["拉比林斯"] = {
{
head_normal = "labyrista_head.webp",
head_hover = "labyrista_head3.webp",
link = "模索路晶",
color = "#CB3737",
display_name = "-{zh-hans:菈比莉斯塔;zh-hant:拉比林斯達}-",
},
{
head_normal = "shizuru_head.webp",
head_hover = "shizuru_head3.webp",
head_turn = "shizuru_head6.webp",
link = "星野静流",
color = "#5574DA",
display_name = "静流",
},
{
head_normal = "rino_head.webp",
head_hover = "rino_head3.webp",
head_turn = "rino_head6.webp",
link = "衣之咲璃乃",
color = "#E64D41",
display_name = "璃乃",
},
},
["慈乐之音"] = {
{
head_normal = "nozomi_head.webp",
head_hover = "nozomi_head3.webp",
head_turn = "nozomi_head6.webp",
link = "樱井望",
color = "#DA3B5F",
display_name = "望",
},
{
head_normal = "chika_head.webp",
head_hover = "chika_head3.webp",
head_turn = "chika_head6.webp",
link = "三角千歌",
color = "#32BAA5",
display_name = "千歌",
},
{
head_normal = "tsumugi_head.webp",
head_hover = "tsumugi_head3.webp",
head_turn = "tsumugi_head6.webp",
link = "茧宫纺希",
color = "#E4597A",
display_name = "纺希",
},
},
["小小甜心"] = {
{
head_normal = "mimi_head.webp",
head_hover = "mimi_head3.webp",
head_turn = "mimi_head6.webp",
link = "茜美美",
color = "#E84F6C",
display_name = "美美",
},
{
head_normal = "misogi_head.webp",
head_hover = "misogi_head3.webp",
head_turn = "Misogi_head6.webp",
link = "穗高未奏希",
color = "#E97936",
display_name = "-{zh-hans:未奏希;zh-hant:禊}-",
},
{
head_normal = "xcw_head.webp",
head_hover = "xcw_head3.webp",
head_turn = "xcw_head6.webp",
link = "冰川镜华",
color = "#9E58CF",
display_name = "镜华",
},
},
["森林守卫"] = {
{
head_normal = "misato_head.webp",
head_hover = "misato_head3.webp",
head_turn = "misato_head6.webp",
link = "爱川美里",
color = "#4DB8BC",
display_name = "美里",
},
{
head_normal = "hatsune_head.webp",
head_hover = "hatsune_head3.webp",
head_turn = "hatsune_head6.webp",
link = "柏崎初音",
color = "#7373D6",
display_name = "初音",
},
{
head_normal = "Aoi_head.webp",
head_hover = "Aoi_head3.webp",
head_turn = "Aoi_head6.webp",
link = "双叶碧",
color = "#65A856",
display_name = "碧",
},
},
["恶魔伪王国军"] = {
{
head_normal = "ilya_head.webp",
head_hover = "ilya_head3.webp",
head_turn = "ilya_head6.webp",
link = "伊莉亚·奥恩斯坦",
color = "#BE3444",
display_name = "伊莉亚",
},
{
head_normal = "yori_head.webp",
head_hover = "yori_head3.webp",
head_turn = "yori_head6.webp",
link = "风宫依里",
color = "#E36C88",
display_name = "依里",
},
{
head_normal = "akari_head.webp",
head_hover = "akari_head3.webp",
head_turn = "akari_head6.webp",
link = "风宫茜里",
color = "#6E67FF",
display_name = "茜里",
},
{
head_normal = "shinobu_head.webp",
head_hover = "shinobu_head3.webp",
head_turn = "shinobu_head6.webp",
link = "上喜忍",
color = "#8559E8",
display_name = "忍",
},
{
head_normal = "miyako_head.webp",
head_hover = "miyako_head3.webp",
head_turn = "miyako_head6.webp",
link = "出云宫子",
color = "#29B2C6",
display_name = "宫子",
},
},
["王宫骑士团"] = {
{
head_normal = "jun_head.webp",
head_hover = "jun_head3.webp",
head_turn = "jun_head6.webp",
link = "白银纯",
color = "#634ECA",
display_name = "纯",
},
{
head_normal = "christina_head.webp",
head_hover = "christina_head3.webp",
head_turn = "christina_head6.webp",
link = "克莉丝提娜·摩根",
color = "#A94CC0",
display_name = "克莉丝提娜",
},
{
head_normal = "tomo_head.webp",
head_hover = "tomo_head3.webp",
head_turn = "tomo_head6.webp",
link = "御久间智",
color = "#E7749F",
display_name = "智",
},
{
head_normal = "matsuri_head.webp",
head_hover = "matsuri_head3.webp",
head_turn = "matsuri_head6.webp",
link = "织原茉莉",
color = "#0BBF79",
display_name = "茉莉",
},
},
["咲恋救济院"] = {
{
head_normal = "saren_head.webp",
head_hover = "saren_head3.webp",
head_turn = "saren_head6.webp",
link = "佐佐木咲恋",
color = "#0194B4",
display_name = "咲恋",
},
{
head_normal = "suzume_head.webp",
head_hover = "suzume_head3.webp",
head_turn = "suzume_head6.webp",
link = "天野铃莓",
color = "#4864CD",
display_name = "铃莓",
},
{
head_normal = "ayane_head.webp",
head_hover = "ayane_head3.webp",
head_turn = "ayane_head6.webp",
link = "北条绫音",
color = "#E04F60",
display_name = "绫音",
},
{
head_normal = "kurumi_head.webp",
head_hover = "kurumi_head3.webp",
head_turn = "kurumi_head6.webp",
link = "栗林胡桃",
color = "#E76F9A",
display_name = "胡桃",
},
},
["自卫团"] = {
{
head_normal = "maho_head.webp",
head_hover = "maho_head3.webp",
head_turn = "maho_head6.webp",
link = "姬宫真步",
color = "#E86F6F",
display_name = "真步",
},
{
head_normal = "makoto_head.webp",
head_hover = "makoto_head3.webp",
head_turn = "makoto_head6.webp",
link = "安艺真琴",
color = "#685FE0",
display_name = "真琴",
},
{
head_normal = "kasumi_head.webp",
head_hover = "kasumi_head3.webp",
head_turn = "kasumi_head6.webp",
link = "雾原霞",
color = "#B1557A",
display_name = "霞",
},
{
head_normal = "kaori_head.webp",
head_hover = "kaori_head3.webp",
head_turn = "kaori_head6.webp",
link = "喜屋武香织",
color = "#EB624F",
display_name = "香织",
},
},
["伊丽莎白牧场"] = {
{
head_normal = "mahiru_head.webp",
head_hover = "mahiru_head3.webp",
head_turn = "mahiru_head6.webp",
link = "野户真阳",
color = "#4EAFD3",
display_name = "真阳",
},
{
head_normal = "lima_head.webp",
head_hover = "lima_head3.webp",
head_turn = "lima_head6.webp",
link = "莉玛",
color = "#E3769A",
display_name = "莉玛",
},
{
head_normal = "shiori_head.webp",
head_hover = "shiori_head3.webp",
head_turn = "shiori_head6.webp",
link = "柏崎栞",
color = "#478BAA",
display_name = "栞",
},
{
head_normal = "rin_head.webp",
head_hover = "rin_head3.webp",
head_turn = "rin_head6.webp",
link = "森近铃",
color = "#E98254",
display_name = "铃",
},
},
["墨丘利财团"] = {
{
head_normal = "akino_head.webp",
head_hover = "akino_head3.webp",
head_turn = "akino_head6.webp",
link = "藤堂秋乃",
color = "#D14F27",
display_name = "秋乃",
},
{
head_normal = "mifuyu_head.webp",
head_hover = "mifuyu_head3.webp",
head_turn = "mifuyu_head6.webp",
link = "大神美冬",
color = "#5457E3",
display_name = "美冬",
},
{
head_normal = "yukari_head.webp",
head_hover = "yukari_head3.webp",
head_turn = "yukari_head6.webp",
link = "绫濑由加莉",
color = "#1C6DD1",
display_name = "由加莉",
},
{
head_normal = "tamaki_head.webp",
head_hover = "tamaki_head3.webp",
head_turn = "tamaki_head6.webp",
link = "宫坂珠希",
color = "#CD4780",
display_name = "珠希",
},
},
["暮光流星群"] = {
{
head_normal = "ruka_head.webp",
head_hover = "ruka_head3.webp",
link = "太刀洗流夏",
color = "#44958B",
display_name = "流夏",
},
{
head_normal = "mitsuki_head.webp",
head_hover = "mitsuki_head3.webp",
head_turn = "mitsuki_head6.webp",
link = "宵滨深月",
color = "#714EA5",
display_name = "深月",
},
{
head_normal = "eriko_head.webp",
head_hover = "eriko_head3.webp",
head_turn = "eriko_head6.webp",
link = "仓石惠理子",
color = "#CC5148",
display_name = "惠理子",
},
{
head_normal = "nanaka_head.webp",
head_hover = "nanaka_head3.webp",
head_turn = "nanaka_head6.webp",
link = "丹野七七香",
color = "#D1315B",
display_name = "七七香",
},
{
head_normal = "anna_head.webp",
head_hover = "anna_head3.webp",
head_turn = "anna_head6.webp",
link = "柊杏奈",
color = "#A13553",
display_name = "杏奈",
},
},
["月光学院"] = {
{
head_normal = "io_head.webp",
head_hover = "io_head3.webp",
head_turn = "io_head6.webp",
link = "支仓伊绪",
color = "#C93D6E",
display_name = "伊绪",
},
{
head_normal = "misaki_head.webp",
head_hover = "misaki_head3.webp",
head_turn = "misaki_head6.webp",
link = "玉泉美咲",
color = "#B82E76",
display_name = "美咲",
},
{
head_normal = "suzuna_head.webp",
head_hover = "suzuna_head3.webp",
head_turn = "suzuna_head6.webp",
link = "美波铃奈",
color = "#F26868",
display_name = "铃奈",
},
},
["纯白之翼 兰德索尔支部"] = {
{
head_normal = "monica_head.webp",
head_hover = "monica_head3.webp",
head_turn = "monica_head6.webp",
link = "莫妮卡·拜斯温特(公主连结)",
color = "#1B82AD",
display_name = "莫妮卡",
},
{
head_normal = "yuki_head.webp",
head_hover = "yuki_head3.webp",
head_turn = "yuki_head6.webp",
link = "虹村雪",
color = "#D16FCB",
display_name = "雪",
},
{
head_normal = "ninon_head.webp",
head_hover = "ninon_head3.webp",
head_turn = "ninon_head6.webp",
link = "妮侬·朱柏尔",
color = "#EDA926",
display_name = "妮侬",
},
{
head_normal = "kuuka_head.webp",
head_hover = "kuuka_head3.webp",
head_turn = "kuuka_head6.webp",
link = "远见空花",
color = "#DF5C87",
display_name = "空花",
},
{
head_normal = "Ayumi_head.webp",
head_hover = "Ayumi_head3.webp",
head_turn = "Ayumi_head6.webp",
link = "石桥步美",
color = "#89AE42",
display_name = "步美",
},
},
["圣特蕾莎女子学院(好友部)"] = {
{
head_normal = "yuni_head.webp",
head_hover = "yuni_head3.webp",
link = "真行寺由仁",
color = "#E65D4E",
display_name = "优妮",
},
{
head_normal = "hanako_head.webp",
head_hover = "hanako_head3.webp",
link = "黑江花子",
color = "#FEB134",
display_name = "克罗依",
},
{
head_normal = "chieru_head.webp",
head_hover = "chieru_head3.webp",
link = "风间千爱瑠",
color = "#F164B0",
display_name = "千爱瑠",
},
},
["龙族巢穴"] = {
{
head_normal = "homare_head.webp",
head_hover = "homare_head3.webp",
link = "远野帆稀",
color = "#9C67D2",
display_name = "帆稀",
},
{
head_normal = "kaya_head.webp",
head_hover = "kaya_head3.webp",
head_turn = "kaya_head6.webp",
link = "鬼道嘉夜",
color = "#D44545",
display_name = "嘉夜",
},
{
head_normal = "inori_head.webp",
head_hover = "inori_head3.webp",
head_turn = "inori_head6.webp",
link = "一之濑祈梨",
color = "#40B1B5",
display_name = "祈梨",
},
},
["里士满商工会"] = {
{
head_normal = "creditta_head.webp",
head_hover = "creditta_head3.webp",
link = "克蕾雅·波杨西亚",
color = "#FFC451",
display_name = "克蕾琪塔",
},
},
["愤怒军团"] = {
{
head_normal = "Zen_head.png",
link = "阿贺斗善",
display_name = "赞恩",
},
{
head_normal = "Kariza_head.webp",
link = "狩崎座太郎",
color = "#83436A",
display_name = "卡利萨",
},
{
head_normal = "Azold_head.png",
link = "阿泽尔德·怀斯曼",
display_name = "阿泽尔德",
},
{
head_normal = "Ranpha_head.webp",
head_hover = "Ranpha_head3.webp",
link = "卯之花兰",
color = "#6D59A6",
display_name = "兰法",
},
{
head_normal = "Nea_head.webp",
head_hover = "Nea_head3.webp",
link = "志木场寝亚",
color = "#FFD051",
display_name = "涅娅",
},
{
head_normal = "Misora_head.webp",
head_hover = "Misora_head3.webp",
link = "流魅空",
color = "#9780C8",
display_name = "魅空",
note = "<span class=\"explain\" title=\"已退出公会\">*</span>",
},
},
["幻变少女"] = {
{
head_normal = "Lily_Original_head3.webp",
link = "德川莉莉",
color = "#BC99D6",
display_name = "莉莉",
},
{
head_normal = "Clear head.webp",
link = "久央璃亚",
color = "#FAD543",
display_name = "可璃亚",
},
{
head_normal = "Precia head.webp",
link = "普蕾西亚·怀斯曼",
color = "#71DBCB",
display_name = "普蕾西亚",
},
},
["盗贼姐妹"] = {
{
head_normal = "Yamato_head.webp",
link = "大和(公主连结)",
color = "#B62F98",
display_name = "大和",
},
{
head_normal = "Wakana_head.webp",
link = "若菜(公主连结)",
color = "#3BD7CA",
display_name = "若菜",
},
{
head_normal = "Fubuki_head.webp",
link = "吹雪(公主连结)",
color = "#D75994",
display_name = "吹雪",
},
},
["New Generations"] = {
{
head_normal = "uzuki_cg_head.webp",
head_hover = "uzuki_cg_head3.webp",
link = "岛村卯月(公主连结)",
color = "#F1919D",
display_name = "卯月",
},
{
head_normal = "rin_cg_head.webp",
head_hover = "rin_cg_head3.webp",
link = "涩谷凛(公主连结)",
color = "#0390D5",
display_name = "凛",
},
{
head_normal = "mio_cg_head.webp",
head_hover = "mio_cg_head3.webp",
link = "本田未央(公主连结)",
color = "#FAC217",
display_name = "未央",
},
},
}
function p.main(frame)
local args = frame:getParent().args
local input_name = args[1] or ""
-- 处理公会别名,获取角色数据
local key = p.aliases[input_name] or input_name
local guild_data = p.data[key]
if not guild_data then
return ""
end
local html_parts = {}
table.insert(html_parts, '<div style="display:inline-block; text-align:center; list-style-type:none">')
for _, chara in ipairs(guild_data) do
table.insert(html_parts, '<li style="float:left;margin:8px">')
local link = chara.link or ""
local displayName = chara.display_name or link
local imgHtml = ""
-- 图片生成逻辑
if chara.head_turn then
-- 存在head_turn:有三个小头像的六星角色,生成对应hover效果
imgHtml = string.format(
'<div class="hover-change hovers-float">\n' ..
'<div class="hover-change-before">[[file:%s|64px|link=%s]]</div>\n' ..
'<div class="hover-change-after"><div class="hover-turn" style="width:68px; height:68px">\n' ..
'<div class="hover-turn-before">[[file:%s|64px|link=%s]]</div>\n' ..
'<div class="hover-turn-after">[[file:%s|64px|link=%s]]</div>\n' ..
'</div></div></div>',
chara.head_normal, link,
chara.head_hover, link,
chara.head_turn, link
)
elseif chara.head_hover then
-- 不存在head_turn但存在head_cover:有两个小头像的常规角色
imgHtml = string.format(
'<div class="hover-change hovers-float">\n' ..
'<div class="hover-change-before">[[file:%s|64px|link=%s]]</div>\n' ..
'<div class="hover-change-after">[[file:%s|64px|link=%s]]</div>\n' ..
'</div>',
chara.head_normal, link,
chara.head_hover, link
)
else
-- 只有head_normal:只有一个头像的其他角色
imgHtml = string.format('[[file:%s|64px|link=%s]]', chara.head_normal, link)
end
table.insert(html_parts, imgHtml)
table.insert(html_parts, '<br>')
-- 文本生成逻辑
local textHtml = ""
if chara.color then
-- 有color的调用Template:coloredlink以生成彩色链接
textHtml = frame:expandTemplate{ title = "coloredlink", args = { chara.color, link, displayName } }
else
-- 没color的生成普通链接
textHtml = string.format('[[%s|%s]]', link, displayName)
end
-- 美空特供:如果数据有note字段,追加额外的注脚HTML
if chara.note then
textHtml = textHtml .. chara.note
end
table.insert(html_parts, textHtml)
table.insert(html_parts, '</li>')
end
table.insert(html_parts, '</div>')
return table.concat(html_parts)
end
return p