支持贯穿伤害计算等;新增仪玄伤害计算

This commit is contained in:
UCPr 2025-08-15 23:51:01 +08:00
parent 2c6e20d846
commit a1a3b2b171
21 changed files with 524 additions and 184 deletions

View file

@ -1,4 +1,4 @@
# 词条权重自定义
# 评分权重自定义
## 方法一:预设方法(推荐)
@ -24,7 +24,7 @@
> 将崽底层日志模式切换为**debug**模式,可在控制台查看评分计算详细过程;且会自动监听现有评分计算文件实时热更新。可按需开启
在函数体中,可根据玩家角色数据**动态选用**不同的权重方案。参考[薇薇安评分规则](./character/薇薇安/score.js)
在函数体中,可根据玩家角色数据**动态选用**不同的权重方案。参考[爱丽丝评分规则](./character/爱丽丝/score.js)
- 函数参数:[ZZZAvatarInfo](../avatar.js#L173)(角色数据)
@ -72,7 +72,7 @@
### 认识buff
每个buff由各项[buff参数](./BuffManager.ts#L40)组成,重要参数:
每个buff由各项[buff参数](./BuffManager.ts#L42)组成,重要参数:
```js
{
@ -88,7 +88,7 @@
* - 一般情况下此值即为提高值
* - 当buff增益类型为攻击力/冲击力/异常精通/异常掌控/防御力/生命值时,若此值<1则将此值理解为初始属性的百分比提高
* @string
* 角色自身的buff提高值可能随技能/天赋等级提高而提高此时可以于data.json的"buff"中添加对应的倍率信息同上支持百分比提高此时value即为键名其首字母必须为对应技能的基类参考技能类型命名标准
* 角色自身的buff提高值可能随技能/天赋等级提高而提高此时可以于data.json的"buff"中添加倍率数组同上支持百分比提高此时value即为键名其首字母必须为对应技能的基类参考技能类型命名标准
* @array
* 根据buff.source自动选择对应等级/星级的值同上支持百分比提高支持的source
* - 音擎:音擎星级(进阶)
@ -99,10 +99,25 @@
value: number | string | number[] | Function
/**
* Buff增益技能类型生效范围参考技能类型命名标准
* - 当技能参数不存在redirect时range作用范围向后覆盖
* - 当技能参数不存在redirect时range作用范围向后覆盖生效
* - 当技能参数存在redirect时range与type全匹配时生效redirect向后覆盖生效
* - 若需全匹配的精细操作可使用include与exclude参数
*/
range?: string[]
/**
* Buff增益技能类型生效技能
* - 不同于range仅全匹配type时该值生效不会向后覆盖生效
* - 无range且无include则该buff对exclude以外的全部技能生效
* - range与include符合其一则认为buff生效
* - 当技能参数存在redirect时range与include的区别在于include不会尝试匹配redirect
*/
include?: string[]
/**
* Buff增益技能类型排除技能
* - 与include相同仅全匹配type时该值生效不会向后覆盖生效
* - 优先级高于range与include
*/
exclude?: string[]
/** Buff增益属性类型无则对全部属性生效 */
element?: element | element[]
}
@ -118,11 +133,15 @@
- **value**Buff增益值。具体解释如上述
- **range**Buff增益技能类型范围匹配技能type。该参数用于鉴别不同buff的[生效范围](#技能类型命名对buff作用的影响)(比如只对普攻生效),[填写方法](#技能类型命名标准)会在技能属性中详细说明
- **range**Buff增益技能类型范围模糊匹配技能type。该参数用于鉴别不同buff的[生效范围](#技能类型命名对buff作用的影响)[填写方法](#技能类型命名标准)会在技能属性中详细说明
- **include**Buff增益技能类型生效技能全匹配技能type。总的来说对于作用于某一类的buff比如对所有普攻/强E生效应使用range而明确指定了生效技能的buff应使用include
- **exclude**Buff增益技能类型排除技能全匹配技能type。显式指定使该buff不作用于某些技能
- **element**Buff增益属性类型可为字符串或字符串数组。该参数用于鉴别不同buff的生效属性比如只对冰属性伤害生效。查看[属性类型](./BuffManager.ts#L5)
- buff存在更多的参数用于处理各种情况详见[buff参数](./BuffManager.ts#L40)
完整参数详见[buff参数](./BuffManager.ts#L42)
### 注册buff
@ -169,7 +188,7 @@ Buff来源可分为三大类武器、套装、角色影画、核心被动
- 主词条的提升会自动注册,无需处理
- 二件套效果只有**属性伤害提升**和**局外面板以外的效果**(如[追加攻击]和[冲刺攻击]造成的伤害提升)需要注册,其他已包含于初始属性
- 二件套效果只有**属性伤害提升**和**局外面板以外的效果**(如驱动盘如影相随[追加攻击]和[冲刺攻击]造成的伤害提升)需要注册,其他已包含于初始属性无需注册
- 四件套效果需要单独注册
@ -179,7 +198,7 @@ Buff来源可分为三大类武器、套装、角色影画、核心被动
[角色buff两种导出方式实例](./character/星见雅/calc.js)
角色buff分为影画、核心被动、额外能力、技能此四个来源
角色buff分为**影画、核心被动、额外能力、技能**四个来源
- **影画·Rank**
@ -187,7 +206,7 @@ Buff来源可分为三大类武器、套装、角色影画、核心被动
- **核心被动·Talent**
核心被动buff参数中的**buff增益值**可能随核心技等级提升而提升,此时**value**的类型对应字符串情况并且需要于data.json中添加对应的倍率信息你可参考[安东伤害计算](./character/安东/calc.js#L17)的处理
核心被动buff参数中的**buff增益值**可能随核心技等级提升而提升,此时**value**的可选两种类型1. 直接填写倍率`数组`,参考[仪玄伤害计算](./character/仪玄/calc.js#L33)2. 填写`字符串`并于data.json中添加倍率数组参考[安东伤害计算](./character/安东/calc.js#L17)
- **额外能力·Addition**
@ -281,7 +300,10 @@ Buff来源可分为三大类武器、套装、角色影画、核心被动
> - 追加攻击
> - 直接以“追加攻击”命名
> - 追加攻击不被认为是一种新的输出手段(技能),它更类似于原直伤输出的一个特殊属性,使该伤害能同时享受**对其原所属技能类型生效**的增益和**仅对追加攻击生效**的增益,故一般不将其单独作为技能类型而是在技能属性的重定向参数中添加**追加攻击**参数,请参考[技能重定向说明注意事项](#技能类型命名对Buff作用的影响)
> - 追加攻击不被认为是一种新的输出手段(技能),它更类似于原直伤输出的一个额外标签,使该伤害能同时吃到**对其原所属技能类型生效**的增益和**仅对追加攻击生效**的增益,故一般不将其单独作为技能类型而是在技能属性的重定向参数中添加**追加攻击**参数,请参考[技能重定向说明注意事项](#技能类型命名对Buff作用的影响)
> - 贯穿伤害
> - 命名等同于直伤规则,无需作特殊处理,底层会自动识别是否为贯穿伤害
#### 技能类型命名解释说明
@ -333,7 +355,7 @@ buff作用范围将以技能类型命名为依据向后覆盖。以上述[艾莲
> 需要注意的是:即使出现`“X"(造成的伤害)被视为“Y”(伤害)`,对**Y**类型的增益**X**不一定能吃到,视具体情况变化
> 对于被视为**追加攻击**伤害的技能,其重定向参数一般为包含其**原技能类型**和**追加攻击**的数组,因为它可以享受到分别对两者生效的不同增益(以游戏内具体情况为准),参考[**零号·安比**伤害计算文件](./character/零号·安比/calc.js#L51)
> 对于被视为**追加攻击**伤害的技能,其重定向参数一般为包含其**原技能类型**和**追加攻击**的数组,因为它可以到分别对两者生效的不同增益(以游戏内具体情况为准),参考[**零号·安比**伤害计算文件](./character/零号·安比/calc.js#L50)
### 技能倍率
@ -420,11 +442,11 @@ counter(145.7, 159, 16)
### 自定义敌方属性
可以用 **等级、1级基础防御力、抗性区常量** 三个参数来替代**防御力、抗性、弱点**
可以用 **等级、1级基础防御力、抗性** 三个参数来衡量**防御力、抗性、弱点**
- **等级、1级基础防御力**:根据这两个参数可计算出敌方防御力。插件默认敌方等级=角色等级1级基础防御力=50
- **抗性区常量**:敌方存在对应的弱点时,此值为 **0.2**;敌方存在对应的抗性时,此值为 **-0.2**;既不抗也不弱,此值为 **0**。插件默认抗性区常量=0.2
- **抗性**:敌方存在对应的弱点时,此值为 **-0.2**;敌方存在对应的抗性时,此值为 **0.2**;既不抗也不弱,此值为 **0**。插件默认抗性=-0.2
通过在角色伤害计算文件中导出**calc**函数调用函数参数中calc的[defEnemy](./Calculator.ts)方法,你可以对此三个参数进行自定义
@ -476,16 +498,21 @@ export function calc(buffM, calc, avatar) {
- [x] 伤害计算自定义支持
- [x] 伤害计算说明文档
- [x] 全角色伤害计算
- [x] 词条收益分析
- [x] 驱动盘评分计算
- [x] 驱动盘词条差异计算
- [ ] 伤害计算buff指令热注入
- [ ] 伤害计算敌人自定义
- [ ] 组队伤害计算
- [ ] 失衡值累积计算
- [ ] ~~异常积蓄值计算~~
- [ ] ~~治疗量计算~~
- [ ] ~~组队伤害计算~~
## 鸣谢
感谢[紫罗兰打烊啦](https://www.miyoushe.com/zzz/accountCenter/postList?id=279259320)对伤害计算细则的评测指正
感谢[紫罗兰打烊啦](https://www.miyoushe.com/zzz/accountCenter/postList?id=279259320)对伤害计算细则的评测探讨指正
感谢[666bj](https://www.miyoushe.com/zzz/accountCenter/postList?id=291537017)对绝区零数据机制研究做出的贡献
---
[伤害计算]:https://www.miyoushe.com/zzz/article/55265618
[伤害计算]:https://www.miyoushe.com/zzz/article/66274506