miao-plugin/models/profile-lib/DmgBuffs.js

88 lines
2.2 KiB
JavaScript
Raw Normal View History

2022-08-22 20:53:31 +00:00
/*
* 伤害计算 - Buff计算
* */
import lodash from 'lodash'
let weaponBuffs = {}
let artisBuffs = {}
let DmgBuffs = {
// 圣遗物Buff
getArtisBuffs (artis) {
let buffs = artisBuffs
let setMap = {}
lodash.forEach(artis, (arti, name) => {
if (lodash.isNumber(arti)) {
setMap[name] = arti
} else {
if (arti && arti.set) {
let name = arti.set
setMap[name] = (setMap[name] || 0) + 1
}
}
})
let retBuffs = []
lodash.forEach(setMap, (count, setName) => {
if (count >= 2 && buffs[setName + 2]) {
retBuffs.push(buffs[setName + 2])
}
if (count >= 4 && buffs[setName + 4]) {
retBuffs.push(buffs[setName + 4])
}
})
return retBuffs
},
// 武器Buff
getWeaponBuffs (weaponName) {
let weaponCfg = weaponBuffs[weaponName] || []
if (lodash.isPlainObject(weaponCfg)) {
weaponCfg = [weaponCfg]
}
lodash.forEach(weaponCfg, (ds) => {
if (!//.test(ds.title)) {
ds.title = `${weaponName}${ds.title}`
}
if (ds.refine) {
ds.data = ds.data || {}
lodash.forEach(ds.refine, (r, key) => {
ds.data[key] = ({ refine }) => r[refine] * (ds.buffCount || 1)
})
}
})
return weaponCfg
},
getBuffs (profile, buffs = []) {
let weaponBuffs = DmgBuffs.getWeaponBuffs(profile.weapon?.name || '')
let artisBuffs = DmgBuffs.getArtisBuffs(profile.artis || {})
buffs = lodash.concat(buffs, weaponBuffs, artisBuffs)
let mKey = {
zf: '蒸发',
rh: '融化',
ks: '扩散'
}
lodash.forEach(buffs, (buff, idx) => {
if (lodash.isString(buff) && mKey[buff]) {
buff = {
title: `元素精通:${mKey[buff]}伤害提高[${buff}]%`,
mastery: buff
}
buffs[idx] = buff
}
buff.sort = lodash.isUndefined(buff.sort) ? 1 : buff.sort
})
buffs = lodash.sortBy(buffs, ['sort'])
return buffs
}
}
async function init () {
const _path = `file://${process.cwd()}/plugins/miao-plugin/resources/meta`
weaponBuffs = (await import(`${_path}/weapons/calc.js`)).weapons || {}
artisBuffs = (await import(`${_path}/reliquaries/calc.js`)).buffs || {}
}
await init()
export default DmgBuffs