爱丽丝伤害计算

This commit is contained in:
UCPr 2025-08-09 18:30:38 +08:00
parent cf25160a38
commit 14af1a20e1
8 changed files with 149 additions and 11 deletions

View file

@ -99,7 +99,9 @@ export class Calculator {
logger.debug(`${logger.green(skill.type)}${skill.name}伤害计算:`);
if (skill.dmg) {
const dmg = skill.dmg(this);
dmg.skill ||= skill;
if (!dmg.skill || dmg.skill.name !== skill.name) {
dmg.skill = skill;
}
logger.debug('自定义计算最终伤害:', dmg.result);
return dmg;
}
@ -183,7 +185,7 @@ export class Calculator {
return;
logger.debug('增加伤害:' + d.skill.name, d.result);
damage.result.expectDMG += d.result.expectDMG;
damage.result.critDMG += d.result.critDMG;
damage.result.critDMG += d.result.critDMG || d.result.expectDMG;
};
damage.fnc = (fnc) => {
damage.result.critDMG = fnc(damage.result.critDMG);
@ -444,7 +446,7 @@ export class Calculator {
default: return 0;
}
}
get(type, initial, skill, usefulBuffs = this.buffM.buffs, isRatio = false) {
get(type, initial, skill = this.skill, usefulBuffs = this.buffM.buffs, isRatio = false) {
return this.props[type] ??= this.buffM._filter(usefulBuffs, {
element: skill?.element,
range: [skill?.type],

View file

@ -254,7 +254,9 @@ export class Calculator {
logger.debug(`${logger.green(skill.type)}${skill.name}伤害计算:`)
if (skill.dmg) {
const dmg = skill.dmg(this)
dmg.skill ||= skill
if (!dmg.skill || dmg.skill.name !== skill.name) {
dmg.skill = skill
}
logger.debug('自定义计算最终伤害:', dmg.result)
return dmg
}
@ -334,7 +336,7 @@ export class Calculator {
if (!d) return
logger.debug('增加伤害:' + d.skill.name, d.result)
damage.result.expectDMG += d.result.expectDMG
damage.result.critDMG += d.result.critDMG
damage.result.critDMG += d.result.critDMG || d.result.expectDMG
}
damage.fnc = (fnc) => {
damage.result.critDMG = fnc(damage.result.critDMG)
@ -672,7 +674,7 @@ export class Calculator {
*
* @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 = this.skill, usefulBuffs: buff[] = this.buffM.buffs, isRatio = false): number {
return this.props[type] ??= this.buffM._filter(usefulBuffs, {
element: skill?.element,
range: [skill?.type],

View file

@ -86,7 +86,6 @@ export const skills = [
type: '灼烧',
after: ({ damage }) => damage.x(18)
})
dmg.skill.name = '6影强化E双份额外灼烧'
return dmg
}
},

View file

@ -0,0 +1,90 @@
/** @type {import('../../BuffManager.ts').BuffManager['buffs']} */
export const buffs = [
{
name: '1影',
type: '无视防御',
value: 0.2
},
{
name: '2影',
type: '异常增伤',
value: 0.15,
range: ['强击']
},
{
name: '2影',
type: '异常增伤',
value: 0.15,
range: ['紊乱'],
element: 'Physical'
},
{
name: '4影',
type: '无视抗性',
value: 0.1,
element: 'Physical'
},
{
name: '核心被动:剑心双虹',
type: '倍率',
value: 1.8,
element: 'Physical',
range: ['紊乱']
},
{
name: '额外能力:寻奇猎幽',
type: '异常精通',
value: ({ calc }) => Math.max(0, calc.get_AnomalyMastery() - 140) * 1.6
}
]
/** @type {import('../../Calculator.ts').Calculator['skills']} */
export const skills = [
{ name: '强击', type: '强击' },
{ name: '紊乱', type: '紊乱' },
{
name: '核心被动:持续伤害每段',
type: 'TC',
dmg: (calc) => {
const dmg = calc.calc_skill({
...calc.skills.find(skill => skill.type === '强击'),
banCache: true,
after: ({ damage }) => damage.x(0.025)
})
return dmg
}
},
{ name: '普攻:星仪序曲五段', type: 'AP5' },
{ name: '强化普攻:星仪序曲五段', type: 'AQ5' },
{ name: '蓄力普攻:星芒圆舞曲(一蓄)', type: 'AX1' },
{ name: '蓄力普攻:星芒圆舞曲(二蓄)', type: 'AX2' },
{
name: '蓄力普攻:星芒圆舞曲(三蓄)',
type: 'AX3',
isMain: true,
after: ({ damage }) => damage.add('强击')
},
{ name: '闪避反击:剑闪之仪', type: 'CF' },
{ name: '强E极光突刺·北十字', type: 'EQB' },
{ name: '强E极光突刺·南十字', type: 'EQN' },
{ name: '连携技:星落间章', type: 'RL' },
{
name: '终结技:星芒终章',
type: 'RZ',
after: ({ avatar, damage }) => {
if (avatar.rank >= 2) {
damage.add('强击')
}
}
},
{
name: '6影[决胜状态]额外攻击',
type: 'Y6',
check: 6,
before: ({ areas, props, calc }) => {
const anomalyProficiency = calc.get_AnomalyProficiency()
props.暴击率 = 1
areas.BasicArea = 33 * anomalyProficiency
}
}
]

View file

@ -0,0 +1,34 @@
{
"skill": {
"AP5": [
1.303,1.422,1.541,1.66,1.779,1.898,2.017,2.136,2.255,2.374,2.493,2.612,2.731,2.85,2.969,3.088
],
"AQ5": [
2.183,2.382,2.581,2.78,2.979,3.178,3.377,3.576,3.775,3.974,4.173,4.372,4.571,4.77,4.969,5.168
],
"AX1": [
1.889,2.061,2.233,2.405,2.577,2.749,2.921,3.093,3.265,3.437,3.609,3.781,3.953,4.125,4.297,4.469
],
"AX2": [
3.044,3.321,3.598,3.875,4.152,4.429,4.706,4.983,5.26,5.537,5.814,6.091,6.368,6.645,6.922,7.199
],
"AX3": [
9.657,10.535,11.413,12.291,13.169,14.047,14.925,15.803,16.681,17.559,18.437,19.315,20.193,21.071,21.949,22.827
],
"CF": [
2.84,3.099,3.358,3.617,3.876,4.135,4.394,4.653,4.912,5.171,5.43,5.689,5.948,6.207,6.466,6.725
],
"EQB": [
4.6,5.019,5.438,5.857,6.276,6.695,7.114,7.533,7.952,8.371,8.79,9.209,9.628,10.047,10.466,10.885
],
"EQN": [
5.32,5.804,6.288,6.772,7.256,7.74,8.224,8.708,9.192,9.676,10.16,10.644,11.128,11.612,12.096,12.58
],
"RL": [
6.663,7.269,7.875,8.481,9.087,9.693,10.299,10.905,11.511,12.117,12.723,13.329,13.935,14.541,15.147,15.753
],
"RZ": [
22.62,24.677,26.734,28.791,30.848,32.905,34.962,37.019,39.076,41.133,43.19,45.247,47.304,49.361,51.418,53.475
]
}
}

View file

@ -2,7 +2,7 @@
export const buffs = [
{
name: '1影',
type: '异常增伤', // 异常易伤?
type: '异常增伤',
value: 0.16,
is: {
team: true
@ -76,7 +76,6 @@ export const skills = [
...calc.skills.find(skill => skill.type === '侵蚀·异放'),
after: ({ damage }) => damage.x(5)
})
dmg.skill.name = '6影特殊异放·5护羽'
return dmg
}
},

View file

@ -0,0 +1,12 @@
/** @type {import('../BuffManager.ts').BuffManager['buffs']} */
export const buffs = [
{
type: '异常掌控',
value: [60, 69, 78, 87, 96]
},
{
type: '增伤',
value: [0.2, 0.23, 0.26, 0.29, 0.32].map(v => v * 2),
element: 'Physical'
}
]

View file

@ -26883,7 +26883,7 @@
"Id": 14140,
"CodeName": "Weapon_S_1401",
"Name": "十方锻星",
"Desc": "繁星洒落在绝对秩序的罗网中,一如它们数年前映入少女澄澈的双眼。洋溢而出的自信,高雅,坚定,勇气与爱,此刻都锻作傲然的剑,紧紧握在她的掌间。\n\n「我想3D打印一个360度全方位无死角对称的模型…只要输入这样的指令就可以了吧」——爱丽丝在音擎烧出黑烟停止运作的前一分钟的发言",
"Desc": "繁星洒落在绝对秩序的罗网中,一如它们数年前映入少女澄澈的双眼。洋溢而出的自信,高雅,坚定,勇气与爱,此刻都锻作傲然的剑,紧紧握在她的掌间。\n\n<color=#959595>「我想3D打印一个360度全方位无死角对称的模型…只要输入这样的指令就可以了吧」——爱丽丝在音擎烧出黑烟停止运作的前一分钟的发言</color>",
"Desc2": "装备后可提升[异常]代理人的战斗能力",
"Desc3": "繁星化剑,她将勇气与爱紧紧握在掌间。",
"Rarity": "S",
@ -27267,7 +27267,7 @@
"Id": 14141,
"CodeName": "Weapon_S_1411",
"Name": "狸法七变化",
"Desc": "精巧的小型音擎,原本是第一次参加学校空洞实习时发的便宜货,但因为体积小巧便于携带,柚叶始终难以割舍。\n\n第一次改造增大了音擎的输出功率第二次改造追加了两个以太异常特化组件第三次改造尝试修改了内部布线但不慎引起短路把裙子烧了个洞第四次改造真斗帮忙修好了短路弄坏的热传导组件但请真斗吃饭花的钱已经足够买3个新的热传导组件了第五次改造更换了新的共鸣腔第六次改造提升了对驱动盘高频信号的响应速度。\n\n很好,它终于是一件完美的、可以陪伴主人出生入死的神兵利器了!然而——\n\n「爸,你见我音擎没?」\n\n「系果边啊,我帮你改左个外壳啦,之前太核突!唔可以畀人话我个女冇眼光!」\n\n「爸!这可是音擎诶,你搞这么华丽,万一弄坏了多可惜啊!」\n\n「咁就咪搞啲会整坏音擎嘅危险嘢啦!」",
"Desc": "精巧的小型音擎,原本是第一次参加学校空洞实习时发的便宜货,但因为体积小巧便于携带,柚叶始终难以割舍。\n第一次改造增大了音擎的输出功率第二次改造追加了两个以太异常特化组件第三次改造尝试修改了内部布线但不慎引起短路把裙子烧了个洞第四次改造真斗帮忙修好了短路弄坏的热传导组件但请真斗吃饭花的钱已经足够买3个新的热传导组件了第五次改造更换了新的共鸣腔第六次改造提升了对驱动盘高频信号的响应速度。\n很好它终于是一件完美的、可以陪伴主人出生入死的神兵利器了然而——\n「爸你见我音擎没」\n「系果边啊我帮你改左个外壳啦之前太核突唔可以畀人话我个女冇眼光」\n「爸这可是音擎诶你搞这么华丽万一弄坏了多可惜啊」\n「咁就咪搞啲会整坏音擎嘅危险嘢啦」",
"Desc2": "装备后可提升[支援]代理人的战斗能力",
"Desc3": "巧夺天工的造型,饱含制作者对美的追求。",
"Rarity": "S",