如果你看到本段文字,说明该页面未正常加载全局JS,部分功能将无法使用,请点击 刷新 重新加载页面。
如果打开页面显示缩略图创建出错,请点击刷新或页面右上WIKI功能中的刷新按钮清除页面缓存并刷新,如果还有问题,请多尝试几次。
全站通知:

模块:舰娘图鉴导航

来自碧蓝航线WIKI_BWIKI_哔哩哔哩
跳到导航 跳到搜索
模块:舰娘图鉴导航是一段LUA脚本,用于实现图鉴导航的相关功能。

你可以通过#invoke指令来调用这个模块中的函数。

增添舰船信息

添加舰船基本信息

模块:舰娘数据中添加舰船的ID、阵营(nationality)、类型(type)、稀有度(rarity)、是否具有改造(transform)。

(没有改造可以省略transform的书写。)

例如:

["卡辛"] = { id = 101031, nationality = 1, type = 1, rarity = 2, transform = true },

上面代码的含义为:卡辛,ID为101031,阵营为白鹰,船型为驱逐舰,稀有度为普通,拥有船体改造。

添加舰船型号信息

模块:舰娘数据/型号中增加舰船的ID、级别(class_des)、类型描述(type_des)、舷号(pennant_code)、同级舰船的序号(serial_no)

例如:

["神风"] = { id = 301301, class_des = "神风级", type_des = "驱逐舰", pennant_code = nil, serial_no = 1 },

上面代码的含义为:神风,ID为301301,神风级驱逐舰,无舷号,是神风级的首舰。

这里的type_des = "驱逐舰"只用于显示,而不用于划分舰船类型,因此也可以填写为“轻型驱逐舰”或“护卫舰”等。

添加舰船级别信息

模块:舰娘数据/级别中按顺序增加舰船级别用于排序

添加新的阵营

模块:舰娘数据中的表p.nation_data中添加阵营编号和阵营名称。

例如:

p.nation_data = {
	[1] = '白鹰',
	[2] = '皇家',
	[3] = '重樱',
	[4] = '铁血',
	[5] = '东煌',
	[10] = '格里芬与克鲁格',
}

上面代码添加了编号为10,名为“格里芬与克鲁格”的阵营。 注意标点符号,尤其是引号和逗号。

在这个页面中的表p.nation_data.prints中添加阵营编号和阵营英文缩写。

例如:

p.nation_data.prints = {
	[1] = "us",
	[2] = "en",
	[3] = "jp",
	[4] = "de",
	[5] = "cn",
	[10] = "gk",
}

上面代码将“格里芬与克鲁格”的阵营英文设为“gk”。

在这个页面中的表p.ship_data中修改舰船的阵营(nationality)属性,将其设为新的阵营编号。

例如:

["纳甘左轮"] = { id = 1001031, nationality = 10, type = 1, rarity = 2 },

上面代码将纳甘左轮的阵营设为了10,即“格里芬与克鲁格”阵营。

函数列表

显示带颜色的舰船链接

函数名
ShowNavItem显示项目
参数
参数#1 - 舰船的名称

代码:

 {{#invoke: 舰娘图鉴导航|ShowNavItem|独角兽}}
 {{#invoke: 舰娘图鉴导航|显示项目|彗星}}
 {{#invoke: 舰娘图鉴导航|显示项目|不存在的舰船}}
显示为
独角兽
彗星
不存在的舰船

显示某种类型的所有舰船链接

函数名
ShowNavListInType依类型显示导航列表
参数
参数#1 - 舰船类型(驱逐、轻巡等)

示例代码

 {{#invoke:舰娘图鉴导航|依类型显示导航列表|战列}}
显示为
• 腓特烈大帝
• 佐治亚• 君主• 出云• 马可·波罗• 香槟• 加斯科涅• 弗兰德尔
• 新泽西• 前卫• 武藏• 乌尔里希·冯·胡滕• 俾斯麦Zwei• 苏维埃同盟
• 北卡罗来纳• 华盛顿• 南达科他• 马萨诸塞• 阿拉巴马• 厌战• 英王乔治五世• 威尔士亲王• 约克公爵• • 皇家橡树• 长门• 加贺BB• 土佐• 三笠• 纪伊• 尾张• 骏河• 俾斯麦• 提尔比茨• 维托里奥·维内托• 利托里奥• 罗马• 苏维埃贝拉罗斯• 苏维埃罗西亚• 黎塞留• 让·巴尔• 克莱蒙梭• 加斯科涅(μ兵装)• 绊爱·SuperGamer• 穗香• 水濑伊织• 新条茜• 帕特莉夏·阿贝尔海姆• 雪不归
• 亚利桑那• 科罗拉多• 马里兰• 西弗吉尼亚• 伊丽莎白女王• 纳尔逊• 罗德尼• 英勇• 复仇• 陆奥• 图林根• 朱利奥·凯撒• 安德烈亚·多利亚• 甘古特• 阿尔汉格尔斯克• 塞瓦斯托波尔• 波尔塔瓦• 里昂• 凪咲• 貉SSSS
• 宾夕法尼亚• 田纳西• 加利福尼亚• 扶桑• 山城• 伊势• 日向• 加富尔伯爵
• 内华达• 俄克拉荷马

显示整个图鉴导航

函数名
ShowNavTableContent显示导航列表

代码:

{{折叠面板|标题=图鉴导航|选项=3|主框=1|样式=primary}}
{{#invoke:舰娘图鉴导航| 显示导航列表}}
{{折叠面板|内容结束}}

显示为:

图鉴导航展开/折叠
驱逐 • 北风 • 菲利克斯·舒尔茨
• 拉菲II • 岛风 • 特装型布里MKIII
• 埃尔德里奇 • 艾伦·萨姆纳 • 英格拉罕 • 布里斯托尔 • 贾维斯 • 雅努斯 • 努比亚人 • 夕立 • 雪风 • 江风 • 凉月 • 风云 • 若月 • 初月 • Z46 • 奥托·冯·阿尔文斯莱本 • 庞培·马格诺 • 阿蒂利奥·雷戈洛 • 塔什干 • 塔什干(μ兵装) • 基辅 • 火力 • 凯旋 • 可怖 • 恶毒 • 恶毒(μ兵装) • 不屈 • 试作型布里MKII • 群白之心 • 猫音 • 玛莉萝丝
• 莫里 • 查尔斯·奥斯本 • 拉菲 • 尼古拉斯 • 马拉尼 • 库珀 • 史蒂芬·波特 • 莫里森 • 哈曼II • 格伦维尔 • 萤火虫 • 勇敢 • 标枪 • 吸血鬼 • 无敌 • 火枪手 • 爱斯基摩人 • 伊卡洛斯 • 英雄 • 吹雪 • 白雪 • 深雪 • 绫波 •  • 时雨 • 野分 • 海风 • 山风 • 新月 • 春月 • 宵月 • 浦波 • 卷波 •  • 花月 • 长波 • 朝凪 • Z1 • Z2 • Z16 • Z23 • Z24 • Z25 • Z26 • Z28 • Z35 • Z36 • 鞍山 • 抚顺 • 长春 • 太原 • 龙武 • 虎贲 • 飞云 • 龙骑兵 • 文琴佐·焦贝蒂 • 西北风 • 西南风 • 尼科洛索·达雷科 • 阿尔弗雷多·奥里亚尼 • 埃曼努埃尔·佩萨格诺 • 威严 • 明斯克 • 神速 • 雷鸣 • 洪亮 • 灵敏 • 凶猛 • 鲁莽 • 倔强 • 马耶·布雷泽 • 鲁莽(μ兵装) • 塔尔图 • 沃克兰 • 凯尔圣 • 泛用型布里 • 布兰 • 22 • 33 • 绊爱
• 杜威 • 格里德利 • 弗莱彻 • 撒切尔 • 本森 • 西姆斯 • 哈曼 • 贝利 • 拉德福特 • 杰金斯 • 布什 • 黑泽伍德 • 贝奇 • 霍比 • 科尔克 • 金伯利 • 艾尔温 • 斯坦利 • 斯莫利 • 哈尔西·鲍威尔 • 女将 • 阿卡司塔 • 热心 • 命运女神 • 猎人 • 天后 • 丘比特 • 泽西 • 回声 •  •  •  • 白露 • 阳炎 • 初春 • 若叶 • 初霜 • 有明 • 夕暮 • 黑潮 • 亲潮 • 神风 • 松风 • 文月 • 长月 • 清波 • 浦风 • 矶风 • 滨风 • 谷风 • 朝潮 • 大潮 • 满潮 • 荒潮 • 旗风 • 追风 • Z18 • Z19 • 福尔班 • 勒马尔
• 卡辛 • 唐斯 • 克雷文 • 麦考尔 • 奥利克 • 富特 • 斯彭斯 • 小猎兔犬 • 大斗犬 • 彗星 • 新月 • 小天鹅 • 狐提 • 不知火 • 睦月 • 如月 • 卯月 • 水无月 • 三日月 • Z20 • Z21

轻巡 • 普利茅斯
• 西雅图 • 海王星 • 四万十 • 美因茨 • 哈尔滨
• 圣地亚哥 • 蒙彼利埃 • 里诺 • 休斯敦II • 黛朵 • 贝尔法斯特 • 天狼星 • 确捷 • 赫敏 • 黛朵(μ兵装) • 卡律布狄斯 • 斯库拉 • 能代 • 酒匂 • 能代(μ兵装) • 马格德堡 • 埃姆登 • 雷根斯堡 • 阿布鲁齐公爵 • 朱塞佩·加里波第 • 阿芙乐尔 • 恰巴耶夫 • 基洛夫 • 古比雪夫 • 伏罗希洛夫 • 圣女贞德 • 吉尚 • 马赛曲 • 绀紫之心 • 露露缇耶 • 海咲 • 天海春香 • 宝多六花 • 莱莎琳·斯托特 • 飞鸟
• 海伦娜 • 克利夫兰 • 哥伦比亚 • 圣路易斯 • 丹佛 • 小海伦娜 • 小克利夫兰 • 小圣地亚哥 • 伯明翰 • 克利夫兰(μ兵装) • 比洛克西 • 博伊西 • 博伊西(μ兵装) • 谢菲尔德 • 曼彻斯特 • 格罗斯特 • 爱丁堡 • 欧若拉 • 小贝法 • 黑太子 • 谢菲尔德(μ兵装) • 佩内洛珀 • 司战女神 • 进取 • 利物浦 • 夕张 • 名取 • 由良 • 鬼怒 • 最上 • 三隈 • 神通 • 阿贺野 • 纽伦堡 • 埃尔宾 • 逸仙 • 宁海 • 平海 • 应瑞 • 肇和 • 海天 • 海圻 • 济安 • 水星纪念 • 摩尔曼斯克 • 埃米尔·贝尔汀 • 拉·加利索尼埃 • 涅普顿 • 莫妮卡 • 
• 布鲁克林 • 菲尼克斯 • 亚特兰大 • 朱诺 • 火奴鲁鲁 • 孟菲斯 • 康克德 • 圣胡安 • 马布尔黑德 • 阿基里斯 • 阿贾克斯 • 南安普顿 • 阿瑞托莎 • 加拉蒂亚 • 斐济 • 牙买加 • 纽卡斯尔 • 库拉索 • 杓鹬 • 格拉斯哥 • 五十铃 • 川内 • 那珂 • 莱比锡
• 奥马哈 • 罗利 • 里士满 • 利安得 • 长良 • 阿武隈 • 柯尼斯堡 • 卡尔斯鲁厄 • 科隆

重巡 • 德雷克 • 兴登堡
• 安克雷奇 • 柴郡 • 伊吹 • 罗恩 • 路易九世
• 云仙
• 新奥尔良 • 明尼阿波利斯 • 旧金山 • 巴尔的摩 • 布莱默顿 • 北安普敦II • 筑摩 • 高雄 • 爱宕 • 摩耶 • 鸟海 • 布吕歇尔 • 欧根亲王 • 罗恩(μ兵装) • 海因里希亲王 • 阿达尔伯特亲王 • 腓特烈·卡尔 • 欧根亲王(μ兵装) • 扎拉 • 波拉 • 戈里齐亚 • 塔林 • 库尔斯克 • 阿尔及利亚 • 圣黑之心 • 久远 • 绊爱·Elegant •  • 三浦梓 • 南梦芽 • 斑鸠
• 休斯敦 • 印第安纳波利斯 • 阿斯托利亚 • 昆西 • 文森斯 • 威奇塔 • 巴尔的摩(μ兵装) • 路易斯维尔 • 伦敦 • 多塞特郡 • 约克 • 埃克塞特 • 小柴郡 • 德文郡 • 足柄 • 羽黑 • 铃谷 • 熊野 • 希佩尔海军上将 • 德意志 • 斯佩伯爵海军上将 • 希佩尔海军上将(μ兵装) • 约克 • 小欧根 • 小斯佩 • 的里雅斯特 • 博尔扎诺 • 絮弗伦 • 福煦 • 诺瓦露 • 奈美子 • 莉拉·德西亚斯 • 夕烧
• 北安普敦 • 芝加哥 • 波特兰 • 什罗普郡 • 肯特 • 萨福克 • 诺福克 • 苏塞克斯 • 妙高 • 那智 • 特伦托
• 彭萨科拉 • 盐湖城 • 古鹰 • 加古 • 青叶 • 衣笠

战巡 • 奥丁 • 鲁普雷希特亲王
• 星座 • 胡德 • 天城 • 塞德利茨 • 吕佐夫 • 布伦希尔德 • 寰昌 • 
• 声望 • 小声望 • 金刚 • 比叡 • 榛名 • 雾岛 • 小比叡 • 小天城 • 金刚(μ兵装) • 沙恩霍斯特 • 格奈森瑙 • 敦刻尔克
• 反击

战列 • 腓特烈大帝
• 佐治亚 • 君主 • 出云 • 马可·波罗 • 香槟 • 加斯科涅 • 弗兰德尔
• 新泽西 • 前卫 • 武藏 • 乌尔里希·冯·胡滕 • 俾斯麦Zwei • 苏维埃同盟
• 北卡罗来纳 • 华盛顿 • 南达科他 • 马萨诸塞 • 阿拉巴马 • 厌战 • 英王乔治五世 • 威尔士亲王 • 约克公爵 •  • 皇家橡树 • 长门 • 加贺 • 土佐 • 三笠 • 纪伊 • 尾张 • 骏河 • 俾斯麦 • 提尔比茨 • 维托里奥·维内托 • 利托里奥 • 罗马 • 苏维埃贝拉罗斯 • 苏维埃罗西亚 • 黎塞留 • 让·巴尔 • 克莱蒙梭 • 加斯科涅(μ兵装) • 绊爱·SuperGamer • 穗香 • 水濑伊织 • 新条茜 • 帕特莉夏·阿贝尔海姆 • 雪不归
• 亚利桑那 • 科罗拉多 • 马里兰 • 西弗吉尼亚 • 伊丽莎白女王 • 纳尔逊 • 罗德尼 • 英勇 • 复仇 • 陆奥 • 图林根 • 朱利奥·凯撒 • 安德烈亚·多利亚 • 甘古特 • 阿尔汉格尔斯克 • 塞瓦斯托波尔 • 波尔塔瓦 • 里昂 • 凪咲 • 
• 宾夕法尼亚 • 田纳西 • 加利福尼亚 • 扶桑 • 山城 • 伊势 • 日向 • 加富尔伯爵
• 内华达 • 俄克拉荷马

轻航 • 半人马 • 英仙座 • 阿尔比恩 • 忒修斯 • 龙凤 • 露娜 • 科洛蒂娅·巴兰茨
• 独立 • 普林斯顿 • 兰利II • 巴丹 • 圣哈辛托 • 百眼巨人 • 独角兽 • 追赶者 • 凤翔 • 龙骧 • 千岁 • 千代田 • 威悉 • 易北 • 亚德 • 镇海 • 华甲 • 乌璐露 • 萨拉娜 • 
• 长岛 • 卡萨布兰卡 • 飞鹰 • 隼鹰 • 祥凤
• 博格 • 兰利 • 突击者 • 竞技神

航母 • 白龙
• 奥古斯特·冯·帕塞瓦尔 • 契卡洛夫
• 约克城II • 怨仇 • 信浓
• 企业 • 埃塞克斯 • 无畏 • 大黄蜂II • 提康德罗加 • 邦克山 • 香格里拉 • 光辉 • 胜利 • 可畏 • 光辉(μ兵装) • 不挠 • 可畏(μ兵装) • 赤城 • 加贺 • 翔鹤 • 瑞鹤 • 大凤 • 赤城(μ兵装) • 大凤(μ兵装) • 葛城 • 齐柏林伯爵 • 彼得·史特拉塞 • 天鹰 • 帝国 • 伏尔加 • 伴尔维 • 霞飞 • 翡绿之心 • 绊爱·Anniversary • 如月千早 • 飞鸟川千濑 • 雪泉
• 列克星敦 • 萨拉托加 • 约克城 • 大黄蜂 • 小企业 •  • 皇家方舟 • 光荣 • 小光辉 • 小可畏 • 苍龙 • 飞龙 • 小赤城 • 小大凤 • 小信浓 • 小齐柏林 • 贝亚恩 • 贝露 • 芙米露露 • 女天狗 • 赛莉·古劳斯
• 胡蜂

潜艇 • 大青花鱼 • 棘鳍 • 射水鱼 • 松鲷 • 伊19 • 伊168 • U-81 • U-47 • U-101 • U-96 • U-37 • 莱昂纳多·达·芬奇 • 
• 鲦鱼 • 蓝鳃鱼 • 大青花鱼(μ兵装) • 鹦鹉螺 • 伊26 • 伊58 • 伊25 • 伊56 • U-557 • U-556 • U-73 • U-522 • U-110 • U-410 • U-1206 • 托里拆利 • 絮库夫 • 双海亚美 • 双海真美

航战 • 奇尔沙治
• 第二代

维修 • 明石
• 女灶神

重炮 • 黑暗界 • 恐怖 • 阿贝克隆比

风帆M • 圣马丁号

第一期 • 赤城(μ兵装) • 加斯科涅(μ兵装)
• 克利夫兰(μ兵装) • 谢菲尔德(μ兵装) • 希佩尔海军上将(μ兵装)

第二期 • 黛朵(μ兵装) • 光辉(μ兵装) • 大凤(μ兵装) • 罗恩(μ兵装) • 塔什干(μ兵装) • 恶毒(μ兵装)
• 巴尔的摩(μ兵装) • 大青花鱼(μ兵装)

超巡 • 吾妻 • 埃吉尔 • 布雷斯特
• 关岛 • 喀琅施塔得
• 卡菈·伊迪亚斯

运输 • 公主
• 樫野 • 定安 • 秋月律子

META • 海伦娜·META • 神通·META • 基洛夫·META • 水星纪念·META • 阿尔及利亚·META • 格奈森瑙·META • 沙恩霍斯特·META • 反击·META • 声望·META • 亚利桑那·META • 伊丽莎白女王·META • 罗德尼·META • 飞龙·META • 皇家方舟·META • 苍龙·META • U-556·META
• 普林斯顿·META • 猎人·META • 命运女神·META • 旗风·META • 金伯利·META • 吸血鬼·META • 孟菲斯·META • 谢菲尔德·META • 拉·加利索尼埃·META • 特伦托·META • 扶桑·META • 山城·META • 飞鹰·META • 隼鹰·META • 女灶神·META • 黑暗界·META

第三期 • 可畏(μ兵装) • 能代(μ兵装) • 欧根亲王(μ兵装)
• 博伊西(μ兵装) • 金刚(μ兵装) • 鲁莽(μ兵装)

风帆S • 皇家财富号 • 玛丽·西莱斯特号
• 维达号

风帆V • 金鹿号
• 加里冒险号

潜母 • 伊13


显示带标签页的导航面板

函数名
ShowNavTabTable显示标签页导航面板


显示带标签页、按型号划分的导航面板

函数名
ShowShipClassNavPannel显示舰船型号导航面板

代码:

{{#invoke:舰娘图鉴导航| 显示舰船型号导航面板}}

显示为:

驱逐 坎农级护航驱逐舰 • 埃尔德里奇
埃德索尔级护航驱逐舰 • 哈曼II
法拉格特级驱逐舰 • 杜威 • 艾尔温
马汉级驱逐舰 • 卡辛 • 唐斯
格里德利级驱逐舰 • 格里德利 • 克雷文 • 麦考尔 • 莫里
西姆斯级驱逐舰 • 西姆斯 • 哈曼
本森级驱逐舰 • 本森 • 拉菲 • 贝利 • 霍比 • 科尔克
弗莱彻级驱逐舰 • 弗莱彻 • 拉德福特 • 杰金斯 • 尼古拉斯 • 贝奇 • 斯坦利 • 富特 • 斯彭斯 • 撒切尔 • 金伯利 • 马拉尼 • 布什 • 黑泽伍德 • 史蒂芬·波特 • 莫里森 • 斯莫利 • 奥利克 • 查尔斯·奥斯本 • 哈尔西·鲍威尔
艾伦·M·萨姆纳级驱逐舰 • 艾伦·萨姆纳 • 英格拉罕 • 库珀 • 拉菲II • 布里斯托尔
轻巡 奥马哈级轻巡洋舰 • 奥马哈 • 罗利 • 里士满 • 康克德 • 马布尔黑德 • 孟菲斯
布鲁克林级轻巡洋舰 • 布鲁克林 • 菲尼克斯 • 博伊西 • 博伊西(μ兵装) • 火奴鲁鲁 • 圣路易斯 • 海伦娜 • 小海伦娜
亚特兰大级轻巡洋舰 • 亚特兰大 • 朱诺 • 圣地亚哥 • 小圣地亚哥 • 圣胡安 • 里诺
克利夫兰级轻巡洋舰 • 克利夫兰 • 小克利夫兰 • 克利夫兰(μ兵装) • 哥伦比亚 • 蒙彼利埃 • 丹佛 • 伯明翰 • 比洛克西 • 休斯敦II
伍斯特级原型方案A轻巡洋舰 • 西雅图
重巡 彭萨科拉级重巡洋舰 • 彭萨科拉 • 盐湖城
北安普敦级重巡洋舰 • 北安普敦 • 路易斯维尔 • 芝加哥 • 休斯敦
波特兰级重巡洋舰 • 波特兰 • 印第安纳波利斯
新奥尔良级重巡洋舰 • 新奥尔良 • 阿斯托利亚 • 明尼阿波利斯 • 旧金山 • 昆西 • 文森斯
威奇塔级重巡洋舰 • 威奇塔
巴尔的摩级重巡洋舰 • 巴尔的摩 • 巴尔的摩(μ兵装) • 布莱默顿
俄勒冈城级重巡洋舰 • 北安普敦II
CA-B方案重巡洋舰 • 安克雷奇
超巡 阿拉斯加级大型巡洋舰 • 关岛
战巡 列克星敦级战列巡洋舰 • 星座
战列 内华达级战列舰 • 内华达 • 俄克拉荷马
宾夕法尼亚级战列舰 • 宾夕法尼亚 • 亚利桑那
田纳西级战列舰 • 田纳西 • 加利福尼亚
科罗拉多级战列舰 • 科罗拉多 • 马里兰 • 西弗吉尼亚
北卡罗来纳级战列舰 • 北卡罗来纳 • 华盛顿
南达科他级战列舰 • 南达科他 • 马萨诸塞 • 阿拉巴马
衣阿华级原型方案IV战列舰 • 佐治亚
衣阿华级战列舰 • 新泽西
航战 Gibbs&Cox方案航空战列舰 • 奇尔沙治
轻航 早期航空母舰 • 兰利
突击者级航空母舰 • 突击者
长岛级护航航空母舰 • 长岛
博格级护航航空母舰 • 博格
卡萨布兰卡级护航航空母舰 • 卡萨布兰卡
独立级轻型航空母舰 • 独立 • 普林斯顿 • 兰利II • 巴丹 • 圣哈辛托
航母 列克星敦级航空母舰 • 列克星敦 • 萨拉托加
约克城级航空母舰 • 约克城 • 企业 • 小企业 • 大黄蜂
胡蜂级航空母舰 • 胡蜂
埃塞克斯级航空母舰 • 埃塞克斯 • 约克城II • 无畏 • 大黄蜂II • 提康德罗加 • 邦克山 • 香格里拉
潜艇 独角鲸级潜艇 • 鹦鹉螺
猫鲨级潜艇 • 大青花鱼 • 大青花鱼(μ兵装) • 蓝鳃鱼 • 棘鳍 • 鲦鱼 • 松鲷
巴劳鱵级潜艇 • 射水鱼
维修 维修舰 • 女灶神
驱逐 旧V级驱逐舰 • 吸血鬼
A级实验型驱逐舰 • 女将
A级驱逐舰 • 阿卡司塔 • 热心
B级驱逐舰 • 小猎兔犬 • 大斗犬
C级驱逐舰 • 彗星 • 小天鹅 • 新月
E级驱逐舰 • 回声
F级驱逐舰 • 命运女神 • 狐提
G级驱逐舰 • 萤火虫 • 格伦维尔
H级驱逐舰 • 勇敢 • 英雄 • 猎人
I级驱逐舰 • 伊卡洛斯
部族级驱逐舰 • 爱斯基摩人 • 努比亚人
J级驱逐舰 • 贾维斯 • 天后 • 雅努斯 • 标枪 • 泽西 • 丘比特
M级驱逐舰 • 火枪手 • 无敌
轻巡 谷物女神级轻巡洋舰 • 库拉索 • 杓鹬
祖母绿级轻巡洋舰 • 进取
利安得级轻巡洋舰 • 利安得 • 阿基里斯 • 阿贾克斯
阿瑞托莎级轻巡洋舰 • 阿瑞托莎 • 加拉蒂亚 • 佩内洛珀 • 欧若拉
南安普顿级轻巡洋舰 • 纽卡斯尔 • 南安普顿 • 谢菲尔德 • 谢菲尔德(μ兵装) • 格拉斯哥
格罗斯特级轻巡洋舰 • 格罗斯特 • 曼彻斯特 • 利物浦
爱丁堡级轻巡洋舰 • 爱丁堡 • 贝尔法斯特 • 小贝法
黛朵级轻巡洋舰 • 黛朵 • 黛朵(μ兵装) • 赫敏 • 天狼星 • 卡律布狄斯 • 斯库拉 • 司战女神 • 黑太子
斐济级轻巡洋舰 • 斐济 • 牙买加
确捷级轻巡洋舰 • 确捷
1944年方案Y轻巡洋舰 • 海王星
爱丁堡级原型方案轻巡洋舰 • 普利茅斯
重巡 肯特级重巡洋舰 • 肯特 • 萨福克
伦敦级重巡洋舰 • 伦敦 • 德文郡 • 苏塞克斯 • 什罗普郡
诺福克级重巡洋舰 • 诺福克 • 多塞特郡
约克级重巡洋舰 • 约克 • 埃克塞特
1940年15500吨级方案重巡洋舰 • 柴郡 • 小柴郡
1939年9.2英寸初始指标重巡洋舰 • 德雷克
战巡 声望级战列巡洋舰 • 声望 • 小声望 • 反击
海军上将级战列巡洋舰 • 胡德
战列 复仇级战列舰 • 复仇 • 皇家橡树
伊丽莎白女王级战列舰 • 伊丽莎白女王 • 厌战 • 英勇
纳尔逊级战列舰 • 纳尔逊 • 罗德尼
乔治五世级战列舰 • 英王乔治五世 • 威尔士亲王 • 约克公爵 • 
乔治五世级设计案战列舰 • 君主
前卫级战列舰 • 前卫
轻航 早期航空母舰 • 百眼巨人 • 竞技神
攻击者级护航航空母舰 • 追赶者
轻型航空母舰 • 独角兽
巨像级轻型航空母舰 • 英仙座 • 忒修斯
半人马级轻型航空母舰 • 半人马 • 阿尔比恩
航母 早期航空母舰 • 
勇敢级航空母舰 • 光荣
航空母舰 • 皇家方舟
光辉级航空母舰 • 光辉 • 小光辉 • 光辉(μ兵装) • 胜利 • 可畏 • 小可畏 • 可畏(μ兵装) • 不挠
怨仇级航空母舰 • 怨仇
重炮 黑暗界级浅水重炮舰 • 黑暗界 • 恐怖
罗伯茨级浅水重炮舰 • 阿贝克隆比
驱逐 神风级驱逐舰 • 神风 • 松风 • 旗风 • 追风 • 朝凪
睦月级驱逐舰 • 睦月 • 如月 • 卯月 • 水无月 • 文月 • 长月 • 三日月
特I型吹雪级驱逐舰 • 吹雪 • 白雪 • 深雪 • 浦波
特II型绫波级驱逐舰 • 绫波
特III型晓级驱逐舰 •  •  •  • 
初春级驱逐舰 • 初春 • 若叶 • 初霜 • 有明 • 夕暮
白露级驱逐舰 • 白露 • 时雨 • 夕立 • 海风 • 山风 • 江风
朝潮级驱逐舰 • 朝潮 • 大潮 • 满潮 • 荒潮 • 
阳炎级驱逐舰 • 阳炎 • 不知火 • 黑潮 • 亲潮 • 雪风 • 浦风 • 矶风 • 滨风 • 谷风 • 野分
夕云级驱逐舰 • 风云 • 长波 • 卷波 • 清波
秋月级驱逐舰 • 凉月 • 初月 • 新月 • 若月 • 春月 • 宵月 • 花月
超秋月级驱逐舰 • 北风
岛风级驱逐舰 • 岛风
轻巡 长良级轻巡洋舰 • 长良 • 五十铃 • 名取 • 由良 • 鬼怒 • 阿武隈
川内级轻巡洋舰 • 川内 • 神通 • 那珂
夕张级轻巡洋舰 • 夕张
最上级轻(重)巡洋舰 • 最上 • 三隈
阿贺野级轻巡洋舰 • 阿贺野 • 能代 • 能代(μ兵装) • 酒匂
150mm主炮防空型轻巡洋舰 • 四万十
重巡 古鹰级重巡洋舰 • 古鹰 • 加古
青叶级重巡洋舰 • 青叶 • 衣笠
妙高级重巡洋舰 • 妙高 • 那智 • 足柄 • 羽黑
高雄级重巡洋舰 • 高雄 • 爱宕 • 摩耶 • 鸟海
最上级铃谷型重巡洋舰 • 铃谷 • 熊野
利根级重巡洋舰 • 筑摩
伊吹级重巡洋舰 • 伊吹
丸六计划重巡洋舰 • 云仙
超巡 B-65超甲型巡洋舰 • 吾妻
战巡 金刚级战列巡洋舰 • 金刚 • 金刚(μ兵装) • 比叡 • 小比叡 • 榛名 • 雾岛
天城级战列巡洋舰 • 天城 • 小天城
战列 敷岛级战列舰 • 三笠
扶桑级战列舰 • 扶桑 • 山城
伊势级战列舰 • 伊势 • 日向
长门级战列舰 • 长门 • 陆奥
加贺级战列舰 • 加贺 • 土佐
纪伊级战列舰 • 纪伊 • 尾张 • 骏河
大和级设计案战列舰 • 出云
大和级战列舰 • 武藏
轻航 早期航空母舰 • 凤翔
航空母舰 • 龙骧
祥凤级航空母舰 • 祥凤
潜水母舰改装航空母舰 • 龙凤
千岁级航空母舰 • 千岁 • 千代田
飞鹰级航空母舰 • 飞鹰 • 隼鹰
航母 (一航战)航空母舰 • 赤城 • 加贺 • 小赤城 • 赤城(μ兵装)
(二航战)航空母舰 • 苍龙 • 飞龙
翔鹤级航空母舰 • 翔鹤 • 瑞鹤
大凤级航空母舰 • 大凤 • 大凤(μ兵装) • 小大凤
云龙级航空母舰 • 葛城
大和级改装航空母舰 • 信浓 • 小信浓
SG-15超级改大凤型航空母舰 • 白龙
潜艇 海大VI型a潜艇 • 伊168
巡潜乙型潜艇 • 伊19 • 伊25 • 伊26 • 伊56 • 伊58
潜母 巡潜甲型改二型潜水空母 • 伊13
维修 维修舰 • 明石
运输 特种运输舰 • 樫野
驱逐 1934型驱逐舰 • Z1 • Z2
1934A型驱逐舰 • Z16
1936型驱逐舰 • Z18 • Z19 • Z20 • Z21
1936A型驱逐舰 • Z23 • Z24 • Z25 • Z26 • Z28
1936B型驱逐舰 • Z35 • Z36
1936C型驱逐舰 • Z46
1937J型大型驱逐舰 • 奥托·冯·阿尔文斯莱本
1938A型大型驱逐舰 • 菲利克斯·舒尔茨
轻巡 德累斯顿级小巡洋舰 • 埃姆登
皮劳级小巡洋舰 • 埃尔宾
柯尼斯堡级轻巡洋舰 • 柯尼斯堡 • 卡尔斯鲁厄 • 科隆
莱比锡级轻巡洋舰 • 莱比锡 • 纽伦堡
M级轻巡洋舰 • 马格德堡 • 雷根斯堡
巡洋舰K原案轻巡洋舰 • 美因茨
重巡 罗恩级装甲巡洋舰 • 约克
德意志级装甲舰 • 德意志 • 斯佩伯爵海军上将 • 小斯佩
P级装甲舰 • 海因里希亲王 • 阿达尔伯特亲王 • 腓特烈·卡尔
希佩尔海军上将级重巡洋舰 • 希佩尔海军上将 • 希佩尔海军上将(μ兵装) • 布吕歇尔 • 欧根亲王 • 小欧根 • 欧根亲王(μ兵装)
1938年203mm主炮推演方案重巡洋舰 • 罗恩 • 罗恩(μ兵装)
1940年203mm主炮推演方案重巡洋舰 • 兴登堡
超巡 O级超重型巡洋舰 • 埃吉尔
战巡 战列巡洋舰 • 塞德利茨
德弗林格尔级战列巡洋舰 • 吕佐夫
GK4541方案战列巡洋舰 • 鲁普雷希特亲王
沙恩霍斯特级战列巡洋舰 • 沙恩霍斯特 • 格奈森瑙
装甲舰D发展型战列巡洋舰 • 奥丁
O级战列巡洋舰 • 布伦希尔德
战列 赫尔戈兰级战列舰 • 图林根
俾斯麦级战列舰 • 俾斯麦 • 俾斯麦Zwei • 提尔比茨
H-39型战列舰 • 腓特烈大帝 • 乌尔里希·冯·胡滕
轻航 亚德级轻型航空母舰 • 亚德 • 易北
希佩尔海军上将级改装轻型航空母舰 • 威悉
航母 齐柏林伯爵级航空母舰 • 齐柏林伯爵 • 小齐柏林 • 彼得·史特拉塞
齐柏林伯爵级改型航空母舰 • 奥古斯特·冯·帕塞瓦尔
潜艇 VIIB型潜艇 • U-47 • U-73 • U-101
VIIC型潜艇 • U-81 • U-96 • U-410 • U-556 • U-557 • U-1206
IXA型潜艇 • U-37
IXB型潜艇 • U-110
IXC型潜艇 • U-522
驱逐 长风级驱逐舰 • 飞云
伏尔铿船厂驱逐舰 • 龙武 • 虎贲
鞍山级驱逐舰 • 鞍山 • 抚顺 • 长春 • 太原
轻巡 海天级防护巡洋舰 • 海天 • 海圻
肇和级防护巡洋舰 • 肇和 • 应瑞
CNT防护巡洋舰 • 济安
轻巡洋舰 • 逸仙
宁海级轻巡洋舰 • 宁海 • 平海
苏联MK-6方案轻巡洋舰 • 哈尔滨
战巡 1913年海军计划战列巡洋舰 • 寰昌
轻航 水上飞机母舰 • 镇海 • 华甲
运输 华壬/定安级运输舰 • 定安
驱逐 西北风级驱逐舰 • 西北风 • 西南风
诗人级驱逐舰 • 阿尔弗雷多·奥里亚尼 • 文琴佐·焦贝蒂
索尔达蒂级驱逐舰 • 龙骑兵
航海家级驱逐舰 • 尼科洛索·达雷科 • 埃曼努埃尔·佩萨格诺
罗马统帅级大型驱逐舰 • 阿蒂利奥·雷戈洛 • 庞培·马格诺
轻巡 佣兵队长级(5批次)轻巡洋舰 • 阿布鲁齐公爵 • 朱塞佩·加里波第
重巡 特伦托级重巡洋舰 • 特伦托 • 的里雅斯特
扎拉级重巡洋舰 • 扎拉 • 戈里齐亚 • 波拉
博尔扎诺级重巡洋舰 • 博尔扎诺
战列 加富尔伯爵级战列舰 • 加富尔伯爵 • 朱利奥·凯撒
安德烈亚·多利亚级战列舰 • 安德烈亚·多利亚
维托里奥·维内托级战列舰 • 维托里奥·维内托 • 利托里奥 • 罗马
UP41方案战列舰 • 马可·波罗
航母 远洋客轮改装航空母舰 • 天鹰
维托里奥·维内托级改装航空母舰 • 帝国
潜艇 布林级潜艇 • 托里拆利
马可尼级潜艇 • 莱昂纳多·达·芬奇
驱逐 Pr.7型驱逐舰 • 威严 • 神速 • 雷鸣 • 洪亮
Pr.7-U型驱逐舰 • 灵敏 • 凶猛
Pr.30/30-K型驱逐舰 • 火力
Pr.38型驱逐领舰 • 明斯克
Pr.48型驱逐领舰 • 基辅
Pr.20-I型驱逐领舰 • 塔什干 • 塔什干(μ兵装)
轻巡 帕拉达级防护巡洋舰 • 阿芙乐尔
博加特里级防护巡洋舰 • 水星纪念
奥马哈级轻巡洋舰 • 摩尔曼斯克
Pr.26型轻巡洋舰 • 基洛夫 • 伏罗希洛夫
Pr.68/68-K型轻巡洋舰 • 恰巴耶夫 • 古比雪夫
重巡 Pr.83型重巡洋舰 • 塔林
1935年预研方案Pr."X"重巡洋舰 • 库尔斯克
超巡 Pr.69型大型巡洋舰 • 喀琅施塔得
战列 甘古特级战列舰 • 甘古特 • 波尔塔瓦 • 塞瓦斯托波尔
复仇级战列舰 • 阿尔汉格尔斯克
Pr.23型战列舰 • 苏维埃同盟 • 苏维埃贝拉罗斯 • 苏维埃罗西亚
航母 Pr.71B型航空母舰 • 契卡洛夫
Pr.72型航空母舰 • 伏尔加
驱逐 机敏级驱逐舰 • 福尔班
大胆级驱逐舰 • 鲁莽 • 鲁莽(μ兵装) • 倔强
沃克兰级大型驱逐舰 • 马耶·布雷泽
空想级大型驱逐舰 • 可怖 • 凯旋
轻巡 训练巡洋舰 • 圣女贞德
布雷巡洋舰 • 埃米尔·贝尔汀
德·格拉斯级轻巡洋舰 • 吉尚
重巡 絮弗伦级重巡洋舰 • 絮弗伦
1940年海军计划重巡洋舰 • 路易九世
超巡 敦刻尔克级原型方案大型巡洋舰 • 布雷斯特
战列 里昂级战列舰 • 里昂
黎塞留级战列舰 • 黎塞留 • 香槟
航母 诺曼底级改装航空母舰 • 贝亚恩
霞飞级航空母舰 • 伴尔维
潜艇 巡洋潜艇 • 絮库夫
驱逐 机敏级驱逐舰 • 勒马尔
沃克兰级大型驱逐舰 • 沃克兰 • 凯尔圣 • 塔尔图
空想级大型驱逐舰 • 恶毒 • 恶毒(μ兵装) • 不屈
轻巡 拉·加利索尼埃级轻巡洋舰 • 拉·加利索尼埃 • 马赛曲
重巡 絮弗伦级重巡洋舰 • 福煦
条约型C4重巡洋舰 • 阿尔及利亚
战巡 敦刻尔克级战列巡洋舰 • 敦刻尔克
战列 黎塞留级战列舰 • 让·巴尔 • 克莱蒙梭 • 加斯科涅 • 加斯科涅(μ兵装)
阿尔萨斯级战列舰 • 弗兰德尔
航母 霞飞级航空母舰 • 霞飞
驱逐 其他舰船 • 泛用型布里 • 试作型布里MKII • 特装型布里MKIII
风帆S 风帆舰(特殊) • 皇家财富号 • 玛丽·西莱斯特号 • 维达号
风帆V 风帆舰(先锋) • 金鹿号 • 加里冒险号
风帆M 风帆舰(主力) • 圣马丁号
驱逐 群白 • 布兰 • 群白之心
轻巡 绀紫 • 涅普顿 • 绀紫之心
重巡 圣黑 • 诺瓦露 • 圣黑之心
航母 翡绿 • 贝露 • 翡绿之心
驱逐 BILI • 22 • 33
驱逐 传颂之物 • 猫音
轻巡 传颂之物 • 露露缇耶
重巡 传颂之物 • 久远
轻航 传颂之物 • 乌璐露 • 萨拉娜
航母 传颂之物 • 芙米露露
驱逐 KizunaAI • 绊爱
重巡 KizunaAI • 绊爱·Elegant
战列 KizunaAI • 绊爱·SuperGamer
航母 KizunaAI • 绊爱·Anniversary
驱逐 维纳斯假期 • 玛莉萝丝
轻巡 维纳斯假期 • 海咲 • 莫妮卡
重巡 维纳斯假期 • 
战巡 维纳斯假期 • 
战列 维纳斯假期 • 穗香 • 凪咲
轻航 维纳斯假期 • 露娜
航母 维纳斯假期 • 女天狗
轻巡 iM@S • 天海春香
重巡 iM@S • 三浦梓
战列 iM@S • 水濑伊织
航母 iM@S • 如月千早
潜艇 iM@S • 双海亚美 • 双海真美
运输 iM@S • 秋月律子
轻巡 SSSS.GRIDMAN • 宝多六花 • 
重巡 SSSS.GRIDMAN • 奈美子
SSSS.DYNAZENON • 南梦芽
战列 SSSS.GRIDMAN • 新条茜
SSSS.DYNAZENON • 
航战 SSSS.DYNAZENON • 第二代
航母 SSSS.DYNAZENON • 飞鸟川千濑
运输 SSSS.DYNAZENON • 公主
轻巡 莱莎的炼金工房 • 莱莎琳·斯托特
重巡 莱莎的炼金工房 • 莉拉·德西亚斯
超巡 莱莎的炼金工房 • 卡菈·伊迪亚斯
战列 莱莎的炼金工房 • 帕特莉夏·阿贝尔海姆
轻航 莱莎的炼金工房 • 科洛蒂娅·巴兰茨
航母 莱莎的炼金工房 • 赛莉·古劳斯
轻巡 闪乱神乐NL • 飞鸟
重巡 闪乱神乐NL • 斑鸠 • 夕烧
战列 闪乱神乐NL • 雪不归
轻航 闪乱神乐NL • 
航母 闪乱神乐NL • 雪泉
潜艇 闪乱神乐NL • 

--------------------------------------------------
--	TODO:
--	
--------------------------------------------------



--------------------------------------------------
--	调用模块:舰娘数据
--------------------------------------------------
local p = require('模块:舰娘数据')
local mSI = require('模块:舰娘图标')
local mSDC = require('模块:舰娘数据/型号')
local mCD = require('模块:舰娘数据/级别')

--------------------------------------------------
--	公开函数
--------------------------------------------------

-- 显示一个导航项目,参数#1 - 船名
p.ShowNavItem = function(frame)
	local data = { dye = 3, transform = 1,}
	data.ship = normalizeShipName(frame.args[1])	
	return mSI.ParseShipTextOnly(data)
end
p["显示项目"] = p.ShowNavItem

-- 显示一段导航列表,参数#1 - 舰船类型
p.ShowNavListInType = function(frame)
	local ship_type = parseShipType(frame.args[1]) or 1;
	local list = getShipListInType(ship_type)
	if #list < 1 then return '' end
	local last_rare = p.ship_data[list[1]].rarity
	for i = 1, #list do
		local ship = list[i]
		local rare = p.ship_data[ship].rarity
		list[i] = ('•&nbsp;[[%s|<span style="color:%s;">%s</span>]]'):format(
					ship, rarityToColor(rare), ship
				)
		if rare ~= last_rare then
			list[i] = '<br>'..list[i]
			last_rare = rare
		end
	end
	return table.concat(list)
end
p["依类型显示导航列表"] = p.ShowNavListInType 

--显示所有改造的舰船列表
p.ShowNavListOfKai = function(frame)
	local list = {}
	for ship, data in pairs(p.ship_data) do
		if data.transform then
			table.insert(list, data)
			data.name = ship
		end
	end
	
	table.sort(list, function(a, b)
		if a.rarity ~= b.rarity then
			return a.rarity > b.rarity
		elseif a.nationality ~= b.nationality then 
			return a.nationality < b.nationality 
		elseif a.type ~= b.type then 
			return a.type > b.type
		else
			return a.id < b.id
		end
	end)
	
	if #list < 1 then return '' end
	
	local last_rare = list[1].rarity
	local data = { dye = 2, transform = 3 }
	for i = 1, #list do
		local ship = list[i]
		local rare = ship.rarity
		data.ship = ship.name
		list[i] = '•&nbsp;'.. mSI.ParseShipTextOnly(data)..' '
		
		if rare ~= last_rare then
			list[i] = '<br>'..list[i]
			last_rare = rare
		end
	end
	return table.concat(list)
end
p["依改造显示导航列表"] = p.ShowNavListOfKai 

-- 显示整个导航区域
p.ShowNavTableContent = function(frame)
	local content = [[
{| style="width:100%;" class="table-ShowNavTableContent"
]]
	local table_line = [[
|-
! style="width:8%%;text-align:center" | %s
| %s
|-
| colspan=2|
----
]]	-- {1} = 驱逐、战列等;{2} = 舰船列表
	local postfix = [[
|} ]]

	--当前页面的名称
	local current_title = normalizeShipName(mw.title.getCurrentTitle().text)
	
	local data = {}
	--分类汇总
	for k, v in pairs(p.ship_data) do
		data[v.type] = data[v.type] or {}
		table.insert(data[v.type], k)
	end
	--遍历每个舰船类型
	for ship_type, ship_list in pairs(data) do
		--排序(稀有度高,国家编号小,舰船编号小)
		table.sort(ship_list, function(x,y)
			local tx = p.ship_data[x]
			local ty = p.ship_data[y]
			if tx.rarity ~= ty.rarity then 
				return tx.rarity > ty.rarity 
			end
			if tx.nationality ~= ty.nationality then 
				return tx.nationality < ty.nationality 
			end
			return tx.id < ty.id
		end)
		
		--记录最后一个稀有度,用于按稀有度换行
		local last_rare = #ship_list > 0
				and p.ship_data[ship_list[1]].rarity
				or 0
		
		--遍历每个舰船
		local tmp = { dye = 3, transform = 1,}
		for i = 1, #ship_list do
			local ship = ship_list[i]
			tmp.ship = ship						--舰娘名称
			tmp.rarity = p.ship_data[ship].rarity 		--舰娘稀有度
			
			local html = mSI.ParseShipTextOnly(tmp);
			ship_list[i] = ('•&nbsp;%s '):format(html);
			
			if tmp.rarity ~= last_rare then
				ship_list[i] = '<br>'..ship_list[i]
				last_rare = tmp.rarity
			end
		end
		
		content = content..table_line:format(
						typeIdToName(ship_type),
						table.concat(ship_list)
					);
	end
	
	return content..postfix
end
p["显示导航列表"] =p.ShowNavTableContent 

--显示带标签页的导航面板
p.ShowNavTabTable = function(frame)

	--当前页面的名称
	local curShip = normalizeShipName(mw.title.getCurrentTitle().text)
	local curNation = p.ship_data[curShip] and p.ship_data[curShip].nationality or 1
	
	local ship_data = p.ship_data	
	local ship_data_class = mSDC.ship_data_class
	local ship_class_list = mCD.ship_class_list
	
	--分类汇总
	local data = {}
	for k, v in pairs(p.ship_data) do
		data[v.nationality] = data[v.nationality] or {}
		data[v.nationality][v.type] = data[v.nationality][v.type] or {}
		table.insert(data[v.nationality][v.type], k)
	end
	
	
	--标签页
	local args = {
		theme = 'shiptable',
		label_style = nil,
		[1] = { 
			title = '皇家',
			text = '胡德 厌战 反击 etc',
			id = 'en',
			active = 1
		}
	}
	
	--整理表data的索引
	local nation_list = {}
	for nation, _ in pairs(data) do
		table.insert(nation_list, nation)
	end
	table.sort(nation_list)
	
	--遍历所有阵营
	for index, nation in ipairs(nation_list) do
		local ship_list = data[nation]
		
		--表格开始
		local content = [[

{| style="width:100%;" class="table-ShowNavTabTable"
]]
		--遍历每一个类型
		for ship_type = 1, 13 do
			local list = ship_list[ship_type]
			if list and #list > 0 then
				
				--遍历每个舰船
				local tmp = { dye = 3, transform = 1,}
				for i = 1, #list do
					local ship = list[i]
					tmp.ship = ship						--舰娘名称
					
					local html = mSI.ParseShipTextOnly(tmp);
					list[i] = ('•&nbsp;%s '):format(html);
				end
				
				--表头
				content = content..[[
|-
! ]] .. typeIdToName(ship_type) .. [[

| ]] .. table.concat(list) .. '\n'
						
			end
		end
		--表格结束
		content = content.. '|}\n'
		
		args[index] = {
			title = nationIdToName(nation),
			text = content,
			id = 'Nav-'..nationIdToEn(nation):upper(),
			active = curNation == nation
		}
	end
	
	
	local mTBP = require('Module:选项卡面板')
	return mTBP.GenerateWholePanel(args)
end
p["显示标签页导航面板"]=p.ShowNavTabTable

--显示带标签页、按型号划分的导航面板
p.ShowShipClassNavPannel = function(frame, shipHtmlSerializer)

	--将舰娘名字转换为有样式的HTML文本
	shipHtmlSerializer = shipHtmlSerializer or function(ship)
		return ('•&nbsp;%s '):format(
			mSI.ParseShipTextOnly({ 
				dye = 3, 
				transform = 1,
				ship = ship
				})
		)
	end

	--当前页面的名称
	local curShip = normalizeShipName(mw.title.getCurrentTitle().text)
	local curNation = p.ship_data[curShip] and p.ship_data[curShip].nationality or 1
	
	--加载模块
	local ship_data_class = mSDC.ship_data_class
	local ship_data = p.ship_data
	local ship_class_list = mCD.ship_class_list
		
	--分类汇总
	local data = {}
	for ship, v in pairs(ship_data) do
		data[v.nationality] = data[v.nationality] or {}
		data[v.nationality][v.type] = data[v.nationality][v.type] or {}
		
		--当ship_data中有该舰船,而ship_data_class中没有时
		if not ship_data_class[ship] then
			mw.log("ShowShipClassNavPannel> ship_data_class中缺少ship_data中记录的舰船-"..ship)
			ship_data_class[ship] = {id = v.id}
		end
		
		
		local v2 = ship_data_class[ship]
		local class = v2.class_des or '其他'
		data[v.nationality][v.type][class] = 
				data[v.nationality][v.type][class] or {}
		
		table.insert(data[v.nationality][v.type][class], ship)
	end
	
	--标签页面板参数
	local args = {
		theme = 'shiptable',
		label_style = 'font-weight:bolder;padding:0.4em 0.5em;cursor:pointer;',
		[1] = { 
			title = '皇家',
			text = '胡德 厌战 反击 etc',
			id = 'en',
			active = 1
		}
	}
	
	--整理表data的索引
	local nation_list = {}
	for nation, _ in pairs(data) do
		table.insert(nation_list, nation)
	end
	table.sort(nation_list)
	
	--遍历所有阵营
	for index, nation in ipairs(nation_list) do
		
		--表格开始
		local content = [[

<table class="table-ShowShipClassNavPannel" width="100%">
]]
		
		--遍历所有舰船类型
		for sortID, stype in ipairs(p.type_sort) do
			
			if data[nation][stype] then
				--对舰船级别排序
				local class_list = {}
				
				for class, ship_list in pairs(data[nation][stype]) do
					table.insert(class_list, class)
					
					--对舰船进行排序
					table.sort(ship_list, function(a,b)
							local sa = ship_data_class[a].serial_no
							local sb = ship_data_class[b].serial_no
							if sa == sb then
								return ship_data[a].id < ship_data[b].id
							else
								return (sa or -1) < (sb or -1)
							end
						end
					)
				end
				
				table.sort(class_list, function(a,b)
						local ai, bi
						for i, c in pairs(ship_class_list) do
							if a == c then
								ai = i
							end
							if b == c then
								bi = i
							end
						end
						if a == '其他' then
							return false
						elseif b == '其他' then
							return true
						end
						if not ai or not bi then
							local shipA = data[nation][stype][a][1]
							local shipB = data[nation][stype][b][1]
							return ship_data_class[shipA].id 
								< ship_data_class[shipB].id
						end
						return ai < bi
					end
				)
				
				
				--舰船类型表头
				if stype > 1 then
					content = content .. ([[
<tr class="tr-top">
<th class="th-ship-type" rowspan="%s">%s
</th>
]]):format(#class_list, typeIdToName(stype))
				else
					content = content .. ([[
<tr class="tr-top">
<th class="th-ship-type" rowspan="%s">%s
</th>
]]):format(#class_list, typeIdToName(stype))
				end
				
				
				--遍历所有舰船级别
				for i, class in ipairs(class_list) do
					local ship_list = data[nation][stype][class]
					local ship_v = ship_data_class[ship_list[1]]
					local class_name = class == '其他' and '其他舰船' 
								or ship_v.type_des and ('%s<span class="ship-class-postfix">%s</span>'):format(class, ship_v.type_des)
								or class
					
					
					--遍历每一艘船
					for j = 1, #ship_list do
						--解析为HTML文本
						ship_list[j] = shipHtmlSerializer(ship_list[j]);
					end
						
					
					--舰船级别表头 / 内容
					if i > 1 then
						content = content .. ([[
<tr>
<th class="th-ship-class">%s
</th>
<td>%s
</td>
</tr>
]]):format(class_name, table.concat(ship_list))
					else
						content = content .. ([[
<th class="th-ship-class">%s
</th>
<td>%s
</td>
</tr>
]]):format(class_name, table.concat(ship_list))
					
					end
					
				end
			end
		end
		
		--表格结束
		content = content.. '</table>\n'
		
		args[index] = {
			title = nationIdToName(nation),
			text = content,
			id = 'Nav-'..nationIdToEn(nation):upper(),
			active = curNation == nation
			}
	end
	
	
	local mTBP = require('Module:选项卡面板')
	return mTBP.GenerateWholePanel(args)
end
p['显示舰船型号导航面板'] = function(frame)

	local handler = frame.args[1] and mw.text.trim(frame.args[1])
	handler = handler and mSI[handler];
	local serializer;
	if (handler) then
		local ff = mw.getCurrentFrame();
		ff.args = parseArgument(frame);
	
		serializer = function(ship)
			frame.args[1] = ship;
			return (' %s '):format(
					handler(ff)
				)
		end
	end
	
	return p.ShowShipClassNavPannel(frame, serializer);
end

--------------------------------------------------
--	测试函数
--------------------------------------------------

p['测试'] = function(frame)
	mw.log('测试', frame[1])
	
	local foo = p[frame[1]]
	if not foo then
		local msg = ('函数%s不存在!'):format(frame[1] or 'nil')
		mw.log(msg)
		return msg
	end
	
	return mw.text.nowiki(foo(frame))
end


--------------------------------------------------
--	私有函数
--------------------------------------------------
--解析传入参数——去空白符+转换数字
function parseArgument(frame)
	local arg = {}
	for k, v in pairs(frame.args) do
		arg[k] = tonumber(v) or Text.trim(v)
	end
	return arg
end

function getShipListInType(shipType)
	local ret = {}
	for k, v in pairs(p.ship_data) do
		if v.type == shipType then
			table.insert(ret,k)
		end
	end
	--排序
	table.sort(ret, function(x,y)
		local tx = p.ship_data[x]
		local ty = p.ship_data[y]
		if tx.rarity ~= ty.rarity then 
			return tx.rarity > ty.rarity 
		end
		if tx.nationality ~= ty.nationality then 
			return tx.nationality < ty.nationality 
		end
		return tx.id < ty.id
	end)
	return ret
end

function parseShipType(text)
	if type(text) == 'number' then return number end
	text = trim(text)
	
	for id, stype in pairs(p.type_data) do
		if text == stype then
			return id
		end
	end
	
	return text == '轻航' and 6		--轻航
		or text == '轻母' and 6
		or text == '正航' and 7		--正航
		or text == '航母' and 7
		or text == '空母' and 7
		or nil
end

function typeIdToName(id)
	return p.TypeIdToName(id,  '未知')
end

function nationIdToName(id)
	return p.NationIdToName(id, '未知')
end

function nationIdToEn(id)
	return p.nation_data.prints[id] or 'nil'
end

function rarityToColor(n)
	return mSI.RarityToColor(n)
end

function trim(str)
	if not str then return '' end
	return mw.text.trim(str)
end

function normalizeShipName(str)
	return p.NormalizeShipName(trim(str or '') or '')
end


return p