变更部分星铁面板素材图
@ -131,13 +131,15 @@ let ProfileDetail = {
|
||||
let a = profile.attr
|
||||
let base = profile.base
|
||||
let attr = {}
|
||||
lodash.forEach(['hp', 'def', 'atk', 'mastery'], (key) => {
|
||||
let game = char.game
|
||||
|
||||
lodash.forEach((game === 'gs' ? 'hp,def,atk,mastery' : 'hp,def,atk,speed').split(','), (key) => {
|
||||
let fn = (n) => Format.comma(n, key === 'hp' ? 0 : 1)
|
||||
attr[key] = fn(a[key])
|
||||
attr[`${key}Base`] = fn(base[key])
|
||||
attr[`${key}Plus`] = fn(a[key] - base[key])
|
||||
})
|
||||
lodash.forEach(['cpct', 'cdmg', 'recharge', 'dmg'], (key) => {
|
||||
lodash.forEach((game === 'gs' ? 'cpct,cdmg,recharge,dmg' : 'cpct,cdmg,recharge,dmg,effPct,stance').split(','), (key) => {
|
||||
let fn = Format.pct
|
||||
let key2 = key
|
||||
if (key === 'dmg' && a.phy > a.dmg) {
|
||||
@ -148,7 +150,7 @@ let ProfileDetail = {
|
||||
attr[`${key}Plus`] = fn(a[key2] - base[key2])
|
||||
})
|
||||
|
||||
let weapon = Weapon.get(profile.weapon.name, char.game)
|
||||
let weapon = Weapon.get(profile.weapon.name, game)
|
||||
let w = profile.weapon
|
||||
let wCfg = {}
|
||||
if (mode === 'weapon') {
|
||||
@ -167,10 +169,11 @@ let ProfileDetail = {
|
||||
}
|
||||
|
||||
let artisDetail = profile.getArtisMark()
|
||||
let artisKeyTitle = ProfileArtis.getArtisKeyTitle()
|
||||
let artisKeyTitle = ProfileArtis.getArtisKeyTitle(game)
|
||||
let renderData = {
|
||||
save_id: uid,
|
||||
uid,
|
||||
game,
|
||||
data: profile.getData('name,abbr,cons,level,weapon,talent,dataSource,updateTime,imgs,costumeSplash'),
|
||||
attr,
|
||||
elem: char.elem,
|
||||
|
@ -12,20 +12,32 @@ const elemAlias = {
|
||||
}
|
||||
|
||||
const elemAliasSR = {
|
||||
|
||||
fire: '火',
|
||||
ice: '冰',
|
||||
wind: '风',
|
||||
elec: '雷',
|
||||
phy: '物理',
|
||||
quantum: '量子',
|
||||
imaginary: '虚数'
|
||||
}
|
||||
|
||||
// 元素属性映射, 名称=>elem
|
||||
let elemMap = {}
|
||||
let elemMapSR = {}
|
||||
|
||||
// 标准元素名
|
||||
let elemTitleMap = {}
|
||||
let elemTitleMapSR = elemAliasSR
|
||||
|
||||
lodash.forEach(elemAlias, (txt, key) => {
|
||||
elemMap[key] = key
|
||||
elemTitleMap[key] = txt[0]
|
||||
Data.eachStr(txt, (t) => (elemMap[t] = key))
|
||||
})
|
||||
lodash.forEach(elemAliasSR, (txt, key) => {
|
||||
elemMapSR[key] = key
|
||||
elemMapSR[txt] = key
|
||||
})
|
||||
|
||||
const Elem = {
|
||||
// 根据名称获取元素key
|
||||
@ -56,8 +68,8 @@ const Elem = {
|
||||
return ''
|
||||
},
|
||||
|
||||
eachElem (fn) {
|
||||
lodash.forEach(elemTitleMap, (title, key) => {
|
||||
eachElem (fn, game = 'gs') {
|
||||
lodash.forEach(game === 'gs' ? elemTitleMap : elemTitleMapSR, (title, key) => {
|
||||
fn(key, title)
|
||||
})
|
||||
},
|
||||
|
@ -37,7 +37,7 @@ class Artifact extends Base {
|
||||
}
|
||||
|
||||
get img () {
|
||||
return this.isGs ? `meta/artifact/imgs/${this.setName}/${this.idx}.webp` : `meta-sr/artifact/imgs/${this.setName}/arti-${this.idx}.webp`
|
||||
return this.isGs ? `meta/artifact/imgs/${this.setName}/${this.idx}.webp` : `meta-sr/artifact/${this.setName}/arti-${this.idx}.webp`
|
||||
}
|
||||
|
||||
static get (name, game = 'gs') {
|
||||
@ -110,15 +110,17 @@ class Artifact extends Base {
|
||||
return this.meta.ids[id] || ''
|
||||
}
|
||||
|
||||
getAttrData (mainId, attrData, level = 1, star = 5) {
|
||||
getAttrData (mainId, attrData, level = 1, star = 5, idx = 1) {
|
||||
|
||||
let mainKey = metaDataSR.mainIdx[idx][mainId]
|
||||
let starCfg = metaDataSR.starData[star]
|
||||
let mainCfg = starCfg.main[mainId]
|
||||
let mainCfg = starCfg.main[mainKey]
|
||||
if (!mainId || !mainCfg) {
|
||||
return false
|
||||
}
|
||||
let main = {
|
||||
id: mainId,
|
||||
key: mainCfg.key,
|
||||
key: mainKey,
|
||||
value: mainCfg.base + mainCfg.step * level
|
||||
}
|
||||
let attrs = []
|
||||
|
@ -46,8 +46,8 @@ export default class AvatarArtis extends Base {
|
||||
})
|
||||
}
|
||||
|
||||
static getArtisKeyTitle () {
|
||||
return ArtisMark.getKeyTitleMap()
|
||||
static getArtisKeyTitle (game = 'gs') {
|
||||
return ArtisMark.getKeyTitleMap(game)
|
||||
}
|
||||
|
||||
setArtisData (ds = {}, isProfile = false) {
|
||||
@ -77,7 +77,7 @@ export default class AvatarArtis extends Base {
|
||||
arti.star = artiObj.getStarById(ds.id) || arti.star || 5
|
||||
|
||||
if (ds.mainId && ds.attrs) {
|
||||
let attr = artiObj.getAttrData(ds.mainId, ds.attrs, arti.level, arti.star)
|
||||
let attr = artiObj.getAttrData(ds.mainId, ds.attrs, arti.level, arti.star, idx)
|
||||
if (attr) {
|
||||
arti.mainId = ds.mainId
|
||||
arti.main = attr.main || arti.main || {}
|
||||
@ -129,7 +129,6 @@ export default class AvatarArtis extends Base {
|
||||
|
||||
forEach (fn) {
|
||||
lodash.forEach(this.artis, (ds, idx) => {
|
||||
console.log(ds, this.game, ds.mainId, ds.main)
|
||||
if (ds.name) {
|
||||
fn(ds, idx)
|
||||
}
|
||||
|
@ -300,12 +300,13 @@ class Character extends Base {
|
||||
return {}
|
||||
}
|
||||
const path = this.isSr ? 'resources/meta-sr/character' : 'resources/meta/character'
|
||||
const file = this.isSr ? 'data' : 'detail'
|
||||
|
||||
try {
|
||||
if (this.isTraveler) {
|
||||
this._detail = Data.readJSON(`${path}/旅行者/${this.elem}/detail.json`, 'miao')
|
||||
this._detail = Data.readJSON(`${path}/旅行者/${this.elem}/${file}.json`, 'miao')
|
||||
} else {
|
||||
this._detail = Data.readJSON(`${path}/${this.name}/detail.json`, 'miao')
|
||||
this._detail = Data.readJSON(`${path}/${this.name}/${file}.json`, 'miao')
|
||||
}
|
||||
} catch (e) {
|
||||
console.log(e)
|
||||
@ -327,6 +328,31 @@ class Character extends Base {
|
||||
}
|
||||
return this._artisRule
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取等级属性
|
||||
* @param level
|
||||
* @param promote
|
||||
* @returns {{}|boolean}
|
||||
*/
|
||||
getLvAttr (level, promote) {
|
||||
let metaAttr = this.detail?.attr
|
||||
if (!metaAttr) {
|
||||
return false
|
||||
}
|
||||
if (this.isSr) {
|
||||
let lvAttr = metaAttr[promote]
|
||||
let ret = {}
|
||||
lodash.forEach(lvAttr.attrs, (v, k) => {
|
||||
ret[k] = v * 1
|
||||
})
|
||||
lodash.forEach(lvAttr.grow, (v, k) => {
|
||||
ret[k] = ret[k] * 1 + v * (level - 1)
|
||||
})
|
||||
return ret
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
Character.CharId = CharId
|
||||
|
@ -71,11 +71,11 @@ export default class ProfileArtis extends AvatarArtis {
|
||||
let totalVaild = 0
|
||||
this.forEach((arti, idx) => {
|
||||
let mark = ArtisMark.getMark(charCfg, idx, arti.main, arti.attrs, this.elem)
|
||||
let crit = ArtisMark.getCritMark(charCfg, idx, arti.main, arti.attrs, this.elem)
|
||||
let vaild = ArtisMark.getValidMark(charCfg, idx, arti.main, arti.attrs, this.elem)
|
||||
// let crit = ArtisMark.getCritMark(charCfg, idx, arti.main, arti.attrs, this.elem)
|
||||
// let vaild = ArtisMark.getValidMark(charCfg, idx, arti.main, arti.attrs, this.elem)
|
||||
totalMark += mark
|
||||
totalCrit += crit
|
||||
totalVaild += vaild
|
||||
// totalCrit += crit
|
||||
// totalVaild += vaild
|
||||
setCount[arti.set] = (setCount[arti.set] || 0) + 1
|
||||
if (!withDetail) {
|
||||
artis[idx] = {
|
||||
@ -84,8 +84,9 @@ export default class ProfileArtis extends AvatarArtis {
|
||||
markClass: ArtisMark.getMarkClass(mark)
|
||||
}
|
||||
} else {
|
||||
let artifact = Artifact.get(arti.name)
|
||||
console.log(arti.main, arti.mainId, arti)
|
||||
let artifact = Artifact.get(arti.name, this.game)
|
||||
// console.log('artifact', artifact, arti)
|
||||
// console.log(`arti idx ${idx} ${artifact.name}\n\n\n`)
|
||||
artis[idx] = {
|
||||
name: artifact.name,
|
||||
set: artifact.setName,
|
||||
@ -115,10 +116,10 @@ export default class ProfileArtis extends AvatarArtis {
|
||||
let ret = {
|
||||
mark: Format.comma(totalMark, 1),
|
||||
_mark: totalMark,
|
||||
crit: Format.comma(totalCrit, 1),
|
||||
/* crit: Format.comma(totalCrit, 1),
|
||||
_crit: totalCrit,
|
||||
valid: Format.comma(totalVaild, 1),
|
||||
_valid: totalVaild,
|
||||
_valid: totalVaild, */
|
||||
markClass: ArtisMark.getMarkClass(totalMark / 5),
|
||||
artis,
|
||||
sets,
|
||||
|
@ -88,7 +88,6 @@ export default class ProfileData extends AvatarData {
|
||||
// 获取当前profileData的圣遗物评分,withDetail=false仅返回简略信息
|
||||
getArtisMark (withDetail = true) {
|
||||
if (this.hasData) {
|
||||
console.log(this.game)
|
||||
return this.artis.getMarkDetail(withDetail)
|
||||
}
|
||||
return {}
|
||||
|
@ -34,7 +34,7 @@ class Weapon extends Base {
|
||||
}
|
||||
|
||||
get img () {
|
||||
return `meta/${this.isGs ? 'meta' : 'meta-sr'}/${this.type}/${this.name}/icon.webp`
|
||||
return `${this.isGs ? 'meta' : 'meta-sr'}/weapon/${this.type}/${this.name}/icon.webp`
|
||||
}
|
||||
|
||||
get imgs () {
|
||||
@ -46,9 +46,9 @@ class Weapon extends Base {
|
||||
}
|
||||
} else {
|
||||
return {
|
||||
icon: `meta/weapon-sr/${this.type}/${this.name}/icon.webp`,
|
||||
icon2: `meta/weapon-sr/${this.type}/${this.name}/icon-s.webp`,
|
||||
gacha: `meta/weapon-sr/${this.type}/${this.name}/splash.webp`
|
||||
icon: `meta-sr/weapon/${this.type}/${this.name}/icon.webp`,
|
||||
icon2: `meta-sr/weapon/${this.type}/${this.name}/icon-s.webp`,
|
||||
gacha: `meta-sr/weapon/${this.type}/${this.name}/splash.webp`
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -108,9 +108,10 @@ class Weapon extends Base {
|
||||
if (this._detail) {
|
||||
return this._detail
|
||||
}
|
||||
const path = this.isGs ? 'resources/meta/weapon' : 'resources/meta/weapon-sr'
|
||||
const path = this.isGs ? 'resources/meta/weapon' : 'resources/meta-sr/weapon'
|
||||
try {
|
||||
this._detail = Data.readJSON(`${path}/${this.type}/${this.name}/data.json`, 'miao')
|
||||
console.log(`${path}/${this.type}/${this.name}/data.json`)
|
||||
} catch (e) {
|
||||
console.log(e)
|
||||
}
|
||||
@ -118,6 +119,22 @@ class Weapon extends Base {
|
||||
}
|
||||
|
||||
calcAttr (level, promote = -1) {
|
||||
let metaAttr = this.detail?.attr
|
||||
if (!metaAttr) {
|
||||
return false
|
||||
}
|
||||
if (this.isSr) {
|
||||
let lvAttr = metaAttr[promote]
|
||||
let ret = {}
|
||||
lodash.forEach(lvAttr.attrs, (v, k) => {
|
||||
ret[k] = v * 1
|
||||
})
|
||||
lodash.forEach(this.detail?.growAttr, (v, k) => {
|
||||
ret[k] = ret[k] * 1 + v * (level - 1)
|
||||
})
|
||||
return ret
|
||||
}
|
||||
|
||||
let lvLeft = 1
|
||||
let lvRight = 20
|
||||
let lvStep = [1, 20, 40, 50, 60, 70, 80, 90]
|
||||
|
@ -8,6 +8,8 @@ import mggApi from './MggApi.js'
|
||||
import hutaoApi from './HutaoApi.js'
|
||||
import luluApi from './LuluApi.js'
|
||||
|
||||
import lodash from 'lodash'
|
||||
|
||||
let { diyCfg } = await Data.importCfg('profile')
|
||||
|
||||
const Profile = {
|
||||
@ -95,9 +97,7 @@ const Profile = {
|
||||
},
|
||||
|
||||
isProfile (avatar) {
|
||||
console.log('is Sr', avatar.isSr, avatar._source)
|
||||
if (avatar.isSr) {
|
||||
|
||||
return true
|
||||
}
|
||||
// 检查数据源
|
||||
@ -106,7 +106,7 @@ const Profile = {
|
||||
}
|
||||
|
||||
// 检查武器及天赋
|
||||
if (!avatar.weapon || !avatar.talent) {
|
||||
if (!avatar.weapon || lodash.isUndefined(avatar.weapon.promote) || !avatar.talent) {
|
||||
return false
|
||||
}
|
||||
// 检查圣遗物词条是否完备
|
||||
|
@ -7,19 +7,19 @@ import {
|
||||
|
||||
let ArtisMark = {
|
||||
// 根据Key获取标题
|
||||
getKeyByTitle (title, dmg = false, game = 'gs') {
|
||||
getKeyByTitle (title, game = 'gs') {
|
||||
if (/元素伤害加成/.test(title) || Format.isElem(title)) {
|
||||
let elem = Format.matchElem(title)
|
||||
return dmg ? 'dmg' : elem
|
||||
return elem
|
||||
} else if (title === '物理伤害加成') {
|
||||
return 'phy'
|
||||
}
|
||||
return (game === 'gs' ? attrNameMap : attrNameMapSR)[title]
|
||||
return (game === 'gs' ? attrNameMap : attrMap)[title]
|
||||
},
|
||||
|
||||
getKeyTitleMap (game = 'gs') {
|
||||
let ret = {}
|
||||
lodash.forEach(attrMap, (ds, key) => {
|
||||
lodash.forEach(game === 'gs' ? attrMap : attrMapSR, (ds, key) => {
|
||||
ret[key] = ds.title
|
||||
})
|
||||
Format.eachElem((key, name) => {
|
||||
@ -28,13 +28,13 @@ let ArtisMark = {
|
||||
return ret
|
||||
},
|
||||
|
||||
formatAttr (ds) {
|
||||
formatAttr (ds, game = 'gs') {
|
||||
if (!ds) {
|
||||
return {}
|
||||
}
|
||||
if (lodash.isArray(ds) && ds[0] && ds[1]) {
|
||||
return {
|
||||
key: ArtisMark.getKeyByTitle(ds[0]),
|
||||
key: ArtisMark.getKeyByTitle(ds[0], game),
|
||||
value: ds[1]
|
||||
}
|
||||
}
|
||||
@ -42,7 +42,7 @@ let ArtisMark = {
|
||||
return {}
|
||||
}
|
||||
return {
|
||||
key: ds.key || ArtisMark.getKeyByTitle(ds.title || ds.name || ds.key || ds.id || ''),
|
||||
key: ds.key || ArtisMark.getKeyByTitle(ds.title || ds.name || ds.key || ds.id || '', game),
|
||||
value: ds.value || ''
|
||||
}
|
||||
},
|
||||
@ -52,58 +52,32 @@ let ArtisMark = {
|
||||
* @param ds
|
||||
* @param charAttrCfg
|
||||
* @param isMain
|
||||
* @param game
|
||||
* @returns {{title: *, value: string}|*[]}
|
||||
*/
|
||||
formatArti (ds, charAttrCfg = false, isMain = false, game = 'gs') {
|
||||
// 若为attr数组
|
||||
if (ds[0] && (ds[0].title || ds[0].key)) {
|
||||
let ret = []
|
||||
let totalUpNum = 0
|
||||
let ltArr = []
|
||||
let isIdAttr = false
|
||||
|
||||
lodash.forEach(ds, (d) => {
|
||||
isIdAttr = !d.isCalcNum
|
||||
let arti = ArtisMark.formatArti(d, charAttrCfg, isMain, game)
|
||||
ret.push(arti)
|
||||
if (isIdAttr) {
|
||||
return true
|
||||
}
|
||||
totalUpNum += arti.upNum
|
||||
if (arti.hasLt) {
|
||||
ltArr.push(arti)
|
||||
}
|
||||
delete arti.hasLt
|
||||
delete arti.hasGt
|
||||
})
|
||||
if (!isIdAttr) {
|
||||
ltArr = lodash.sortBy(ltArr, 'upNum').reverse()
|
||||
for (let arti of ltArr) {
|
||||
if (totalUpNum > 9) {
|
||||
arti.upNum = arti.upNum - 1
|
||||
totalUpNum--
|
||||
} else {
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
return ret
|
||||
}
|
||||
|
||||
let key = ds.key
|
||||
let title = ds.title || ds[0]
|
||||
if (!key) {
|
||||
key = ArtisMark.getKeyByTitle(title)
|
||||
key = ArtisMark.getKeyByTitle(title, game)
|
||||
}
|
||||
let isDmg = Format.isElem(key)
|
||||
let val = ds.value || ds[1]
|
||||
let value = val
|
||||
let num = ds.value || ds[1]
|
||||
if (!key || key === 'undefined') {
|
||||
return {}
|
||||
}
|
||||
let arrCfg = (game === 'gs' ? attrMap : attrMapSR)[isDmg ? 'dmg' : key]
|
||||
console.log(key, arrCfg)
|
||||
val = Format[arrCfg?.format || 'comma'](val, 1)
|
||||
let ret = {
|
||||
key,
|
||||
@ -111,14 +85,6 @@ let ArtisMark = {
|
||||
upNum: ds.upNum || 0,
|
||||
eff: ds.eff || 0
|
||||
}
|
||||
/* if (!isMain && !ret.upNum) {
|
||||
let incRet = ArtisMark.getIncNum(key, value)
|
||||
ret.upNum = incRet.num
|
||||
ret.eff = incRet.eff
|
||||
ret.hasGt = incRet.hasGt
|
||||
ret.hasLt = incRet.hasLt
|
||||
ret.isCalcNum = true
|
||||
}*/
|
||||
|
||||
if (charAttrCfg) {
|
||||
let mark = charAttrCfg[key]?.mark * num || 0
|
||||
@ -133,27 +99,6 @@ let ArtisMark = {
|
||||
return ret
|
||||
},
|
||||
|
||||
// 获取升级次数
|
||||
getIncNum (key, value) {
|
||||
let cfg = attrMap[key]
|
||||
if (!value || !cfg || !cfg.value || !cfg.valueMin) {
|
||||
return { num: 0 }
|
||||
}
|
||||
let maxNum = Math.min(5, Math.floor((value / cfg.valueMin).toFixed(1) * 1))
|
||||
let minNum = Math.max(1, Math.ceil((value / cfg.value).toFixed(1) * 1))
|
||||
// 相等时直接返回
|
||||
if (maxNum === minNum) {
|
||||
return { num: minNum, eff: value / cfg.value }
|
||||
}
|
||||
let avg = Math.round(value / (cfg.value + cfg.valueMin) * 2)
|
||||
return {
|
||||
num: avg,
|
||||
eff: value / cfg.value,
|
||||
hasGt: maxNum > avg,
|
||||
hasLt: minNum < avg
|
||||
}
|
||||
},
|
||||
|
||||
// 获取评分档位
|
||||
getMarkClass (mark) {
|
||||
let pct = mark
|
||||
@ -292,7 +237,8 @@ let ArtisMark = {
|
||||
for (let idx = 1; idx <= 5; idx++) {
|
||||
let ds = artis[idx]
|
||||
if (ds) {
|
||||
if (!ds.name || !ds.main || !ds.attrs || !ds?.main?.key) {
|
||||
// 不再支持非id格式的面板
|
||||
if (!ds.name || !ds.main || !ds.attrs || !ds?.main?.key || !ds.mainId) {
|
||||
return false
|
||||
}
|
||||
}
|
||||
|
@ -13,7 +13,7 @@ class AttrCalc {
|
||||
constructor (profile) {
|
||||
this.profile = profile
|
||||
this.char = profile.char
|
||||
this.game = profile.game
|
||||
this.game = this.char.game
|
||||
}
|
||||
|
||||
get isGs () {
|
||||
@ -57,18 +57,18 @@ class AttrCalc {
|
||||
* @returns {{}}
|
||||
*/
|
||||
calc () {
|
||||
console.log('calc,hahahaha')
|
||||
this.attr = ProfileAttr.create({}, this.game)
|
||||
if (this.isGs) {
|
||||
this.addAttr('recharge', 100, true)
|
||||
this.addAttr('cpct', 5, true)
|
||||
this.addAttr('cdmg', 50, true)
|
||||
} else {
|
||||
|
||||
}
|
||||
this.setCharAttr()
|
||||
this.setWeaponAttr()
|
||||
this.setArtisAttr()
|
||||
return this.attr.getAttr()
|
||||
|
||||
}
|
||||
|
||||
getBase () {
|
||||
@ -77,6 +77,9 @@ class AttrCalc {
|
||||
|
||||
|
||||
addAttr (key, val, isBase = false) {
|
||||
if (key === 'cpct') {
|
||||
console.log('isCpct', val, isBase)
|
||||
}
|
||||
this.attr.addAttr(key, val, isBase)
|
||||
}
|
||||
|
||||
@ -85,11 +88,19 @@ class AttrCalc {
|
||||
* @param affix
|
||||
*/
|
||||
setCharAttr (affix = '') {
|
||||
if (this.isGs) {
|
||||
return
|
||||
}
|
||||
let { char, level, promote } = this.profile
|
||||
let metaAttr = char.detail?.attr || {}
|
||||
let self = this
|
||||
if (this.isSr) {
|
||||
// 星铁面板属性
|
||||
let attr = char.getLvAttr(level, promote)
|
||||
lodash.forEach(attr, (v, k) => {
|
||||
k = k + (['hp', 'atk', 'def'].includes(k) ? 'Base' : '')
|
||||
self.addAttr(k, v, true)
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
let { keys = {}, details = {} } = metaAttr
|
||||
let lvLeft = 0
|
||||
let lvRight = 0
|
||||
@ -139,12 +150,19 @@ class AttrCalc {
|
||||
* 计算武器属性
|
||||
*/
|
||||
setWeaponAttr () {
|
||||
if (this.isGs) {
|
||||
return
|
||||
}
|
||||
let wData = this.profile?.weapon || {}
|
||||
let weapon = Weapon.get(wData?.name || wData?.id, this.game)
|
||||
let wCalcRet = weapon.calcAttr(wData.level, wData.promote)
|
||||
let self = this
|
||||
|
||||
if (this.isSr) {
|
||||
// 星铁面板属性
|
||||
lodash.forEach(wCalcRet, (v, k) => {
|
||||
k = k + (['hp', 'atk', 'def'].includes(k) ? 'Base' : '')
|
||||
self.addAttr(k, v, true)
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
if (wCalcRet) {
|
||||
this.addAttr('atkBase', wCalcRet.atkBase)
|
||||
@ -172,15 +190,12 @@ class AttrCalc {
|
||||
* 计算圣遗物属性
|
||||
*/
|
||||
setArtisAttr () {
|
||||
if (this.isGs) {
|
||||
return
|
||||
}
|
||||
let artis = this.profile?.artis
|
||||
// 计算圣遗物词条
|
||||
artis.forEach((arti) => {
|
||||
this.calcArtisAttr(arti.main, this.char)
|
||||
lodash.forEach(arti.attrs, (ds) => {
|
||||
this.calcArtisAttr(ds)
|
||||
this.calcArtisAttr(ds, this.char)
|
||||
})
|
||||
})
|
||||
// 计算圣遗物静态加成
|
||||
@ -201,6 +216,8 @@ class AttrCalc {
|
||||
/**
|
||||
* 计算单条圣遗物词缀
|
||||
* @param ds
|
||||
* @param char
|
||||
* @param autoPct
|
||||
* @returns {boolean}
|
||||
*/
|
||||
calcArtisAttr (ds, char) {
|
||||
@ -214,6 +231,7 @@ class AttrCalc {
|
||||
if (!key) {
|
||||
return false
|
||||
}
|
||||
console.log(key, ds.value)
|
||||
if (['atk', 'hp', 'def'].includes(key)) {
|
||||
key = key + 'Pct'
|
||||
}
|
||||
|
@ -821,4 +821,15 @@ body {
|
||||
line-height: 20px;
|
||||
color: #bbb;
|
||||
}
|
||||
.game-sr .char-talents {
|
||||
transform: scale(0.8);
|
||||
transform-origin: top left;
|
||||
margin: -8px 0 -14px;
|
||||
}
|
||||
.game-sr .char-talents .talent-item {
|
||||
margin: 0 -3px;
|
||||
}
|
||||
.game-sr .artis-weapon {
|
||||
display: none;
|
||||
}
|
||||
/*# sourceMappingURL=profile-detail.css.map */
|
@ -7,265 +7,271 @@
|
||||
{{set weapon = data.weapon}}
|
||||
|
||||
{{set dataSource = data.dataSource}}
|
||||
{{set talentMap = {a: '普攻', e: '战技', q: '爆发'} }}
|
||||
{{set talentMap = game === 'sr' ? {a: '普攻', e: '战技', t:'天赋', q: '爆发'} : {a: '普攻', e: '战技', q: '爆发'} }}
|
||||
{{set {imgs, costumeSplash} = data }}
|
||||
{{set imgs = imgs || {} }}
|
||||
|
||||
{{block 'main'}}
|
||||
<div class="basic">
|
||||
<div class="main-pic"
|
||||
style="background-image:url({{_res_path}}{{costumeSplash||imgs?.splash}})"></div>
|
||||
<div class="detail">
|
||||
<div class="char-name">{{data.name}}</div>
|
||||
<div class="char-lv">UID {{uid}} - Lv.{{data.level}}
|
||||
<span class="cons cons-{{data.cons}}">{{data.cons}}命</span></div>
|
||||
<div>
|
||||
{{if mode !== 'weapon'}}
|
||||
<div class="char-talents">
|
||||
{{each talentMap tName key}}
|
||||
{{set talent = data.talent[key] || {} }}
|
||||
<div class="talent-item">
|
||||
<div class="talent-icon
|
||||
<div class="game-{{game}}">
|
||||
<div class="basic">
|
||||
<div class="main-pic"
|
||||
style="background-image:url({{_res_path}}{{costumeSplash||imgs?.splash}})"></div>
|
||||
<div class="detail">
|
||||
<div class="char-name">{{data.name}}</div>
|
||||
<div class="char-lv">UID {{uid}} - Lv.{{data.level}}
|
||||
<span class="cons cons-{{data.cons}}">{{data.cons}}命</span></div>
|
||||
<div>
|
||||
{{if mode !== 'weapon'}}
|
||||
<div class="char-talents">
|
||||
{{each talentMap tName key}}
|
||||
{{set talent = data.talent[key] || {} }}
|
||||
<div class="talent-item">
|
||||
<div class="talent-icon
|
||||
{{talent.level > talent.original ? `talent-plus`:``}}
|
||||
{{talent.original >= 10 ? `talent-crown`:``}}">
|
||||
<div class="talent-icon-img"
|
||||
style="background-image:url({{_res_path}}{{imgs[key]}})"></div>
|
||||
<span>{{talent.level}}</span>
|
||||
<div class="talent-icon-img"
|
||||
style="background-image:url({{_res_path}}{{imgs[key]}})"></div>
|
||||
<span>{{talent.level}}</span>
|
||||
</div>
|
||||
</div>
|
||||
{{/each}}
|
||||
</div>
|
||||
<ul class="char-attr">
|
||||
{{set attrMap = game === 'sr' ? {
|
||||
hp:'生命值',atk:'攻击力',def:'防御力',speed:'速度',cpct:'暴击率',cdmg:'暴击伤害',dmg:'伤害加成',stance:'击破特效',effPct:'效果命中'
|
||||
}:{
|
||||
hp:'生命值',atk:'攻击力',def:'防御力',mastery:'元素精通',cpct:'暴击率',cdmg:'暴击伤害',recharge:'元素充能',dmg:'伤害加成'
|
||||
} }}
|
||||
{{set cw = artisDetail?.charWeight || {} }}
|
||||
{{each attrMap title key}}
|
||||
<li>
|
||||
|
||||
<div class="icon"><i class="i-{{key}}"></i></div>
|
||||
|
||||
<div class="title">{{title}}</div>
|
||||
<div class="weight">
|
||||
{{if cw[key]}}
|
||||
<span class="{{cw[key]>=80?'gold':'normal'}}">{{cw[key]}}</span>
|
||||
{{/if}}
|
||||
</div>
|
||||
<div class="value">
|
||||
{{attr[key]}}
|
||||
</div>
|
||||
<div class="value2">
|
||||
<span class="base">{{attr[key+'Base']}}</span>
|
||||
<span class="plus">+{{attr[key+'Plus']}}</span>
|
||||
</div>
|
||||
|
||||
</li>
|
||||
{{/each}}
|
||||
</ul>
|
||||
{{else}}
|
||||
<div class="char-weapon">
|
||||
<div class="img" style="background-image:url({{_res_path}}{{weapon.img}})"></div>
|
||||
<div class="head">
|
||||
<strong>{{weapon.name}}</strong>
|
||||
<div class="star star-{{weapon.star}}"></div>
|
||||
<span>Lv.{{weapon.leve || weapon.level}} <span
|
||||
class="affix affix-{{weapon.affix}}">精{{weapon.affix}}</span></span>
|
||||
</div>
|
||||
</div>
|
||||
{{/each}}
|
||||
</div>
|
||||
<ul class="char-attr">
|
||||
{{set attrMap = {hp:'生命值',atk:'攻击力',def:'防御力',mastery:'元素精通',cpct:'暴击率',cdmg:'暴击伤害',recharge:'元素充能',dmg:'伤害加成'} }}
|
||||
{{set cw = artisDetail?.charWeight || {} }}
|
||||
{{each attrMap title key}}
|
||||
<li>
|
||||
|
||||
<div class="icon"><i class="i-{{key}}"></i></div>
|
||||
|
||||
<div class="title">{{title}}</div>
|
||||
<div class="weight">
|
||||
{{if cw[key]}}
|
||||
<span class="{{cw[key]>=80?'gold':'normal'}}">{{cw[key]}}</span>
|
||||
{{/if}}
|
||||
</div>
|
||||
<div class="value">
|
||||
{{attr[key]}}
|
||||
</div>
|
||||
<div class="value2">
|
||||
<span class="base">{{attr[key+'Base']}}</span>
|
||||
<span class="plus">+{{attr[key+'Plus']}}</span>
|
||||
</div>
|
||||
|
||||
</li>
|
||||
{{/each}}
|
||||
</ul>
|
||||
{{else}}
|
||||
<div class="char-weapon">
|
||||
<div class="img" style="background-image:url({{_res_path}}{{weapon.img}})"></div>
|
||||
<div class="head">
|
||||
<strong>{{weapon.name}}</strong>
|
||||
<div class="star star-{{weapon.star}}"></div>
|
||||
<span>Lv.{{weapon.leve || weapon.level}} <span
|
||||
class="affix affix-{{weapon.affix}}">精{{weapon.affix}}</span></span>
|
||||
</div>
|
||||
</div>
|
||||
{{/if}}
|
||||
</div>
|
||||
</div>
|
||||
<div class="char-cons">
|
||||
{{set cons = [1,2,3,4,5,6]}}
|
||||
{{each cons idx}}
|
||||
<div class="cons-item">
|
||||
<div class="talent-icon {{idx * 1 > data.cons * 1 ? 'off' : '' }}">
|
||||
<div class="talent-icon-img"
|
||||
style="background-image:url({{_res_path}}{{imgs[`cons${idx}`]}})"></div>
|
||||
</div>
|
||||
</div>
|
||||
{{/each}}
|
||||
</div>
|
||||
|
||||
<div class="data-info">
|
||||
{{if data.dataSource}}
|
||||
<span>数据源:{{ {change:"面板变换"}[data.dataSource]||data.dataSource }}</span>
|
||||
{{/if}}
|
||||
{{if data.updateTime}}
|
||||
<span class="time">{{data.updateTime}}</span>
|
||||
{{/if}}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{{if changeProfile}}
|
||||
<div class="cont">
|
||||
<div class="cont-footer dmg-desc">
|
||||
<strong>该面板为非实际数据。当前替换命令:</strong> {{changeProfile}}
|
||||
</div>
|
||||
</div>
|
||||
{{/if}}
|
||||
|
||||
<!-- 【 武器+圣遗物列表】 -->
|
||||
<div>
|
||||
{{if mode === "profile"}}
|
||||
{{set ad = artisDetail}}
|
||||
<div class="artis">
|
||||
<div>
|
||||
<div class="item weapon">
|
||||
<div class="img" style="background-image:url({{_res_path}}{{weapon.img}})"></div>
|
||||
<div class="head">
|
||||
<strong>{{weapon.name}}</strong>
|
||||
<div class="star star-{{weapon.star}}"></div>
|
||||
<span>Lv.{{weapon.leve || weapon.level}} <span
|
||||
class="affix affix-{{weapon.affix}}">精{{weapon.affix}}</span></span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="item arti-stat">
|
||||
<div class="arti-class-title">评分规则:{{ad.classTitle}}</div>
|
||||
<div class="arti-stat-ret">
|
||||
<div><strong class="mark-{{ad.markClass}}">{{ad.markClass}}</strong><span>圣遗物评级</span></div>
|
||||
<div><strong>{{ad.mark}}</strong><span>圣遗物总分</span></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{{each ad.artis ds idx}}
|
||||
<div class="item arti">
|
||||
{{if ds && ds.name && ds.main && ds.main.key && ds.main.key!="undefined"}}
|
||||
<div class="arti-icon">
|
||||
<div class="img" style="background-image:url({{_res_path}}{{ds.img}})"></div>
|
||||
<span>+{{ds.level}}</span>
|
||||
</div>
|
||||
<div class="head">
|
||||
<strong>{{ds.name}}</strong>
|
||||
<span class="mark mark-{{ds.markClass}}"><span>{{ds.mark}}分</span> - {{ds.markClass}}</span>
|
||||
</div>
|
||||
<ul class="detail attr">
|
||||
<li class="arti-main"><span class="title">{{artisKeyTitle[ds.main?.key]}}</span><span class="val">+{{ds.main.value}}</span>
|
||||
</li>
|
||||
{{each ds.attrs attr}}
|
||||
{{if attr && attr.key}}
|
||||
<li class="{{ad.charWeight[attr.key]*1 > 79.9 ?`great`:(ad.charWeight[attr.key]*1>0 ? `useful`:`nouse`)}}">
|
||||
<span class="title">{{if attr.eff}}<i class="eff">{{attr.eff || ''}}</i>{{/if}}{{if attr.upNum}}<i class="up-num up-{{attr.upNum}}"></i>{{/if}}{{artisKeyTitle[attr.key]}}</span>
|
||||
<span class="val">+{{attr.value}}</span>
|
||||
|
||||
</li>
|
||||
{{/if}}
|
||||
{{/each}}
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="char-cons">
|
||||
{{set cons = [1,2,3,4,5,6]}}
|
||||
{{each cons idx}}
|
||||
<div class="cons-item">
|
||||
<div class="talent-icon {{idx * 1 > data.cons * 1 ? 'off' : '' }}">
|
||||
<div class="talent-icon-img"
|
||||
style="background-image:url({{_res_path}}{{imgs[`cons${idx}`]}})"></div>
|
||||
</div>
|
||||
</div>
|
||||
{{/each}}
|
||||
</div>
|
||||
|
||||
<div class="data-info">
|
||||
{{if data.dataSource}}
|
||||
<span>数据源:{{ {change:"面板变换"}[data.dataSource]||data.dataSource }}</span>
|
||||
{{/if}}
|
||||
{{if data.updateTime}}
|
||||
<span class="time">{{data.updateTime}}</span>
|
||||
{{/if}}
|
||||
</div>
|
||||
{{/each}}
|
||||
</div>
|
||||
{{/if}}
|
||||
</div>
|
||||
|
||||
|
||||
<!-- 【 伤害表格 】 -->
|
||||
{{ set {dmgRet, dmgCfg, enemyLv, enemyName, dmgMsg, dmgData} = dmgCalc }}
|
||||
<div>
|
||||
{{if mode === "profile"}}
|
||||
{{if changeProfile}}
|
||||
<div class="cont">
|
||||
<div class="cont-footer dmg-desc">
|
||||
当前评分为<strong>喵喵版评分规则</strong>,分值仅供参考与娱乐。可使用<strong>#{{data.abbr}}圣遗物</strong>来查看评分详情
|
||||
<div class="cont-footer dmg-desc">
|
||||
<strong>该面板为非实际数据。当前替换命令:</strong> {{changeProfile}}
|
||||
</div>
|
||||
</div>
|
||||
{{/if}}
|
||||
|
||||
{{if dmgData?.length > 0}}
|
||||
<div class="dmg-cont dmg-list cont">
|
||||
<div class="cont-title">
|
||||
伤害计算<span>目标为{{enemyLv}}级{{enemyName||'小宝'}},如需调整等级可使用 #敌人等级{{enemyLv}} 来进行设置</span>
|
||||
</div>
|
||||
<div class="cont-table">
|
||||
<div class="tr thead">
|
||||
<div class="title dmg-idx">#</div>
|
||||
<div class="title dmg-title">伤害类型</div>
|
||||
<div>暴击伤害</div>
|
||||
<div>平均伤害(计算暴击率)</div>
|
||||
<!-- 【 武器+圣遗物列表】 -->
|
||||
<div>
|
||||
{{if mode === "profile"}}
|
||||
{{set ad = artisDetail}}
|
||||
<div class="artis">
|
||||
<div class="artis-weapon">
|
||||
<div class="item weapon">
|
||||
<div class="img" style="background-image:url({{_res_path}}{{weapon.img}})"></div>
|
||||
<div class="head">
|
||||
<strong>{{weapon.name}}</strong>
|
||||
<div class="star star-{{weapon.star}}"></div>
|
||||
<span>Lv.{{weapon.leve || weapon.level}} <span
|
||||
class="affix affix-{{weapon.affix}}">精{{weapon.affix}}</span></span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="item arti-stat">
|
||||
<div class="arti-class-title">评分规则:{{ad.classTitle}}</div>
|
||||
<div class="arti-stat-ret">
|
||||
<div><strong class="mark-{{ad.markClass}}">{{ad.markClass}}</strong><span>圣遗物评级</span></div>
|
||||
<div><strong>{{ad.mark}}</strong><span>圣遗物总分</span></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{{each dmgData dmg idx}}
|
||||
<div class="dmg tr">
|
||||
<div class="title dmg-idx">{{idx+1}}</div>
|
||||
<div class="title dmg-title">{{dmg.title}}</div>
|
||||
{{if dmg.dmg === "NaN"}}
|
||||
<div class="value value-full">{{dmg.avg}}{{dmg.unit}}</div>
|
||||
<div class="value value-none"></div>
|
||||
{{else}}
|
||||
<div class="value">{{dmg.dmg}}{{dmg.unit}}</div>
|
||||
<div class="value">{{dmg.avg}}{{dmg.unit}}</div>
|
||||
{{each ad.artis ds idx}}
|
||||
<div class="item arti">
|
||||
{{if ds && ds.name && ds.main && ds.main.key && ds.main.key!="undefined"}}
|
||||
<div class="arti-icon">
|
||||
<div class="img" style="background-image:url({{_res_path}}{{ds.img}})"></div>
|
||||
<span>+{{ds.level}}</span>
|
||||
</div>
|
||||
<div class="head">
|
||||
<strong>{{ds.name}}</strong>
|
||||
<span class="mark mark-{{ds.markClass}}"><span>{{ds.mark}}分</span> - {{ds.markClass}}</span>
|
||||
</div>
|
||||
<ul class="detail attr">
|
||||
<li class="arti-main"><span class="title">{{artisKeyTitle[ds.main?.key]}}</span><span class="val">+{{ds.main.value}}</span>
|
||||
</li>
|
||||
{{each ds.attrs attr}}
|
||||
{{if attr && attr.key}}
|
||||
<li class="{{ad.charWeight[attr.key]*1 > 79.9 ?`great`:(ad.charWeight[attr.key]*1>0 ? `useful`:`nouse`)}}">
|
||||
<span class="title">{{if attr.eff}}<i class="eff">{{attr.eff || ''}}</i>{{/if}}{{if attr.upNum}}<i
|
||||
class="up-num up-{{attr.upNum}}"></i>{{/if}}{{artisKeyTitle[attr.key] || attr.key}}</span>
|
||||
<span class="val">+{{attr.value}}</span>
|
||||
|
||||
</li>
|
||||
{{/if}}
|
||||
{{/each}}
|
||||
</ul>
|
||||
{{/if}}
|
||||
</div>
|
||||
{{/each}}
|
||||
</div>
|
||||
<div class="cont-footer dmg-desc">
|
||||
使用命令<strong>#{{data.abbr}}伤害</strong>可以查看伤害详情,使用命令<strong>#角色面板帮助</strong>可查看帮助说明
|
||||
</div>
|
||||
{{/if}}
|
||||
</div>
|
||||
{{/if}}
|
||||
</div>
|
||||
|
||||
<!-- 【 伤害变化详情 】 -->
|
||||
<div>
|
||||
{{if mode === "dmg"}}
|
||||
{{if dmgCfg && dmgCfg.attr && dmgCfg.attr.length>0 && dmgRet}}
|
||||
<div class="dmg-calc dmg-cont cont">
|
||||
<div class="cont-title">
|
||||
词条伤害计算<span>#{{data.abbr}}伤害{{dmgCfg.userIdx+1}}: 当前计算为[{{dmgCfg.title}}]</span>
|
||||
|
||||
<!-- 【 伤害表格 】 -->
|
||||
{{ set {dmgRet, dmgCfg, enemyLv, enemyName, dmgMsg, dmgData} = dmgCalc }}
|
||||
<div>
|
||||
{{if mode === "profile"}}
|
||||
<div class="cont">
|
||||
<div class="cont-footer dmg-desc">
|
||||
当前评分为<strong>喵喵版评分规则</strong>,分值仅供参考与娱乐。可使用<strong>#{{data.abbr}}圣遗物</strong>来查看评分详情
|
||||
</div>
|
||||
</div>
|
||||
<div class="cont-table">
|
||||
<div class="tr thead ">
|
||||
<div class="td">词条变化</div>
|
||||
{{each dmgCfg.attr attr}}
|
||||
<div class="td">
|
||||
<strong>{{attr.title}}</strong>
|
||||
<span>+{{attr.text}}</span>
|
||||
{{/if}}
|
||||
|
||||
{{if dmgData?.length > 0}}
|
||||
<div class="dmg-cont dmg-list cont">
|
||||
<div class="cont-title">
|
||||
伤害计算<span>目标为{{enemyLv}}级{{enemyName||'小宝'}},如需调整等级可使用 #敌人等级{{enemyLv}} 来进行设置</span>
|
||||
</div>
|
||||
<div class="cont-table">
|
||||
<div class="tr thead">
|
||||
<div class="title dmg-idx">#</div>
|
||||
<div class="title dmg-title">伤害类型</div>
|
||||
<div>暴击伤害</div>
|
||||
<div>平均伤害(计算暴击率)</div>
|
||||
</div>
|
||||
{{each dmgData dmg idx}}
|
||||
<div class="dmg tr">
|
||||
<div class="title dmg-idx">{{idx+1}}</div>
|
||||
<div class="title dmg-title">{{dmg.title}}</div>
|
||||
{{if dmg.dmg === "NaN"}}
|
||||
<div class="value value-full">{{dmg.avg}}{{dmg.unit}}</div>
|
||||
<div class="value value-none"></div>
|
||||
{{else}}
|
||||
<div class="value">{{dmg.dmg}}{{dmg.unit}}</div>
|
||||
<div class="value">{{dmg.avg}}{{dmg.unit}}</div>
|
||||
{{/if}}
|
||||
</div>
|
||||
{{/each}}
|
||||
</div>
|
||||
{{each dmgRet row rowIdx}}
|
||||
<div class="tr">
|
||||
<div class="title">
|
||||
<strong>{{dmgCfg.attr[rowIdx].title}}</strong>
|
||||
<span>-{{dmgCfg.attr[rowIdx].text}}</span>
|
||||
</div>
|
||||
{{each row cell colIdx}}
|
||||
{{if cell.type === "na"}}
|
||||
<div class="td na">
|
||||
<strong>-</strong>
|
||||
<span>{{dmgCfg.basicRet.avg}}{{dmgCfg.basicRet.dmg!="NaN"?`/${dmgCfg.basicRet.dmg}`:''}}</span>
|
||||
</div>
|
||||
{{else}}
|
||||
<div class="td {{cell.type}}">
|
||||
<strong>{{cell.val}}</strong>
|
||||
<div class="cont-footer dmg-desc">
|
||||
使用命令<strong>#{{data.abbr}}伤害</strong>可以查看伤害详情,使用命令<strong>#角色面板帮助</strong>可查看帮助说明
|
||||
</div>
|
||||
</div>
|
||||
{{/if}}
|
||||
</div>
|
||||
|
||||
<span>{{cell.avg}}{{cell.dmg!="NaN"?`/${cell.dmg}`:''}}</span>
|
||||
<!-- 【 伤害变化详情 】 -->
|
||||
<div>
|
||||
{{if mode === "dmg"}}
|
||||
{{if dmgCfg && dmgCfg.attr && dmgCfg.attr.length>0 && dmgRet}}
|
||||
<div class="dmg-calc dmg-cont cont">
|
||||
<div class="cont-title">
|
||||
词条伤害计算<span>#{{data.abbr}}伤害{{dmgCfg.userIdx+1}}: 当前计算为[{{dmgCfg.title}}]</span>
|
||||
</div>
|
||||
<div class="cont-table">
|
||||
<div class="tr thead ">
|
||||
<div class="td">词条变化</div>
|
||||
{{each dmgCfg.attr attr}}
|
||||
<div class="td">
|
||||
<strong>{{attr.title}}</strong>
|
||||
<span>+{{attr.text}}</span>
|
||||
</div>
|
||||
{{/each}}
|
||||
</div>
|
||||
{{each dmgRet row rowIdx}}
|
||||
<div class="tr">
|
||||
<div class="title">
|
||||
<strong>{{dmgCfg.attr[rowIdx].title}}</strong>
|
||||
<span>-{{dmgCfg.attr[rowIdx].text}}</span>
|
||||
</div>
|
||||
{{each row cell colIdx}}
|
||||
{{if cell.type === "na"}}
|
||||
<div class="td na">
|
||||
<strong>-</strong>
|
||||
<span>{{dmgCfg.basicRet.avg}}{{dmgCfg.basicRet.dmg!="NaN"?`/${dmgCfg.basicRet.dmg}`:''}}</span>
|
||||
</div>
|
||||
{{else}}
|
||||
<div class="td {{cell.type}}">
|
||||
<strong>{{cell.val}}</strong>
|
||||
|
||||
<span>{{cell.avg}}{{cell.dmg!="NaN"?`/${cell.dmg}`:''}}</span>
|
||||
</div>
|
||||
{{/if}}
|
||||
{{/each}}
|
||||
</div>
|
||||
{{/if}}
|
||||
{{/each}}
|
||||
</div>
|
||||
{{/each}}
|
||||
</div>
|
||||
<div class="cont-footer dmg-desc">
|
||||
<ul>
|
||||
<li>大数字的含义为圣遗物副词条置换后<strong>平均伤害</strong>的变化,下方的详情数字为<strong>平均伤害</strong>/<strong>暴击伤害</strong>。</li>
|
||||
<li>关于<strong>平均伤害</strong>:是将暴击率计算在内的伤害期望,能反映综合的输出能力,不等于实际伤害数字。</li>
|
||||
<li>可用于评估当前面板下圣遗物副词条的侧重方向。实际游戏情况更加复杂,结果供参考~</li>
|
||||
<li>如需更换计算的伤害类型,可使用命令 <strong>#{{data.abbr}}伤害+序号</strong>来切换,序号参见伤害计算板块</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
{{/if}}
|
||||
|
||||
<div class="dmg-cont dmg-msg cont">
|
||||
<div class="cont-title">Buff列表<span>部分Buff的触发条件以及层数可能影响实际伤害结果</span></div>
|
||||
<div class="cont-table">
|
||||
{{each dmgMsg msg}}
|
||||
<div class="tr">
|
||||
<div class="th">{{msg[0]}}</div>
|
||||
<div class="td">{{msg[1]}}</div>
|
||||
<div class="cont-footer dmg-desc">
|
||||
<ul>
|
||||
<li>大数字的含义为圣遗物副词条置换后<strong>平均伤害</strong>的变化,下方的详情数字为<strong>平均伤害</strong>/<strong>暴击伤害</strong>。</li>
|
||||
<li>关于<strong>平均伤害</strong>:是将暴击率计算在内的伤害期望,能反映综合的输出能力,不等于实际伤害数字。</li>
|
||||
<li>可用于评估当前面板下圣遗物副词条的侧重方向。实际游戏情况更加复杂,结果供参考~</li>
|
||||
<li>如需更换计算的伤害类型,可使用命令 <strong>#{{data.abbr}}伤害+序号</strong>来切换,序号参见伤害计算板块</li>
|
||||
</ul>
|
||||
</div>
|
||||
{{/each}}
|
||||
</div>
|
||||
</div>
|
||||
{{/if}}
|
||||
</div>
|
||||
{{/if}}
|
||||
|
||||
<div class="dmg-cont dmg-msg cont">
|
||||
<div class="cont-title">Buff列表<span>部分Buff的触发条件以及层数可能影响实际伤害结果</span></div>
|
||||
<div class="cont-table">
|
||||
{{each dmgMsg msg}}
|
||||
<div class="tr">
|
||||
<div class="th">{{msg[0]}}</div>
|
||||
<div class="td">{{msg[1]}}</div>
|
||||
</div>
|
||||
{{/each}}
|
||||
</div>
|
||||
</div>
|
||||
{{/if}}
|
||||
</div>
|
||||
</div>
|
||||
{{/block}}
|
@ -1030,3 +1030,20 @@ body {
|
||||
line-height: 20px;
|
||||
color: #bbb;
|
||||
}
|
||||
|
||||
.game-sr {
|
||||
.char-talents {
|
||||
transform: scale(.8);
|
||||
transform-origin: top left;
|
||||
margin: -8px 0 -14px;
|
||||
|
||||
|
||||
.talent-item {
|
||||
margin: 0 -3px;
|
||||
}
|
||||
}
|
||||
|
||||
.artis-weapon {
|
||||
display: none;
|
||||
}
|
||||
}
|
@ -1,21 +1,22 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh-cn">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width">
|
||||
<link rel="shortcut icon" href="#"/>
|
||||
<link rel="preload" href="{{_miao_path}}common/font/HYWH-65W.woff" as="font" type="font/woff">
|
||||
<link rel="preload" href="{{_miao_path}}common/font/NZBZ.woff" as="font" type="font/woff">
|
||||
<link rel="preload" href="{{_miao_path}}common/font/tttgbnumber.woff" as="font" type="font/woff">
|
||||
<link rel="stylesheet" type="text/css" href="{{_miao_path}}common/common.css"/>
|
||||
<title>miao-plugin</title>
|
||||
{{block 'css'}}
|
||||
{{/block}}
|
||||
</head>
|
||||
<body class="elem-{{element||elem||`hydro`}} {{displayMode || mode || `default`}}-mode {{bodyClass}}" {{sys.scale}}>
|
||||
<div class="container elem-bg" id="container">
|
||||
{{block 'main'}}{{/block}}
|
||||
<div class="copyright">{{@copyright || sys?.copyright}}</div>
|
||||
</div>
|
||||
</body>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width">
|
||||
<link rel="shortcut icon" href="#"/>
|
||||
<link rel="preload" href="{{_miao_path}}common/font/HYWH-65W.woff" as="font" type="font/woff">
|
||||
<link rel="preload" href="{{_miao_path}}common/font/NZBZ.woff" as="font" type="font/woff">
|
||||
<link rel="preload" href="{{_miao_path}}common/font/tttgbnumber.woff" as="font" type="font/woff">
|
||||
<link rel="stylesheet" type="text/css" href="{{_miao_path}}common/common.css"/>
|
||||
<title>miao-plugin</title>
|
||||
{{block 'css'}}
|
||||
{{/block}}
|
||||
</head>
|
||||
{{set elemCls = {火:'pyro',冰:'cryo',风:'anemo',雷:'electro',量子:'electro',虚数:'geo',物理:'hydro', }[element||elem] || element || elem || 'hydro' }}
|
||||
<body class="elem-{{elemCls}} {{displayMode || mode || `default`}}-mode {{bodyClass}}" {{sys.scale}}>
|
||||
<div class="container elem-bg" id="container">
|
||||
{{block 'main'}}{{/block}}
|
||||
<div class="copyright">{{@copyright || sys?.copyright}}</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
@ -1,130 +1,175 @@
|
||||
{
|
||||
"mainIdx": {
|
||||
"1": [
|
||||
"hp"
|
||||
],
|
||||
"2": [
|
||||
"atk"
|
||||
],
|
||||
"3": [
|
||||
"hpPct",
|
||||
"atkPct",
|
||||
"defPct",
|
||||
"cpct",
|
||||
"cdmg",
|
||||
"heal",
|
||||
"effPct"
|
||||
],
|
||||
"4": [
|
||||
"hpPct",
|
||||
"atkPct",
|
||||
"defPct",
|
||||
"speed"
|
||||
],
|
||||
"5": [
|
||||
"hpPct",
|
||||
"atkPct",
|
||||
"defPct",
|
||||
"phy",
|
||||
"fire",
|
||||
"ice",
|
||||
"elec",
|
||||
"wind",
|
||||
"quantum",
|
||||
"imaginary"
|
||||
],
|
||||
"6": [
|
||||
"stance",
|
||||
"recharge",
|
||||
"hpPct",
|
||||
"atkPct",
|
||||
"defPct"
|
||||
]
|
||||
"1": {
|
||||
"1": "hpPlus"
|
||||
},
|
||||
"2": {
|
||||
"1": "atkPlus"
|
||||
},
|
||||
"3": {
|
||||
"1": "hp",
|
||||
"2": "atk",
|
||||
"3": "def",
|
||||
"4": "cpct",
|
||||
"5": "cdmg",
|
||||
"6": "heal",
|
||||
"7": "effPct"
|
||||
},
|
||||
"4": {
|
||||
"1": "hp",
|
||||
"2": "atk",
|
||||
"3": "def",
|
||||
"4": "speed"
|
||||
},
|
||||
"5": {
|
||||
"1": "hp",
|
||||
"2": "atk",
|
||||
"3": "def",
|
||||
"4": "phy",
|
||||
"5": "fire",
|
||||
"6": "ice",
|
||||
"7": "elec",
|
||||
"8": "wind",
|
||||
"9": "quantum",
|
||||
"10": "imaginary"
|
||||
},
|
||||
"6": {
|
||||
"1": "stance",
|
||||
"2": "recharge",
|
||||
"3": "hp",
|
||||
"4": "atk",
|
||||
"5": "def"
|
||||
}
|
||||
},
|
||||
"starData": {
|
||||
"2": {
|
||||
"main": {
|
||||
"1": {
|
||||
"key": "stance",
|
||||
"base": 0.04147200076840818,
|
||||
"step": 0.014515000162646174
|
||||
"hpPlus": {
|
||||
"id": "1",
|
||||
"base": 45.158399999840185,
|
||||
"step": 15.805440000956878
|
||||
},
|
||||
"2": {
|
||||
"key": "recharge",
|
||||
"base": 0.01244200044311583,
|
||||
"step": 0.004355000331997871
|
||||
"atkPlus": {
|
||||
"id": "1",
|
||||
"base": 22.579200000036508,
|
||||
"step": 7.902720001293346
|
||||
},
|
||||
"3": {
|
||||
"key": "hpPct",
|
||||
"base": 0.027648000279441476,
|
||||
"step": 0.009677000343799591
|
||||
"hp": {
|
||||
"id": "3",
|
||||
"base": 2.7648000279441476,
|
||||
"step": 0.9677000343799591
|
||||
},
|
||||
"4": {
|
||||
"key": "atkPct",
|
||||
"base": 0.027648000279441476,
|
||||
"step": 0.009677000343799591
|
||||
"atk": {
|
||||
"id": "4",
|
||||
"base": 2.7648000279441476,
|
||||
"step": 0.9677000343799591
|
||||
},
|
||||
"5": {
|
||||
"key": "defPct",
|
||||
"base": 0.03456000052392483,
|
||||
"step": 0.012096000602468848
|
||||
"def": {
|
||||
"id": "5",
|
||||
"base": 3.4560000523924828,
|
||||
"step": 1.2096000602468848
|
||||
},
|
||||
"6": {
|
||||
"key": "ice",
|
||||
"base": 0.024883000878617167,
|
||||
"step": 0.008708999957889318
|
||||
"cpct": {
|
||||
"id": "4",
|
||||
"base": 2.0736000733450055,
|
||||
"step": 0.7258000085130334
|
||||
},
|
||||
"7": {
|
||||
"key": "elec",
|
||||
"base": 0.024883000878617167,
|
||||
"step": 0.008708999957889318
|
||||
"cdmg": {
|
||||
"id": "5",
|
||||
"base": 4.147200076840818,
|
||||
"step": 1.4515000162646174
|
||||
},
|
||||
"8": {
|
||||
"key": "wind",
|
||||
"base": 0.024883000878617167,
|
||||
"step": 0.008708999957889318
|
||||
"heal": {
|
||||
"id": "6",
|
||||
"base": 2.2118000080808997,
|
||||
"step": 0.7741000270470977
|
||||
},
|
||||
"9": {
|
||||
"key": "quantum",
|
||||
"base": 0.024883000878617167,
|
||||
"step": 0.008708999957889318
|
||||
"effPct": {
|
||||
"id": "7",
|
||||
"base": 2.7648000279441476,
|
||||
"step": 0.9677000343799591
|
||||
},
|
||||
"10": {
|
||||
"key": "imaginary",
|
||||
"base": 0.024883000878617167,
|
||||
"step": 0.008708999957889318
|
||||
"speed": {
|
||||
"id": "4",
|
||||
"base": 1.6128000009339303,
|
||||
"step": 1
|
||||
},
|
||||
"phy": {
|
||||
"id": "4",
|
||||
"base": 2.4883000878617167,
|
||||
"step": 0.8708999957889318
|
||||
},
|
||||
"fire": {
|
||||
"id": "5",
|
||||
"base": 2.4883000878617167,
|
||||
"step": 0.8708999957889318
|
||||
},
|
||||
"ice": {
|
||||
"id": "6",
|
||||
"base": 2.4883000878617167,
|
||||
"step": 0.8708999957889318
|
||||
},
|
||||
"elec": {
|
||||
"id": "7",
|
||||
"base": 2.4883000878617167,
|
||||
"step": 0.8708999957889318
|
||||
},
|
||||
"wind": {
|
||||
"id": "8",
|
||||
"base": 2.4883000878617167,
|
||||
"step": 0.8708999957889318
|
||||
},
|
||||
"quantum": {
|
||||
"id": "9",
|
||||
"base": 2.4883000878617167,
|
||||
"step": 0.8708999957889318
|
||||
},
|
||||
"imaginary": {
|
||||
"id": "10",
|
||||
"base": 2.4883000878617167,
|
||||
"step": 0.8708999957889318
|
||||
},
|
||||
"stance": {
|
||||
"id": "1",
|
||||
"base": 4.147200076840818,
|
||||
"step": 1.4515000162646174
|
||||
},
|
||||
"recharge": {
|
||||
"id": "2",
|
||||
"base": 1.244200044311583,
|
||||
"step": 0.43550003319978714
|
||||
}
|
||||
},
|
||||
"sub": {
|
||||
"1": {
|
||||
"key": "hp",
|
||||
"key": "hpPlus",
|
||||
"base": 13.548016000073403,
|
||||
"step": 1.693502000765875
|
||||
},
|
||||
"2": {
|
||||
"key": "atk",
|
||||
"key": "atkPlus",
|
||||
"base": 6.774008000502363,
|
||||
"step": 0.8467510011978447
|
||||
},
|
||||
"3": {
|
||||
"key": "def",
|
||||
"key": "defPlus",
|
||||
"base": 6.774008000502363,
|
||||
"step": 0.8467510011978447
|
||||
},
|
||||
"4": {
|
||||
"key": "hpPct",
|
||||
"base": 0.013824000488966703,
|
||||
"step": 0.0017280005849897861
|
||||
"key": "hp",
|
||||
"base": 1.3824000488966703,
|
||||
"step": 0.17280005849897861
|
||||
},
|
||||
"5": {
|
||||
"key": "atkPct",
|
||||
"base": 0.013824000488966703,
|
||||
"step": 0.0017280005849897861
|
||||
"key": "atk",
|
||||
"base": 1.3824000488966703,
|
||||
"step": 0.17280005849897861
|
||||
},
|
||||
"6": {
|
||||
"key": "defPct",
|
||||
"base": 0.017280000261962414,
|
||||
"step": 0.002160000381991267
|
||||
"key": "def",
|
||||
"base": 1.7280000261962414,
|
||||
"step": 0.21600003819912672
|
||||
},
|
||||
"7": {
|
||||
"key": "speed",
|
||||
@ -133,114 +178,159 @@
|
||||
},
|
||||
"8": {
|
||||
"key": "cpct",
|
||||
"base": 0.010368000715970993,
|
||||
"step": 0.001296000787988305
|
||||
"base": 1.0368000715970993,
|
||||
"step": 0.1296000787988305
|
||||
},
|
||||
"9": {
|
||||
"key": "cdmg",
|
||||
"base": 0.020736000733450055,
|
||||
"step": 0.0025920008774846792
|
||||
"base": 2.0736000733450055,
|
||||
"step": 0.2592000877484679
|
||||
},
|
||||
"10": {
|
||||
"key": "effPct",
|
||||
"base": 0.013824000488966703,
|
||||
"step": 0.0017280005849897861
|
||||
"base": 1.3824000488966703,
|
||||
"step": 0.17280005849897861
|
||||
},
|
||||
"11": {
|
||||
"key": "effDef",
|
||||
"base": 0.013824000488966703,
|
||||
"step": 0.0017280005849897861
|
||||
"base": 1.3824000488966703,
|
||||
"step": 0.17280005849897861
|
||||
},
|
||||
"12": {
|
||||
"key": "stance",
|
||||
"base": 0.020736000733450055,
|
||||
"step": 0.0025920008774846792
|
||||
"base": 2.0736000733450055,
|
||||
"step": 0.2592000877484679
|
||||
}
|
||||
}
|
||||
},
|
||||
"3": {
|
||||
"main": {
|
||||
"1": {
|
||||
"key": "stance",
|
||||
"base": 0.06220800010487437,
|
||||
"step": 0.02177300094626844
|
||||
"hpPlus": {
|
||||
"id": "1",
|
||||
"base": 67.73760000057518,
|
||||
"step": 23.70816000062041
|
||||
},
|
||||
"2": {
|
||||
"key": "recharge",
|
||||
"base": 0.018662000307813287,
|
||||
"step": 0.006532000144943595
|
||||
"atkPlus": {
|
||||
"id": "1",
|
||||
"base": 33.868800000753254,
|
||||
"step": 11.854080001125112
|
||||
},
|
||||
"3": {
|
||||
"key": "hpPct",
|
||||
"base": 0.04147200076840818,
|
||||
"step": 0.014515000162646174
|
||||
"hp": {
|
||||
"id": "3",
|
||||
"base": 4.147200076840818,
|
||||
"step": 1.4515000162646174
|
||||
},
|
||||
"4": {
|
||||
"key": "atkPct",
|
||||
"base": 0.04147200076840818,
|
||||
"step": 0.014515000162646174
|
||||
"atk": {
|
||||
"id": "4",
|
||||
"base": 4.147200076840818,
|
||||
"step": 1.4515000162646174
|
||||
},
|
||||
"5": {
|
||||
"key": "defPct",
|
||||
"base": 0.05184000078588724,
|
||||
"step": 0.018143999855965376
|
||||
"def": {
|
||||
"id": "5",
|
||||
"base": 5.184000078588724,
|
||||
"step": 1.8143999855965376
|
||||
},
|
||||
"6": {
|
||||
"key": "ice",
|
||||
"base": 0.037324999924749136,
|
||||
"step": 0.01306400028988719
|
||||
"cpct": {
|
||||
"id": "4",
|
||||
"base": 3.1104000052437186,
|
||||
"step": 1.0886001167818904
|
||||
},
|
||||
"7": {
|
||||
"key": "elec",
|
||||
"base": 0.037324999924749136,
|
||||
"step": 0.01306400028988719
|
||||
"cdmg": {
|
||||
"id": "5",
|
||||
"base": 6.220800010487437,
|
||||
"step": 2.177300094626844
|
||||
},
|
||||
"8": {
|
||||
"key": "wind",
|
||||
"base": 0.037324999924749136,
|
||||
"step": 0.01306400028988719
|
||||
"heal": {
|
||||
"id": "6",
|
||||
"base": 3.3178000478073955,
|
||||
"step": 1.1612000409513712
|
||||
},
|
||||
"9": {
|
||||
"key": "quantum",
|
||||
"base": 0.037324999924749136,
|
||||
"step": 0.01306400028988719
|
||||
"effPct": {
|
||||
"id": "7",
|
||||
"base": 4.147200076840818,
|
||||
"step": 1.4515000162646174
|
||||
},
|
||||
"10": {
|
||||
"key": "imaginary",
|
||||
"base": 0.037324999924749136,
|
||||
"step": 0.01306400028988719
|
||||
"speed": {
|
||||
"id": "4",
|
||||
"base": 2.4191999998874962,
|
||||
"step": 1
|
||||
},
|
||||
"phy": {
|
||||
"id": "4",
|
||||
"base": 3.7324999924749136,
|
||||
"step": 1.306400028988719
|
||||
},
|
||||
"fire": {
|
||||
"id": "5",
|
||||
"base": 3.7324999924749136,
|
||||
"step": 1.306400028988719
|
||||
},
|
||||
"ice": {
|
||||
"id": "6",
|
||||
"base": 3.7324999924749136,
|
||||
"step": 1.306400028988719
|
||||
},
|
||||
"elec": {
|
||||
"id": "7",
|
||||
"base": 3.7324999924749136,
|
||||
"step": 1.306400028988719
|
||||
},
|
||||
"wind": {
|
||||
"id": "8",
|
||||
"base": 3.7324999924749136,
|
||||
"step": 1.306400028988719
|
||||
},
|
||||
"quantum": {
|
||||
"id": "9",
|
||||
"base": 3.7324999924749136,
|
||||
"step": 1.306400028988719
|
||||
},
|
||||
"imaginary": {
|
||||
"id": "10",
|
||||
"base": 3.7324999924749136,
|
||||
"step": 1.306400028988719
|
||||
},
|
||||
"stance": {
|
||||
"id": "1",
|
||||
"base": 6.220800010487437,
|
||||
"step": 2.177300094626844
|
||||
},
|
||||
"recharge": {
|
||||
"id": "2",
|
||||
"base": 1.8662000307813287,
|
||||
"step": 0.6532000144943595
|
||||
}
|
||||
},
|
||||
"sub": {
|
||||
"1": {
|
||||
"key": "hp",
|
||||
"key": "hpPlus",
|
||||
"base": 20.32202300033532,
|
||||
"step": 2.540253001032397
|
||||
},
|
||||
"2": {
|
||||
"key": "atk",
|
||||
"key": "atkPlus",
|
||||
"base": 10.161012000171468,
|
||||
"step": 1.2701260005123913
|
||||
},
|
||||
"3": {
|
||||
"key": "def",
|
||||
"key": "defPlus",
|
||||
"base": 10.161012000171468,
|
||||
"step": 1.2701260005123913
|
||||
},
|
||||
"4": {
|
||||
"key": "hpPct",
|
||||
"base": 0.020736000733450055,
|
||||
"step": 0.0025920008774846792
|
||||
"key": "hp",
|
||||
"base": 2.0736000733450055,
|
||||
"step": 0.2592000877484679
|
||||
},
|
||||
"5": {
|
||||
"key": "atkPct",
|
||||
"base": 0.020736000733450055,
|
||||
"step": 0.0025920008774846792
|
||||
"key": "atk",
|
||||
"base": 2.0736000733450055,
|
||||
"step": 0.2592000877484679
|
||||
},
|
||||
"6": {
|
||||
"key": "defPct",
|
||||
"base": 0.02592000039294362,
|
||||
"step": 0.0032400002237409353
|
||||
"key": "def",
|
||||
"base": 2.592000039294362,
|
||||
"step": 0.32400002237409353
|
||||
},
|
||||
"7": {
|
||||
"key": "speed",
|
||||
@ -249,114 +339,159 @@
|
||||
},
|
||||
"8": {
|
||||
"key": "cpct",
|
||||
"base": 0.015552000375464559,
|
||||
"step": 0.0019440008327364922
|
||||
"base": 1.5552000375464559,
|
||||
"step": 0.19440008327364922
|
||||
},
|
||||
"9": {
|
||||
"key": "cdmg",
|
||||
"base": 0.031104000052437186,
|
||||
"step": 0.0038880009669810534
|
||||
"base": 3.1104000052437186,
|
||||
"step": 0.38880009669810534
|
||||
},
|
||||
"10": {
|
||||
"key": "effPct",
|
||||
"base": 0.020736000733450055,
|
||||
"step": 0.0025920008774846792
|
||||
"base": 2.0736000733450055,
|
||||
"step": 0.2592000877484679
|
||||
},
|
||||
"11": {
|
||||
"key": "effDef",
|
||||
"base": 0.020736000733450055,
|
||||
"step": 0.0025920008774846792
|
||||
"base": 2.0736000733450055,
|
||||
"step": 0.2592000877484679
|
||||
},
|
||||
"12": {
|
||||
"key": "stance",
|
||||
"base": 0.031104000052437186,
|
||||
"step": 0.0038880009669810534
|
||||
"base": 3.1104000052437186,
|
||||
"step": 0.38880009669810534
|
||||
}
|
||||
}
|
||||
},
|
||||
"4": {
|
||||
"main": {
|
||||
"1": {
|
||||
"key": "stance",
|
||||
"base": 0.08294400083832443,
|
||||
"step": 0.029029999626800418
|
||||
"hpPlus": {
|
||||
"id": "1",
|
||||
"base": 90.31680000037886,
|
||||
"step": 31.610880001680925
|
||||
},
|
||||
"2": {
|
||||
"key": "recharge",
|
||||
"base": 0.024883000878617167,
|
||||
"step": 0.008708999957889318
|
||||
"atkPlus": {
|
||||
"id": "1",
|
||||
"base": 45.158399999840185,
|
||||
"step": 15.805440000956878
|
||||
},
|
||||
"3": {
|
||||
"key": "hpPct",
|
||||
"base": 0.05529600055888295,
|
||||
"step": 0.01935399998910725
|
||||
"hp": {
|
||||
"id": "3",
|
||||
"base": 5.529600055888295,
|
||||
"step": 1.9353999989107251
|
||||
},
|
||||
"4": {
|
||||
"key": "atkPct",
|
||||
"base": 0.05529600055888295,
|
||||
"step": 0.01935399998910725
|
||||
"atk": {
|
||||
"id": "4",
|
||||
"base": 5.529600055888295,
|
||||
"step": 1.9353999989107251
|
||||
},
|
||||
"5": {
|
||||
"key": "defPct",
|
||||
"base": 0.0691199996508658,
|
||||
"step": 0.024192000506445765
|
||||
"def": {
|
||||
"id": "5",
|
||||
"base": 6.911999965086579,
|
||||
"step": 2.4192000506445765
|
||||
},
|
||||
"6": {
|
||||
"key": "ice",
|
||||
"base": 0.04976600036025047,
|
||||
"step": 0.017417999915778637
|
||||
"cpct": {
|
||||
"id": "4",
|
||||
"base": 4.147200076840818,
|
||||
"step": 1.4515000162646174
|
||||
},
|
||||
"7": {
|
||||
"key": "elec",
|
||||
"base": 0.04976600036025047,
|
||||
"step": 0.017417999915778637
|
||||
"cdmg": {
|
||||
"id": "5",
|
||||
"base": 8.294400083832443,
|
||||
"step": 2.902999962680042
|
||||
},
|
||||
"8": {
|
||||
"key": "wind",
|
||||
"base": 0.04976600036025047,
|
||||
"step": 0.017417999915778637
|
||||
"heal": {
|
||||
"id": "6",
|
||||
"base": 4.423700016923249,
|
||||
"step": 1.5483000548556447
|
||||
},
|
||||
"9": {
|
||||
"key": "quantum",
|
||||
"base": 0.04976600036025047,
|
||||
"step": 0.017417999915778637
|
||||
"effPct": {
|
||||
"id": "7",
|
||||
"base": 5.529600055888295,
|
||||
"step": 1.9353999989107251
|
||||
},
|
||||
"10": {
|
||||
"key": "imaginary",
|
||||
"base": 0.04976600036025047,
|
||||
"step": 0.017417999915778637
|
||||
"speed": {
|
||||
"id": "4",
|
||||
"base": 3.225600000238046,
|
||||
"step": 1.1000000000931323
|
||||
},
|
||||
"phy": {
|
||||
"id": "4",
|
||||
"base": 4.976600036025047,
|
||||
"step": 1.7417999915778637
|
||||
},
|
||||
"fire": {
|
||||
"id": "5",
|
||||
"base": 4.976600036025047,
|
||||
"step": 1.7417999915778637
|
||||
},
|
||||
"ice": {
|
||||
"id": "6",
|
||||
"base": 4.976600036025047,
|
||||
"step": 1.7417999915778637
|
||||
},
|
||||
"elec": {
|
||||
"id": "7",
|
||||
"base": 4.976600036025047,
|
||||
"step": 1.7417999915778637
|
||||
},
|
||||
"wind": {
|
||||
"id": "8",
|
||||
"base": 4.976600036025047,
|
||||
"step": 1.7417999915778637
|
||||
},
|
||||
"quantum": {
|
||||
"id": "9",
|
||||
"base": 4.976600036025047,
|
||||
"step": 1.7417999915778637
|
||||
},
|
||||
"imaginary": {
|
||||
"id": "10",
|
||||
"base": 4.976600036025047,
|
||||
"step": 1.7417999915778637
|
||||
},
|
||||
"stance": {
|
||||
"id": "1",
|
||||
"base": 8.294400083832443,
|
||||
"step": 2.902999962680042
|
||||
},
|
||||
"recharge": {
|
||||
"id": "2",
|
||||
"base": 2.4883000878617167,
|
||||
"step": 0.8708999957889318
|
||||
}
|
||||
},
|
||||
"sub": {
|
||||
"1": {
|
||||
"key": "hp",
|
||||
"key": "hpPlus",
|
||||
"base": 27.09603099990636,
|
||||
"step": 3.3870039999019355
|
||||
},
|
||||
"2": {
|
||||
"key": "atk",
|
||||
"key": "atkPlus",
|
||||
"base": 13.548016000073403,
|
||||
"step": 1.693502000765875
|
||||
},
|
||||
"3": {
|
||||
"key": "def",
|
||||
"key": "defPlus",
|
||||
"base": 13.548016000073403,
|
||||
"step": 1.693502000765875
|
||||
},
|
||||
"4": {
|
||||
"key": "hpPct",
|
||||
"base": 0.027648000279441476,
|
||||
"step": 0.0034560004714876413
|
||||
"key": "hp",
|
||||
"base": 2.7648000279441476,
|
||||
"step": 0.34560004714876413
|
||||
},
|
||||
"5": {
|
||||
"key": "atkPct",
|
||||
"base": 0.027648000279441476,
|
||||
"step": 0.0034560004714876413
|
||||
"key": "atk",
|
||||
"base": 2.7648000279441476,
|
||||
"step": 0.34560004714876413
|
||||
},
|
||||
"6": {
|
||||
"key": "defPct",
|
||||
"base": 0.03456000052392483,
|
||||
"step": 0.0043200000654906034
|
||||
"key": "def",
|
||||
"base": 3.4560000523924828,
|
||||
"step": 0.43200000654906034
|
||||
},
|
||||
"7": {
|
||||
"key": "speed",
|
||||
@ -365,114 +500,159 @@
|
||||
},
|
||||
"8": {
|
||||
"key": "cpct",
|
||||
"base": 0.020736000733450055,
|
||||
"step": 0.0025920008774846792
|
||||
"base": 2.0736000733450055,
|
||||
"step": 0.2592000877484679
|
||||
},
|
||||
"9": {
|
||||
"key": "cdmg",
|
||||
"base": 0.04147200076840818,
|
||||
"step": 0.0051840003579854965
|
||||
"base": 4.147200076840818,
|
||||
"step": 0.5184000357985497
|
||||
},
|
||||
"10": {
|
||||
"key": "effPct",
|
||||
"base": 0.027648000279441476,
|
||||
"step": 0.0034560004714876413
|
||||
"base": 2.7648000279441476,
|
||||
"step": 0.34560004714876413
|
||||
},
|
||||
"11": {
|
||||
"key": "effDef",
|
||||
"base": 0.027648000279441476,
|
||||
"step": 0.0034560004714876413
|
||||
"base": 2.7648000279441476,
|
||||
"step": 0.34560004714876413
|
||||
},
|
||||
"12": {
|
||||
"key": "stance",
|
||||
"base": 0.04147200076840818,
|
||||
"step": 0.0051840003579854965
|
||||
"base": 4.147200076840818,
|
||||
"step": 0.5184000357985497
|
||||
}
|
||||
}
|
||||
},
|
||||
"5": {
|
||||
"main": {
|
||||
"1": {
|
||||
"key": "stance",
|
||||
"base": 0.10368000087328255,
|
||||
"step": 0.03628800041042268
|
||||
"hpPlus": {
|
||||
"id": "1",
|
||||
"base": 112.89600000041537,
|
||||
"step": 39.513600000645965
|
||||
},
|
||||
"2": {
|
||||
"key": "recharge",
|
||||
"base": 0.031104000052437186,
|
||||
"step": 0.010886001167818904
|
||||
"atkPlus": {
|
||||
"id": "1",
|
||||
"base": 56.44799999985844,
|
||||
"step": 19.756800000788644
|
||||
},
|
||||
"3": {
|
||||
"key": "hpPct",
|
||||
"base": 0.0691199996508658,
|
||||
"step": 0.024192000506445765
|
||||
"hp": {
|
||||
"id": "3",
|
||||
"base": 6.911999965086579,
|
||||
"step": 2.4192000506445765
|
||||
},
|
||||
"4": {
|
||||
"key": "atkPct",
|
||||
"base": 0.0691199996508658,
|
||||
"step": 0.024192000506445765
|
||||
"atk": {
|
||||
"id": "4",
|
||||
"base": 6.911999965086579,
|
||||
"step": 2.4192000506445765
|
||||
},
|
||||
"5": {
|
||||
"key": "defPct",
|
||||
"base": 0.08639999991282821,
|
||||
"step": 0.030240000458434224
|
||||
"def": {
|
||||
"id": "5",
|
||||
"base": 8.63999999128282,
|
||||
"step": 3.0240000458434224
|
||||
},
|
||||
"6": {
|
||||
"key": "ice",
|
||||
"base": 0.06220800010487437,
|
||||
"step": 0.02177300094626844
|
||||
"cpct": {
|
||||
"id": "4",
|
||||
"base": 5.184000078588724,
|
||||
"step": 1.8143999855965376
|
||||
},
|
||||
"7": {
|
||||
"key": "elec",
|
||||
"base": 0.06220800010487437,
|
||||
"step": 0.02177300094626844
|
||||
"cdmg": {
|
||||
"id": "5",
|
||||
"base": 10.368000087328255,
|
||||
"step": 3.6288000410422683
|
||||
},
|
||||
"8": {
|
||||
"key": "wind",
|
||||
"base": 0.06220800010487437,
|
||||
"step": 0.02177300094626844
|
||||
"heal": {
|
||||
"id": "6",
|
||||
"base": 5.529600055888295,
|
||||
"step": 1.9353999989107251
|
||||
},
|
||||
"9": {
|
||||
"key": "quantum",
|
||||
"base": 0.06220800010487437,
|
||||
"step": 0.02177300094626844
|
||||
"effPct": {
|
||||
"id": "7",
|
||||
"base": 6.911999965086579,
|
||||
"step": 2.4192000506445765
|
||||
},
|
||||
"10": {
|
||||
"key": "imaginary",
|
||||
"base": 0.06220800010487437,
|
||||
"step": 0.02177300094626844
|
||||
"speed": {
|
||||
"id": "4",
|
||||
"base": 4.031999999890104,
|
||||
"step": 1.400000000372529
|
||||
},
|
||||
"phy": {
|
||||
"id": "4",
|
||||
"base": 6.220800010487437,
|
||||
"step": 2.177300094626844
|
||||
},
|
||||
"fire": {
|
||||
"id": "5",
|
||||
"base": 6.220800010487437,
|
||||
"step": 2.177300094626844
|
||||
},
|
||||
"ice": {
|
||||
"id": "6",
|
||||
"base": 6.220800010487437,
|
||||
"step": 2.177300094626844
|
||||
},
|
||||
"elec": {
|
||||
"id": "7",
|
||||
"base": 6.220800010487437,
|
||||
"step": 2.177300094626844
|
||||
},
|
||||
"wind": {
|
||||
"id": "8",
|
||||
"base": 6.220800010487437,
|
||||
"step": 2.177300094626844
|
||||
},
|
||||
"quantum": {
|
||||
"id": "9",
|
||||
"base": 6.220800010487437,
|
||||
"step": 2.177300094626844
|
||||
},
|
||||
"imaginary": {
|
||||
"id": "10",
|
||||
"base": 6.220800010487437,
|
||||
"step": 2.177300094626844
|
||||
},
|
||||
"stance": {
|
||||
"id": "1",
|
||||
"base": 10.368000087328255,
|
||||
"step": 3.6288000410422683
|
||||
},
|
||||
"recharge": {
|
||||
"id": "2",
|
||||
"base": 3.1104000052437186,
|
||||
"step": 1.0886001167818904
|
||||
}
|
||||
},
|
||||
"sub": {
|
||||
"1": {
|
||||
"key": "hp",
|
||||
"key": "hpPlus",
|
||||
"base": 33.870039001107216,
|
||||
"step": 4.23375500086695
|
||||
},
|
||||
"2": {
|
||||
"key": "atk",
|
||||
"key": "atkPlus",
|
||||
"base": 16.935019000666216,
|
||||
"step": 2.1168770007789135
|
||||
},
|
||||
"3": {
|
||||
"key": "def",
|
||||
"key": "defPlus",
|
||||
"base": 16.935019000666216,
|
||||
"step": 2.1168770007789135
|
||||
},
|
||||
"4": {
|
||||
"key": "hpPct",
|
||||
"base": 0.03456000052392483,
|
||||
"step": 0.0043200000654906034
|
||||
"key": "hp",
|
||||
"base": 3.4560000523924828,
|
||||
"step": 0.43200000654906034
|
||||
},
|
||||
"5": {
|
||||
"key": "atkPct",
|
||||
"base": 0.03456000052392483,
|
||||
"step": 0.0043200000654906034
|
||||
"key": "atk",
|
||||
"base": 3.4560000523924828,
|
||||
"step": 0.43200000654906034
|
||||
},
|
||||
"6": {
|
||||
"key": "defPct",
|
||||
"base": 0.043199999956414104,
|
||||
"step": 0.005399999907240272
|
||||
"key": "def",
|
||||
"base": 4.31999999564141,
|
||||
"step": 0.5399999907240272
|
||||
},
|
||||
"7": {
|
||||
"key": "speed",
|
||||
@ -481,28 +661,28 @@
|
||||
},
|
||||
"8": {
|
||||
"key": "cpct",
|
||||
"base": 0.02592000039294362,
|
||||
"step": 0.0032400002237409353
|
||||
"base": 2.592000039294362,
|
||||
"step": 0.32400002237409353
|
||||
},
|
||||
"9": {
|
||||
"key": "cdmg",
|
||||
"base": 0.05184000078588724,
|
||||
"step": 0.006480000447481871
|
||||
"base": 5.184000078588724,
|
||||
"step": 0.6480000447481871
|
||||
},
|
||||
"10": {
|
||||
"key": "effPct",
|
||||
"base": 0.03456000052392483,
|
||||
"step": 0.0043200000654906034
|
||||
"base": 3.4560000523924828,
|
||||
"step": 0.43200000654906034
|
||||
},
|
||||
"11": {
|
||||
"key": "effDef",
|
||||
"base": 0.03456000052392483,
|
||||
"step": 0.0043200000654906034
|
||||
"base": 3.4560000523924828,
|
||||
"step": 0.43200000654906034
|
||||
},
|
||||
"12": {
|
||||
"key": "stance",
|
||||
"base": 0.05184000078588724,
|
||||
"step": 0.006480000447481871
|
||||
"base": 5.184000078588724,
|
||||
"step": 0.6480000447481871
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Before Width: | Height: | Size: 831 KiB After Width: | Height: | Size: 554 KiB |
Before Width: | Height: | Size: 870 KiB After Width: | Height: | Size: 452 KiB |
Before Width: | Height: | Size: 855 KiB After Width: | Height: | Size: 534 KiB |
Before Width: | Height: | Size: 541 KiB After Width: | Height: | Size: 353 KiB |
Before Width: | Height: | Size: 476 KiB After Width: | Height: | Size: 270 KiB |
Before Width: | Height: | Size: 448 KiB After Width: | Height: | Size: 287 KiB |
Before Width: | Height: | Size: 707 KiB After Width: | Height: | Size: 358 KiB |
Before Width: | Height: | Size: 460 KiB After Width: | Height: | Size: 328 KiB |
Before Width: | Height: | Size: 690 KiB After Width: | Height: | Size: 408 KiB |
Before Width: | Height: | Size: 802 KiB After Width: | Height: | Size: 477 KiB |
Before Width: | Height: | Size: 639 KiB After Width: | Height: | Size: 382 KiB |
Before Width: | Height: | Size: 874 KiB After Width: | Height: | Size: 545 KiB |
Before Width: | Height: | Size: 621 KiB After Width: | Height: | Size: 348 KiB |
Before Width: | Height: | Size: 507 KiB After Width: | Height: | Size: 327 KiB |
Before Width: | Height: | Size: 517 KiB After Width: | Height: | Size: 338 KiB |
Before Width: | Height: | Size: 680 KiB After Width: | Height: | Size: 389 KiB |
Before Width: | Height: | Size: 634 KiB After Width: | Height: | Size: 410 KiB |
Before Width: | Height: | Size: 727 KiB After Width: | Height: | Size: 424 KiB |
Before Width: | Height: | Size: 656 KiB After Width: | Height: | Size: 416 KiB |
Before Width: | Height: | Size: 715 KiB After Width: | Height: | Size: 432 KiB |
Before Width: | Height: | Size: 585 KiB After Width: | Height: | Size: 438 KiB |
Before Width: | Height: | Size: 830 KiB After Width: | Height: | Size: 450 KiB |
Before Width: | Height: | Size: 742 KiB After Width: | Height: | Size: 369 KiB |
Before Width: | Height: | Size: 717 KiB After Width: | Height: | Size: 428 KiB |
Before Width: | Height: | Size: 533 KiB After Width: | Height: | Size: 343 KiB |