全站通知:
模块:弦能增幅网络
刷
历
编
跳到导航
跳到搜索
local p = {}
local bombData = mw.loadData("模块:弦能增幅网络/BombData")
local escortData = mw.loadData("模块:弦能增幅网络/EscortData")
local skillData = mw.loadData("模块:角色/SkillData")
local roleValueData = mw.loadData("模块:弦能增幅网络/RoleValueData")
local acandy = require("模块:ACandy")
local stringUtil = require("模块:StringUtil")
local a, Raw, Fragment = acandy.a, acandy.Raw, acandy.Fragment
local div, span = a.div, a.span
local format = string.format
----行样式
local function rowStyle(text, cost, changeKey)
local row_html =
div { class = "upgrade-row", ['data-toggle'] = "collapse", ['data-parent'] = "#mc_accordion-"..changeKey, ['data-target'] = "#mc_collapse-"..changeKey,
div { class = "left-shade" },
div { class = "upgrade-text", text },
div { class = "upgrade-cost", cost..'[[文件:图标-能量点.png|15px|link=]]' },
}
return tostring(row_html)
end
----组样式
local function groupStyle(type, icontype, partsname, value)
local group_html =
div { class = "upgrade-group",
div { class = "upgrade-top",
span { class = "upgrade-icon upgrade-icon"..type,
span { class = "upgrade-icon-inner", icontype },
},
span { class = "upgrade-name", partsname },
span { class = "upgrade-triangle" },
},
div { class = "upgrade-options", Raw(value) },
}
return group_html
end
function p.escortMode(frame)
local args = frame.args
local icon = frame.args['icon']
local iconType = frame.args['type']
local roleName = frame.args['name']
local groupType = frame.args['grouptype']
local groupIcons = {
["1"] = "[[文件:图标-超弦进化系统 "..icon.."改.png|link=]]",
["2"] = "[[文件:"..icon.."|link=]]",
["3"] = "[[文件:图标-超弦进化系统 8改.png|link=]]",
["4"] = "[[文件:图标-超弦进化系统_10改.png|link=]]",
["5"] = "[[文件:图标-超弦进化系统_11改.png|link=]]",
}
local iconsType = groupIcons[iconType]
assert(iconsType, "类型错误")
local roleData = escortData[roleName]
assert(roleData, "角色名称错误: "..(roleName or "未知"))
local partsData = roleData[groupType]
assert(partsData, "类型错误: "..(groupType or "未知"))
local partsName = partsData['Name']
-- 获取所有的Desc和Need
local partsTexts = partsData['Desc']
local partsCosts = partsData['Need']
-- 处理技能觉醒内容
local roleSkill = skillData[roleName]
assert(roleSkill, "角色名称错误: "..(roleName or "未知"))
local roleSkillTypeData = roleSkill["技能觉醒"]
local awakeningSkillInfo1 = roleSkillTypeData[1]
local awakeningSkillInfo2 = roleSkillTypeData[2]
local awakeningSkillInfo3 = roleSkillTypeData[3]
-- 动态生成分组内容
local groupedRows = {}
local keyTemplate = "Escort%sGroup%dChange"
for i, desc in ipairs(partsTexts) do
local desc = partsTexts[i]
local cost = partsCosts[i]
if desc and desc ~= "" then
local changeIndex = i
local currentChangeKey = format(keyTemplate, groupType, i)
local changeValue = args[currentChangeKey] or ""
local collapseHTML = ""
local rowHTML = rowStyle(desc, cost, currentChangeKey)
if currentChangeKey == "EscortParts6Group1Change" then
changeValue = awakeningSkillInfo1['Intro']
elseif currentChangeKey == "EscortParts7Group1Change" then
changeValue = awakeningSkillInfo2['Intro']
elseif currentChangeKey == "EscortParts7Group2Change" then
changeValue = awakeningSkillInfo3['Intro']
end
collapseHTML = ('<div class="panel-collapse collapse growthcollapse" id="mc_collapse-%s">%s</div>'):format(
currentChangeKey, changeValue)
table.insert(groupedRows, rowHTML..collapseHTML)
end
end
-- 构建最终输出(使用原始type参数)
local rows = table.concat(groupedRows, '\n') -- 添加换行增强可读性
local Escort_html = groupStyle(iconType, iconsType, partsName, rows)
return Escort_html
end
function p.bombMode(frame)
local args = frame.args
local icon = frame.args['icon']
local iconType = frame.args['type']
local roleName = frame.args['name']
local groupType = frame.args['grouptype']
local groupIcons = {
["1"] = "[[文件:图标-超弦进化系统 "..icon.."改.png|link=]]",
["2"] = "[[文件:"..icon.."|link=]]",
["3"] = "[[文件:图标-超弦进化系统 8改.png|link=]]",
["4"] = "[[文件:图标-超弦进化系统_10改.png|link=]]",
}
local iconsType = groupIcons[iconType]
assert(iconsType, "类型错误")
local roleData = bombData[roleName]
assert(roleData, "角色名称错误: "..(roleName or "未知"))
local partsData = roleData[groupType]
assert(partsData, "类型错误: "..(groupType or "未知"))
local partsName = partsData['Name']
-- 获取所有的Desc和Need
local partsTexts = partsData['Desc']
local partsCosts = partsData['Need']
-- 动态生成分组内容
local groupedRows = {}
local keyTemplate = "Bomb%sGroup%dChange"
for i, desc in ipairs(partsTexts) do
local desc = partsTexts[i]
local cost = partsCosts[i]
if desc and desc ~= "" then
local changeIndex = i
local currentChangeKey = format(keyTemplate, groupType, i)
local changeValue = args[currentChangeKey] or ""
local rowHTML = rowStyle(desc, cost, currentChangeKey)
local collapseHTML = ('<div class="panel-collapse collapse growthcollapse" id="mc_collapse-%s" style="padding: 5px;">%s</div>')
:format(currentChangeKey, changeValue)
table.insert(groupedRows, rowHTML..collapseHTML)
end
end
-- 构建最终输出(使用原始type参数)
local rows = table.concat(groupedRows, '\n') -- 添加换行增强可读性
local bomb_html = groupStyle(iconType, iconsType, partsName, rows)
return bomb_html
end
function p.teamMode(frame)
local args = frame.args
local icon = args['icon']
local roleName = args['name']
local groupType = args['grouptype']
local icons = table.concat({ "[[文件:图标-超弦进化系统 ", icon, "改.png|link=]]" })
local roleData = bombData[roleName]
assert(roleData, "角色名称错误: "..(roleName or "未知"))
local partsData = roleData[groupType]
assert(partsData, "类型错误: "..(groupType or "未知"))
local partsname = partsData['Name']
-- 获取所有的Desc和Need
local partstexts = partsData['Desc']
local partscosts = partsData['Need']
-- 动态生成分组内容
local groupedRows = {}
local keyTemplate = "Team%sGroup%dChange"
for i, desc in ipairs(partstexts) do
local desc = partstexts[i]
local cost = partscosts[i]
if desc and desc ~= "" then
local changeIndex = i
local currentChangeKey = format(keyTemplate, groupType, i)
local changeValue = args[currentChangeKey] or ""
local rowHTML = rowStyle(desc, cost, currentChangeKey)
local collapseHTML = ('<div class="panel-collapse collapse growthcollapse" id="mc_collapse-%s" style="padding: 5px;">%s</div>')
:format(currentChangeKey, changeValue)
table.insert(groupedRows, rowHTML..collapseHTML)
end
end
-- 构建最终输出(使用原始type参数)
local rows = table.concat(groupedRows, '\n') -- 添加换行增强可读性
local team_html = groupStyle('1', icons, partsname, rows)
return team_html
end
--角色属性表格
function p.roleProperties(frame)
local roleName = frame.args[1]
local formatter = stringUtil.Formatter [=[
{{| class="klbqtable" style="width:100%;"
|-
! colspan="4" style="background-color: #d9edf7;" class="text-center"|超弦体数值
|-
! style="width: 25%"|生命值
| 130
! style="width: 25%"|护甲值
| {护甲值}
|-
! 护甲每次回复值
| {护甲每次回复值}
! 移速变化
| {移速变化}
|-
! 弦化移速
| 66
! 弦化减伤比例
| 33
|}}
]=]
local role = roleValueData[roleName]
assert(roleName, "角色名称错误")
local function replacer(key)
return role[key] or ""
end
return formatter(replacer)
end
--爆破模式角色技能觉醒
local function awakeningicons(icons)
local awakeningicons = {
["方"] = "[[文件:图标-超弦进化-方形.png]]",
["圆"] = "[[文件:图标-超弦进化-圆形.png]]",
["角"] = "[[文件:图标-超弦进化-三角.png]]",
}
local icons = awakeningicons[icons]
assert(icons, "形状名称错误")
return icons
end
function p.awakening(frame)
local roleName = frame.args['name']
local roleskillinfo = skillData[roleName]
assert(roleskillinfo, "角色名称错误: "..(roleName or "未知"))
local RoleSkill1 = roleskillinfo["技能觉醒"][1]
local RoleSkill2 = roleskillinfo["技能觉醒"][2]
local RoleSkill3 = roleskillinfo["技能觉醒"][3]
local roleskillawakening = bombData[roleName]
assert(roleskillawakening, "角色名称错误: "..(roleName or "未知"))
local RoleSkill1awakening = mw.text.split(roleskillawakening["技能觉醒"]["Active1Need"], ',')
local RoleSkill2awakening = mw.text.split(roleskillawakening["技能觉醒"]["Active2Need"], ',')
local RoleSkill3awakening = mw.text.split(roleskillawakening["技能觉醒"]["Active3Need"], ',')
local iconsHTML1, iconsHTML2, iconsHTML3 = "", "", ""
for _, icon in ipairs(RoleSkill1awakening) do
iconsHTML1 = iconsHTML1..awakeningicons(icon).." "
end
for _, icon in ipairs(RoleSkill2awakening) do
iconsHTML2 = iconsHTML2..awakeningicons(icon).." "
end
for _, icon in ipairs(RoleSkill3awakening) do
iconsHTML3 = iconsHTML3..awakeningicons(icon).." "
end
local awakeningSkill1 = p.AwakeningRow(iconsHTML1, RoleSkill1["Name"], RoleSkill1["Intro"])
local awakeningSkill2 = p.AwakeningRow(iconsHTML2, RoleSkill2["Name"], RoleSkill2["Intro"])
local awakeningSkill3 = p.AwakeningRow(iconsHTML3, RoleSkill3["Name"], RoleSkill3["Intro"])
local awakeningHTML = Fragment {
div { class = "col-sm-4", Raw(awakeningSkill1) },
div { class = "col-sm-4", Raw(awakeningSkill2) },
div { class = "col-sm-4", Raw(awakeningSkill3) },
}
return awakeningHTML
end
--爆破模式角色技能觉醒行样式
function p.AwakeningRow(icons_html, Name, Intro)
local awakeningHTML = div { class = "awakening-container",
div { class = "awakening-icons", icons_html },
div { class = "awakening-name", "'''觉醒"..":"..Name.."'''" },
div { class = "awakening-text", Intro },
}
return awakeningHTML
end
return p