-
本WIKI编辑权限开放,欢迎收藏起来防止迷路,也希望有爱的小伙伴和我们一起编辑哟~ 编辑帮助:目录 • BWIKI反馈留言板
本WIKI编辑权限开放,欢迎收藏起来防止迷路,也希望有爱的小伙伴和我们一起编辑哟~ 编辑帮助:目录 • BWIKI反馈留言板
请选择语言:
全站通知:
模块:SkillGui
刷
历
编
跳到导航
跳到搜索
此模块的文档可以在模块:SkillGui/doc创建
-- ModuleSkillGui
local p = {}
-- 定义关键词和标签映射
p.keywords = {
-- 增伤
["(伤害威力)翻倍"] = {"增伤"},
["威力为%d+倍"] = {"增伤"},
["威力增加%d+"] = {"增伤"},
["伤害(额外)提(升)"] = {"增伤"},
["伤害(额外)提(升高)"] = {"增伤"},
["忽略对手%d+%%的双防值"] = {"增伤"},
["对方能力等级越高,此技能威力越大"] = {"增伤"},
["对方体力小于%d+%%时威力加倍"] = {"增伤"},
["后出手的话威力为%d+倍"] = {"增伤"},
["先出手的话威力为%d+倍"] = {"增伤"},
["自身HP小于%d+%%时威力为%d+倍"] = {"增伤"},
["威力随机,随机范围%d+~%d+"] = {"增伤"},
["伤害提升"] = {"增伤"},
["伤害翻倍"] = {"增伤"},
["必定造成双倍伤害"] = {"增伤"},
["伤害为%d+倍"] = {"增伤"},
["造成的伤害提高"] = {"增伤"},
["造成的伤害越大"] = {"增伤"},
["造成的伤害加倍"] = {"增伤"},
["造成的伤害翻倍"] = {"增伤"},
["造成的伤害增加"] = {"增伤"},
["造成的伤害两倍"] = {"增伤"},
["造成的伤害三倍"] = {"增伤"},
["造成的伤害四倍"] = {"增伤"},
["造成的伤害五倍"] = {"增伤"},
["造成的伤害六倍"] = {"增伤"},
-- 恢复
["回复自己的体力"] = {"恢复"},
["恢复自己的体力"] = {"恢复"},
["回复己方体力"] = {"恢复"},
["恢复己方体力"] = {"恢复"},
["回复自身体力"] = {"恢复"},
["恢复自身体力"] = {"恢复"},
["回复%d+点体力"] = {"恢复"},
["恢复%d+点体力"] = {"恢复"},
["回复固定体力值"] = {"恢复"},
["恢复固定体力值"] = {"恢复"},
["回复自身所有PP值"] = {"恢复"},
["恢复自身所有PP值"] = {"恢复"},
["回复自身最大体力的%d+%%"] = {"恢复"},
["恢复自身最大体力的%d+%%"] = {"恢复"},
["回复自身体力的%d+%%"] = {"恢复"},
["恢复自身体力的%d+%%"] = {"恢复"},
["给予对方损伤的一半会回复自己的体力"] = {"恢复"},
["伤害数值的%d+%%恢复自身体力"] = {"恢复"},
["恢复自身最大体力的%d+%%"] = {"恢复"},
["随机恢复%d+到%d+点生命值"] = {"恢复"},
["恢复.*体力"] = {"恢复"},
-- 先制
["先制%+%d+"] = {"先制"},
["下回合自身先制[+-]%d+"] = {"先制"},
["下回合对手先制[+-]%d+"] = {"先制"},
["先制%s*额外%s*%+%d+"] = {"先制"},
-- 强化
["自身攻击等级%-%d+"] = {"强化"},
["自身防御等级%-%d+"] = {"强化"},
["自身特攻等级%-%d+"] = {"强化"},
["自身特防等级%-%d+"] = {"强化"},
["自身速度等级%-%d+"] = {"强化"},
["自身体力等级%-%d+"] = {"强化"},
["自身命中等级%-%d+"] = {"强化"},
["自身攻击等级%+%d+"] = {"强化"},
["自身防御等级%+%d+"] = {"强化"},
["自身特攻等级%+%d+"] = {"强化"},
["自身特防等级%+%d+"] = {"强化"},
["自身速度等级%+%d+"] = {"强化"},
["自身体力等级%+%d+"] = {"强化"},
["自身命中等级%+%d+"] = {"强化"},
["自身全属性等级%+%d+"] = {"强化"},
["自身随机%d+项属性等级%+%d+"] = {"强化"},
["攻击等级%+%d+"] = {"强化"},
["防御等级%+%d+"] = {"强化"},
["特攻等级%+%d+"] = {"强化"},
["特防等级%+%d+"] = {"强化"},
["速度等级%+%d+"] = {"强化"},
["体力等级%+%d+"] = {"强化"},
["命中等级%+%d+"] = {"强化"},
["全属性等级%+%d+"] = {"强化"},
["随机%d+项属性等级%+%d+"] = {"强化"},
["自身.*全属性%+"] = {"强化"},
["自身.*等级%+"] = {"强化"},
["自身攻击%+"] = {"强化"},
["自身防御%+"] = {"强化"},
["自身特攻%+"] = {"强化"},
["自身特防%+"] = {"强化"},
["自身速度%+"] = {"强化"},
["能力提升状态翻倍"] = {"强化"},
-- 弱化
["使对手攻击等级%-%d+"] = {"弱化"},
["使对手防御等级%-%d+"] = {"弱化"},
["使对手特攻等级%-%d+"] = {"弱化"},
["使对手特防等级%-%d+"] = {"弱化"},
["使对手速度等级%-%d+"] = {"弱化"},
["使对手体力等级%-%d+"] = {"弱化"},
["使对手命中等级%-%d+"] = {"弱化"},
["使对手全属性等级%-%d+"] = {"弱化"},
["使对手随机%d+项属性等级%-%d+"] = {"弱化"},
["改变对手攻击等级%-%d+"] = {"弱化"},
["改变对手防御等级%-%d+"] = {"弱化"},
["改变对手特攻等级%-%d+"] = {"弱化"},
["改变对手特防等级%-%d+"] = {"弱化"},
["改变对手速度等级%-%d+"] = {"弱化"},
["改变对手体力等级%-%d+"] = {"弱化"},
["改变对手命中等级%-%d+"] = {"弱化"},
["改变对手全属性等级%-%d+"] = {"弱化"},
["改变对手随机%d+项属性等级%-%d+"] = {"弱化"},
["对手攻击等级%-%d+"] = {"弱化"},
["对手防御等级%-%d+"] = {"弱化"},
["对手特攻等级%-%d+"] = {"弱化"},
["对手特防等级%-%d+"] = {"弱化"},
["对手速度等级%-%d+"] = {"弱化"},
["对手体力等级%-%d+"] = {"弱化"},
["对手命中等级%-%d+"] = {"弱化"},
["对手全属性等级%-%d+"] = {"弱化"},
["对手随机%d+项属性等级%-%d+"] = {"弱化"},
["对手.*全属性%-[^,,;;%.。]"] = {"弱化"},
["对方.*全属性%-[^,,;;%.。]"] = {"弱化"},
["对手.*等级%-%d+"] = {"弱化"},
["对方.*等级%-%d+"] = {"弱化"},
["对手攻击等级%-"] = {"弱化"},
["对手防御等级%-"] = {"弱化"},
["对手特攻等级%-"] = {"弱化"},
["对手特防等级%-"] = {"弱化"},
["对手速度等级%-"] = {"弱化"},
["对方攻击等级%-"] = {"弱化"},
["对方防御等级%-"] = {"弱化"},
["对方特攻等级%-"] = {"弱化"},
["对方特防等级%-"] = {"弱化"},
["对方速度等级%-"] = {"弱化"},
["反馈自身能力下降"] = {"弱化"},
["反馈自身的能力下降"] = {"弱化"},
["能力下降返还给对手"] = {"弱化"},
["能力下降反馈给对手"] = {"弱化"},
["附加.*对手.*能力下降"] = {"弱化"},
["附加.*对方.*能力下降"] = {"弱化"},
["对手.*能力值%-"] = {"弱化"},
["对手.*能力等级%-"] = {"弱化"},
["对方.*能力值%-"] = {"弱化"},
["对方.*能力等级%-"] = {"弱化"},
-- 消强
["增强效果消失"] = {"消强"},
["消除能力提升状态"] = {"消强"},
["消除对手能力提升状态"] = {"消强"},
-- 必中
["必中"] = {"必中"},
["必定命中"] = {"必中"},
-- 反伤
["(反伤伤害反馈反馈给对手)"] = {"反伤"},
["将所受的伤害%d+倍反馈给对手"] = {"反伤"},
["伤害反弹给对手"] = {"反伤"},
["伤害反馈给对手"] = {"反伤"},
["反弹.*对手.*伤害"] = {"反伤"},
["反馈.*对手.*伤害"] = {"反伤"},
["反弹.*对方.*伤害"] = {"反伤"},
["反馈.*对方.*伤害"] = {"反伤"},
["反弹.*伤害.*给对手"] = {"反伤"},
["反馈.*伤害.*给对手"] = {"反伤"},
["反弹.*受到伤害"] = {"反伤"},
["反馈.*受到伤害"] = {"反伤"},
["反馈伤害值.*的百分比伤害"] = {"反伤"},
["免疫.*并直接扣除对手等量体力"] = {"反伤"},
["受攻击时反弹"] = {"反伤"},
-- 免伤
["伤害转化为体力"] = {"免伤"},
["伤害减免"] = {"免伤"},
["下回合受到的伤害转化为自身体力"] = {"免伤", "恢复"},
["免疫.*伤害"] = {"免伤"},
-- 降疗
["无法通过技能恢复体力"] = {"降疗"},
["无法通过自身技能恢复体力"] = {"降疗"},
["无法通过自身技能恢复自身体力"] = {"降疗"},
["对手.*无法.*恢复.*体力"] = {"降疗"},
-- 解弱
["解除自身能力下降状态"] = {"解弱"},
["解除自身的能力下降状态"] = {"解弱"},
-- 闪避
["躲避"] = {"闪避"},
["必定miss"] = {"闪避"},
["使得对方的技能失效"] = {"闪避"},
["对自身必定miss"] = {"闪避"},
["对自身miss"] = {"闪避"},
["对自身MISS"] = {"闪避"},
["对手所有攻击必定miss"] = {"闪避"},
["对手所有攻击必定MISS"] = {"闪避"},
["使对手.*miss"] = {"闪避"},
["使对手.*MISS"] = {"闪避"},
["则对手.*miss"] = {"闪避"},
["则对手.*MISS"] = {"闪避"},
["躲避.*攻击"] = {"闪避"},
["闪避.*攻击"] = {"闪避"},
["对方.*攻击.*被己方闪避"] = {"闪避"},
["对手.*攻击.*被己方闪避"] = {"闪避"},
["命中率减少"] = {"闪避"},
-- 减PP
["PP值归零"] = {"减PP"},
["%d+%%降低对手所有技能%d+点PP值"] = {"减PP"},
["降低对手所有PP%d+点"] = {"减PP"},
["降低.*对手.*PP"] = {"减PP"},
["降低.*对手.*pp"] = {"减PP"},
["降低.*双方.*PP"] = {"减PP"},
["降低.*双方.*pp"] = {"减PP"},
["减少.*对手.*PP"] = {"减PP"},
["减少.*对手.*pp"] = {"减PP"},
["减少.*双方.*PP"] = {"减PP"},
["减少.*双方.*pp"] = {"减PP"},
["对手.*消耗.*PP"] = {"减PP"},
["对手.*消耗.*pp"] = {"减PP"},
["对手.*降低.*PP"] = {"减PP"},
["对手.*降低.*pp"] = {"减PP"},
["对手.*减少.*PP"] = {"减PP"},
["对手.*减少.*pp"] = {"减PP"},
["对手.*吸取.*PP"] = {"减PP"},
["对手.*吸取.*pp"] = {"减PP"},
["双方.*消耗.*PP"] = {"减PP"},
["双方.*消耗.*pp"] = {"减PP"},
["双方.*降低.*PP"] = {"减PP"},
["双方.*降低.*pp"] = {"减PP"},
["双方.*减少.*PP"] = {"减PP"},
["双方.*减少.*pp"] = {"减PP"},
["双方.*吸取.*PP"] = {"减PP"},
["双方.*吸取.*pp"] = {"减PP"},
["对方.*消耗.*PP"] = {"减PP"},
["对方.*消耗.*pp"] = {"减PP"},
["对方.*降低.*PP"] = {"减PP"},
["对方.*降低.*pp"] = {"减PP"},
["对方.*减少.*PP"] = {"减PP"},
["对方.*减少.*pp"] = {"减PP"},
["对方.*吸取.*PP"] = {"减PP"},
["对方.*吸取.*pp"] = {"减PP"},
["对手.*PP.*归0"] = {"减PP"},
["对手.*PP.*归零"] = {"减PP"},
["对手.*PP.*减"] = {"减PP"},
["对手.*PP.*%-"] = {"减PP"},
["对手.*pp.*归0"] = {"减PP"},
["对手.*pp.*归零"] = {"减PP"},
["对手.*pp.*减"] = {"减PP"},
["对手.*pp.*%-"] = {"减PP"},
["双方.*PP.*归0"] = {"减PP"},
["双方.*PP.*归零"] = {"减PP"},
["双方.*PP.*减"] = {"减PP"},
["双方.*PP.*%-"] = {"减PP"},
["双方.*pp.*归0"] = {"减PP"},
["双方.*pp.*归零"] = {"减PP"},
["双方.*pp.*减"] = {"减PP"},
["双方.*pp.*%-"] = {"减PP"},
["对方.*PP.*归0"] = {"减PP"},
["对方.*PP.*归零"] = {"减PP"},
["对方.*PP.*减"] = {"减PP"},
["对方.*PP.*%-"] = {"减PP"},
["对方.*pp.*归0"] = {"减PP"},
["对方.*pp.*归零"] = {"减PP"},
["对方.*pp.*减"] = {"减PP"},
["对方.*pp.*%-"] = {"减PP"},
["消除敌方.*PP"] = {"减PP"},
["消除敌方.*pp"] = {"减PP"},
-- 吸血
["造成.*伤害的%d+%%恢复自身体力"] = {"吸血"},
["攻击伤害的%d+%%.*恢复.*体力"] = {"吸血"},
["吸取对手最大体力%d+%%"] = {"吸血"},
["吸取对手最大体力的%d+%%"] = {"吸血"},
["吸取对手%d+点体力"] = {"吸血"},
["吸取对手%d+点固定体力"] = {"吸血"},
["吸取最大体力%d+%%"] = {"吸血"},
["吸取最大体力的%d+%%"] = {"吸血"},
["吸取%d+点体力"] = {"吸血"},
["吸取%d+点固定体力"] = {"吸血"},
["吸收对手最大体力%d+%%"] = {"吸血"},
["吸收对手最大体力的%d+%%"] = {"吸血"},
["吸收对手%d+点体力"] = {"吸血"},
["吸收对手%d+点固定体力"] = {"吸血"},
["吸收最大体力%d+%%"] = {"吸血"},
["吸收最大体力的%d+%%"] = {"吸血"},
["吸收%d+点体力"] = {"吸血"},
["吸收%d+点固定体力"] = {"吸血"},
-- 吸强
["吸取对手的能力提升状态"] = {"吸强"},
["吸取对手能力提升状态"] = {"吸强"},
["吸取对手的能力提升"] = {"吸强"},
["吸取对手能力提升"] = {"吸强"},
["吸收对手的能力提升状态"] = {"吸强"},
["吸收对手能力提升状态"] = {"吸强"},
["吸收对手的能力提升"] = {"吸强"},
["吸收对手能力提升"] = {"吸强"},
["吸取的能力提升状态"] = {"吸强"},
["吸取能力提升状态"] = {"吸强"},
["吸取的能力提升"] = {"吸强"},
["吸取能力提升"] = {"吸强"},
["吸收的能力提升状态"] = {"吸强"},
["吸收能力提升状态"] = {"吸强"},
["吸收的能力提升"] = {"吸强"},
["吸收能力提升"] = {"吸强"},
["吸取.*对手.*能力提升"] = {"吸强"},
["吸取.*对手的能力提升"] = {"吸强"},
["吸收.*对手.*能力提升"] = {"吸强"},
["吸收.*对手的能力提升"] = {"吸强"},
["吞噬.*对手.*能力提升"] = {"吸强"},
["吞噬.*对手的能力提升"] = {"吸强"},
["对手能力提升.*转移到自己"] = {"吸强"},
["对手的能力提升.*转移到自己"] = {"吸强"},
["使对手.*能力提升.*自己"] = {"吸强"},
["使对手.*能力提升.*自身"] = {"吸强"},
["使对手.*能力提升状态.*自己"] = {"吸强"},
["使对手.*能力提升状态.*自身"] = {"吸强"},
-- 减伤
["受到的攻击伤害减少"] = {"减伤"},
["受到的伤害减少"] = {"减伤"},
["受到.*伤害.*降低"] = {"减伤"},
["%d+回合内每回合所受的伤害减少%d+点"] = {"减伤"},
["减少%d+点下回合所受的伤害"] = {"减伤"},
["受到.*伤害.*减半"] = {"减伤"},
["受到.*伤害.*减少"] = {"减伤"},
["减少.*所受.*伤害"] = {"减伤"},
["所受的伤害减少"] = {"减伤"},
["自身下次受到的伤害减少"] = {"减伤"},
["对方攻击伤害是正常状态下的"] = {"减伤"},
["抵挡.*伤害"] = {"减伤"},
["对手.*造成.*伤害.*减少"] = {"减伤"},
["对手.*造成.*伤害.*降低"] = {"减伤"},
-- 护盾
["获得%d+点护盾"] = {"护盾"},
["自身.*附加.*护盾"] = {"护盾"},
["己方.*附加.*护盾"] = {"护盾"},
["获得[^;;。]*护盾"] = {"护盾"},
-- 消除护盾
["消除双方护盾"] = {"消除护盾"},
["消除.*护盾"] = {"消除护盾"},
-- 致命一击
["攻击击中对象要害概率增加"] = {"致命一击"},
["若打出致命一击则对手%d+%%概率害怕"] = {"致命一击", "施加异常"},
["击中对象要害概率增加"] = {"致命一击"},
["必定打出暴击"] = {"致命一击"},
["必定打出致命"] = {"致命一击"},
["必定暴击"] = {"致命一击"},
["必定致命"] = {"致命一击"},
["概率打出致命一击"] = {"致命一击"},
["致命一击.*上升"] = {"致命一击"},
["致命一击.*提升"] = {"致命一击"},
["暴击.*上升"] = {"致命一击"},
["暴击.*提升"] = {"致命一击"},
["自身所有攻击致命一击"] = {"致命一击"},
["自身体力低于对手时100%%的概率打出致命一击"] = {"致命一击"},
-- 免疫异常
["免疫并反弹所有受到的异常状态"] = {"免疫异常"},
["免疫所有受到的异常状态"] = {"免疫异常"},
["免疫受到的异常状态"] = {"免疫异常"},
["免疫异常状态"] = {"免疫异常"},
-- 免疫弱化
["免疫能力下降状态"] = {"免疫弱化"},
["免疫能力下降"] = {"免疫弱化"},
["不受能力下降"] = {"免疫弱化"},
-- 施加异常 - 对方
["对手.*则.*烧伤"] = {"施加异常"},
["令自身砥砺"] = {"施加异常"},
["自身砥砺"] = {"施加异常"},
["对方砥砺"] = {"施加异常"},
["对手砥砺"] = {"施加异常"},
["令.*砥砺"] = {"施加异常"},
["附加并解除自身所处的异常状态"] = {"解除异常","施加异常"},
["对方麻痹"] = {"施加异常"},
["对方中毒"] = {"施加异常"},
["对方烧伤"] = {"施加异常"},
["对方寄生"] = {"施加异常"},
["对方冻伤"] = {"施加异常"},
["对方害怕"] = {"施加异常"},
["对方疲惫"] = {"施加异常"},
["对方睡眠"] = {"施加异常"},
["对方石化"] = {"施加异常"},
["对方混乱"] = {"施加异常"},
["对方衰弱"] = {"施加异常"},
["对方山神守护"] = {"施加异常"},
["对方易燃"] = {"施加异常"},
["对方狂暴"] = {"施加异常"},
["对方冰封"] = {"施加异常"},
["对方流血"] = {"施加异常"},
["对方瘫痪"] = {"施加异常"},
["对方失明"] = {"施加异常"},
["对方焚烬"] = {"施加异常"},
["对方诅咒"] = {"施加异常"},
["对方感染"] = {"施加异常"},
["对方束缚"] = {"施加异常"},
["对方失神"] = {"施加异常"},
["对方沉默"] = {"施加异常"},
["对方臣服"] = {"施加异常"},
["对方凝滞"] = {"施加异常"},
["对方星赐"] = {"施加异常"},
["对方星哲"] = {"施加异常"},
-- 施加异常 - 对手
["对手麻痹"] = {"施加异常"},
["对手中毒"] = {"施加异常"},
["对手烧伤"] = {"施加异常"},
["对手寄生"] = {"施加异常"},
["对手冻伤"] = {"施加异常"},
["对手害怕"] = {"施加异常"},
["对手疲惫"] = {"施加异常"},
["对手睡眠"] = {"施加异常"},
["对手石化"] = {"施加异常"},
["对手混乱"] = {"施加异常"},
["对手衰弱"] = {"施加异常"},
["对手山神守护"] = {"施加异常"},
["对手易燃"] = {"施加异常"},
["对手狂暴"] = {"施加异常"},
["对手冰封"] = {"施加异常"},
["对手流血"] = {"施加异常"},
["对手瘫痪"] = {"施加异常"},
["对手失明"] = {"施加异常"},
["对手焚烬"] = {"施加异常"},
["对手诅咒"] = {"施加异常"},
["对手感染"] = {"施加异常"},
["对手束缚"] = {"施加异常"},
["对手失神"] = {"施加异常"},
["对手沉默"] = {"施加异常"},
["对手臣服"] = {"施加异常"},
["对手凝滞"] = {"施加异常"},
["对手星赐"] = {"施加异常"},
["对手星哲"] = {"施加异常"},
-- 转化为异常状态
["转化为疲惫"] = {"施加异常"},
["转化为害怕"] = {"施加异常"},
["转化为麻痹"] = {"施加异常"},
["转化为中毒"] = {"施加异常"},
["转化为烧伤"] = {"施加异常"},
["转化为睡眠"] = {"施加异常"},
["转化为混乱"] = {"施加异常"},
["转化为冰封"] = {"施加异常"},
["转化为石化"] = {"施加异常"},
["转化为凝滞"] = {"施加异常"},
-- 随机效果
["随机%d+%%概率"] = {"随机效果"},
["%d+%%的概率"] = {"随机效果"},
-- 效果无效
["攻击.*伤害.*无效"] = {"效果无效"},
["攻击.*伤害.*失效"] = {"效果无效"},
["技能.*无效"] = {"效果无效"},
["技能.*失效"] = {"效果无效"},
["回合类效果无法被消除"] = {"效果无效"},
["免疫下次受到的攻击"] = {"效果无效"},
["免疫下.*次对手的攻击"] = {"效果无效"},
["免疫%d+次受到的攻击"] = {"效果无效"},
["免疫%d+次对手的攻击"] = {"效果无效"},
["自身免疫受到的攻击"] = {"效果无效"},
["对手.*技能.*命中.*失效"] = {"效果无效"},
["对手.*技能.*命中.*无效"] = {"效果无效"},
["对手.*技能.*效果.*失效"] = {"效果无效"},
["对手.*技能.*效果.*无效"] = {"效果无效"},
["对方.*技能.*命中.*失效"] = {"效果无效"},
["对方.*技能.*命中.*无效"] = {"效果无效"},
["对方.*技能.*效果.*失效"] = {"效果无效"},
["对方.*技能.*效果.*无效"] = {"效果无效"},
["令对手技能无效"] = {"效果无效"},
["令对手技能.*效"] = {"效果无效"},
["使对手技能失效"] = {"效果无效"},
["令对手技能失效"] = {"效果无效"},
-- 附加伤害
["附加%d+点固定伤害"] = {"附加伤害"},
["附加双方能力下降等级总和"] = {"附加伤害"},
["额外附加%d+点伤害"] = {"附加伤害"},
["额外增加%d+点伤害"] = {"附加伤害"},
["额外增加%d+点固定伤害"] = {"附加伤害"},
["造成%d+点固定伤害"] = {"附加伤害"},
["消耗%d+点体力"] = {"附加伤害"},
["降低对方%d+%%的hp"] = {"附加伤害"},
["消耗%d+%%的当前最大体力"] = {"附加伤害"},
["消耗自身当前最大体力的%d+%%并使对手受到等量百分比伤害"] = {"附加伤害"},
["回合结束时减少对手%d+%%最大体力"] = {"附加伤害"},
["造成等量百分比伤害"] = {"附加伤害"},
["减少对手所有不在场精灵%d+点体力"] = {"附加伤害"},
["附加已损失体力值%d+%%的百分比伤害"] = {"附加伤害"},
["附加对手当前体力值%d+%%的百分比伤害"] = {"附加伤害"},
["附加防御%d+%%的百分比伤害"] = {"附加伤害"},
["附加特防%d+%%的百分比伤害"] = {"附加伤害"},
["若对手处于异常状态,则附加%d+点伤害"] = {"附加伤害"},
["对手.*受到.*百分比伤害"] = {"附加伤害"},
["对手.*受到.*固定伤害"] = {"附加伤害"},
["对手.*受到.*固伤"] = {"附加伤害"},
["对方.*受到.*百分比伤害"] = {"附加伤害"},
["对方.*受到.*固定伤害"] = {"附加伤害"},
["对方.*受到.*固伤"] = {"附加伤害"},
["附加.*的百分比伤害"] = {"附加伤害"},
["附加.*的固定伤害"] = {"附加伤害"},
["每回合.*受到.*百分比伤害"] = {"附加伤害"},
["每回合.*受到.*固定伤害"] = {"附加伤害"},
["减少对手.*体力"] = {"附加伤害"},
["降低对手.*体力"] = {"附加伤害"},
["对手损失.*固定体力"] = {"附加伤害"},
-- 强化反转
["反转对手的能力提升"] = {"强化反转"},
["反转.*对手能力提升"] = {"强化反转"},
["反转.*对手的能力提升"] = {"强化反转"},
-- 消除回合
["回合类效果被消除"] = {"消除回合"},
["消除对手回合类效果"] = {"消除回合"},
["消除回合类效果"] = {"消除回合"},
["消除对手回合"] = {"消除回合"},
["消除敌我双方回合"] = {"消除回合"},
["消除双方回合"] = {"消除回合"},
["消除敌我双方.*回合类效果"] = {"消除回合"},
["消除双方.*回合类效果"] = {"消除回合"},
["消除.*回合.*效果"] = {"消除回合"},
-- 伤害限制
["受到的伤害不超过"] = {"伤害限制"},
["造成的伤害不少于%d+"] = {"伤害限制"},
["受到的攻击伤害不超过"] = {"伤害限制"},
-- 弱化反转
["反转自身能力下降状态"] = {"弱化反转"},
["反转自身能力下降"] = {"弱化反转"},
["反转自身的能力下降"] = {"弱化反转"},
-- 复合效果(确保不重复)
-- 下回合受到的伤害转化为自身体力 已在免伤中处理
}
-- 定义需要特殊处理的规则(包含断言逻辑)
p.specialRules = {
{
type = "negative_lookbehind",
pattern = "免疫.*伤害",
forbidden_prefix = "对手",
tags = {"免伤"}
},
{
type = "negative_lookbehind",
pattern = "全属性%+",
forbidden_prefix = "对手",
tags = {"强化"}
},
{
type = "negative_lookbehind",
pattern = "技能.*效果.*(失效|无效)",
forbidden_prefix = "攻击",
tags = {"效果无效"}
},
{
type = "negative_lookbehind",
pattern = "技能.*效果.*(失效|无效)",
forbidden_prefix = "属性",
tags = {"效果无效"}
},
{
type = "negative_lookbehind",
pattern = "降低.*[Hh][Pp]",
forbidden_prefix = "最高",
tags = {"附加伤害"}
},
{
type = "negative_lookahead",
pattern = "附加.*伤害",
forbidden_substring = "减少",
tags = {"附加伤害"}
},
{
type = "negative_lookahead",
pattern = "附加.*固伤",
forbidden_substring = "减少",
tags = {"附加伤害"}
},
{
type = "negative_lookahead",
pattern = "恢复.*(生命值|生命|体力|HP|hp)",
forbidden_substring = "无法.*恢复",
tags = {"恢复"}
},
{
type = "negative_lookbehind",
pattern = "打出致命一击",
forbidden_prefix = "若",
tags = {"致命一击"}
},
}
-- 辅助函数:检查是否包含子字符串(plain text search)
local function contains(text, substring)
return string.find(text, substring, 1, true) ~= nil
end
-- 辅助函数:查找所有匹配位置,防止空匹配死循环
local function findAllMatches(text, pattern)
local matches = {}
local start_pos = 1
local text_len = #text
while start_pos <= text_len do
local s, e = string.find(text, pattern, start_pos)
if not s then break end
table.insert(matches, {start = s, finish = e})
-- 防止空匹配导致死循环
if e >= s then
start_pos = e + 1
else
start_pos = s + 1
end
end
return matches
end
-- 提取标签的函数
local function extractTags(description, priorityThreshold)
local tags = {}
local seen_tags = {}
-- 处理普通关键词
for keyword, tag_list in pairs(p.keywords) do
local ok, result = pcall(string.find, description, keyword)
if ok and result then
for _, tag in ipairs(tag_list) do
if not seen_tags[tag] then
table.insert(tags, tag)
seen_tags[tag] = true
end
end
end
end
-- 处理特殊规则
for _, rule in ipairs(p.specialRules) do
local ok, all_matches = pcall(findAllMatches, description, rule.pattern)
if not ok then all_matches = {} end
if rule.type == "negative_lookbehind" then
for _, match_info in ipairs(all_matches) do
local prefix_text = string.sub(description, 1, match_info.start - 1)
if not contains(prefix_text, rule.forbidden_prefix) then
if rule.tags then
for _, tag in ipairs(rule.tags) do
if not seen_tags[tag] then
table.insert(tags, tag)
seen_tags[tag] = true
end
end
end
end
end
elseif rule.type == "negative_lookahead" then
for _, match_info in ipairs(all_matches) do
local suffix_text = string.sub(description, match_info.finish + 1)
if not contains(suffix_text, rule.forbidden_substring) then
if rule.tags then
for _, tag in ipairs(rule.tags) do
if not seen_tags[tag] then
table.insert(tags, tag)
seen_tags[tag] = true
end
end
end
end
end
end
end
-- 新增逻辑:检查是否需要添加先制标签
if priorityThreshold then
local threshold = tonumber(priorityThreshold)
if threshold and threshold > 0 then
if not seen_tags["先制"] then
table.insert(tags, "先制")
seen_tags["先制"] = true
end
end
end
-- 排序结果
table.sort(tags)
return tags
end
-- 主要的导出函数,接受 frame 对象作为参数
function p.main(frame)
local inputText = frame.args[1] or ""
local priorityThreshold = frame.args[2]
inputText = mw.text.trim(inputText)
if inputText == "" then
return ""
end
local result_tags = extractTags(inputText, priorityThreshold)
if #result_tags == 0 then
return ""
end
local html_parts = {}
for _, tag in ipairs(result_tags) do
local span_element = mw.html.create('span')
:addClass('jntag')
:attr('id', tag)
:wikitext(tag)
table.insert(html_parts, tostring(span_element))
end
return table.concat(html_parts, '')
end
-- 直接调用的函数,方便其他 Lua 模块使用
function p.extractTagsDirect(description, priorityThreshold)
return extractTags(mw.text.trim(description or ""), priorityThreshold)
end
return p

沪公网安备 31011002002714 号