mirror of
https://github.com/ZZZure/ZZZ-Plugin.git
synced 2025-12-17 05:37:46 +00:00
修正追加攻击伤害计算增益判断
This commit is contained in:
parent
a54fee3edb
commit
6c77855f64
6 changed files with 17 additions and 13 deletions
|
|
@ -143,7 +143,8 @@ export class BuffManager {
|
||||||
else if (param.redirect) {
|
else if (param.redirect) {
|
||||||
if (skillRange.some(ST => buffRange.some(BT => BT === ST)))
|
if (skillRange.some(ST => buffRange.some(BT => BT === ST)))
|
||||||
return true;
|
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 true;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -185,13 +185,13 @@ export class BuffManager {
|
||||||
}
|
}
|
||||||
|
|
||||||
_filter<T extends filterable>(buffs: buff[], type: T, value: buff[T]): buff[]
|
_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(buffs: buff[], fnc: (buff: buff, index: number) => boolean): buff[]
|
||||||
_filter<T extends filterable>(
|
_filter<T extends filterable>(
|
||||||
buffs: buff[],
|
buffs: buff[],
|
||||||
param:
|
param:
|
||||||
| T
|
| T
|
||||||
| (Partial<Pick<buff, filterable>> & { element: element, redirect?: skill['type'] })
|
| (Partial<Pick<buff, filterable>> & { element: element, redirect?: skill['redirect'] })
|
||||||
| ((buff: buff, index: number) => boolean),
|
| ((buff: buff, index: number) => boolean),
|
||||||
valueOcalc?: buff[T] | Calculator
|
valueOcalc?: buff[T] | Calculator
|
||||||
) {
|
) {
|
||||||
|
|
@ -221,7 +221,8 @@ export class BuffManager {
|
||||||
// 存在重定向时,range须全匹配,redirect向后覆盖
|
// 存在重定向时,range须全匹配,redirect向后覆盖
|
||||||
else if (param.redirect) {
|
else if (param.redirect) {
|
||||||
if (skillRange.some(ST => buffRange.some(BT => BT === ST))) return true
|
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
|
return false
|
||||||
}
|
}
|
||||||
// 不存在重定向时,range向后覆盖
|
// 不存在重定向时,range向后覆盖
|
||||||
|
|
@ -290,7 +291,7 @@ export class BuffManager {
|
||||||
* - 存在重定向时,range须全匹配,redirect向后覆盖
|
* - 存在重定向时,range须全匹配,redirect向后覆盖
|
||||||
* - 不存在重定向时,range向后覆盖
|
* - 不存在重定向时,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
|
* 根据指定函数筛选buff
|
||||||
*/
|
*/
|
||||||
|
|
@ -298,7 +299,7 @@ export class BuffManager {
|
||||||
filter<T extends filterable>(
|
filter<T extends filterable>(
|
||||||
param:
|
param:
|
||||||
| T
|
| T
|
||||||
| (Partial<Pick<buff, filterable>> & { element: element, redirect?: skill['type'] })
|
| (Partial<Pick<buff, filterable>> & { element: element, redirect?: skill['redirect'] })
|
||||||
| ((buff: buff, index: number) => boolean),
|
| ((buff: buff, index: number) => boolean),
|
||||||
valueOcalc?: buff[T] | Calculator
|
valueOcalc?: buff[T] | Calculator
|
||||||
) {
|
) {
|
||||||
|
|
|
||||||
|
|
@ -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) {
|
get(type, initial, skill, usefulBuffs = this.buffM.buffs, isRatio = false) {
|
||||||
return this.props[type] ??= this.buffM._filter(usefulBuffs, {
|
return this.props[type] ??= this.buffM._filter(usefulBuffs, {
|
||||||
|
|
|
||||||
|
|
@ -25,8 +25,10 @@ export interface skill {
|
||||||
* 当出现“X"(造成的伤害)被视为“Y”(伤害)时,可使用该参数指定Y的类型。
|
* 当出现“X"(造成的伤害)被视为“Y”(伤害)时,可使用该参数指定Y的类型。
|
||||||
* - 存在重定向时,range须全匹配,redirect向后覆盖
|
* - 存在重定向时,range须全匹配,redirect向后覆盖
|
||||||
* - 不存在重定向时,range向后覆盖
|
* - 不存在重定向时,range向后覆盖
|
||||||
|
*
|
||||||
|
* 当为数组类型时(多类型共存),满足数组内其一类型即可,判断规则同上
|
||||||
*/
|
*/
|
||||||
redirect?: string
|
redirect?: string | string[]
|
||||||
/** 角色面板伤害统计中是否隐藏显示 */
|
/** 角色面板伤害统计中是否隐藏显示 */
|
||||||
isHide?: boolean
|
isHide?: boolean
|
||||||
/** 禁用伤害计算cache */
|
/** 禁用伤害计算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 {
|
get(type: buff['type'], initial: number, skill: skill, usefulBuffs: buff[] = this.buffM.buffs, isRatio = false): number {
|
||||||
return this.props[type] ??= this.buffM._filter(usefulBuffs, {
|
return this.props[type] ??= this.buffM._filter(usefulBuffs, {
|
||||||
|
|
|
||||||
|
|
@ -39,12 +39,12 @@ export const skills = [
|
||||||
{
|
{
|
||||||
name: '特殊技:噬爪·噩梦袭影',
|
name: '特殊技:噬爪·噩梦袭影',
|
||||||
type: 'EPLP',
|
type: 'EPLP',
|
||||||
redirect: '追加攻击'
|
redirect: ['EPLP', '追加攻击']
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: '噬爪·噩梦袭影终结一击',
|
name: '噬爪·噩梦袭影终结一击',
|
||||||
type: 'EPLZ',
|
type: 'EPLZ',
|
||||||
redirect: '追加攻击'
|
redirect: ['EPLZ', '追加攻击']
|
||||||
},
|
},
|
||||||
{ name: '强化特殊技:噬爪·瞬步', type: 'EQ' },
|
{ name: '强化特殊技:噬爪·瞬步', type: 'EQ' },
|
||||||
{ name: '连携技:嗨,想不到吧', type: 'RL' },
|
{ name: '连携技:嗨,想不到吧', type: 'RL' },
|
||||||
|
|
|
||||||
|
|
@ -48,13 +48,13 @@ export const skills = [
|
||||||
{
|
{
|
||||||
name: '特殊技:苍光',
|
name: '特殊技:苍光',
|
||||||
type: 'EPC',
|
type: 'EPC',
|
||||||
redirect: '追加攻击',
|
redirect: ['EPC', '追加攻击'],
|
||||||
after: ({ damage }) => damage.add('EPC0')
|
after: ({ damage }) => damage.add('EPC0')
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: '特殊技:雷殛',
|
name: '特殊技:雷殛',
|
||||||
type: 'EPL',
|
type: 'EPL',
|
||||||
redirect: '追加攻击'
|
redirect: ['EPL', '追加攻击']
|
||||||
},
|
},
|
||||||
{ name: '强化特殊技:极雷断空', type: 'EQ' },
|
{ name: '强化特殊技:极雷断空', type: 'EQ' },
|
||||||
{ name: '连携技:疾跃落雷', type: 'RL' },
|
{ name: '连携技:疾跃落雷', type: 'RL' },
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue