新增「席德」伤害计算;新增拂晓生花、月光骑士颂套装计算;新增狸法七变化、机巧心种音擎计算

This commit is contained in:
UCPr 2025-09-09 02:50:23 +08:00
parent 219edc91de
commit 9e0f95a71b
14 changed files with 208 additions and 19 deletions

View file

@ -71,7 +71,7 @@ export class BuffManager {
buff.source = oriBuff.source = '核心被动';
else if (buff.name.includes('额外能力'))
buff.source = oriBuff.source = '额外能力';
else if (buff.name.includes('影'))
else if (/^\d影/.test(buff.name))
buff.source = oriBuff.source = '影画';
else if (buff.name.includes('技'))
buff.source = oriBuff.source = '技能';
@ -88,8 +88,8 @@ export class BuffManager {
const oriCheck = typeof buff.check === 'function' && buff.check;
buff.check = ({ avatar, buffM, calc }) => professionCheck(avatar) && (!oriCheck || oriCheck({ avatar, buffM, calc }));
}
else if (buff.source === '影画') {
buff.check ??= oriBuff.check = +buff.name.match(/\d/)?.[0];
else if (buff.source === '影画' && !buff.check) {
buff.check = oriBuff.check = +buff.name[0];
}
this.buffs.push(buff);
return this.buffs;

View file

@ -152,7 +152,7 @@ export class BuffManager {
if (!buff.source) {
if (buff.name.includes('核心') || buff.name.includes('天赋')) buff.source = oriBuff.source = '核心被动'
else if (buff.name.includes('额外能力')) buff.source = oriBuff.source = '额外能力'
else if (buff.name.includes('影')) buff.source = oriBuff.source = '影画'
else if (/^\d影/.test(buff.name)) buff.source = oriBuff.source = '影画'
else if (buff.name.includes('技')) buff.source = oriBuff.source = '技能'
}
if (!buff.name || !buff.value || !buff.source || !buffTypeEnum[buffTypeEnum[buff.type]])
@ -167,8 +167,8 @@ export class BuffManager {
const oriCheck = typeof buff.check === 'function' && buff.check
buff.check = ({ avatar, buffM, calc }) => professionCheck(avatar) && (!oriCheck || oriCheck({ avatar, buffM, calc }))
// 影画buff影画数检查
} else if (buff.source === '影画') {
buff.check ??= oriBuff.check = +buff.name.match(/\d/)!?.[0]
} else if (buff.source === '影画' && !buff.check) {
buff.check = oriBuff.check = +buff.name[0]
}
this.buffs.push(buff)
return this.buffs

View file

@ -262,7 +262,7 @@ export class Calculator {
}
const base = {};
types.forEach(t => base[t] = t.includes('百分比') ? this.avatar.base_properties[prop.nameZHToNameEN(t.replace('百分比', ''))] * subBaseValueData[t][0] : subBaseValueData[t][0]);
logger.debug('词条变化值:', base);
logger.debug(logger.red('词条差异计算变化值:'), base);
const buffs = types.map(t => ({
name: t,
shortName: prop.nameToShortName3(t),
@ -297,7 +297,7 @@ export class Calculator {
}
const base = {};
types.forEach(t => base[t] = (t.includes('百分比') || ['异常掌控', '冲击力', '能量自动回复'].includes(t)) ? this.avatar.base_properties[prop.nameZHToNameEN(t.replace('百分比', ''))] * mainBaseValueData[t][0] : mainBaseValueData[t][0]);
logger.debug(logger.red('词条变化值:'), base);
logger.debug(logger.red('词条差异计算变化值:'), base);
const buffs = types.map(t => {
const data = {
name: t,

View file

@ -451,7 +451,7 @@ export class Calculator {
}
const base: { [type: string]: number } = {}
types.forEach(t => base[t] = t.includes('百分比') ? this.avatar.base_properties[prop.nameZHToNameEN(t.replace('百分比', '')) as keyof ZZZAvatarInfo['base_properties']] * subBaseValueData[t][0] : subBaseValueData[t][0])
logger.debug('词条变化值:', base)
logger.debug(logger.red('词条差异计算变化值:'), base)
const buffs: {
name: subStatKeys
shortName: string
@ -502,7 +502,7 @@ export class Calculator {
}
const base: { [type: string]: number } = {}
types.forEach(t => base[t] = (t.includes('百分比') || ['异常掌控', '冲击力', '能量自动回复'].includes(t)) ? this.avatar.base_properties[prop.nameZHToNameEN(t.replace('百分比', '')) as keyof ZZZAvatarInfo['base_properties']] * mainBaseValueData[t][0] : mainBaseValueData[t][0])
logger.debug(logger.red('词条变化值:'), base)
logger.debug(logger.red('词条差异计算变化值:'), base)
const buffs: {
name: mainStatKeys
shortName: string

View file

@ -114,7 +114,9 @@ export function avatar_calc(avatar) {
weapon_buff(avatar.weapon, buffM);
set_buff(avatar.equip, buffM);
if (m.buffs) {
const vaildBuffs = m.buffs.filter(v => (v.source && v.source !== '影画') || typeof v.check !== 'number' || v.check <= avatar.rank);
const vaildBuffs = m.buffs.filter(v => v.source ?
(v.source !== '影画' || typeof v.check !== 'number' || v.check <= avatar.rank) :
(!/^\d影/.test(v.name) || +v.name[0] <= avatar.rank));
buffM.new(vaildBuffs);
}
if (m.skills)

View file

@ -148,7 +148,10 @@ export function avatar_calc(avatar: ZZZAvatarInfo) {
weapon_buff(avatar.weapon, buffM)
set_buff(avatar.equip, buffM)
if (m.buffs) {
const vaildBuffs = m.buffs.filter(v => (v.source && v.source !== '影画') || typeof v.check !== 'number' || v.check <= avatar.rank)
// 预筛选影画buff
const vaildBuffs = m.buffs.filter(v => v.source ?
(v.source !== '影画' || typeof v.check !== 'number' || v.check <= avatar.rank) :
(!/^\d影/.test(v.name) || +v.name[0] <= avatar.rank))
buffM.new(vaildBuffs)
}
if (m.skills) calc.new(m.skills)
@ -199,6 +202,7 @@ export function set_buff(equips: ZZZAvatarInfo['equip'], buffM: BuffManager) {
if (!m) continue
buffM.default('name', name)
if (m.buffs) {
// 预筛选套装buff
const vaildBuffs = m.buffs.filter(v => (v.source && v.source !== '套装') || typeof v.check !== 'number' || v.check <= count)
buffM.new(vaildBuffs)
}

View file

@ -0,0 +1,79 @@
/** @type {import('../../BuffManager.ts').BuffManager['buffs']} */
export const buffs = [
{
name: '1影',
type: '暴击伤害',
value: 0.3,
range: ['AB']
},
{
name: '2影',
type: '无视防御',
value: 0.2
},
{
name: '2影',
type: '增伤',
value: 0.05 * 24,
include: ['AZ']
},
{
name: '4影',
type: '增伤',
value: 0.2,
range: ['AZ']
},
{
name: '6影',
type: '暴击伤害',
value: 0.5
},
{
name: '核心被动:花链协议',
type: '攻击力',
value: 'T1'
},
{
name: '核心被动:花链协议',
type: '暴击伤害',
value: 'T2'
},
{
name: '核心被动:花链协议',
type: '增伤',
value: 'T3'
},
{
name: '额外能力:奇兵轰临',
type: '增伤',
value: 0.3,
range: ['AZ', 'AB', 'RZ']
},
{
name: '额外能力:奇兵轰临',
type: '无视抗性',
value: 0.25,
element: 'Electric',
range: ['AZ', 'AB', 'RZ']
}
]
/** @type {import('../../Calculator.ts').Calculator['skills']} */
export const skills = [
{ name: '感电每次', type: '感电' },
{ name: '普攻:霜蕊轮舞四段', type: 'AP4' },
{ name: '普攻:落华·重戮', type: 'AZ' },
{ name: '普攻:落华·崩坠一式', type: 'AB1' },
{ name: '普攻:落华·崩坠二式', type: 'AB2', isMain: true },
{ name: '闪避反击:裂萼纷华', type: 'CF' },
{ name: '支援突击:绯芯爆裂', type: 'LT' },
{ name: '长按强E铁萼雨幕', type: 'EQX' },
{ name: '连携技:落霞风暴', type: 'RL' },
{ name: '终结技:机芯花园·绽放!', type: 'RZ' },
{
name: '6影普攻落华·重戮额外激光',
type: 'Y6',
check: 6,
multiplier: 1.65 * 3
}
]

View file

@ -0,0 +1,42 @@
{
"skill": {
"AP4": [
3.586,3.912,4.238,4.564,4.89,5.216,5.542,5.868,6.194,6.52,6.846,7.172,7.498,7.824,8.15,8.476
],
"AZ": [
1.666,1.818,1.97,2.122,2.274,2.426,2.578,2.73,2.882,3.034,3.186,3.338,3.49,3.642,3.794,3.946
],
"AB1": [
5.283,5.764,6.245,6.726,7.207,7.688,8.169,8.65,9.131,9.612,10.093,10.574,11.055,11.536,12.017,12.498
],
"AB2": [
9.894,10.794,11.694,12.594,13.494,14.394,15.294,16.194,17.094,17.994,18.894,19.794,20.694,21.594,22.494,23.394
],
"CF": [
3.201,3.492,3.783,4.074,4.365,4.656,4.947,5.238,5.529,5.82,6.111,6.402,6.693,6.984,7.275,7.566
],
"LT": [
4.56,4.975,5.39,5.805,6.22,6.635,7.05,7.465,7.88,8.295,8.71,9.125,9.54,9.955,10.37,10.785
],
"EQX": [
6.834,7.456,8.078,8.7,9.322,9.944,10.566,11.188,11.81,12.432,13.054,13.676,14.298,14.92,15.542,16.164
],
"RL": [
7.342,8.01,8.678,9.346,10.014,10.682,11.35,12.018,12.686,13.354,14.022,14.69,15.358,16.026,16.694,17.362
],
"RZ": [
32.497,35.452,38.407,41.362,44.317,47.272,50.227,53.182,56.137,59.092,62.047,65.002,67.957,70.912,73.867,76.822
]
},
"buff": {
"T1": [
100,225,350,475,600,725,1000
],
"T2": [
0.15,0.175,0.2,0.225,0.25,0.275,0.3
],
"T3": [
0.125,0.145,0.165,0.185,0.205,0.225,0.25
]
}
}

View file

@ -55,10 +55,12 @@ export function calc(buffM, calc, avatar) {
range: ['']
})
/** 注册技能 */
calc.new({ name: '普通攻击:', type: '' })
calc.new({ name: '强化特殊技:', type: '' })
calc.new({ name: '连携技:', type: '' })
calc.new({ name: '终结技:', type: '' })
calc.new({ name: '普攻:', type: 'AP' })
calc.new({ name: '闪避反击:', type: 'CF' })
calc.new({ name: '支援突击:', type: 'LT' })
calc.new({ name: '强E', type: 'EQ' })
calc.new({ name: '连携技:', type: 'RL' })
calc.new({ name: '终结技:', type: 'RZ' })
calc.new({ name: '', type: '' })
}
@ -116,7 +118,7 @@ export const skills = [
{ name: '普攻:', type: 'AP' },
{ name: '闪避反击:', type: 'CF' },
{ name: '支援突击:', type: 'LT' },
{ name: '强化特殊技', type: 'EQ' },
{ name: '强E', type: 'EQ' },
{ name: '连携技:', type: 'RL' },
{ name: '终结技:', type: 'RZ' },
{ name: '', type: '' },

View file

@ -3,10 +3,10 @@
"AP": [
],
"CC": [
"CF": [
],
"CF": [
"LT": [
],
"EQ": [

View file

@ -0,0 +1,21 @@
/** @type {import('../BuffManager.ts').BuffManager['buffs']} */
export const buffs = [
{
type: '增伤',
value: 0.15,
check: 2,
range: ['A']
},
{
type: '增伤',
value: 0.2,
check: 4,
range: ['A']
},
{
type: '增伤',
value: 0.2,
check: ({ avatar, buffM }) => buffM.setCount.拂晓生花 >= 4 && avatar.avatar_profession === 1, // 仅强攻角色
range: ['A']
}
]

View file

@ -0,0 +1,9 @@
/** @type {import('../BuffManager.ts').BuffManager['buffs']} */
export const buffs = [
{
type: '增伤',
value: 0.18,
check: ({ avatar, buffM }) => buffM.setCount.月光骑士颂 >= 4 && avatar.avatar_profession === 4, // 仅支援角色
is: { team: true }
}
]

View file

@ -0,0 +1,17 @@
/** @type {import('../BuffManager.ts').BuffManager['buffs']} */
export const buffs = [
{
type: '暴击率',
value: [0.15, 0.17, 0.19, 0.21, 0.23]
},
{
type: '增伤',
value: [0.125, 0.145, 0.165, 0.185, 0.2].map(v => v * 2),
element: 'Electric'
},
{
type: '无视防御',
value: [0.2, 0.23, 0.26, 0.29, 0.32],
range: ['A', 'RZ']
}
]

View file

@ -0,0 +1,13 @@
/** @type {import('../BuffManager.ts').BuffManager['buffs']} */
export const buffs = [
{
type: '异常掌控',
value: [30, 34, 39, 43, 48],
check: ({ avatar }) => avatar.element_type === 200
},
{
type: '异常精通',
value: [60, 69, 78, 87, 96],
is: { team: true }
}
]