- 您可以在 贡献者社区 中了解更新进度或提出建议
模块:舰娘特殊装备
此模块的文档可以在模块:舰娘特殊装备/doc创建
local eqData = require("模块:舰娘装备数据改")
local sData = require("模块:舰娘数据")
local scData = require("模块:ShipClass")
local f = {}
local equipDataTb = eqData.equipDataTb;
local shipDataTb = sData.shipDataTb;
local scDataTb = scData.shipclassDataTb;
local nShipType = {
"海防舰",
"驱逐舰",
"轻型巡洋舰",
"重型雷装巡洋舰",
"重型巡洋舰",
"航空巡洋舰",
"轻型航空母舰",
"战列巡洋舰",
"战列舰",
"航空战列舰",
"航空母舰",
"超弩级战舰",
"潜水舰",
"潜水航空母舰",
"补给舰(深海)",
"水上机母舰",
"扬陆舰",
"装甲航空母舰",
"工作舰",
"潜水母舰",
"练习巡洋舰",
"补给舰",
"轻航空巡洋舰",
"改装航空巡洋舰",
"兵装实验轻巡"
}
local mapping = {
["驱逐舰"] = "驱逐舰",
["轻巡洋舰"] = "轻巡洋舰",
["重雷装巡洋舰"] = "重雷装巡洋舰",
["重巡洋舰"] = "重巡洋舰",
["航空巡洋舰"] = "航空巡洋舰",
["战列舰"] = "低速战舰",
["战列巡洋舰"] = "高速战舰",
["航空战列舰"] = "航空战舰",
["轻型航母"] = "轻空母",
["正规航母"] = "正规空母",
["装甲航母"] = "装甲空母",
["水上机母舰"] = "水上飞机母舰",
["潜艇"] = "潜水艇",
["航空潜艇"] = "潜水空母",
["登陆突击舰"] = "扬陆舰",
["维修舰"] = "工作舰",
["潜艇补给舰"] = "潜水母舰",
["练习巡洋舰"] = "练习巡洋舰",
["舰队油船"] = "补给舰",
["海防舰"] = "海防舰",
["轻航空巡洋舰"] ="轻航空巡洋舰",
["改装航空巡洋舰"] = "改装航空巡洋舰",
["兵装实验轻巡"] = "兵装实验轻巡"
}
equipTypeTb = {
[1] ="小口径主炮",
[2] ="中口径主炮",
[3] ="大口径主炮",
[4] ="副炮",
[5] ="鱼雷",
[6] ="舰上战斗机",
[7] ="舰上爆击机",
[8] ="舰上攻击机",
[9] ="舰上侦察机",
[10] ="水上侦察机",
[11] ="水上爆击机",
[12] ="小型电探",
[13] ="大型电探",
[14] ="声呐",
[15] ="爆雷",
[16] ="追加装甲",
[17] ="机关部强化",
[18] ="对空强化弹",
[19] ="对舰强化弹",
[20] ="VT信管",
[21] ="对空机铳",
[22] ="特殊潜航艇",
[23] ="应急修理要员",
[24] ="上陆用舟艇",
[25] ="旋翼飞机",
[26] ="对潜哨戒机",
[27] ="追加装甲(中型)",
[28] ="追加装甲(大型)",
[29] ="探照灯",
[30] ="简易输送部材",
[31] ="舰艇修理设施",
[32] ="潜水舰鱼雷",
[33] ="照明弹",
[34] ="司令部设施",
[35] ="航空要员",
[36] ="高射装置",
[37] ="对地装备",
[38] ="大口径主炮(II)",
[39] ="水上舰要员",
[40] ="大型声呐",
[41] ="大型飞行艇",
[42] ="大型探照灯",
[43] ="战斗粮食",
[44] ="补给物资",
[45] ="水上战斗机",
[46] ="特型内火艇",
[47] ="陆上攻击机",
[48] ="局地战斗机",
[50] ="输送部材",
[51] ="潜水艇装备",
[57] ="喷气式战斗轰炸机",
[93] ="大型电探(II)",
[94] ="舰上侦察机(II)",
[99] ="其他",
}
function f.equipData(frame)
local value;
local value1;
-- value = "无特殊装备"
if shipDataTb[frame.args[1]] == nil then
return "";
end
local t = {}
local tt = {}
local aa = {}
local nn = {}
local pp ={}
for eqNum in pairs(equipDataTb) do
for k, v in pairs(equipDataTb[eqNum]["装备适用"]) do
if not mapping[v] then
-- if eqNum == "001" then
-- value
if v == shipDataTb[frame.args[1]]["中文名"] then
table.insert(nn,equipDataTb[eqNum]["类别"][3])
table.insert(pp,equipDataTb[eqNum]["类别"][3])
table.insert(aa,equipDataTb[eqNum]["中文名"])
-- table.insert(t, "[[" .. equipDataTb[eqNum]["中文名"] .. "]]")
end
end
end
end
if #aa == 0 then
value = "无特殊装备"
return value
end
table.sort(nn)
-- else
if #aa ~= 0 then
local lei={}
table.insert(lei,nn[1])
for ss=1,#nn do
-- for kk=1,#lei do
if nn[ss]~=lei[#lei] then
table.insert(lei,nn[ss])
end
-- end
end
for ss=1,#lei do
table.insert(tt,equipTypeTb[lei[ss]])
table.insert(tt," : ")
for xx=1,#nn do
if pp[xx] == lei[ss] then
table.insert(tt,"[[" .. aa[xx] .. "]]")
if xx~=#nn then
table.insert(tt," ")
end
end
end
table.insert(tt,"<br>")
end
value = table.concat(tt)
return value
end
end
function f.getBonusEquip(frame)
local id = frame.args[1]
local g_id
if not id or not shipDataTb[id] then
return "无效舰娘ID"
else
g_id = shipDataTb[id].ID
end
local log = {}
local r = {}
local belong = function(id, t)
for _, v in pairs(t) do
if (v == shipDataTb[id]["中文名"]) then
return true
elseif v:find("^(.+)级$") then
local sc = v:match("^(.+)级$")
if not scDataTb[sc] then
table.insert(log, "缺失信息: " .. sc)
else
for __, tid in pairs(scDataTb[sc]) do
if tid == tonumber(g_id) then
return true
end
end
end
elseif nShipType[shipDataTb[id]["舰种"]] == v or mapping[nShipType[shipDataTb[id]["舰种"]]] == v then
return true
end
end
return false
end
local fmt = function(p, t, plus)
local b = {}
for k, v in pairs(t) do
if type(v) == "table" then
local s = ""
if p == "区域" then
s = ("(出击%s时) "):format(k)
elseif p == "改修" then
s = ("(+%s☆)) "):format(k)
else
s = ("(装备%s个时) "):format(k)
end
local bonus = {}
for k2, v2 in pairs(v) do
local op = "+"
if tonumber(v2) < 0 then
op = "-"
end
table.insert(bonus, string.format("%s %s %d", k2, op, math.abs(v2)))
end
table.insert(b, s .. table.concat(bonus, ","))
else
local op = "+"
if tonumber(v) < 0 then
op = "-"
end
table.insert(b, string.format("%s %s %d", k, op, math.abs(v)))
end
end
return (not plus and "" or "同时装备" .. table.concat(plus, " + ") .. "时, ") .. table.concat(b, ", ")
end
for k, v in pairs(equipDataTb) do
local c = 1
if belong(id, v["装备适用"]) then -- todo
while true do
local ref = v["额外收益" .. (c == 1 and "" or c)]
if not ref then
break
end
if (not ref["适用舰娘"] or belong(id, ref["适用舰娘"])) and (not ref["非适用舰娘"] or not belong(id, ref["非适用舰娘"])) then
table.insert(r, string.format("[[%s]], %s;", v["中文名"], fmt(ref["收益类型"], ref["收益属性"], ref["装备组合"])))
end
c = c + 1
end
end
end
return table.concat(r, "<br>") .. table.concat(log, "<br>")
end
return f