fix: 伤害计算Bug

This commit is contained in:
Aluxes 2024-04-30 20:10:36 +08:00
parent 22020900fd
commit 66b26d58b2
No known key found for this signature in database
GPG Key ID: 6696152F9C003087
14 changed files with 115 additions and 90 deletions

View File

@ -82,13 +82,13 @@ export async function AbyssSummary (e) {
msg.push({ msg.push({
title: '少于', title: '少于',
value: (Math.max(0.1, 100 - percent * 100)).toFixed(1), value: (Math.max(0.1, 100 - percent * 100)).toFixed(1),
name: name name
}) })
} else { } else {
msg.push({ msg.push({
title: '超过', title: '超过',
value: (Math.min(99.9, percent * 100)).toFixed(1), value: (Math.min(99.9, percent * 100)).toFixed(1),
name: name name
}) })
} }
} }

View File

@ -83,5 +83,5 @@ export const usefulAttr = {
闲云: { hp: 0, atk: 100, def: 0, cpct: 100, cdmg: 100, mastery: 0, dmg: 100, phy: 0, recharge: 75, heal: 100 }, 闲云: { hp: 0, atk: 100, def: 0, cpct: 100, cdmg: 100, mastery: 0, dmg: 100, phy: 0, recharge: 75, heal: 100 },
嘉明: { hp: 0, atk: 75, def: 0, cpct: 100, cdmg: 100, mastery: 75, dmg: 100, phy: 0, recharge: 55, heal: 0 }, 嘉明: { hp: 0, atk: 75, def: 0, cpct: 100, cdmg: 100, mastery: 75, dmg: 100, phy: 0, recharge: 55, heal: 0 },
千织: { hp: 0, atk: 50, def: 75, cpct: 100, cdmg: 100, mastery: 0, dmg: 100, phy: 0, recharge: 55, heal: 0 }, 千织: { hp: 0, atk: 50, def: 75, cpct: 100, cdmg: 100, mastery: 0, dmg: 100, phy: 0, recharge: 55, heal: 0 },
阿蕾奇诺: { hp: 0, atk: 75, def: 0, cpct: 100, cdmg: 100, mastery: 75, dmg: 100, phy: 0, recharge: 35, heal: 0 } 阿蕾奇诺: { hp: 0, atk: 75, def: 0, cpct: 100, cdmg: 100, mastery: 75, dmg: 100, phy: 0, recharge: 55, heal: 0 }
} }

View File

@ -357,7 +357,7 @@ const buffs = {
title: '触发提高普攻[aPlus]伤害', title: '触发提高普攻[aPlus]伤害',
sort: 9, sort: 9,
data: { data: {
aPlus: ({ attr }) => (attr.atk.base + attr.atk.plus + attr.atk.pct * attr.atk.base / 100) * 0.35 aPlus: ({ attr }) => attr.atk * 0.35
} }
} }
}, },
@ -487,7 +487,7 @@ const buffs = {
}, },
谐律异想断章: { 谐律异想断章: {
2: attr('atkPct', 18 ), 2: attr('atkPct', 18),
4: { 4: {
title: '生命之契的数值提升或降低时,角色造成的伤害提升[dmg]%', title: '生命之契的数值提升或降低时,角色造成的伤害提升[dmg]%',
data: { data: {
@ -497,7 +497,7 @@ const buffs = {
}, },
未竟的遐思: { 未竟的遐思: {
2: attr('atkPct', 18 ), 2: attr('atkPct', 18),
4: { 4: {
title: '存在处于燃烧状态下的敌人时,伤害提升[dmg]%', title: '存在处于燃烧状态下的敌人时,伤害提升[dmg]%',
data: { data: {

View File

@ -1433,7 +1433,7 @@
"10000096": { "10000096": {
"id": 10000096, "id": 10000096,
"name": "阿蕾奇诺", "name": "阿蕾奇诺",
"abbr": "阿蕾奇诺", "abbr": "仆人",
"star": 5, "star": 5,
"elem": "pyro", "elem": "pyro",
"weapon": "polearm", "weapon": "polearm",

View File

@ -1,14 +1,14 @@
export const details = [{ export const details = [{
title: 'Q提供普攻基础伤害', title: 'Q提供普攻基础伤害',
dmg: ({ talent, attr, calc }) => { dmg: ({ talent, attr }) => {
return { return {
avg: (talent.q['伤害值提升'] / 100 + 0.115) * calc(attr.def) avg: (talent.q['伤害值提升'] / 100 + 0.115) * attr.def
} }
} }
}, { }, {
title: '二段蓄力E伤害', title: '二段蓄力E伤害',
dmg: ({ talent, attr, calc }, { basic }) => { dmg: ({ talent, attr }, { basic }) => {
let ret = talent.e['二段蓄力伤害'] * calc(attr.def) / 100 + (attr.e.plus || 0) let ret = talent.e['二段蓄力伤害'] / 100 * attr.def
return basic(ret, 'e') return basic(ret, 'e')
} }
}] }]
@ -19,8 +19,8 @@ export const buffs = [{
title: '云堇被动队伍存在4元素类型角色时Q提供的普攻伤害提高[_q]', title: '云堇被动队伍存在4元素类型角色时Q提供的普攻伤害提高[_q]',
sort: 9, sort: 9,
data: { data: {
_q: ({ attr, calc }) => { _q: ({ attr }) => {
return calc(attr.def) * 0.115 return attr.def * 0.115
} }
} }
}] }]

View File

@ -3,20 +3,20 @@ export const details = [{
dmg: ({ talent }, dmg) => dmg(talent.e['技能伤害'], 'e') dmg: ({ talent }, dmg) => dmg(talent.e['技能伤害'], 'e')
}, { }, {
title: '三岩Q伤害', title: '三岩Q伤害',
dmg: ({ talent, attr, calc }, { basic }) => { dmg: ({ talent, attr }, { basic }) => {
let ret = talent.q['技能伤害'] * calc(attr.def) / 100 + attr.q.plus * 1 let ret = talent.q['技能伤害'] / 100 * attr.def
return basic(ret, 'q') return basic(ret, 'q')
} }
}, { }, {
title: '三岩Q每跳伤害', title: '三岩Q每跳伤害',
dmg: ({ talent, attr, calc }, { basic }) => { dmg: ({ talent, attr }, { basic }) => {
let ret = talent.q['岩晶崩破伤害'] * calc(attr.def) / 100 + attr.q.plus * 1 let ret = talent.q['岩晶崩破伤害'] / 100 * attr.def
return basic(ret, 'q') return basic(ret, 'q')
} }
}, { }, {
title: 'Q每跳治疗', title: 'Q每跳治疗',
cons: 4, cons: 4,
dmg: ({ attr, calc }, { heal }) => heal(0.5 * calc(attr.def)) dmg: ({ attr }, { heal }) => heal(0.5 * attr.def)
}] }]
export const mainAttr = 'atk,def,cpct,cdmg' export const mainAttr = 'atk,def,cpct,cdmg'
@ -27,6 +27,13 @@ export const buffs = [{
defPlus: ({ talent }) => talent.e['防御力提升'] * 1, defPlus: ({ talent }) => talent.e['防御力提升'] * 1,
dmg: 15 dmg: 15
} }
}, {
title: '天赋-报恩之守基于防御力提高E伤害[ePlus]提高Q伤害[qPlus]',
sort: 9,
data: {
ePlus: ({ attr }) => 1.56 * attr.def,
qPlus: ({ attr }) => 0.156 * attr.def
}
}, { }, {
title: '五郎被动释放E后防御力提高25%', title: '五郎被动释放E后防御力提高25%',
data: { data: {

View File

@ -1,3 +1,5 @@
import { Format } from '#miao'
export const details = [{ export const details = [{
title: 'E伤害', title: 'E伤害',
dmg: ({ talent }, dmg) => dmg(talent.e['基础伤害'], 'e') dmg: ({ talent }, dmg) => dmg(talent.e['基础伤害'], 'e')
@ -8,6 +10,21 @@ export const details = [{
title: 'Q每跳伤害', title: 'Q每跳伤害',
params: { q: true }, params: { q: true },
dmg: ({ talent }, dmg) => dmg(talent.q['闪雷伤害'], 'q') dmg: ({ talent }, dmg) => dmg(talent.q['闪雷伤害'], 'q')
}, {
title: 'E弹反护盾量',
dmg: ({ talent, attr }, { shield }) => shield(talent.e['护盾吸收量2'][0] / 100 * attr.hp + talent.e['护盾吸收量2'][1])
}, {
title: 'Q护盾量',
check: ({ cons }) => cons >= 1,
dmg: ({ attr }, { shield }) => shield(0.16 * attr.hp)
}, {
title: 'Q伤害减免',
dmg: ({ talent }) => {
return {
avg: Format.percent(talent.q['伤害减免'] / 100),
type: 'text'
}
}
}] }]
export const mainAttr = 'atk,cpct,cdmg' export const mainAttr = 'atk,cpct,cdmg'

View File

@ -11,10 +11,11 @@ export const details = [{
dmg: ({ talent, calc, attr, cons }, { basic }) => { dmg: ({ talent, calc, attr, cons }, { basic }) => {
let pct = talent.e['剑舞步/旋舞步一段伤害2'][0] * 1 + talent.e['剑舞步/旋舞步二段伤害2'][0] * 1 let pct = talent.e['剑舞步/旋舞步一段伤害2'][0] * 1 + talent.e['剑舞步/旋舞步二段伤害2'][0] * 1
let ret1 = basic(calc(attr.hp) * pct / 100, 'e') let ret1 = basic(calc(attr.hp) * pct / 100, 'e')
let dynamicDmg = 0
if (cons >= 1) { if (cons >= 1) {
attr.e.dmg += 65 dynamicDmg = 65
} }
let ret2 = basic(calc(attr.hp) * talent.e['水月/水轮伤害2'][0] / 100, 'e') let ret2 = basic(calc(attr.hp) * talent.e['水月/水轮伤害2'][0] / 100, 'e', false, { dynamicDmg })
return { return {
dmg: ret1.dmg + ret2.dmg, dmg: ret1.dmg + ret2.dmg,
avg: ret2.avg + ret2.avg avg: ret2.avg + ret2.avg

View File

@ -15,10 +15,11 @@ export const details = [{
dmg: ({ talent, calc, attr, cons }, { basic }) => { dmg: ({ talent, calc, attr, cons }, { basic }) => {
let pct = talent.e['剑舞步/旋舞步一段伤害2'][0] * 1 + talent.e['剑舞步/旋舞步二段伤害2'][0] * 1 let pct = talent.e['剑舞步/旋舞步一段伤害2'][0] * 1 + talent.e['剑舞步/旋舞步二段伤害2'][0] * 1
let ret1 = basic(calc(attr.hp) * pct / 100, 'e') let ret1 = basic(calc(attr.hp) * pct / 100, 'e')
let dynamicDmg = 0
if (cons >= 1) { if (cons >= 1) {
attr.e.dmg += 65 dynamicDmg = 65
} }
let ret2 = basic(calc(attr.hp) * talent.e['水月/水轮伤害2'][0] / 100, 'e') let ret2 = basic(calc(attr.hp) * talent.e['水月/水轮伤害2'][0] / 100, 'e', false, { dynamicDmg })
return { return {
dmg: ret1.dmg + ret2.dmg, dmg: ret1.dmg + ret2.dmg,
avg: ret2.avg + ret2.avg avg: ret2.avg + ret2.avg

View File

@ -16,8 +16,8 @@ export const buffs = [{
title: '蝶引来生开E获得[atkPlus]点攻击力加成', title: '蝶引来生开E获得[atkPlus]点攻击力加成',
sort: 9, sort: 9,
data: { data: {
atkPlus: ({ talent, attr, calc }) => { atkPlus: ({ talent, attr }) => {
return Math.min(talent.e['攻击力提高'] * calc(attr.hp) / 100, attr.atk.base * 4) return Math.min(talent.e['攻击力提高'] * attr.hp / 100, attr.atk.base * 4)
} }
} }
}, { }, {

View File

@ -1,62 +1,61 @@
export const details = [{ export const details = [{
title: '半血开E重击', title: '半血开E重击',
params: { team: false }, params: { team: false },
dmg: ({ talent }, dmg) => dmg(talent.a['重击伤害'], 'a2') dmg: ({ talent }, dmg) => dmg(talent.a['重击伤害'], 'a2')
}, { }, {
title: '半血开E重击蒸发', title: '半血开E重击蒸发',
params: { team: false }, params: { team: false },
dmg: ({ talent }, dmg) => dmg(talent.a['重击伤害'], 'a2', 'vaporize') dmg: ({ talent }, dmg) => dmg(talent.a['重击伤害'], 'a2', 'vaporize')
}, { }, {
title: '胡桃双水半血重击蒸发', title: '胡桃双水半血重击蒸发',
params: { team: true}, params: { team: true },
dmg: ({ talent }, dmg) => dmg(talent.a['重击伤害'], 'a2', 'vaporize') dmg: ({ talent }, dmg) => dmg(talent.a['重击伤害'], 'a2', 'vaporize')
}, { }, {
title: '半血开E后Q蒸发', title: '半血开E后Q蒸发',
params: { team: false }, params: { team: false },
dmg: ({ talent }, dmg) => dmg(talent.q['低血量时技能伤害'], 'q', 'vaporize') dmg: ({ talent }, dmg) => dmg(talent.q['低血量时技能伤害'], 'q', 'vaporize')
}, { }, {
title: '胡桃双水半血Q蒸发', title: '胡桃双水半血Q蒸发',
params: { team: true}, params: { team: true },
dmg: ({ talent }, dmg) => dmg(talent.q['低血量时技能伤害'], 'q', 'vaporize') dmg: ({ talent }, dmg) => dmg(talent.q['低血量时技能伤害'], 'q', 'vaporize')
}] }]
export const defDmgIdx = 2 export const defDmgIdx = 2
export const mainAttr = 'hp,atk,cpct,cdmg,mastery' export const mainAttr = 'hp,atk,cpct,cdmg,mastery'
export const defParams = { export const defParams = {
team: true team: true
}
export const buffs = [{
check: ({ params }) => params.team === true,
title: '双水共鸣:获得[hpPct]%生命值',
data: {
hpPct: 25
} }
}, {
export const buffs = [{ title: '蝶引来生开E获得[atkPlus]点攻击力加成',
check: ({ params }) => params.team === true, sort: 9,
title: '双水共鸣:获得[hpPct]%生命值', data: {
data: { atkPlus: ({ talent, attr }) => {
hpPct: 25 return Math.min(talent.e['攻击力提高'] * attr.hp / 100, attr.atk.base * 4)
} }
},{ }
title: '蝶引来生开E获得[atkPlus]点攻击力加成', }, {
sort: 9, title: '胡桃被动半血获得33%火伤加成',
data: { data: {
atkPlus: ({ talent, attr, calc }) => { dmg: 33
return Math.min(talent.e['攻击力提高'] * calc(attr.hp) / 100, attr.atk.base * 4) }
} }, {
} check: ({ params }) => params.team === true,
}, { title: '夜兰:获得平均[dmg]%增伤',
title: '胡桃被动半血获得33%火伤加成', data: {
data: { dmg: 35
dmg: 33 }
} }, {
},{ check: ({ params }) => params.team === true,
check: ({ params }) => params.team === true, title: '钟离:降低敌人[kx]%全抗',
title: '夜兰:获得平均[dmg]%增伤', data: {
data: { kx: 20
dmg: 35 }
} }, 'vaporize']
},{
check: ({ params }) => params.team === true,
title: '钟离:降低敌人[kx]%全抗',
data: {
kx: 20
}
},'vaporize']

View File

@ -1,7 +1,7 @@
{ {
"id": 10000096, "id": 10000096,
"name": "阿蕾奇诺", "name": "阿蕾奇诺",
"abbr": "阿蕾奇诺", "abbr": "仆人",
"title": "孤暝厄月", "title": "孤暝厄月",
"star": 5, "star": 5,
"elem": "pyro", "elem": "pyro",
@ -429,8 +429,8 @@
"name": "厄月将升", "name": "厄月将升",
"desc": [ "desc": [
"阿蕾奇诺振舞厄月血火之翼,回收并清除周围的血偿勒令,造成火元素范围伤害,并在此后清除元素战技「万相化灰」的冷却时间及为自己恢复生命值,回复量基于她的生命之契数值与攻击力。", "阿蕾奇诺振舞厄月血火之翼,回收并清除周围的血偿勒令,造成火元素范围伤害,并在此后清除元素战技「万相化灰」的冷却时间及为自己恢复生命值,回复量基于她的生命之契数值与攻击力。",
"<i>就提瓦特常识来说,满月以外的月相皆是仅炼金术与占星术会用到的厄运隐喻。", "<i>就提瓦特常识来说,满月以外的月相皆是仅炼金术与占星术会用到的厄运隐喻。</i>",
"她梦中曾数次梦见的这一轮赤色之月,是噩兆吗?是,不过悲惨命运是属于激怒她的那些人的。</i>" "<i>她梦中曾数次梦见的这一轮赤色之月,是噩兆吗?是,不过悲惨命运是属于激怒她的那些人的。</i>"
], ],
"tables": [ "tables": [
{ {

View File

@ -5,7 +5,7 @@ export const details = [{
}, { }, {
title: 'E刹那之花伤害', title: 'E刹那之花伤害',
dmg: ({ talent, attr }, { basic }) => { dmg: ({ talent, attr }, { basic }) => {
let ret = talent.e['刹那之花伤害'] * attr.def / 100 + attr.e.plus let ret = talent.e['刹那之花伤害'] * attr.def / 100
return basic(ret, 'e') return basic(ret, 'e')
} }
}, { }, {
@ -14,7 +14,7 @@ export const details = [{
half: true half: true
}, },
dmg: ({ talent, attr }, { basic }) => { dmg: ({ talent, attr }, { basic }) => {
let ret = talent.e['刹那之花伤害'] * attr.def / 100 + attr.e.plus let ret = talent.e['刹那之花伤害'] * attr.def / 100
return basic(ret, 'e') return basic(ret, 'e')
} }
}, { }, {

View File

@ -4,7 +4,7 @@ export default function (step, staticStep) {
title: '元素战技造成的伤害值提高[ePlus]', title: '元素战技造成的伤害值提高[ePlus]',
sort: 9, sort: 9,
data: { data: {
ePlus: ({ attr, calc, refine }) => calc(attr.def) * step(40)[refine] / 100 ePlus: ({ attr, refine }) => attr.def * step(40)[refine] / 100
} }
}, },
腐殖之剑: { 腐殖之剑: {
@ -248,7 +248,7 @@ export default function (step, staticStep) {
hpPct: step(14 * 2) hpPct: step(14 * 2)
} }
}], }],
有乐御簾切: [staticStep('defPct', 20),{ 有乐御簾切: [staticStep('defPct', 20), {
title: '附近的角色在场上造成岩元素伤害后,普通攻击伤害提升[aDmg]%,元素战伤害提升[eDmg]%', title: '附近的角色在场上造成岩元素伤害后,普通攻击伤害提升[aDmg]%,元素战伤害提升[eDmg]%',
refine: { refine: {
aDmg: step(16 * 2), aDmg: step(16 * 2),