修正追加攻击伤害计算增益判断

This commit is contained in:
UCPr 2025-03-24 00:11:12 +08:00
parent a54fee3edb
commit 6c77855f64
6 changed files with 17 additions and 13 deletions

View file

@ -143,7 +143,8 @@ export class BuffManager {
else if (param.redirect) {
if (skillRange.some(ST => buffRange.some(BT => BT === ST)))
return true;
if (buffRange.some(BT => param.redirect.startsWith(BT)))
const redirect = Array.isArray(param.redirect) ? param.redirect : [param.redirect];
if (buffRange.some(BT => redirect.some(RT => RT.startsWith(BT))))
return true;
return false;
}

View file

@ -185,13 +185,13 @@ export class BuffManager {
}
_filter<T extends filterable>(buffs: buff[], type: T, value: buff[T]): buff[]
_filter(buffs: buff[], obj: Partial<Pick<buff, filterable>> & { element: element, redirect?: skill['type'] }, calc?: Calculator): buff[]
_filter(buffs: buff[], obj: Partial<Pick<buff, filterable>> & { element: element, redirect?: skill['redirect'] }, calc?: Calculator): buff[]
_filter(buffs: buff[], fnc: (buff: buff, index: number) => boolean): buff[]
_filter<T extends filterable>(
buffs: buff[],
param:
| T
| (Partial<Pick<buff, filterable>> & { element: element, redirect?: skill['type'] })
| (Partial<Pick<buff, filterable>> & { element: element, redirect?: skill['redirect'] })
| ((buff: buff, index: number) => boolean),
valueOcalc?: buff[T] | Calculator
) {
@ -221,7 +221,8 @@ export class BuffManager {
// 存在重定向时range须全匹配redirect向后覆盖
else if (param.redirect) {
if (skillRange.some(ST => buffRange.some(BT => BT === ST))) return true
if (buffRange.some(BT => param.redirect!.startsWith(BT))) return true
const redirect = Array.isArray(param.redirect) ? param.redirect : [param.redirect]
if (buffRange.some(BT => redirect.some(RT => RT.startsWith(BT)))) return true
return false
}
// 不存在重定向时range向后覆盖
@ -290,7 +291,7 @@ export class BuffManager {
* - range须全匹配redirect向后覆盖
* - range向后覆盖
*/
filter(obj: Partial<Pick<buff, filterable>> & { element: element, redirect?: skill['type'] }, calc?: Calculator): buff[]
filter(obj: Partial<Pick<buff, filterable>> & { element: element, redirect?: skill['redirect'] }, calc?: Calculator): buff[]
/**
* buff
*/
@ -298,7 +299,7 @@ export class BuffManager {
filter<T extends filterable>(
param:
| T
| (Partial<Pick<buff, filterable>> & { element: element, redirect?: skill['type'] })
| (Partial<Pick<buff, filterable>> & { element: element, redirect?: skill['redirect'] })
| ((buff: buff, index: number) => boolean),
valueOcalc?: buff[T] | Calculator
) {

View file

@ -276,7 +276,7 @@ export class Calculator {
}
/**
* 获取局内属性原始值
* @param isRatio 是否支持buff.value为数值类型且<1时按初始数值百分比提高处理
* @param isRatio 是否支持buff.value为数值/字符串/数组类型且<1时按初始数值百分比提高处理
*/
get(type, initial, skill, usefulBuffs = this.buffM.buffs, isRatio = false) {
return this.props[type] ??= this.buffM._filter(usefulBuffs, {

View file

@ -25,8 +25,10 @@ export interface skill {
* X"()Y()使Y的类型
* - range须全匹配redirect向后覆盖
* - range向后覆盖
*
*
*/
redirect?: string
redirect?: string | string[]
/** 角色面板伤害统计中是否隐藏显示 */
isHide?: boolean
/** 禁用伤害计算cache */
@ -411,7 +413,7 @@ export class Calculator {
/**
*
* @param isRatio buff.value为数值类型<1时按初始数值百分比提高处理
* @param isRatio buff.value为数值//<1时按初始数值百分比提高处理
*/
get(type: buff['type'], initial: number, skill: skill, usefulBuffs: buff[] = this.buffM.buffs, isRatio = false): number {
return this.props[type] ??= this.buffM._filter(usefulBuffs, {

View file

@ -39,12 +39,12 @@ export const skills = [
{
name: '特殊技:噬爪·噩梦袭影',
type: 'EPLP',
redirect: '追加攻击'
redirect: ['EPLP', '追加攻击']
},
{
name: '噬爪·噩梦袭影终结一击',
type: 'EPLZ',
redirect: '追加攻击'
redirect: ['EPLZ', '追加攻击']
},
{ name: '强化特殊技:噬爪·瞬步', type: 'EQ' },
{ name: '连携技:嗨,想不到吧', type: 'RL' },

View file

@ -48,13 +48,13 @@ export const skills = [
{
name: '特殊技:苍光',
type: 'EPC',
redirect: '追加攻击',
redirect: ['EPC', '追加攻击'],
after: ({ damage }) => damage.add('EPC0')
},
{
name: '特殊技:雷殛',
type: 'EPL',
redirect: '追加攻击'
redirect: ['EPL', '追加攻击']
},
{ name: '强化特殊技:极雷断空', type: 'EQ' },
{ name: '连携技:疾跃落雷', type: 'RL' },