diff --git a/model/damage/README.md b/model/damage/README.md index 3cbb8d0..086a848 100644 --- a/model/damage/README.md +++ b/model/damage/README.md @@ -49,13 +49,13 @@ # 伤害计算自定义 -> 注意:如需自定义伤害计算,请先确保你拥有对伤害计算的基础知识,可参考[此帖][伤害计算]了解伤害计算的组成部分与计算方法。 +> 注意:如需自定义伤害计算,请先确保你拥有对伤害计算的基础知识,可参考[此帖][伤害计算]了解伤害计算的组成部分与计算方法 如需省流请直接查看[总结](#总结) 后文将带你入门插件伤害计算逻辑,只要你需要自定义伤害计算,都建议你完整阅读: -> 底层已对伤害计算进行了规范化、模块化,只需要填参数就可以实现常见的伤害计算逻辑,即使不懂代码也可以参考模板独立完成。若存在问题、建议,可于插件群内询问,或与我沟通:ucpr251@gmail.com +> 底层已对伤害计算进行了规范化、模块化,只需要填参数就可以实现常见的伤害计算逻辑,即使不懂代码也可以参考模板独立完成。若存在问题、建议,可于插件群内询问或与我沟通 伤害计算需要明确这几部分:**初始属性**、**局内Buff**、**技能属性**、**敌方属性**,后文将分别说明 @@ -136,9 +136,9 @@ Buff来源可分为三大类:武器、套装、角色(影画、核心被动 - 一:[直接导出](./character/模板/calc.js#L66):在计算文件中导出buffs数组,数组中保存各buff即可 - 二:[函数导出](./character/模板/calc.js#L1):调用[BuffManager](./BuffManager.ts)实例**buffM**的**new**方法,传入你需要注册的buff即可 - 当上述两方式同时存在时,会**先**注册**直接导出**的buffs,**然后**调用**导出的函数** - - 一般情况下,都更推荐**直接导出**的方法。如果你需要更灵活的导出方式,可以选择使用函数导出。 + - 一般情况下,都更推荐**直接导出**的方法。如果你需要更灵活的导出方式,可以选择使用函数导出 -- buff注册原则:应尽可能地将能够吃到的buff都注册上;不考虑失衡易伤和任何需失衡触发的buff +- buff注册原则:应尽可能地将能够吃到的buff都注册上;**不考虑失衡易伤和任何需失衡触发的buff** 后文将说明武器、套装、角色三部分各自的buff注册细则 @@ -152,7 +152,7 @@ Buff来源可分为三大类:武器、套装、角色(影画、核心被动 - 武器的**基础属性**和**高级属性**皆已计入[**初始属性**](#初始属性),无需处理 -- 武器的**音擎效果**需要自己注册 +- 武器的**音擎效果**需要单独注册 - 武器buff的**value**值一般为数组类型,具体参考[认识buff](#认识buff)部分 @@ -170,7 +170,7 @@ Buff来源可分为三大类:武器、套装、角色(影画、核心被动 - 二件套效果只有**属性伤害提升**需要注册,其他已包含于初始属性 -- 四件套效果需要自己注册 +- 四件套效果需要单独注册 ### 角色Buff @@ -194,7 +194,7 @@ Buff来源可分为三大类:武器、套装、角色(影画、核心被动 - **技能·Skill** - 部分角色释放技能后会给自己附加增益,正常注册即可 + 部分角色释放技能后会给自身附加增益,正常注册即可 ### 管理buff @@ -202,7 +202,7 @@ Buff来源可分为三大类:武器、套装、角色(影画、核心被动 - 较为推荐的管理buff方式为:在使用**直接导出**注册相应的buff的基础上,通过**导出函数**来管理buff,在函数中调整各buff -- **在线调试**:将云崽底层的日志类型(根目录/config/config/bot.yaml中的log_level)修改为**debug**并重启后,插件会自动监听当前各计算文件,实时更新,并会在控制台输出伤害计算的详细过程:初始属性、buff情况、技能数据、buff生效情况、各乘区数据,可据此调试(在未开启在线调试的情况下,每次修改都需要重启才能生效。开启在线调试后,对当前已有计算文件的修改会直接生效,但新增计算文件仍需重启才能生效。) +- **在线调试**:将云崽底层的日志类型(根目录/config/config/bot.yaml中的log_level)修改为**debug**并重启后,插件会自动监听现有各计算文件,实时更新,并会在控制台输出伤害计算的详细过程:初始属性、buff情况、技能数据、buff生效情况、各乘区数据,可据此调试(在未开启在线调试的情况下,每次修改都需要重启才能生效。开启在线调试后,对当前已有计算文件的修改会直接生效,但新增计算文件仍需重启才能生效) - 游戏中的buff生效情况错综复杂,但通过[自定义敌方属性](#自定义敌方属性)和对buff的精确管控,插件的计算结果将与游戏实机十分吻合 @@ -269,7 +269,7 @@ Buff来源可分为三大类:武器、套装、角色(影画、核心被动 > - Y后接数字表示该技能为第n个影画的效果 > - 影画中的技能各不相同,自行定义即可 -> - 属性异常(特殊) +> - 属性异常 > - 强击 畏缩 > - 灼烧 > - 碎冰 霜寒 @@ -279,13 +279,13 @@ Buff来源可分为三大类:武器、套装、角色(影画、核心被动 > - 追加攻击 > - 直接以“追加攻击”命名 -> - 追加攻击不被认为是一种新的输出手段(技能),它更类似于原直伤输出的一个特殊属性,使该伤害能同时享受对其**原所属技能类型**的增益和**仅对追加攻击生效**的增益,故一般不将其单独作为技能类型而是在技能属性的重定向参数中添加**追加攻击**参数,请参考[技能重定向说明注意事项](#技能类型命名对Buff作用的影响) +> - 追加攻击不被认为是一种新的输出手段(技能),它更类似于原直伤输出的一个特殊属性,使该伤害能同时享受**对其原所属技能类型生效**的增益和**仅对追加攻击生效**的增益,故一般不将其单独作为技能类型而是在技能属性的重定向参数中添加**追加攻击**参数,请参考[技能重定向说明注意事项](#技能类型命名对Buff作用的影响) #### 技能类型命名解释说明 -1. 首字母为技能所属**基类**,不可更改、不可单独作为技能名,后跟字母表示技能分支 +1. 首字母为技能所属**基类**,不可更改、不可单独作为技能类型,后跟字母表示技能分支 -2. **树状命名**,后一位字母代表基于其前一位字母的分支,取技能名发音(倒着读);属性异常较特殊,直接以异常名作为技能类型名 +2. **树状命名**,后一位字母代表基于其前一位字母的分支,取技能名发音(倒着读) 3. 后跟数字可表示**段数**,如AP1表示第一段普攻;为避免混淆,数字仅表示同一技能不同段数,不用于区分不同技能 @@ -325,11 +325,12 @@ buff作用范围将以技能类型命名为依据向后覆盖。以上述[艾莲 注意事项: -- 属性异常中**强击**和**碎冰**没有持续时间的概念,总倍率不受持续时间的影响也无法结算紊乱。因此对于作用于**异常持续时间**的buff,其buff.range应填写异常对应的**状态异常**(**畏缩**和**霜寒**),灼烧等既是伤害异常也是状态异常则无需区分。 +- 属性异常中**强击**和**碎冰**没有持续时间的概念,总倍率不受持续时间的影响也无法结算紊乱。因此对于作用于**异常持续时间**的buff,其buff.range应填写异常对应的**状态异常**(**畏缩**和**霜寒**),灼烧等既是伤害异常也是状态异常则无需区分 - 对于`“X"(造成的伤害)被视为“Y”(伤害)`此类特殊技能,需要指定技能**重定向参数**,同时上述buff覆盖规则会发生变化,具体请参考[源码内描述](./Calculator.ts#L22) > 需要注意的是:即使出现`“X"(造成的伤害)被视为“Y”(伤害)`,对**Y**类型的增益**X**不一定能吃到,视具体情况变化 + > 对于被视为**追加攻击**伤害的技能,其重定向参数一般为包含其**原技能类型**和**追加攻击**的数组,因为它可以享受到分别对两者生效的不同增益(以游戏内具体情况为准),参考[**零号·安比**伤害计算文件](./character/零号·安比/calc.js#L51) ### 技能倍率 @@ -435,11 +436,9 @@ export function calc(buffM, calc, avatar) { } ``` -目前暂不支持指令自定义,暂不支持直接指定具体敌人 - ## 总结 -角色伤害计算文件为[character/角色名/calc.js](./character/),如需自定义,将**calc.js**复制一份并重命名为**calc_user.js**后自行修改其中逻辑即可。**data.json**为技能倍率、天赋加成数据,如需自定义,同理将**data.json**复制一份并重命名为**data_user.json**后自行修改即可。[套装计算](./set/)和[武器计算](./weapon/)同理。 +角色伤害计算文件为[character/角色名/calc.js](./character/),如需自定义,将**calc.js**复制一份并重命名为**calc_user.js**后自行修改其中逻辑即可。**data.json**为技能倍率、天赋加成数据,如需自定义,同理将**data.json**复制一份并重命名为**data_user.json**后自行修改即可。[套装计算](./set/)和[武器计算](./weapon/)同理 请在对[伤害计算]有一定了解的基础上再进行伤害计算的修改 @@ -469,6 +468,18 @@ export function calc(buffM, calc, avatar) { 建议开启[在线调试](#管理buff) +## ToDo + +- [x] 伤害计算模块化重构 +- [x] 伤害计算自定义支持 +- [x] 伤害计算说明文档 +- [x] 全角色伤害计算 +- [ ] 组队伤害计算 +- [ ] 词条收益分析 +- [ ] 失衡值累积计算 +- [ ] ~~异常积蓄值计算~~ +- [ ] ~~治疗量计算~~ + ## 鸣谢 感谢[紫罗兰打烊啦](https://www.miyoushe.com/zzz/accountCenter/postList?id=279259320)对伤害计算细则的评测指正