mirror of
https://github.com/yoimiya-kokomi/miao-plugin.git
synced 2024-11-25 09:27:34 +00:00
204 lines
4.1 KiB
JavaScript
204 lines
4.1 KiB
JavaScript
import lodash from 'lodash'
|
|
import Character from '../models/Character.js'
|
|
|
|
const artifactMap = {
|
|
生命值: {
|
|
title: '小生命'
|
|
},
|
|
生命值_百分比: {
|
|
title: '大生命',
|
|
pct: true
|
|
},
|
|
暴击率: {
|
|
title: '暴击率',
|
|
pct: true
|
|
},
|
|
暴击伤害: {
|
|
title: '暴击伤害',
|
|
pct: true
|
|
},
|
|
防御力: {
|
|
title: '小防御'
|
|
},
|
|
防御力_百分比: {
|
|
title: '大防御',
|
|
pct: true
|
|
},
|
|
攻击力: {
|
|
title: '小攻击'
|
|
},
|
|
攻击力_百分比: {
|
|
title: '大攻击',
|
|
pct: true
|
|
},
|
|
元素精通: {
|
|
title: '元素精通'
|
|
},
|
|
元素充能效率: {
|
|
title: '充能效率',
|
|
pct: true
|
|
},
|
|
治疗加成: {
|
|
title: '治疗加成',
|
|
pct: true
|
|
}
|
|
}
|
|
|
|
let posIdx = {
|
|
生之花: {
|
|
idx: 1
|
|
},
|
|
死之羽: {
|
|
idx: 2
|
|
},
|
|
时之沙: {
|
|
idx: 3
|
|
},
|
|
空之杯: {
|
|
idx: 4
|
|
},
|
|
理之冠: {
|
|
idx: 5
|
|
}
|
|
}
|
|
|
|
let Data = {
|
|
getData (uid, data) {
|
|
let ret = {
|
|
uid,
|
|
chars: {}
|
|
}
|
|
|
|
lodash.forEach({
|
|
name: '角色名称',
|
|
avatar: '头像ID',
|
|
lv: '冒险等阶'
|
|
}, (title, key) => {
|
|
ret[key] = data[title] || ''
|
|
})
|
|
|
|
lodash.forEach(data.items, (ds) => {
|
|
let char = Data.getAvatar(ds)
|
|
ret.chars[char.id] = char
|
|
})
|
|
|
|
return ret
|
|
},
|
|
getAvatar (data) {
|
|
let char = Character.get(data['英雄Id'])
|
|
return {
|
|
id: data['英雄Id'],
|
|
name: char ? char.name : '',
|
|
lv: data['等级'],
|
|
attr: Data.getAttr(data),
|
|
// weapon: Data.getWeapon(data),
|
|
artis: Data.getArtifact(data)
|
|
// cons: data["命之座数量"] * 1 || 0,
|
|
// talent: Data.getTalent(data)
|
|
}
|
|
},
|
|
getAttr (data) {
|
|
let ret = {}
|
|
let attrKey = {
|
|
atk: '攻击力_总',
|
|
atkBase: '属性攻击力',
|
|
def: '防御力_总',
|
|
defBase: '属性防御力',
|
|
hp: '生命值上限_总',
|
|
hpBase: '属性生命值上限',
|
|
mastery: '属性元素精通',
|
|
cRate: {
|
|
title: '属性暴击率',
|
|
pct: true
|
|
},
|
|
cDmg: {
|
|
title: '属性暴击伤害',
|
|
pct: true
|
|
},
|
|
hInc: {
|
|
title: '属性治疗加成',
|
|
pct: true
|
|
},
|
|
recharge: {
|
|
title: '属性元素充能效率',
|
|
pct: true
|
|
}
|
|
}
|
|
lodash.forEach(attrKey, (cfg, key) => {
|
|
if (typeof (cfg) === 'string') {
|
|
cfg = { title: cfg }
|
|
}
|
|
let val = data[cfg.title] || ''
|
|
if (cfg.pct) {
|
|
val = (val * 100).toFixed(2)
|
|
}
|
|
ret[key] = val
|
|
})
|
|
let maxDmg = 0
|
|
lodash.forEach('火水草雷风冰岩'.split(''), (key) => {
|
|
maxDmg = Math.max(data[`属性${key}元素伤害加成`] * 1, maxDmg)
|
|
})
|
|
ret.dmgBonus = (maxDmg * 100).toFixed(2)
|
|
ret.phyBonus = (data['属性物理伤害加成'] * 100).toFixed(2)
|
|
|
|
return ret
|
|
},
|
|
getWeapon (data) {
|
|
return {
|
|
name: data['武器名称'],
|
|
lv: data['武器等级'],
|
|
refine: data['武器精炼']
|
|
}
|
|
},
|
|
getArtifact (data) {
|
|
let ret = {}
|
|
let get = function (idx, key) {
|
|
let v = data[`圣遗物${idx}${key}`]
|
|
let ret = /^([^\d]*)([\d\.\-]*)$/.exec(v)
|
|
if (ret && ret[1]) {
|
|
let title = ret[1]; let val = ret[2]
|
|
if (artifactMap[title]) {
|
|
if (artifactMap[title].pct) {
|
|
val = (val * 100).toFixed(2)
|
|
}
|
|
title = artifactMap[title].title
|
|
}
|
|
return [title, val]
|
|
}
|
|
return []
|
|
}
|
|
|
|
for (let idx = 1; idx <= 5; idx++) {
|
|
ret[`arti${idx}`] = {
|
|
name: data[`圣遗物${idx}名称`],
|
|
type: data[`圣遗物${idx}类型`],
|
|
main: get(idx, '主词条'),
|
|
attrs: [
|
|
get(idx, '副词条1'),
|
|
get(idx, '副词条2'),
|
|
get(idx, '副词条3'),
|
|
get(idx, '副词条4')
|
|
]
|
|
}
|
|
}
|
|
return ret
|
|
},
|
|
getTalent (data) {
|
|
let ret = {}
|
|
lodash.forEach({
|
|
a: 1,
|
|
e: 2,
|
|
q: 3
|
|
}, (idx, key) => {
|
|
let val = data[`天赋主动名称${idx}`]
|
|
let regRet = /等级(\d*)$/.exec(val)
|
|
if (regRet && regRet[1]) {
|
|
ret[key] = regRet[1] * 1 || 1
|
|
} else {
|
|
ret[key] = 1
|
|
}
|
|
})
|
|
return ret
|
|
}
|
|
}
|