miao-plugin/resources/meta/character/妮露/calc_auto.js
zolay 6e3cfc8be3
新增妮露组队“海妮心二妲·丰穰之核”伤害 (#600)
* 添加顶层`MiaoError`处理,可实现任意代码处回复错误信息。

* 解除xx伤害n,n最多只能到7个的限制;修复xx伤害n,显示的buff列表不正确。

* 新增妮露组队“海妮心二妲·丰穰之核”伤害

* 更新buff名称使其更符合规范

* 妮露组队伤害补充双水共鸣效果
2023-06-12 03:20:56 +08:00

197 lines
6.0 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// 纳西妲、妮露、艾尔海森、心海
const team2 = createTeam('海妮心妲', ['纳西妲', '艾尔海森', '心海'])
export const details = [{
title: '水月伤害',
params: { sy: true ,team:false},
dmg: ({ talent, calc, attr }, { basic }) => basic(calc(attr.hp) * talent.e['水月/水轮伤害2'][0] / 100, 'e')
}, {
title: '水月蒸发伤害',
params: { sy: true ,team:false},
dmg: ({ talent, calc, attr }, { basic }) => basic(calc(attr.hp) * talent.e['水月/水轮伤害2'][0] / 100, 'e', '蒸发')
}, {
title: '剑舞步三段伤害',
params: {team:false },
dmg: ({ talent, calc, attr, cons }, { basic }) => {
let pct = talent.e['剑舞步/旋舞步一段伤害2'][0] * 1 + talent.e['剑舞步/旋舞步二段伤害2'][0] * 1
let ret1 = basic(calc(attr.hp) * pct / 100, 'e')
if (cons >= 1) {
attr.e.dmg += 65
}
let ret2 = basic(calc(attr.hp) * talent.e['水月/水轮伤害2'][0] / 100, 'e')
return {
dmg: ret1.dmg + ret2.dmg,
avg: ret2.avg + ret2.avg
}
}
}, {
title: 'Q两段总伤害',
params: { team:false },
dmg: ({ talent, calc, attr }, { basic }) => basic(calc(attr.hp) * (talent.q['技能伤害'] + talent.q['永世流沔伤害']) / 100, 'q')
}, {
title: 'Q两段蒸发总伤害',
params: { team:false },
dmg: ({ talent, calc, attr }, { basic }) => basic(calc(attr.hp) * (talent.q['技能伤害'] + talent.q['永世流沔伤害']) / 100, 'q', '蒸发')
}, {
title: '丰穰之核伤害',
params: { bloom:true ,team:false },
dmg: ({calc, attr}, { reaction }) => {
return reaction('bloom')}
}, {
title: '海妮心二妲·丰穰之核',
params: {team: false, bloom: true, ...team2.params},
dmg: ({}, {reaction}) => {
// 草神二命固定暴击率20%、暴击伤害100%
const cpctNum = 20 / 100, cdmgNum = 100 / 100
// 计算丰穰之核非暴击伤害
const {avg} = reaction('bloom')
return {
// 暴击伤害
dmg: avg * (1 + cdmgNum),
// 平均伤害
avg: avg * (1 + cpctNum * cdmgNum)
}
}
}, {
title: '夜万妮香Q总蒸发伤害',
params: { team:true },
dmg: ({ talent, calc, attr }, { basic }) => basic(calc(attr.hp) * (talent.q['技能伤害'] + talent.q['永世流沔伤害']) / 100, 'q', '蒸发')
}]
export const mainAttr = 'hp,atk,cpct,cdmg,mastery'
export const defDmgIdx = 6
export const defParams = {
team:true,
}
export const buffs = [{
check: ({ params }) => params.team === false || team2.is(params),
title: '妮露天赋:丰穰之核增伤[bloom]%,元素精通提升100点',
data: {
bloom: ({ calc, attr }) => Math.min(400,(calc(attr.hp)-30000)/1000*9),
mastery:({ params }) => params.bloom ? 100 : 0
}
},{
title: '妮露1命水月造成的伤害提升65%',
cons: 1,
data: {
eDmg: ({ params }) => params.sy ? 65 : 0
}
}, {
check: ({params }) => params.team === false || team2.is(params),
title: '妮露2命金杯的丰馈下降低敌人35%水抗与草抗',
cons: 2,
data: {
kx: 35
}
}, {
check: ({ cons,params }) => cons <= 1 && params.team === true && team2.not(params),
title: '精1苍古0命万叶获得[dmg]%增伤(苍古普攻16增伤),增加[atkPct]%攻击,减抗[kx]%',
data: {
aDmg:16,
a2Dmg:16,
a3Dmg:16,
dmg: 40,
atkPct:20,
kx:40,
}
}, {
check: ({ cons,params }) => ((cons < 6 && cons >1) && params.team === true && team2.not(params)),
title: '精1苍古2命万叶获得[dmg]%增伤(苍古普攻16增伤),增加[atkPct]%攻击,减抗[kx]%,精通[mastery]',
data: {
aDmg:16,
a2Dmg:16,
a3Dmg:16,
dmg: 48,
atkPct:20,
kx:40,
mastery:200
}
}, {
check: ({ cons,params }) => (cons >= 6 && params.team === true && team2.not(params)),
title: '精5苍古6命万叶获得[dmg]%增伤(苍古普攻32增伤),增加[atkPct]%攻击,减抗[kx]%,精通[mastery]',
data: {
aDmg:32,
a2Dmg:32,
a3Dmg:32,
dmg: 48,
atkPct:40,
kx:40,
mastery:200
}
}, {
check: ({ cons,params }) => (cons >= 4 && params.team === true && team2.not(params)),
title: '双水夜兰2层4命双水,夜兰4命[hpPct]%生命值,[dmg]增伤',
data: {
hpPct: 45,
dmg:30
}
}, {
check: ({ cons,params }) => (cons < 4 && params.team === true && team2.not(params)),
title: '双水夜兰:双水[hpPct]%生命值,[dmg]增伤',
data: {
hpPct: 25,
dmg:30
}
}, {
title: '妮露4命第三段舞步命中敌人Q伤害提高50%',
cons: 4,
data: {
qDmg: 50
}
}, {
title: '妮露6命提高暴击[cpct]%,爆伤[cdmg]%',
cons: 6,
data: {
cpct: ({ calc, attr }) => Math.min(30, calc(attr.hp) / 1000 * 0.6),
cdmg: ({ calc, attr }) => Math.min(60, calc(attr.hp) / 1000 * 1.2)
}
}, {
check: ({params}) => team2.is(params),
title: '双水双草共鸣:双水提升[hpPct]%生命值上限双草提升精通50点触发绽放再提升30点共提升[mastery]点',
data: {
hpPct: 25,
mastery: 50 + 30,
}
}, {
check: ({params}) => team2.is(params),
title: '千精草套纳西妲开Q增加[mastery]点精通,减[kx]%草抗',
data: {
mastery: 1000 * 0.25,
kx: 30
}
}, {
check: ({params}) => team2.is(params),
title: '精1千夜浮梦队伍中装备者以外的角色元素精通提升[mastery]点',
data: {
mastery: 40,
}
}, {
check: ({params}) => team2.is(params),
title: '纳西妲2命提供绽放反应固定20%暴击率和100%的暴击伤害',
data: {}
}, 'vaporize']
/**
* 创建队伍
* @param name 队伍名
* @param members 队员
* @return {{name, members, params, go, is, not}}
*/
function createTeam(name, members) {
const team = {name, members}
// 队伍出战
team.go = () => {
const params = {}
team.members.forEach(k => params[name + '_' + k] = true);
return params
}
team.params = team.go()
// 是否是当前配队
team.is = (params) => members.filter(k => params[name + '_' + k] === true).length === members.length
// 是否不是当前配队
team.not = (params) => !team.is(params)
return team
}