mirror of
https://github.com/yoimiya-kokomi/miao-plugin.git
synced 2024-11-29 18:38:52 +00:00
79 lines
2.0 KiB
JavaScript
79 lines
2.0 KiB
JavaScript
/*
|
||
* 伤害计算 - Buff计算
|
||
* */
|
||
import lodash from 'lodash'
|
||
import { Data } from '../../components/index.js'
|
||
|
||
let weaponBuffs = {}
|
||
let artisBuffs = {}
|
||
|
||
// lazy load
|
||
setTimeout(async function init () {
|
||
weaponBuffs = (await Data.importModule('resources/meta/weapon/index.js')).calc || {}
|
||
artisBuffs = (await Data.importModule('resources/meta/artifact/index.js')).calc || {}
|
||
})
|
||
|
||
let DmgBuffs = {
|
||
// 圣遗物Buff
|
||
getArtisBuffs (artis = {}) {
|
||
if (!artis) {
|
||
return []
|
||
}
|
||
let buffs = artisBuffs
|
||
let retBuffs = []
|
||
lodash.forEach(artis, (v, k) => {
|
||
if (buffs[k + v]) {
|
||
retBuffs.push(buffs[k + v])
|
||
}
|
||
if (v >= 4 && buffs[k + '2']) {
|
||
retBuffs.push(buffs[k + '2'])
|
||
}
|
||
})
|
||
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 = {
|
||
vaporize: '蒸发',
|
||
melt: '融化',
|
||
swirl: '扩散'
|
||
}
|
||
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
|
||
}
|
||
}
|
||
export default DmgBuffs
|