新增莱特伤害计算等

This commit is contained in:
UCPr 2025-01-18 01:52:10 +08:00
parent cecc33b24d
commit 85d368619f
7 changed files with 123 additions and 19 deletions

View file

@ -181,16 +181,18 @@ export class BuffManager {
} }
return buffs; return buffs;
} }
/**
* 遍历buff列表
*/
forEach(fnc) {
return this.buffs.forEach(fnc);
}
filter(param, valueOcalc) { filter(param, valueOcalc) {
// @ts-ignore // @ts-ignore
return this._filter(this.buffs, param, valueOcalc); return this._filter(this.buffs, param, valueOcalc);
} }
/** 遍历buff列表 */
forEach(fnc) {
return this.buffs.forEach(fnc);
}
/** 查找指定buff */
find(type, value) {
return this.buffs.find(buff => buff[type] === value);
}
operator(type, value, fnc) { operator(type, value, fnc) {
this.forEach(buff => { this.forEach(buff => {
if (buff[type] === value) { if (buff[type] === value) {

View file

@ -222,13 +222,6 @@ export class BuffManager {
return buffs return buffs
} }
/**
* buff列表
*/
forEach(fnc: (buff: buff, index: number) => void) {
return this.buffs.forEach(fnc)
}
/** /**
* buff * buff
*/ */
@ -253,6 +246,16 @@ export class BuffManager {
return this._filter(this.buffs, param, valueOcalc) return this._filter(this.buffs, param, valueOcalc)
} }
/** 遍历buff列表 */
forEach(fnc: (buff: buff, index: number) => void) {
return this.buffs.forEach(fnc)
}
/** 查找指定buff */
find<T extends keyof buff>(type: T, value: buff[T]) {
return this.buffs.find(buff => buff[type] === value)
}
operator<T extends keyof buff>(type: T, value: buff[T], fnc: (buff: buff) => void) { operator<T extends keyof buff>(type: T, value: buff[T], fnc: (buff: buff) => void) {
this.forEach(buff => { this.forEach(buff => {
if (buff[type] === value) { if (buff[type] === value) {

View file

@ -212,6 +212,7 @@ Buff来源可分为三大类武器、套装、角色影画、核心被动
> - 核心技中的技能各不相同,自行定义即可 > - 核心技中的技能各不相同,自行定义即可
> - Y 影画如柏妮思6影额外伤害 > - Y 影画如柏妮思6影额外伤害
> - Y后接数字表示该技能为第n个影画的效果
> - 影画中的技能各不相同,自行定义即可 > - 影画中的技能各不相同,自行定义即可
> - 属性异常(特殊) > - 属性异常(特殊)

View file

@ -4,7 +4,7 @@ export const buffs = [
name: '1影', name: '1影',
type: '倍率', type: '倍率',
value: 1, value: 1,
range: ['TY', 'YY'] range: ['TY', 'Y6Y']
}, },
{ {
name: '2影', name: '2影',
@ -22,14 +22,14 @@ export const buffs = [
type: '无视抗性', type: '无视抗性',
value: 0.25, value: 0.25,
element: 'Fire', element: 'Fire',
range: ['TY', 'YY', '灼烧'] range: ['TY', 'Y6Y', '灼烧']
}, },
{ {
name: '核心被动:燃油特调', name: '核心被动:燃油特调',
type: '增伤', type: '增伤',
value: ({ calc }) => Math.min(30, Math.floor(calc.get_AnomalyProficiency() / 10)) * 0.01, value: ({ calc }) => Math.min(30, Math.floor(calc.get_AnomalyProficiency() / 10)) * 0.01,
isForever: true, isForever: true,
range: ['TY', 'YY'] range: ['TY', 'Y6Y']
}, },
{ {
name: '额外能力:星火燎原', name: '额外能力:星火燎原',
@ -70,13 +70,13 @@ export const skills = [
}, },
{ {
name: '6影强化E双份额外余烬秒伤', name: '6影强化E双份额外余烬秒伤',
type: 'YY', type: 'Y6Y',
fixedMultiplier: 1.2, fixedMultiplier: 1.2,
check: ({ avatar }) => avatar.rank >= 6 check: ({ avatar }) => avatar.rank >= 6
}, },
{ {
name: '6影强化E双份额外灼烧', name: '6影强化E双份额外灼烧',
type: 'Y灼烧', type: 'Y6灼烧',
check: ({ avatar }) => avatar.rank >= 6, check: ({ avatar }) => avatar.rank >= 6,
dmg: (calc) => { dmg: (calc) => {
const dmg = calc.calc_skill({ const dmg = calc.calc_skill({

View file

@ -0,0 +1,68 @@
/** @type {import('../../BuffManager.ts').BuffManager['buffs']} */
export const buffs = [
{
name: '1影',
type: '无视抗性',
value: 0.1,
element: ['Fire', 'Ice']
},
{
name: '1影',
type: '增伤',
value: 0.3,
isForever: true,
range: ['AQ5Q']
},
{
name: '2影',
type: '增伤',
element: ['Fire', 'Ice'],
value: ({ buffM, calc }) => {
const buff = buffM.find('name', '额外能力:斗志昂扬')
if (!buff || !buff.status) return 0
const value = calc.calc_value(buff.value)
return value * 0.2
},
},
{
name: '核心被动:助燃剂',
type: '冲击力',
value: 'T'
},
{
name: '核心被动:助燃剂',
type: '无视抗性',
value: 0.15,
element: ['Fire', 'Ice']
},
{
name: '额外能力:斗志昂扬',
type: '增伤',
element: ['Fire', 'Ice'],
value: ({ calc }) => {
const Impact = calc.get_Impact()
const step = 0.0125 + Math.max(0, Math.floor((Impact - 170) / 10) * 25 / 10000)
return Math.min(0.75, step * 20)
}
}
]
/** @type {import('../../Calculator.ts').Calculator['skills']} */
export const skills = [
{ name: '普攻:强力终结一击', type: 'AQ5Q' },
{ name: '闪避反击:烈闪', type: 'CF' },
{ name: '快速支援:烈闪-守', type: 'LK' },
{ name: '强化EV式日轮升拳-全冲程', type: 'EQ1' },
{ name: '强化E强力追击', type: 'EQ2' },
{ name: '连携技V式灼日炎', type: 'RL' },
{ name: '终结技W式桂冠终火', type: 'RZ' },
{
name: '6影[火焰冲击]',
type: 'Y6',
check: ({ avatar }) => avatar.rank >= 6,
before: ({ calc, props }) => {
const Impact = calc.get_Impact()
props.倍率 = 2.5 + Math.min(5, Math.max(0, Math.floor(Impact - 170) * 5 / 100))
}
},
]

View file

@ -0,0 +1,30 @@
{
"skill": {
"AQ5Q": [
4.354,4.75,5.146,5.542,5.938,6.334,6.73,7.126,7.522,7.918,8.314,8.71,9.106,9.502,9.898,10.294
],
"CF": [
1.863,2.033,2.203,2.373,2.543,2.713,2.883,3.053,3.223,3.393,3.563,3.733,3.903,4.073,4.243,4.413
],
"LK": [
0.697,0.761,0.825,0.889,0.953,1.017,1.081,1.145,1.209,1.273,1.337,1.401,1.465,1.529,1.593,1.657
],
"EQ1": [
4.863,5.306,5.749,6.192,6.635,7.078,7.521,7.964,8.407,8.85,9.293,9.736,10.179,10.622,11.065,11.508
],
"EQ2": [
2.927,3.194,3.461,3.728,3.995,4.262,4.529,4.796,5.063,5.33,5.597,5.864,6.131,6.398,6.665,6.932
],
"RL": [
7.121,7.769,8.417,9.065,9.713,10.361,11.009,11.657,12.305,12.953,13.601,14.249,14.897,15.545,16.193,16.841
],
"RZ": [
15.08,16.451,17.822,19.193,20.564,21.935,23.306,24.677,26.048,27.419,28.79,30.161,31.532,32.903,34.274,35.645
]
},
"buff": {
"T": [
0.1,0.117,0.133,0.15,0.167,0.183,0.2
]
}
}

View file

@ -51,7 +51,7 @@ export const skills = [
}, },
{ {
name: '6影小猪空中落地爆炸', name: '6影小猪空中落地爆炸',
type: 'Y', type: 'Y6',
check: ({ avatar }) => avatar.rank >= 6, check: ({ avatar }) => avatar.rank >= 6,
fixedMultiplier: 3, fixedMultiplier: 3,
props: { props: {