变更部分星铁面板素材图

This commit is contained in:
Kokomi 2023-05-19 04:23:19 +08:00
parent 9ee1aa28a9
commit 2a21366e1a
41 changed files with 881 additions and 643 deletions

View File

@ -131,13 +131,15 @@ let ProfileDetail = {
let a = profile.attr let a = profile.attr
let base = profile.base let base = profile.base
let attr = {} 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) let fn = (n) => Format.comma(n, key === 'hp' ? 0 : 1)
attr[key] = fn(a[key]) attr[key] = fn(a[key])
attr[`${key}Base`] = fn(base[key]) attr[`${key}Base`] = fn(base[key])
attr[`${key}Plus`] = fn(a[key] - 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 fn = Format.pct
let key2 = key let key2 = key
if (key === 'dmg' && a.phy > a.dmg) { if (key === 'dmg' && a.phy > a.dmg) {
@ -148,7 +150,7 @@ let ProfileDetail = {
attr[`${key}Plus`] = fn(a[key2] - base[key2]) 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 w = profile.weapon
let wCfg = {} let wCfg = {}
if (mode === 'weapon') { if (mode === 'weapon') {
@ -167,10 +169,11 @@ let ProfileDetail = {
} }
let artisDetail = profile.getArtisMark() let artisDetail = profile.getArtisMark()
let artisKeyTitle = ProfileArtis.getArtisKeyTitle() let artisKeyTitle = ProfileArtis.getArtisKeyTitle(game)
let renderData = { let renderData = {
save_id: uid, save_id: uid,
uid, uid,
game,
data: profile.getData('name,abbr,cons,level,weapon,talent,dataSource,updateTime,imgs,costumeSplash'), data: profile.getData('name,abbr,cons,level,weapon,talent,dataSource,updateTime,imgs,costumeSplash'),
attr, attr,
elem: char.elem, elem: char.elem,

View File

@ -12,20 +12,32 @@ const elemAlias = {
} }
const elemAliasSR = { const elemAliasSR = {
fire: '火',
ice: '冰',
wind: '风',
elec: '雷',
phy: '物理',
quantum: '量子',
imaginary: '虚数'
} }
// 元素属性映射, 名称=>elem // 元素属性映射, 名称=>elem
let elemMap = {} let elemMap = {}
let elemMapSR = {}
// 标准元素名 // 标准元素名
let elemTitleMap = {} let elemTitleMap = {}
let elemTitleMapSR = elemAliasSR
lodash.forEach(elemAlias, (txt, key) => { lodash.forEach(elemAlias, (txt, key) => {
elemMap[key] = key elemMap[key] = key
elemTitleMap[key] = txt[0] elemTitleMap[key] = txt[0]
Data.eachStr(txt, (t) => (elemMap[t] = key)) Data.eachStr(txt, (t) => (elemMap[t] = key))
}) })
lodash.forEach(elemAliasSR, (txt, key) => {
elemMapSR[key] = key
elemMapSR[txt] = key
})
const Elem = { const Elem = {
// 根据名称获取元素key // 根据名称获取元素key
@ -56,8 +68,8 @@ const Elem = {
return '' return ''
}, },
eachElem (fn) { eachElem (fn, game = 'gs') {
lodash.forEach(elemTitleMap, (title, key) => { lodash.forEach(game === 'gs' ? elemTitleMap : elemTitleMapSR, (title, key) => {
fn(key, title) fn(key, title)
}) })
}, },

View File

@ -37,7 +37,7 @@ class Artifact extends Base {
} }
get img () { 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') { static get (name, game = 'gs') {
@ -110,15 +110,17 @@ class Artifact extends Base {
return this.meta.ids[id] || '' 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 starCfg = metaDataSR.starData[star]
let mainCfg = starCfg.main[mainId] let mainCfg = starCfg.main[mainKey]
if (!mainId || !mainCfg) { if (!mainId || !mainCfg) {
return false return false
} }
let main = { let main = {
id: mainId, id: mainId,
key: mainCfg.key, key: mainKey,
value: mainCfg.base + mainCfg.step * level value: mainCfg.base + mainCfg.step * level
} }
let attrs = [] let attrs = []

View File

@ -46,8 +46,8 @@ export default class AvatarArtis extends Base {
}) })
} }
static getArtisKeyTitle () { static getArtisKeyTitle (game = 'gs') {
return ArtisMark.getKeyTitleMap() return ArtisMark.getKeyTitleMap(game)
} }
setArtisData (ds = {}, isProfile = false) { setArtisData (ds = {}, isProfile = false) {
@ -77,7 +77,7 @@ export default class AvatarArtis extends Base {
arti.star = artiObj.getStarById(ds.id) || arti.star || 5 arti.star = artiObj.getStarById(ds.id) || arti.star || 5
if (ds.mainId && ds.attrs) { 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) { if (attr) {
arti.mainId = ds.mainId arti.mainId = ds.mainId
arti.main = attr.main || arti.main || {} arti.main = attr.main || arti.main || {}
@ -129,7 +129,6 @@ export default class AvatarArtis extends Base {
forEach (fn) { forEach (fn) {
lodash.forEach(this.artis, (ds, idx) => { lodash.forEach(this.artis, (ds, idx) => {
console.log(ds, this.game, ds.mainId, ds.main)
if (ds.name) { if (ds.name) {
fn(ds, idx) fn(ds, idx)
} }

View File

@ -300,12 +300,13 @@ class Character extends Base {
return {} return {}
} }
const path = this.isSr ? 'resources/meta-sr/character' : 'resources/meta/character' const path = this.isSr ? 'resources/meta-sr/character' : 'resources/meta/character'
const file = this.isSr ? 'data' : 'detail'
try { try {
if (this.isTraveler) { if (this.isTraveler) {
this._detail = Data.readJSON(`${path}/旅行者/${this.elem}/detail.json`, 'miao') this._detail = Data.readJSON(`${path}/旅行者/${this.elem}/${file}.json`, 'miao')
} else { } else {
this._detail = Data.readJSON(`${path}/${this.name}/detail.json`, 'miao') this._detail = Data.readJSON(`${path}/${this.name}/${file}.json`, 'miao')
} }
} catch (e) { } catch (e) {
console.log(e) console.log(e)
@ -327,6 +328,31 @@ class Character extends Base {
} }
return this._artisRule 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 Character.CharId = CharId

View File

@ -71,11 +71,11 @@ export default class ProfileArtis extends AvatarArtis {
let totalVaild = 0 let totalVaild = 0
this.forEach((arti, idx) => { this.forEach((arti, idx) => {
let mark = ArtisMark.getMark(charCfg, idx, arti.main, arti.attrs, this.elem) 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 crit = ArtisMark.getCritMark(charCfg, idx, arti.main, arti.attrs, this.elem)
let vaild = ArtisMark.getValidMark(charCfg, idx, arti.main, arti.attrs, this.elem) // let vaild = ArtisMark.getValidMark(charCfg, idx, arti.main, arti.attrs, this.elem)
totalMark += mark totalMark += mark
totalCrit += crit // totalCrit += crit
totalVaild += vaild // totalVaild += vaild
setCount[arti.set] = (setCount[arti.set] || 0) + 1 setCount[arti.set] = (setCount[arti.set] || 0) + 1
if (!withDetail) { if (!withDetail) {
artis[idx] = { artis[idx] = {
@ -84,8 +84,9 @@ export default class ProfileArtis extends AvatarArtis {
markClass: ArtisMark.getMarkClass(mark) markClass: ArtisMark.getMarkClass(mark)
} }
} else { } else {
let artifact = Artifact.get(arti.name) let artifact = Artifact.get(arti.name, this.game)
console.log(arti.main, arti.mainId, arti) // console.log('artifact', artifact, arti)
// console.log(`arti idx ${idx} ${artifact.name}\n\n\n`)
artis[idx] = { artis[idx] = {
name: artifact.name, name: artifact.name,
set: artifact.setName, set: artifact.setName,
@ -115,10 +116,10 @@ export default class ProfileArtis extends AvatarArtis {
let ret = { let ret = {
mark: Format.comma(totalMark, 1), mark: Format.comma(totalMark, 1),
_mark: totalMark, _mark: totalMark,
crit: Format.comma(totalCrit, 1), /* crit: Format.comma(totalCrit, 1),
_crit: totalCrit, _crit: totalCrit,
valid: Format.comma(totalVaild, 1), valid: Format.comma(totalVaild, 1),
_valid: totalVaild, _valid: totalVaild, */
markClass: ArtisMark.getMarkClass(totalMark / 5), markClass: ArtisMark.getMarkClass(totalMark / 5),
artis, artis,
sets, sets,

View File

@ -88,7 +88,6 @@ export default class ProfileData extends AvatarData {
// 获取当前profileData的圣遗物评分withDetail=false仅返回简略信息 // 获取当前profileData的圣遗物评分withDetail=false仅返回简略信息
getArtisMark (withDetail = true) { getArtisMark (withDetail = true) {
if (this.hasData) { if (this.hasData) {
console.log(this.game)
return this.artis.getMarkDetail(withDetail) return this.artis.getMarkDetail(withDetail)
} }
return {} return {}

View File

@ -34,7 +34,7 @@ class Weapon extends Base {
} }
get img () { 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 () { get imgs () {
@ -46,9 +46,9 @@ class Weapon extends Base {
} }
} else { } else {
return { return {
icon: `meta/weapon-sr/${this.type}/${this.name}/icon.webp`, icon: `meta-sr/weapon/${this.type}/${this.name}/icon.webp`,
icon2: `meta/weapon-sr/${this.type}/${this.name}/icon-s.webp`, icon2: `meta-sr/weapon/${this.type}/${this.name}/icon-s.webp`,
gacha: `meta/weapon-sr/${this.type}/${this.name}/splash.webp` gacha: `meta-sr/weapon/${this.type}/${this.name}/splash.webp`
} }
} }
} }
@ -108,9 +108,10 @@ class Weapon extends Base {
if (this._detail) { if (this._detail) {
return 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 { try {
this._detail = Data.readJSON(`${path}/${this.type}/${this.name}/data.json`, 'miao') this._detail = Data.readJSON(`${path}/${this.type}/${this.name}/data.json`, 'miao')
console.log(`${path}/${this.type}/${this.name}/data.json`)
} catch (e) { } catch (e) {
console.log(e) console.log(e)
} }
@ -118,6 +119,22 @@ class Weapon extends Base {
} }
calcAttr (level, promote = -1) { 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 lvLeft = 1
let lvRight = 20 let lvRight = 20
let lvStep = [1, 20, 40, 50, 60, 70, 80, 90] let lvStep = [1, 20, 40, 50, 60, 70, 80, 90]

View File

@ -8,6 +8,8 @@ import mggApi from './MggApi.js'
import hutaoApi from './HutaoApi.js' import hutaoApi from './HutaoApi.js'
import luluApi from './LuluApi.js' import luluApi from './LuluApi.js'
import lodash from 'lodash'
let { diyCfg } = await Data.importCfg('profile') let { diyCfg } = await Data.importCfg('profile')
const Profile = { const Profile = {
@ -95,9 +97,7 @@ const Profile = {
}, },
isProfile (avatar) { isProfile (avatar) {
console.log('is Sr', avatar.isSr, avatar._source)
if (avatar.isSr) { if (avatar.isSr) {
return true 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 return false
} }
// 检查圣遗物词条是否完备 // 检查圣遗物词条是否完备

View File

@ -7,19 +7,19 @@ import {
let ArtisMark = { let ArtisMark = {
// 根据Key获取标题 // 根据Key获取标题
getKeyByTitle (title, dmg = false, game = 'gs') { getKeyByTitle (title, game = 'gs') {
if (/元素伤害加成/.test(title) || Format.isElem(title)) { if (/元素伤害加成/.test(title) || Format.isElem(title)) {
let elem = Format.matchElem(title) let elem = Format.matchElem(title)
return dmg ? 'dmg' : elem return elem
} else if (title === '物理伤害加成') { } else if (title === '物理伤害加成') {
return 'phy' return 'phy'
} }
return (game === 'gs' ? attrNameMap : attrNameMapSR)[title] return (game === 'gs' ? attrNameMap : attrMap)[title]
}, },
getKeyTitleMap (game = 'gs') { getKeyTitleMap (game = 'gs') {
let ret = {} let ret = {}
lodash.forEach(attrMap, (ds, key) => { lodash.forEach(game === 'gs' ? attrMap : attrMapSR, (ds, key) => {
ret[key] = ds.title ret[key] = ds.title
}) })
Format.eachElem((key, name) => { Format.eachElem((key, name) => {
@ -28,13 +28,13 @@ let ArtisMark = {
return ret return ret
}, },
formatAttr (ds) { formatAttr (ds, game = 'gs') {
if (!ds) { if (!ds) {
return {} return {}
} }
if (lodash.isArray(ds) && ds[0] && ds[1]) { if (lodash.isArray(ds) && ds[0] && ds[1]) {
return { return {
key: ArtisMark.getKeyByTitle(ds[0]), key: ArtisMark.getKeyByTitle(ds[0], game),
value: ds[1] value: ds[1]
} }
} }
@ -42,7 +42,7 @@ let ArtisMark = {
return {} return {}
} }
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 || '' value: ds.value || ''
} }
}, },
@ -52,58 +52,32 @@ let ArtisMark = {
* @param ds * @param ds
* @param charAttrCfg * @param charAttrCfg
* @param isMain * @param isMain
* @param game
* @returns {{title: *, value: string}|*[]} * @returns {{title: *, value: string}|*[]}
*/ */
formatArti (ds, charAttrCfg = false, isMain = false, game = 'gs') { formatArti (ds, charAttrCfg = false, isMain = false, game = 'gs') {
// 若为attr数组 // 若为attr数组
if (ds[0] && (ds[0].title || ds[0].key)) { if (ds[0] && (ds[0].title || ds[0].key)) {
let ret = [] let ret = []
let totalUpNum = 0
let ltArr = []
let isIdAttr = false
lodash.forEach(ds, (d) => { lodash.forEach(ds, (d) => {
isIdAttr = !d.isCalcNum
let arti = ArtisMark.formatArti(d, charAttrCfg, isMain, game) let arti = ArtisMark.formatArti(d, charAttrCfg, isMain, game)
ret.push(arti) 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 return ret
} }
let key = ds.key let key = ds.key
let title = ds.title || ds[0] let title = ds.title || ds[0]
if (!key) { if (!key) {
key = ArtisMark.getKeyByTitle(title) key = ArtisMark.getKeyByTitle(title, game)
} }
let isDmg = Format.isElem(key) let isDmg = Format.isElem(key)
let val = ds.value || ds[1] let val = ds.value || ds[1]
let value = val
let num = ds.value || ds[1] let num = ds.value || ds[1]
if (!key || key === 'undefined') { if (!key || key === 'undefined') {
return {} return {}
} }
let arrCfg = (game === 'gs' ? attrMap : attrMapSR)[isDmg ? 'dmg' : key] let arrCfg = (game === 'gs' ? attrMap : attrMapSR)[isDmg ? 'dmg' : key]
console.log(key, arrCfg)
val = Format[arrCfg?.format || 'comma'](val, 1) val = Format[arrCfg?.format || 'comma'](val, 1)
let ret = { let ret = {
key, key,
@ -111,14 +85,6 @@ let ArtisMark = {
upNum: ds.upNum || 0, upNum: ds.upNum || 0,
eff: ds.eff || 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) { if (charAttrCfg) {
let mark = charAttrCfg[key]?.mark * num || 0 let mark = charAttrCfg[key]?.mark * num || 0
@ -133,27 +99,6 @@ let ArtisMark = {
return ret 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) { getMarkClass (mark) {
let pct = mark let pct = mark
@ -292,7 +237,8 @@ let ArtisMark = {
for (let idx = 1; idx <= 5; idx++) { for (let idx = 1; idx <= 5; idx++) {
let ds = artis[idx] let ds = artis[idx]
if (ds) { 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 return false
} }
} }

View File

@ -13,7 +13,7 @@ class AttrCalc {
constructor (profile) { constructor (profile) {
this.profile = profile this.profile = profile
this.char = profile.char this.char = profile.char
this.game = profile.game this.game = this.char.game
} }
get isGs () { get isGs () {
@ -57,18 +57,18 @@ class AttrCalc {
* @returns {{}} * @returns {{}}
*/ */
calc () { calc () {
console.log('calc,hahahaha')
this.attr = ProfileAttr.create({}, this.game) this.attr = ProfileAttr.create({}, this.game)
if (this.isGs) { if (this.isGs) {
this.addAttr('recharge', 100, true) this.addAttr('recharge', 100, true)
this.addAttr('cpct', 5, true) this.addAttr('cpct', 5, true)
this.addAttr('cdmg', 50, true) this.addAttr('cdmg', 50, true)
} else {
} }
this.setCharAttr() this.setCharAttr()
this.setWeaponAttr() this.setWeaponAttr()
this.setArtisAttr() this.setArtisAttr()
return this.attr.getAttr() return this.attr.getAttr()
} }
getBase () { getBase () {
@ -77,6 +77,9 @@ class AttrCalc {
addAttr (key, val, isBase = false) { addAttr (key, val, isBase = false) {
if (key === 'cpct') {
console.log('isCpct', val, isBase)
}
this.attr.addAttr(key, val, isBase) this.attr.addAttr(key, val, isBase)
} }
@ -85,11 +88,19 @@ class AttrCalc {
* @param affix * @param affix
*/ */
setCharAttr (affix = '') { setCharAttr (affix = '') {
if (this.isGs) {
return
}
let { char, level, promote } = this.profile let { char, level, promote } = this.profile
let metaAttr = char.detail?.attr || {} 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 { keys = {}, details = {} } = metaAttr
let lvLeft = 0 let lvLeft = 0
let lvRight = 0 let lvRight = 0
@ -139,12 +150,19 @@ class AttrCalc {
* 计算武器属性 * 计算武器属性
*/ */
setWeaponAttr () { setWeaponAttr () {
if (this.isGs) {
return
}
let wData = this.profile?.weapon || {} let wData = this.profile?.weapon || {}
let weapon = Weapon.get(wData?.name || wData?.id, this.game) let weapon = Weapon.get(wData?.name || wData?.id, this.game)
let wCalcRet = weapon.calcAttr(wData.level, wData.promote) 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) { if (wCalcRet) {
this.addAttr('atkBase', wCalcRet.atkBase) this.addAttr('atkBase', wCalcRet.atkBase)
@ -172,15 +190,12 @@ class AttrCalc {
* 计算圣遗物属性 * 计算圣遗物属性
*/ */
setArtisAttr () { setArtisAttr () {
if (this.isGs) {
return
}
let artis = this.profile?.artis let artis = this.profile?.artis
// 计算圣遗物词条 // 计算圣遗物词条
artis.forEach((arti) => { artis.forEach((arti) => {
this.calcArtisAttr(arti.main, this.char) this.calcArtisAttr(arti.main, this.char)
lodash.forEach(arti.attrs, (ds) => { lodash.forEach(arti.attrs, (ds) => {
this.calcArtisAttr(ds) this.calcArtisAttr(ds, this.char)
}) })
}) })
// 计算圣遗物静态加成 // 计算圣遗物静态加成
@ -201,6 +216,8 @@ class AttrCalc {
/** /**
* 计算单条圣遗物词缀 * 计算单条圣遗物词缀
* @param ds * @param ds
* @param char
* @param autoPct
* @returns {boolean} * @returns {boolean}
*/ */
calcArtisAttr (ds, char) { calcArtisAttr (ds, char) {
@ -214,6 +231,7 @@ class AttrCalc {
if (!key) { if (!key) {
return false return false
} }
console.log(key, ds.value)
if (['atk', 'hp', 'def'].includes(key)) { if (['atk', 'hp', 'def'].includes(key)) {
key = key + 'Pct' key = key + 'Pct'
} }

View File

@ -821,4 +821,15 @@ body {
line-height: 20px; line-height: 20px;
color: #bbb; 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 */ /*# sourceMappingURL=profile-detail.css.map */

View File

@ -7,265 +7,271 @@
{{set weapon = data.weapon}} {{set weapon = data.weapon}}
{{set dataSource = data.dataSource}} {{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, costumeSplash} = data }}
{{set imgs = imgs || {} }} {{set imgs = imgs || {} }}
{{block 'main'}} {{block 'main'}}
<div class="basic"> <div class="game-{{game}}">
<div class="main-pic" <div class="basic">
style="background-image:url({{_res_path}}{{costumeSplash||imgs?.splash}})"></div> <div class="main-pic"
<div class="detail"> style="background-image:url({{_res_path}}{{costumeSplash||imgs?.splash}})"></div>
<div class="char-name">{{data.name}}</div> <div class="detail">
<div class="char-lv">UID {{uid}} - Lv.{{data.level}} <div class="char-name">{{data.name}}</div>
<span class="cons cons-{{data.cons}}">{{data.cons}}命</span></div> <div class="char-lv">UID {{uid}} - Lv.{{data.level}}
<div> <span class="cons cons-{{data.cons}}">{{data.cons}}命</span></div>
{{if mode !== 'weapon'}} <div>
<div class="char-talents"> {{if mode !== 'weapon'}}
{{each talentMap tName key}} <div class="char-talents">
{{set talent = data.talent[key] || {} }} {{each talentMap tName key}}
<div class="talent-item"> {{set talent = data.talent[key] || {} }}
<div class="talent-icon <div class="talent-item">
<div class="talent-icon
{{talent.level > talent.original ? `talent-plus`:``}} {{talent.level > talent.original ? `talent-plus`:``}}
{{talent.original >= 10 ? `talent-crown`:``}}"> {{talent.original >= 10 ? `talent-crown`:``}}">
<div class="talent-icon-img" <div class="talent-icon-img"
style="background-image:url({{_res_path}}{{imgs[key]}})"></div> style="background-image:url({{_res_path}}{{imgs[key]}})"></div>
<span>{{talent.level}}</span> <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>
</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}} {{/if}}
{{/each}} </div>
</ul> </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}} {{/if}}
</div> </div>
{{/each}}
</div> </div>
{{/if}}
</div>
{{if changeProfile}}
<!-- 【 伤害表格 】 -->
{{ set {dmgRet, dmgCfg, enemyLv, enemyName, dmgMsg, dmgData} = dmgCalc }}
<div>
{{if mode === "profile"}}
<div class="cont"> <div class="cont">
<div class="cont-footer dmg-desc"> <div class="cont-footer dmg-desc">
当前评分为<strong>喵喵版评分规则</strong>,分值仅供参考与娱乐。可使用<strong>#{{data.abbr}}圣遗物</strong>来查看评分详情 <strong>该面板为非实际数据。当前替换命令:</strong> {{changeProfile}}
</div> </div>
</div> </div>
{{/if}} {{/if}}
{{if dmgData?.length > 0}} <!-- 【 武器+圣遗物列表】 -->
<div class="dmg-cont dmg-list cont"> <div>
<div class="cont-title"> {{if mode === "profile"}}
伤害计算<span>目标为{{enemyLv}}级{{enemyName||'小宝'}},如需调整等级可使用 #敌人等级{{enemyLv}} 来进行设置</span> {{set ad = artisDetail}}
</div> <div class="artis">
<div class="cont-table"> <div class="artis-weapon">
<div class="tr thead"> <div class="item weapon">
<div class="title dmg-idx">#</div> <div class="img" style="background-image:url({{_res_path}}{{weapon.img}})"></div>
<div class="title dmg-title">伤害类型</div> <div class="head">
<div>暴击伤害</div> <strong>{{weapon.name}}</strong>
<div>平均伤害(计算暴击率)</div> <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> </div>
{{each dmgData dmg idx}} {{each ad.artis ds idx}}
<div class="dmg tr"> <div class="item arti">
<div class="title dmg-idx">{{idx+1}}</div> {{if ds && ds.name && ds.main && ds.main.key && ds.main.key!="undefined"}}
<div class="title dmg-title">{{dmg.title}}</div> <div class="arti-icon">
{{if dmg.dmg === "NaN"}} <div class="img" style="background-image:url({{_res_path}}{{ds.img}})"></div>
<div class="value value-full">{{dmg.avg}}{{dmg.unit}}</div> <span>+{{ds.level}}</span>
<div class="value value-none"></div> </div>
{{else}} <div class="head">
<div class="value">{{dmg.dmg}}{{dmg.unit}}</div> <strong>{{ds.name}}</strong>
<div class="value">{{dmg.avg}}{{dmg.unit}}</div> <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}} {{/if}}
</div> </div>
{{/each}} {{/each}}
</div> </div>
<div class="cont-footer dmg-desc"> {{/if}}
使用命令<strong>#{{data.abbr}}伤害</strong>可以查看伤害详情,使用命令<strong>#角色面板帮助</strong>可查看帮助说明
</div>
</div> </div>
{{/if}}
</div>
<!-- 【 伤害变化详情 】 -->
<div> <!-- 【 伤害表格 】 -->
{{if mode === "dmg"}} {{ set {dmgRet, dmgCfg, enemyLv, enemyName, dmgMsg, dmgData} = dmgCalc }}
{{if dmgCfg && dmgCfg.attr && dmgCfg.attr.length>0 && dmgRet}} <div>
<div class="dmg-calc dmg-cont cont"> {{if mode === "profile"}}
<div class="cont-title"> <div class="cont">
词条伤害计算<span>#{{data.abbr}}伤害{{dmgCfg.userIdx+1}}: 当前计算为[{{dmgCfg.title}}]</span> <div class="cont-footer dmg-desc">
当前评分为<strong>喵喵版评分规则</strong>,分值仅供参考与娱乐。可使用<strong>#{{data.abbr}}圣遗物</strong>来查看评分详情
</div>
</div> </div>
<div class="cont-table"> {{/if}}
<div class="tr thead ">
<div class="td">词条变化</div> {{if dmgData?.length > 0}}
{{each dmgCfg.attr attr}} <div class="dmg-cont dmg-list cont">
<div class="td"> <div class="cont-title">
<strong>{{attr.title}}</strong> 伤害计算<span>目标为{{enemyLv}}级{{enemyName||'小宝'}},如需调整等级可使用 #敌人等级{{enemyLv}} 来进行设置</span>
<span>+{{attr.text}}</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> </div>
{{/each}} {{/each}}
</div> </div>
{{each dmgRet row rowIdx}} <div class="cont-footer dmg-desc">
<div class="tr"> 使用命令<strong>#{{data.abbr}}伤害</strong>可以查看伤害详情,使用命令<strong>#角色面板帮助</strong>可查看帮助说明
<div class="title"> </div>
<strong>{{dmgCfg.attr[rowIdx].title}}</strong> </div>
<span>-{{dmgCfg.attr[rowIdx].text}}</span> {{/if}}
</div> </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 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> </div>
{{/if}}
{{/each}} {{/each}}
</div> </div>
{{/each}} <div class="cont-footer dmg-desc">
</div> <ul>
<div class="cont-footer dmg-desc"> <li>大数字的含义为圣遗物副词条置换后<strong>平均伤害</strong>的变化,下方的详情数字为<strong>平均伤害</strong>/<strong>暴击伤害</strong></li>
<ul> <li>关于<strong>平均伤害</strong>:是将暴击率计算在内的伤害期望,能反映综合的输出能力,不等于实际伤害数字。</li>
<li>大数字的含义为圣遗物副词条置换后<strong>平均伤害</strong>的变化,下方的详情数字为<strong>平均伤害</strong>/<strong>暴击伤害</strong></li> <li>可用于评估当前面板下圣遗物副词条的侧重方向。实际游戏情况更加复杂,结果供参考~</li>
<li>关于<strong>平均伤害</strong>:是将暴击率计算在内的伤害期望,能反映综合的输出能力,不等于实际伤害数字。</li> <li>如需更换计算的伤害类型,可使用命令 <strong>#{{data.abbr}}伤害+序号</strong>来切换,序号参见伤害计算板块</li>
<li>可用于评估当前面板下圣遗物副词条的侧重方向。实际游戏情况更加复杂,结果供参考~</li> </ul>
<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> </div>
{{/each}}
</div> </div>
</div> {{/if}}
{{/if}}
</div>
<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}} {{/block}}

View File

@ -1030,3 +1030,20 @@ body {
line-height: 20px; line-height: 20px;
color: #bbb; 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;
}
}

View File

@ -1,21 +1,22 @@
<!DOCTYPE html> <!DOCTYPE html>
<html lang="zh-cn"> <html lang="zh-cn">
<head> <head>
<meta charset="utf-8"> <meta charset="utf-8">
<meta name="viewport" content="width=device-width"> <meta name="viewport" content="width=device-width">
<link rel="shortcut icon" href="#"/> <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/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/NZBZ.woff" as="font" type="font/woff">
<link rel="preload" href="{{_miao_path}}common/font/tttgbnumber.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"/> <link rel="stylesheet" type="text/css" href="{{_miao_path}}common/common.css"/>
<title>miao-plugin</title> <title>miao-plugin</title>
{{block 'css'}} {{block 'css'}}
{{/block}} {{/block}}
</head> </head>
<body class="elem-{{element||elem||`hydro`}} {{displayMode || mode || `default`}}-mode {{bodyClass}}" {{sys.scale}}> {{set elemCls = {火:'pyro',冰:'cryo',风:'anemo',雷:'electro',量子:'electro',虚数:'geo',物理:'hydro', }[element||elem] || element || elem || 'hydro' }}
<div class="container elem-bg" id="container"> <body class="elem-{{elemCls}} {{displayMode || mode || `default`}}-mode {{bodyClass}}" {{sys.scale}}>
{{block 'main'}}{{/block}} <div class="container elem-bg" id="container">
<div class="copyright">{{@copyright || sys?.copyright}}</div> {{block 'main'}}{{/block}}
</div> <div class="copyright">{{@copyright || sys?.copyright}}</div>
</body> </div>
</body>
</html> </html>

View File

@ -1,130 +1,175 @@
{ {
"mainIdx": { "mainIdx": {
"1": [ "1": {
"hp" "1": "hpPlus"
], },
"2": [ "2": {
"atk" "1": "atkPlus"
], },
"3": [ "3": {
"hpPct", "1": "hp",
"atkPct", "2": "atk",
"defPct", "3": "def",
"cpct", "4": "cpct",
"cdmg", "5": "cdmg",
"heal", "6": "heal",
"effPct" "7": "effPct"
], },
"4": [ "4": {
"hpPct", "1": "hp",
"atkPct", "2": "atk",
"defPct", "3": "def",
"speed" "4": "speed"
], },
"5": [ "5": {
"hpPct", "1": "hp",
"atkPct", "2": "atk",
"defPct", "3": "def",
"phy", "4": "phy",
"fire", "5": "fire",
"ice", "6": "ice",
"elec", "7": "elec",
"wind", "8": "wind",
"quantum", "9": "quantum",
"imaginary" "10": "imaginary"
], },
"6": [ "6": {
"stance", "1": "stance",
"recharge", "2": "recharge",
"hpPct", "3": "hp",
"atkPct", "4": "atk",
"defPct" "5": "def"
] }
}, },
"starData": { "starData": {
"2": { "2": {
"main": { "main": {
"1": { "hpPlus": {
"key": "stance", "id": "1",
"base": 0.04147200076840818, "base": 45.158399999840185,
"step": 0.014515000162646174 "step": 15.805440000956878
}, },
"2": { "atkPlus": {
"key": "recharge", "id": "1",
"base": 0.01244200044311583, "base": 22.579200000036508,
"step": 0.004355000331997871 "step": 7.902720001293346
}, },
"3": { "hp": {
"key": "hpPct", "id": "3",
"base": 0.027648000279441476, "base": 2.7648000279441476,
"step": 0.009677000343799591 "step": 0.9677000343799591
}, },
"4": { "atk": {
"key": "atkPct", "id": "4",
"base": 0.027648000279441476, "base": 2.7648000279441476,
"step": 0.009677000343799591 "step": 0.9677000343799591
}, },
"5": { "def": {
"key": "defPct", "id": "5",
"base": 0.03456000052392483, "base": 3.4560000523924828,
"step": 0.012096000602468848 "step": 1.2096000602468848
}, },
"6": { "cpct": {
"key": "ice", "id": "4",
"base": 0.024883000878617167, "base": 2.0736000733450055,
"step": 0.008708999957889318 "step": 0.7258000085130334
}, },
"7": { "cdmg": {
"key": "elec", "id": "5",
"base": 0.024883000878617167, "base": 4.147200076840818,
"step": 0.008708999957889318 "step": 1.4515000162646174
}, },
"8": { "heal": {
"key": "wind", "id": "6",
"base": 0.024883000878617167, "base": 2.2118000080808997,
"step": 0.008708999957889318 "step": 0.7741000270470977
}, },
"9": { "effPct": {
"key": "quantum", "id": "7",
"base": 0.024883000878617167, "base": 2.7648000279441476,
"step": 0.008708999957889318 "step": 0.9677000343799591
}, },
"10": { "speed": {
"key": "imaginary", "id": "4",
"base": 0.024883000878617167, "base": 1.6128000009339303,
"step": 0.008708999957889318 "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": { "sub": {
"1": { "1": {
"key": "hp", "key": "hpPlus",
"base": 13.548016000073403, "base": 13.548016000073403,
"step": 1.693502000765875 "step": 1.693502000765875
}, },
"2": { "2": {
"key": "atk", "key": "atkPlus",
"base": 6.774008000502363, "base": 6.774008000502363,
"step": 0.8467510011978447 "step": 0.8467510011978447
}, },
"3": { "3": {
"key": "def", "key": "defPlus",
"base": 6.774008000502363, "base": 6.774008000502363,
"step": 0.8467510011978447 "step": 0.8467510011978447
}, },
"4": { "4": {
"key": "hpPct", "key": "hp",
"base": 0.013824000488966703, "base": 1.3824000488966703,
"step": 0.0017280005849897861 "step": 0.17280005849897861
}, },
"5": { "5": {
"key": "atkPct", "key": "atk",
"base": 0.013824000488966703, "base": 1.3824000488966703,
"step": 0.0017280005849897861 "step": 0.17280005849897861
}, },
"6": { "6": {
"key": "defPct", "key": "def",
"base": 0.017280000261962414, "base": 1.7280000261962414,
"step": 0.002160000381991267 "step": 0.21600003819912672
}, },
"7": { "7": {
"key": "speed", "key": "speed",
@ -133,114 +178,159 @@
}, },
"8": { "8": {
"key": "cpct", "key": "cpct",
"base": 0.010368000715970993, "base": 1.0368000715970993,
"step": 0.001296000787988305 "step": 0.1296000787988305
}, },
"9": { "9": {
"key": "cdmg", "key": "cdmg",
"base": 0.020736000733450055, "base": 2.0736000733450055,
"step": 0.0025920008774846792 "step": 0.2592000877484679
}, },
"10": { "10": {
"key": "effPct", "key": "effPct",
"base": 0.013824000488966703, "base": 1.3824000488966703,
"step": 0.0017280005849897861 "step": 0.17280005849897861
}, },
"11": { "11": {
"key": "effDef", "key": "effDef",
"base": 0.013824000488966703, "base": 1.3824000488966703,
"step": 0.0017280005849897861 "step": 0.17280005849897861
}, },
"12": { "12": {
"key": "stance", "key": "stance",
"base": 0.020736000733450055, "base": 2.0736000733450055,
"step": 0.0025920008774846792 "step": 0.2592000877484679
} }
} }
}, },
"3": { "3": {
"main": { "main": {
"1": { "hpPlus": {
"key": "stance", "id": "1",
"base": 0.06220800010487437, "base": 67.73760000057518,
"step": 0.02177300094626844 "step": 23.70816000062041
}, },
"2": { "atkPlus": {
"key": "recharge", "id": "1",
"base": 0.018662000307813287, "base": 33.868800000753254,
"step": 0.006532000144943595 "step": 11.854080001125112
}, },
"3": { "hp": {
"key": "hpPct", "id": "3",
"base": 0.04147200076840818, "base": 4.147200076840818,
"step": 0.014515000162646174 "step": 1.4515000162646174
}, },
"4": { "atk": {
"key": "atkPct", "id": "4",
"base": 0.04147200076840818, "base": 4.147200076840818,
"step": 0.014515000162646174 "step": 1.4515000162646174
}, },
"5": { "def": {
"key": "defPct", "id": "5",
"base": 0.05184000078588724, "base": 5.184000078588724,
"step": 0.018143999855965376 "step": 1.8143999855965376
}, },
"6": { "cpct": {
"key": "ice", "id": "4",
"base": 0.037324999924749136, "base": 3.1104000052437186,
"step": 0.01306400028988719 "step": 1.0886001167818904
}, },
"7": { "cdmg": {
"key": "elec", "id": "5",
"base": 0.037324999924749136, "base": 6.220800010487437,
"step": 0.01306400028988719 "step": 2.177300094626844
}, },
"8": { "heal": {
"key": "wind", "id": "6",
"base": 0.037324999924749136, "base": 3.3178000478073955,
"step": 0.01306400028988719 "step": 1.1612000409513712
}, },
"9": { "effPct": {
"key": "quantum", "id": "7",
"base": 0.037324999924749136, "base": 4.147200076840818,
"step": 0.01306400028988719 "step": 1.4515000162646174
}, },
"10": { "speed": {
"key": "imaginary", "id": "4",
"base": 0.037324999924749136, "base": 2.4191999998874962,
"step": 0.01306400028988719 "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": { "sub": {
"1": { "1": {
"key": "hp", "key": "hpPlus",
"base": 20.32202300033532, "base": 20.32202300033532,
"step": 2.540253001032397 "step": 2.540253001032397
}, },
"2": { "2": {
"key": "atk", "key": "atkPlus",
"base": 10.161012000171468, "base": 10.161012000171468,
"step": 1.2701260005123913 "step": 1.2701260005123913
}, },
"3": { "3": {
"key": "def", "key": "defPlus",
"base": 10.161012000171468, "base": 10.161012000171468,
"step": 1.2701260005123913 "step": 1.2701260005123913
}, },
"4": { "4": {
"key": "hpPct", "key": "hp",
"base": 0.020736000733450055, "base": 2.0736000733450055,
"step": 0.0025920008774846792 "step": 0.2592000877484679
}, },
"5": { "5": {
"key": "atkPct", "key": "atk",
"base": 0.020736000733450055, "base": 2.0736000733450055,
"step": 0.0025920008774846792 "step": 0.2592000877484679
}, },
"6": { "6": {
"key": "defPct", "key": "def",
"base": 0.02592000039294362, "base": 2.592000039294362,
"step": 0.0032400002237409353 "step": 0.32400002237409353
}, },
"7": { "7": {
"key": "speed", "key": "speed",
@ -249,114 +339,159 @@
}, },
"8": { "8": {
"key": "cpct", "key": "cpct",
"base": 0.015552000375464559, "base": 1.5552000375464559,
"step": 0.0019440008327364922 "step": 0.19440008327364922
}, },
"9": { "9": {
"key": "cdmg", "key": "cdmg",
"base": 0.031104000052437186, "base": 3.1104000052437186,
"step": 0.0038880009669810534 "step": 0.38880009669810534
}, },
"10": { "10": {
"key": "effPct", "key": "effPct",
"base": 0.020736000733450055, "base": 2.0736000733450055,
"step": 0.0025920008774846792 "step": 0.2592000877484679
}, },
"11": { "11": {
"key": "effDef", "key": "effDef",
"base": 0.020736000733450055, "base": 2.0736000733450055,
"step": 0.0025920008774846792 "step": 0.2592000877484679
}, },
"12": { "12": {
"key": "stance", "key": "stance",
"base": 0.031104000052437186, "base": 3.1104000052437186,
"step": 0.0038880009669810534 "step": 0.38880009669810534
} }
} }
}, },
"4": { "4": {
"main": { "main": {
"1": { "hpPlus": {
"key": "stance", "id": "1",
"base": 0.08294400083832443, "base": 90.31680000037886,
"step": 0.029029999626800418 "step": 31.610880001680925
}, },
"2": { "atkPlus": {
"key": "recharge", "id": "1",
"base": 0.024883000878617167, "base": 45.158399999840185,
"step": 0.008708999957889318 "step": 15.805440000956878
}, },
"3": { "hp": {
"key": "hpPct", "id": "3",
"base": 0.05529600055888295, "base": 5.529600055888295,
"step": 0.01935399998910725 "step": 1.9353999989107251
}, },
"4": { "atk": {
"key": "atkPct", "id": "4",
"base": 0.05529600055888295, "base": 5.529600055888295,
"step": 0.01935399998910725 "step": 1.9353999989107251
}, },
"5": { "def": {
"key": "defPct", "id": "5",
"base": 0.0691199996508658, "base": 6.911999965086579,
"step": 0.024192000506445765 "step": 2.4192000506445765
}, },
"6": { "cpct": {
"key": "ice", "id": "4",
"base": 0.04976600036025047, "base": 4.147200076840818,
"step": 0.017417999915778637 "step": 1.4515000162646174
}, },
"7": { "cdmg": {
"key": "elec", "id": "5",
"base": 0.04976600036025047, "base": 8.294400083832443,
"step": 0.017417999915778637 "step": 2.902999962680042
}, },
"8": { "heal": {
"key": "wind", "id": "6",
"base": 0.04976600036025047, "base": 4.423700016923249,
"step": 0.017417999915778637 "step": 1.5483000548556447
}, },
"9": { "effPct": {
"key": "quantum", "id": "7",
"base": 0.04976600036025047, "base": 5.529600055888295,
"step": 0.017417999915778637 "step": 1.9353999989107251
}, },
"10": { "speed": {
"key": "imaginary", "id": "4",
"base": 0.04976600036025047, "base": 3.225600000238046,
"step": 0.017417999915778637 "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": { "sub": {
"1": { "1": {
"key": "hp", "key": "hpPlus",
"base": 27.09603099990636, "base": 27.09603099990636,
"step": 3.3870039999019355 "step": 3.3870039999019355
}, },
"2": { "2": {
"key": "atk", "key": "atkPlus",
"base": 13.548016000073403, "base": 13.548016000073403,
"step": 1.693502000765875 "step": 1.693502000765875
}, },
"3": { "3": {
"key": "def", "key": "defPlus",
"base": 13.548016000073403, "base": 13.548016000073403,
"step": 1.693502000765875 "step": 1.693502000765875
}, },
"4": { "4": {
"key": "hpPct", "key": "hp",
"base": 0.027648000279441476, "base": 2.7648000279441476,
"step": 0.0034560004714876413 "step": 0.34560004714876413
}, },
"5": { "5": {
"key": "atkPct", "key": "atk",
"base": 0.027648000279441476, "base": 2.7648000279441476,
"step": 0.0034560004714876413 "step": 0.34560004714876413
}, },
"6": { "6": {
"key": "defPct", "key": "def",
"base": 0.03456000052392483, "base": 3.4560000523924828,
"step": 0.0043200000654906034 "step": 0.43200000654906034
}, },
"7": { "7": {
"key": "speed", "key": "speed",
@ -365,114 +500,159 @@
}, },
"8": { "8": {
"key": "cpct", "key": "cpct",
"base": 0.020736000733450055, "base": 2.0736000733450055,
"step": 0.0025920008774846792 "step": 0.2592000877484679
}, },
"9": { "9": {
"key": "cdmg", "key": "cdmg",
"base": 0.04147200076840818, "base": 4.147200076840818,
"step": 0.0051840003579854965 "step": 0.5184000357985497
}, },
"10": { "10": {
"key": "effPct", "key": "effPct",
"base": 0.027648000279441476, "base": 2.7648000279441476,
"step": 0.0034560004714876413 "step": 0.34560004714876413
}, },
"11": { "11": {
"key": "effDef", "key": "effDef",
"base": 0.027648000279441476, "base": 2.7648000279441476,
"step": 0.0034560004714876413 "step": 0.34560004714876413
}, },
"12": { "12": {
"key": "stance", "key": "stance",
"base": 0.04147200076840818, "base": 4.147200076840818,
"step": 0.0051840003579854965 "step": 0.5184000357985497
} }
} }
}, },
"5": { "5": {
"main": { "main": {
"1": { "hpPlus": {
"key": "stance", "id": "1",
"base": 0.10368000087328255, "base": 112.89600000041537,
"step": 0.03628800041042268 "step": 39.513600000645965
}, },
"2": { "atkPlus": {
"key": "recharge", "id": "1",
"base": 0.031104000052437186, "base": 56.44799999985844,
"step": 0.010886001167818904 "step": 19.756800000788644
}, },
"3": { "hp": {
"key": "hpPct", "id": "3",
"base": 0.0691199996508658, "base": 6.911999965086579,
"step": 0.024192000506445765 "step": 2.4192000506445765
}, },
"4": { "atk": {
"key": "atkPct", "id": "4",
"base": 0.0691199996508658, "base": 6.911999965086579,
"step": 0.024192000506445765 "step": 2.4192000506445765
}, },
"5": { "def": {
"key": "defPct", "id": "5",
"base": 0.08639999991282821, "base": 8.63999999128282,
"step": 0.030240000458434224 "step": 3.0240000458434224
}, },
"6": { "cpct": {
"key": "ice", "id": "4",
"base": 0.06220800010487437, "base": 5.184000078588724,
"step": 0.02177300094626844 "step": 1.8143999855965376
}, },
"7": { "cdmg": {
"key": "elec", "id": "5",
"base": 0.06220800010487437, "base": 10.368000087328255,
"step": 0.02177300094626844 "step": 3.6288000410422683
}, },
"8": { "heal": {
"key": "wind", "id": "6",
"base": 0.06220800010487437, "base": 5.529600055888295,
"step": 0.02177300094626844 "step": 1.9353999989107251
}, },
"9": { "effPct": {
"key": "quantum", "id": "7",
"base": 0.06220800010487437, "base": 6.911999965086579,
"step": 0.02177300094626844 "step": 2.4192000506445765
}, },
"10": { "speed": {
"key": "imaginary", "id": "4",
"base": 0.06220800010487437, "base": 4.031999999890104,
"step": 0.02177300094626844 "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": { "sub": {
"1": { "1": {
"key": "hp", "key": "hpPlus",
"base": 33.870039001107216, "base": 33.870039001107216,
"step": 4.23375500086695 "step": 4.23375500086695
}, },
"2": { "2": {
"key": "atk", "key": "atkPlus",
"base": 16.935019000666216, "base": 16.935019000666216,
"step": 2.1168770007789135 "step": 2.1168770007789135
}, },
"3": { "3": {
"key": "def", "key": "defPlus",
"base": 16.935019000666216, "base": 16.935019000666216,
"step": 2.1168770007789135 "step": 2.1168770007789135
}, },
"4": { "4": {
"key": "hpPct", "key": "hp",
"base": 0.03456000052392483, "base": 3.4560000523924828,
"step": 0.0043200000654906034 "step": 0.43200000654906034
}, },
"5": { "5": {
"key": "atkPct", "key": "atk",
"base": 0.03456000052392483, "base": 3.4560000523924828,
"step": 0.0043200000654906034 "step": 0.43200000654906034
}, },
"6": { "6": {
"key": "defPct", "key": "def",
"base": 0.043199999956414104, "base": 4.31999999564141,
"step": 0.005399999907240272 "step": 0.5399999907240272
}, },
"7": { "7": {
"key": "speed", "key": "speed",
@ -481,28 +661,28 @@
}, },
"8": { "8": {
"key": "cpct", "key": "cpct",
"base": 0.02592000039294362, "base": 2.592000039294362,
"step": 0.0032400002237409353 "step": 0.32400002237409353
}, },
"9": { "9": {
"key": "cdmg", "key": "cdmg",
"base": 0.05184000078588724, "base": 5.184000078588724,
"step": 0.006480000447481871 "step": 0.6480000447481871
}, },
"10": { "10": {
"key": "effPct", "key": "effPct",
"base": 0.03456000052392483, "base": 3.4560000523924828,
"step": 0.0043200000654906034 "step": 0.43200000654906034
}, },
"11": { "11": {
"key": "effDef", "key": "effDef",
"base": 0.03456000052392483, "base": 3.4560000523924828,
"step": 0.0043200000654906034 "step": 0.43200000654906034
}, },
"12": { "12": {
"key": "stance", "key": "stance",
"base": 0.05184000078588724, "base": 5.184000078588724,
"step": 0.006480000447481871 "step": 0.6480000447481871
} }
} }
} }

Binary file not shown.

Before

Width:  |  Height:  |  Size: 831 KiB

After

Width:  |  Height:  |  Size: 554 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 870 KiB

After

Width:  |  Height:  |  Size: 452 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 855 KiB

After

Width:  |  Height:  |  Size: 534 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 541 KiB

After

Width:  |  Height:  |  Size: 353 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 476 KiB

After

Width:  |  Height:  |  Size: 270 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 448 KiB

After

Width:  |  Height:  |  Size: 287 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 707 KiB

After

Width:  |  Height:  |  Size: 358 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 460 KiB

After

Width:  |  Height:  |  Size: 328 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 690 KiB

After

Width:  |  Height:  |  Size: 408 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 802 KiB

After

Width:  |  Height:  |  Size: 477 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 639 KiB

After

Width:  |  Height:  |  Size: 382 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 874 KiB

After

Width:  |  Height:  |  Size: 545 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 621 KiB

After

Width:  |  Height:  |  Size: 348 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 507 KiB

After

Width:  |  Height:  |  Size: 327 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 517 KiB

After

Width:  |  Height:  |  Size: 338 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 680 KiB

After

Width:  |  Height:  |  Size: 389 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 634 KiB

After

Width:  |  Height:  |  Size: 410 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 727 KiB

After

Width:  |  Height:  |  Size: 424 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 656 KiB

After

Width:  |  Height:  |  Size: 416 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 715 KiB

After

Width:  |  Height:  |  Size: 432 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 585 KiB

After

Width:  |  Height:  |  Size: 438 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 830 KiB

After

Width:  |  Height:  |  Size: 450 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 742 KiB

After

Width:  |  Height:  |  Size: 369 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 717 KiB

After

Width:  |  Height:  |  Size: 428 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 533 KiB

After

Width:  |  Height:  |  Size: 343 KiB