新增柏妮思伤害计算等

This commit is contained in:
UCPr 2025-01-14 21:42:23 +08:00
parent 6573f1d600
commit b51acca73e
19 changed files with 1053 additions and 164 deletions

View file

@ -211,6 +211,9 @@ Buff来源可分为三大类武器、套装、角色影画、核心被动
> - T 核心技
> - 核心技中的技能各不相同,自行定义即可
> - Y 影画如柏妮思6影额外伤害
> - 影画中的技能各不相同,自行定义即可
> - 属性异常(特殊)
> - 强击
> - 灼烧
@ -221,11 +224,11 @@ Buff来源可分为三大类武器、套装、角色影画、核心被动
#### 技能类型命名解释说明
1. 首字母为技能所属基类,不可更改、不可单独作为技能名,后跟字母表示技能分支
1. 首字母为技能所属**基类**,不可更改、不可单独作为技能名,后跟字母表示技能分支
2. 树状命名,后一位字母代表基于其前一位字母的分支,取技能名发音(倒着读);属性异常较特殊,直接以异常名作为技能类型名
2. **树状命名**,后一位字母代表基于其前一位字母的分支,取技能名发音(倒着读);属性异常较特殊,直接以异常名作为技能类型名
3. 后跟数字可表示段数如AP1表示第一段普攻为避免混淆数字仅表示同一技能不同段数不用于区分不同技能
3. 后跟数字可表示**段数**如AP1表示第一段普攻为避免混淆数字仅表示同一技能不同段数不用于区分不同技能
4. 当不需要进一步细分分支时必须遵守此标准命名否则可能导致Buff计算错误
@ -259,7 +262,7 @@ buff作用范围将以技能类型命名为依据向后覆盖。以上述[艾莲
- 如果只包括**CCX**(巡游冲刺攻击),则代表对“冲刺攻击:冰渊潜袭”生效(无论普通或蓄力)
- 如果只包括**CCXX**(蓄力巡游冲刺攻击),则代表只对“冲刺攻击:冰渊潜袭”的蓄力巡游冲刺攻击生效
[点此查看](./character/艾莲/calc.js#L12)艾莲实际伤害计算文件
[点此查看](./character/艾莲/calc.js#L24)艾莲实际伤害计算文件
### 技能倍率
@ -271,6 +274,50 @@ buff作用范围将以技能类型命名为依据向后覆盖。以上述[艾莲
需要自定义data.json时同样复制一份重命名为**data_user.json**即可
角色每个技能各等级对应的倍率建议在[米游社官网图鉴](https://baike.mihoyo.com/zzz/wiki/channel/map/2/43)中查询。不建议使用第三方图鉴工具如B站的绝区零wiki其技能倍率可能存在错误
技能倍率大部分情况下为**等差数列**,少数情况下增量**存在变化**,请注意甄别。对于等差数列的技能倍率,我写了一个简易的生成函数,你可复制粘贴直接使用:
<details>
<summary>点击展开</summary>
```js
import { exec } from 'child_process'
const copyToClipboard = (text) => {
exec('clip').stdin.end(text)
}
function counter(first, second, num = 16) {
if (first > 100 && second > 100) {
first = Math.round(first * 100)
second = Math.round(second * 100)
} else {
first = Math.round(first * 10000)
second = Math.round(second * 10000)
}
const step = second - first
const arr = [first / 10000]
let txt = first / 10000 + ''
for (let i = 1; i < num; i++) {
const next = (first + step * i) / 10000
txt += ',' + +next.toFixed(4)
arr.push(next)
}
if (process.platform === 'win32') {
copyToClipboard(txt)
}
console.log(txt)
return arr
}
// 可按照实际数值填写当倍率大于100%时可忽略百分号填写
// 参数依次为1级倍率 2级倍率 生成长度
counter(145.7, 159, 16)
```
</details>
### 注册技能
伤害计算模块提供了注册各技能的接口[Calculator](./Calculator.ts),所有技能都需要通过此类的实例**calc**进行注册
@ -285,7 +332,9 @@ buff作用范围将以技能类型命名为依据向后覆盖。以上述[艾莲
- 若某技能所造成伤害的属性与角色属性不符,应指定该技能的属性**element**
- 技能的参数有较多可选的拓展,用于处理更复杂的情况,如有需要请自行查看[Calculator源码](./Calculator.ts)和已有角色的计算案例
- 技能的参数有较多可选的拓展,用于处理更复杂的情况,如有需要请自行查看[Calculator源码](./Calculator.ts)和已有角色的计算案例(较为复杂的计算案例可参考[柏妮思的伤害计算](./character/柏妮思/calc.js)
- 后续会根据需要,新增/调整拓展参数,对于已有的拓展会尽量保持兼容
- 目前只可注册角色的技能,部分武器有独立的造成额外伤害的机制,暂不考虑
@ -352,6 +401,10 @@ export function calc(buffM, calc, avatar) {
建议开启[在线调试](#管理buff)
## 鸣谢
感谢[紫罗兰打烊啦](https://www.miyoushe.com/zzz/accountCenter/postList?id=279259320)对伤害计算细则的评测指正
---
[伤害计算]:https://www.miyoushe.com/zzz/article/55265618