此处公告通常对读者进行申明或对该WIKI某些规则进行公告,请在确认后修改本通告
本WIKI编辑权限开放,欢迎收藏起来防止迷路,也希望有爱的小伙伴和我们一起编辑哟~
编辑帮助:目录 • BWIKI反馈留言板
此处公告通常对读者进行申明或对该WIKI某些规则进行公告,请在确认后修改本通告。本WIKI编辑权限开放,欢迎收藏起来防止迷路,也希望有爱的小伙伴和我们一起编辑哟~
模块:SkillData
此模块的文档可以在模块:SkillData/doc创建
-- Module:SkillData
-- 从Character模块接受技能相关的附加buff并进行高亮处理,数据位于Data:SkillData.json
local p = {}
local Highlight = require('Module:Highlight')
function getBuffEffect(buffName)
-- 去除前缀,获取实际的buff名称
local actualBuffName = buffName:sub(3) -- 去除前缀(假设前缀长度为2)
local prefix = buffName:sub(1, 2) -- 获取前缀
-- 根据前缀选择相应的 JSON 文件
local jsonFile
if prefix == 'sp' then
jsonFile = 'Data:special.json'
elseif prefix == 'de' then
jsonFile = 'Data:debuff.json'
elseif prefix == 'bf' then
jsonFile = 'Data:buff.json'
else
return '' -- 如果前缀不正确,返回空字符串
end
local buffData = mw.text.jsonDecode(mw.title.new(jsonFile):getContent() or '{}')
local buff = buffData[actualBuffName]
if not buff then
return '' -- 如果没有找到buff,返回空字符串
end
local effectText = buff.effect
local greyOutput = ''
if buff.grey and #buff.grey > 0 then
local greyElements = {}
for _, element in ipairs(buff.grey) do
table.insert(greyElements, string.format('<span style="color:#b7b7b7"><%s></span>', element))
end
greyOutput = table.concat(greyElements) .. '<br/>' -- 连接这些元素并添加换行
end
-- 检测 addition 是否存在并处理嵌套 buff
local additionalEffects = ''
if buff.addition and #buff.addition > 0 then
local additionalBuffs = {}
for _, additionalBuffName in ipairs(buff.addition) do
local additionalEffect = getBuffEffect(additionalBuffName) -- 递归调用
table.insert(additionalBuffs, additionalEffect)
end
additionalEffects = table.concat(additionalBuffs) -- 合并附加效果
end
-- 调用高亮模块处理效果文本
local highlightedEffect = highlightContent(effectText)
-- 确定技能名的类
local className = ''
if prefix == 'sp' then
className = 'style="color:#ef92ff"'
elseif prefix == 'de' then
className = 'style="color:#ff5f5f"'
elseif prefix == 'bf' then
className = 'style="color:#93b4ff"'
end
-- 返回技能名和效果,包括嵌套的附加效果
return string.format('<div style="font-size:small">· <span %s>【%s】</span><br/>%s%s%s</div>', className, buff.name, greyOutput, highlightedEffect, additionalEffects)
end
return p