From 0292db43501328a43e7e23a4c07695d6e69eba7d Mon Sep 17 00:00:00 2001 From: Kokomi <102026640+yoimiya-kokomi@users.noreply.github.com> Date: Sun, 12 Feb 2023 19:56:47 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96Enka=E4=B8=8B=E5=AF=B9?= =?UTF-8?q?=E5=9C=A3=E9=81=97=E7=89=A9=E8=AF=8D=E6=9D=A1PropIds=E7=9A=84?= =?UTF-8?q?=E5=A4=84=E7=90=86=E9=80=BB=E8=BE=91=EF=BC=8C=E4=BD=BF=E5=B1=9E?= =?UTF-8?q?=E6=80=A7=E8=AE=A1=E7=AE=97=E6=9B=B4=E5=87=86=E7=A1=AE=20?= =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E9=83=A8=E5=88=86=E6=83=85=E5=86=B5=E4=B8=8B?= =?UTF-8?q?=E8=87=AA=E5=AE=9A=E4=B9=89=E9=9D=A2=E6=9D=BF=E5=9B=BE=E4=B8=8D?= =?UTF-8?q?=E5=B1=95=E7=A4=BA=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/profile/ProfileArtis.js | 2 +- apps/profile/ProfileDetail.js | 4 +- models/Artifact.js | 20 +- models/AvatarArtis.js | 2 +- models/Character.js | 150 ++- models/ProfileData.js | 25 +- models/character-lib/CharImg.js | 12 +- resources/character/profile-detail.html | 2 +- resources/meta/artifact/meta.js | 1400 +++++------------------ 9 files changed, 365 insertions(+), 1252 deletions(-) diff --git a/apps/profile/ProfileArtis.js b/apps/profile/ProfileArtis.js index 7bb81342..74891d22 100644 --- a/apps/profile/ProfileArtis.js +++ b/apps/profile/ProfileArtis.js @@ -43,7 +43,7 @@ export async function profileArtis (e) { return await Common.render('character/artis-mark', { uid, elem: char.elem, - splash: char.getImgs(profile.costume).splash0, + splash: profile.costumeSplash, data: profile, costume: profile.costume ? '2' : '', artisDetail, diff --git a/apps/profile/ProfileDetail.js b/apps/profile/ProfileDetail.js index 01e56d2a..72c9a1dc 100644 --- a/apps/profile/ProfileDetail.js +++ b/apps/profile/ProfileDetail.js @@ -195,6 +195,7 @@ export async function renderProfile (e, char, mode = 'profile', params = {}) { let artisDetail = profile.getArtisMark() let artisKeyTitle = ProfileArtis.getArtisKeyTitle() let imgs = char.getImgs(profile.costume) + let costumeSplash = profile.costumeSplash // 渲染图像 let msgRes = await Common.render('character/profile-detail', { save_id: uid, @@ -210,6 +211,7 @@ export async function renderProfile (e, char, mode = 'profile', params = {}) { artisKeyTitle, enemyLv, imgs, + costumeSplash, enemyName: dmgCalc.enemyName || '小宝', talentMap: { a: '普攻', e: '战技', q: '爆发' }, bodyClass: `char-${char.name}`, @@ -218,7 +220,7 @@ export async function renderProfile (e, char, mode = 'profile', params = {}) { }, { e, scale: 1.6, retMsgId: true }) if (msgRes && msgRes.message_id) { // 如果消息发送成功,就将message_id和图片路径存起来,3小时过期 - await redis.set(`miao:original-picture:${msgRes.message_id}`, imgs.splash0, { EX: 3600 * 3 }) + await redis.set(`miao:original-picture:${msgRes.message_id}`, costumeSplash, { EX: 3600 * 3 }) } return true } diff --git a/models/Artifact.js b/models/Artifact.js index 029764f1..edcadd2f 100644 --- a/models/Artifact.js +++ b/models/Artifact.js @@ -58,22 +58,24 @@ class Artifact extends Base { } } - static getMainById (id, level = 20, star) { - let cfg = mainIdMap[id] - if (!cfg) { + static getMainById (id, level = 20, star = 5) { + let key = mainIdMap[id] + if (!key) { return false } - let attrCfg = attrMap[Format.isElem(cfg.key) ? 'dmg' : cfg.key] - let eff = ['hpPlus', 'atkPlus', 'defPlus'].includes(cfg.key) ? 2 : 1 + let attrCfg = attrMap[Format.isElem(key) ? 'dmg' : key] + let posEff = ['hpPlus', 'atkPlus', 'defPlus'].includes(key) ? 2 : 1 + let starEff = { 1: 0.21, 2: 0.36, 3: 0.6, 4: 0.9, 5: 1 } return { - key: cfg.key, - value: attrCfg.value * (1.2 + 0.34 * level) * eff + key, + value: attrCfg.value * (1.2 + 0.34 * level) * posEff * (starEff[star || 5]) } } - static getAttrsByIds (ids) { + static getAttrsByIds (ids, star = 5) { let ret = [] let tmp = {} + let starEff = { 1: 0.21, 2: 0.36, 3: 0.6, 4: 0.8, 5: 1 } lodash.forEach(ids, (id) => { let cfg = attrIdMap[id] if (!cfg) { @@ -93,7 +95,7 @@ class Artifact extends Base { }) lodash.forEach(tmp, (ds, key) => { if (attrMap[key]) { - ds.value = attrMap[key].value * ds.eff + ds.value = attrMap[key].value * ds.eff * starEff[star] } }) return ret diff --git a/models/AvatarArtis.js b/models/AvatarArtis.js index 07127af1..60b3795e 100644 --- a/models/AvatarArtis.js +++ b/models/AvatarArtis.js @@ -87,7 +87,7 @@ export default class AvatarArtis extends Base { arti.mainId = ds.mainId arti.attrIds = ds.attrIds arti.main = Artifact.getMainById(ds.mainId, arti._level, arti._star) - arti.attrs = Artifact.getAttrsByIds(ds.attrIds) + arti.attrs = Artifact.getAttrsByIds(ds.attrIds, arti._star) } else if (ds.main && ds.attrs) { arti.main = ArtisMark.formatAttr(ds.main || {}) arti.attrs = [] diff --git a/models/Character.js b/models/Character.js index b46cc88b..3774c905 100644 --- a/models/Character.js +++ b/models/Character.js @@ -20,6 +20,9 @@ let getMeta = function (name) { } class Character extends Base { + // 默认获取的数据 + _dataKey = 'id,name,abbr,title,star,elem,allegiance,weapon,birthday,astro,cncv,jpcv,ver,desc,talentCons' + constructor ({ id, name = '', elem = '' }) { super() // 检查缓存 @@ -40,9 +43,6 @@ class Character extends Base { return this._cache() } - // 默认获取的数据 - _dataKey = 'id,name,abbr,title,star,elem,allegiance,weapon,birthday,astro,cncv,jpcv,ver,desc,talentCons' - // 是否为官方角色 get isOfficial () { return /[12]0\d{6}/.test(this._id) @@ -140,6 +140,59 @@ class Character extends Base { return this.meta?.talentCons || {} } + // 获取生日 + get birthday () { + let birth = this.birth + if (!birth) { + return '' + } + birth = birth.split('-') + return `${birth[0]}月${birth[1]}日` + } + + // 基于角色名获取Character + static get (val) { + let id = CharId.getId(val, Character.gsCfg) + if (!id) { + return false + } + return new Character(id) + } + + static forEach (fn, type = 'all') { + lodash.forEach(idMap, (name, id) => { + let char = Character.get({ id, name }) + if (type === 'release' && !char.isRelease) { + return true + } + if (type === 'official' && !char.isOfficial) { + return true + } + return fn(char) !== false + }) + } + + // 当获取角色为旅行者时,会考虑当前uid的账号情况返回对应旅行者 + static async getAvatar (name, uid) { + let char = Character.get(name) + return await char.getTraveler(uid) + } + + // TODO:待废弃 + static getAbbr () { + return abbrMap + } + + // TODO:待废弃 + static checkWifeType (charid, type) { + return !!wifeMap[type][charid] + } + + // 获取排序ID + static sortIds (arr) { + return arr.sort((a, b) => (idSort[a] || 300) - (idSort[b] || 300)) + } + // 获取attr列表 getAttrList () { let { meta } = this @@ -151,16 +204,6 @@ class Character extends Base { return CharMeta.getMaterials(this, type) } - // 获取生日 - get birthday () { - let birth = this.birth - if (!birth) { - return '' - } - birth = birth.split('-') - return `${birth[0]}月${birth[1]}日` - } - // 获取角色character-img图片 getCardImg (se = false, def = true) { if (this.name === '旅行者') { @@ -169,6 +212,8 @@ class Character extends Base { return CharImg.getCardImg(this.name, se, def) } + // 设置旅行者数据 + getAvatarTalent (talent = {}, cons = 0, mode = 'original') { return CharTalent.getAvatarTalent(this.id, talent, cons, mode, this.talentCons) } @@ -192,34 +237,22 @@ class Character extends Base { // 获取角色插画 getImgs (costume = '') { - if (!lodash.isArray(costume)) { - costume = [costume, false] + if (lodash.isArray(costume)) { + costume = costume[0] } - let costumeCfg = [this.checkCostume(costume[0]) ? '2' : '', costume[1] || 'normal'] - - let cacheId = `costume${costume[0]}` + let costumeIdx = this.checkCostume(costume) ? '2' : '' + let cacheId = `costume${costumeIdx}` if (!this._imgs) { this._imgs = {} } if (!this._imgs[cacheId]) { - this._imgs[cacheId] = CharImg.getImgs(this.name, costumeCfg, this.isTraveler ? this.elem : '', this.source === 'amber' ? 'png' : 'webp') + this._imgs[cacheId] = CharImg.getImgs(this.name, costumeIdx, this.isTraveler ? this.elem : '', this.source === 'amber' ? 'png' : 'webp') } - let ret = this._imgs[cacheId] - let nPath = `meta/character/${this.name}` - if (costumeCfg[1] === 'super') { - ret.splash0 = CharImg.getRandomImg( - [`profile/super-character/${this.name}`, `profile/normal-character/${this.name}`], - [`${nPath}/imgs/splash0.webp`, `${nPath}/imgs/splash${costumeCfg[0]}.webp`, `/${nPath}/imgs/splash.webp`] - ) - } else { - ret.splash0 = CharImg.getRandomImg( - [`profile/normal-character/${this.name}`], - [`${nPath}/imgs/splash${costumeCfg[0]}.webp`, `/${nPath}/imgs/splash.webp`] - ) - } - return ret + return this._imgs[cacheId] } + // 基于角色名获取Character + // 获取详情数据 getDetail (elem = '') { if (this._detail) { @@ -242,7 +275,8 @@ class Character extends Base { return this._detail } - // 设置旅行者数据 + // 获取别名数据 + // TODO:迁移至Avatar setTraveler (uid = '') { if (this.isTraveler && uid && uid.toString().length === 9) { @@ -253,6 +287,8 @@ class Character extends Base { } } + // 检查wife类型 + // 获取旅行者数据 async getTraveler (uid) { if (this.isTraveler) { @@ -285,52 +321,6 @@ class Character extends Base { return await this.getTraveler(uid) } - // 基于角色名获取Character - static get (val) { - let id = CharId.getId(val, Character.gsCfg) - if (!id) { - return false - } - return new Character(id) - } - - static forEach (fn, type = 'all') { - lodash.forEach(idMap, (name, id) => { - let char = Character.get({ id, name }) - if (type === 'release' && !char.isRelease) { - return true - } - if (type === 'official' && !char.isOfficial) { - return true - } - return fn(char) !== false - }) - } - - // 基于角色名获取Character - // 当获取角色为旅行者时,会考虑当前uid的账号情况返回对应旅行者 - static async getAvatar (name, uid) { - let char = Character.get(name) - return await char.getTraveler(uid) - } - - // 获取别名数据 - // TODO:待废弃 - static getAbbr () { - return abbrMap - } - - // 检查wife类型 - // TODO:待废弃 - static checkWifeType (charid, type) { - return !!wifeMap[type][charid] - } - - // 获取排序ID - static sortIds (arr) { - return arr.sort((a, b) => (idSort[a] || 300) - (idSort[b] || 300)) - } - // 获取伤害计算配置 getCalcRule () { if (!this._calcRule && this._calcRule !== false) { diff --git a/models/ProfileData.js b/models/ProfileData.js index a413628e..0799be67 100644 --- a/models/ProfileData.js +++ b/models/ProfileData.js @@ -3,6 +3,7 @@ import AvatarData from './AvatarData.js' import { Data } from '../components/index.js' import { ProfileArtis, ProfileDmg } from './index.js' import AttrCalc from './profile-lib/AttrCalc.js' +import CharImg from './character-lib/CharImg.js' export default class ProfileData extends AvatarData { constructor (ds = {}, calc = true) { @@ -17,16 +18,27 @@ export default class ProfileData extends AvatarData { return this.isProfile } - get splashCostume () { + get costumeSplash () { let costume = this._costume - if (lodash.isArray(costume)) { - costume = costume[0] - } + costume = this.char.checkCostume(costume) ? '2' : '' + + let nPath = `meta/character/${this.name}` + let isSuper = false let talent = this.talent ? lodash.map(this.talent, (ds) => ds.original).join('') : '' if (this.cons === 6 || ['ACE', 'ACE²'].includes(this.artis?.markClass) || talent === '101010') { - return [costume, 'super'] + isSuper = true + } + if (isSuper) { + return CharImg.getRandomImg( + [`profile/super-character/${this.name}`, `profile/normal-character/${this.name}`], + [`${nPath}/imgs/splash0.webp`, `${nPath}/imgs/splash${costume}.webp`, `/${nPath}/imgs/splash.webp`] + ) + } else { + return CharImg.getRandomImg( + [`profile/normal-character/${this.name}`], + [`${nPath}/imgs/splash${costume}.webp`, `/${nPath}/imgs/splash.webp`] + ) } - return [costume, 'normal'] } get hasDmg () { @@ -61,7 +73,6 @@ export default class ProfileData extends AvatarData { } setArtis (ds = false) { - console.log('ds', ds.artis?.artis[1]) this.artis?.setProfile(this, ds.artis?.artis || ds.artis || ds) } diff --git a/models/character-lib/CharImg.js b/models/character-lib/CharImg.js index 27121939..08f3d8c6 100644 --- a/models/character-lib/CharImg.js +++ b/models/character-lib/CharImg.js @@ -82,10 +82,8 @@ const CharImg = { }, // 获取角色的图像资源数据 - getImgs (name, costumeCfg = '', travelerElem = '', fileType = 'webp') { - if (!lodash.isArray(costumeCfg)) { - costumeCfg = [costumeCfg, 'normal'] - } + getImgs (name, costumeIdx = '', travelerElem = '', fileType = 'webp') { + costumeIdx = costumeIdx === '2' ? '2' : '' let imgs = {} if (!['空', '荧', '旅行者'].includes(name)) { travelerElem = '' @@ -102,10 +100,10 @@ const CharImg = { let tAdd = (key, path) => { imgs[key] = `${travelerElem ? tPath : nPath}${path}.${fileType}` } - add('face', 'imgs/face', `imgs/face${costumeCfg[0]}`) - add('side', 'imgs/side', `imgs/side${costumeCfg[0]}`) + add('face', 'imgs/face', `imgs/face${costumeIdx}`) + add('side', 'imgs/side', `imgs/side${costumeIdx}`) add('gacha', 'imgs/gacha') - add('splash', 'imgs/splash', `imgs/splash${costumeCfg[0]}`) + add('splash', 'imgs/splash', `imgs/splash${costumeIdx}`) // 检查彩蛋自定义 tAdd('card', 'imgs/card') tAdd('banner', 'imgs/banner') diff --git a/resources/character/profile-detail.html b/resources/character/profile-detail.html index b0fd73d2..ac2736c8 100644 --- a/resources/character/profile-detail.html +++ b/resources/character/profile-detail.html @@ -11,7 +11,7 @@ {{block 'main'}}
+ style="background-image:url({{_res_path}}{{costumeSplash || imgs?.splash}})">
{{data.name}}
UID {{uid}} - Lv.{{data.level}} diff --git a/resources/meta/artifact/meta.js b/resources/meta/artifact/meta.js index 8fbe4c18..2a4f4cff 100644 --- a/resources/meta/artifact/meta.js +++ b/resources/meta/artifact/meta.js @@ -52,29 +52,46 @@ export const attrValue = { phy: 7.288, heal: 4.487 } -/** - * - * @type {{phy: {format: string, text: string, title: string, type: string, value: number}, def: {valueMin: number, format: string, calc: string, text: string, title: string, type: string, value: number}, hp: {valueMin: number, format: string, calc: string, text: string, title: string, type: string, value: number}, atkPlus: {valueMin: number, format: string, title: string, type: string, value: number, base: string}, hpPlus: {valueMin: number, format: string, title: string, type: string, value: number, base: string}, mastery: {valueMin: number, format: string, calc: string, text: string, title: string, type: string, value: number}, cpct: {valueMin: number, format: string, calc: string, text: string, title: string, type: string, value: number}, defPlus: {valueMin: number, format: string, title: string, type: string, value: number, base: string}, cdmg: {valueMin: number, format: string, calc: string, text: string, title: string, type: string, value: number}, recharge: {valueMin: number, format: string, calc: string, text: string, title: string, type: string, value: number}, heal: {format: string, text: string, title: string, type: string, value: number}, atk: {valueMin: number, format: string, calc: string, text: string, title: string, type: string, value: number}, dmg: {format: string, text: string, title: string, type: string, value: number}}} - */ + export const attrMap = { atk: { title: '大攻击', format: 'pct', calc: 'pct', type: 'normal', value: 5.83, text: '5.83%', valueMin: 4.08 }, atkPlus: { title: '小攻击', format: 'comma', type: 'plus', base: 'atk', value: 19.45, valueMin: 13.62 }, - def: { title: '大防御', format: 'pct', calc: 'pct', type: 'normal', value: 7.29, text: '7.29%', valueMin: 5.1 }, + def: { title: '大防御', format: 'pct', calc: 'pct', type: 'normal', value: 7.2875, text: '7.29%', valueMin: 5.1 }, defPlus: { title: '小防御', format: 'comma', type: 'plus', base: 'def', value: 23.15, valueMin: 16.2 }, hp: { title: '大生命', format: 'pct', calc: 'pct', type: 'normal', value: 5.83, text: '5.83%', valueMin: 4.08 }, hpPlus: { title: '小生命', format: 'comma', type: 'plus', base: 'hp', value: 298.75, valueMin: 209.13 }, - cpct: { title: '暴击率', format: 'pct', calc: 'plus', type: 'normal', value: 3.89, text: '3.89%', valueMin: 2.72 }, - cdmg: { title: '暴击伤害', format: 'pct', calc: 'plus', type: 'normal', value: 7.77, text: '7.77%', valueMin: 5.44 }, - mastery: { title: '元素精通', format: 'comma', calc: 'plus', type: 'normal', value: 23.31, text: '23.31', valueMin: 16.32 }, + cpct: { title: '暴击率', format: 'pct', calc: 'plus', type: 'normal', value: 3.889, text: '3.89%', valueMin: 2.72 }, + cdmg: { title: '暴击伤害', format: 'pct', calc: 'plus', type: 'normal', value: 7.778, text: '7.77%', valueMin: 5.44 }, + mastery: { title: '元素精通', format: 'comma', calc: 'plus', type: 'normal', value: 23.3125, text: '23.31', valueMin: 16.32 }, recharge: { title: '充能效率', format: 'pct', calc: 'plus', type: 'normal', value: 6.48, text: '6.48%', valueMin: 4.53 }, - dmg: { title: '元素伤害', format: 'pct', type: 'normal', value: 5.825, text: '5.83%' }, + dmg: { title: '元素伤害', format: 'pct', type: 'normal', value: 5.83, text: '5.83%' }, phy: { title: '物伤加成', format: 'pct', type: 'normal', value: 7.288, text: '7.29%' }, heal: { title: '治疗加成', format: 'pct', type: 'normal', value: 4.487, text: '4.49%' } } +let basicNum = 3.886449 +let attrPct = { + atk: 1.5, + atkPlus: 5, + def: 1.875, + defPlus: 6, + hp: 1.5, + hpPlus: 1.875 * 41, + cpct: 1, + cdmg: 2, + mastery: 6, + recharge: 1 / 0.6, + dmg: 1.5, + phy: 1.875, + heal: 1.5 / 1.3 +} let anMap = {} for (let attr in attrMap) { anMap[attrMap[attr].title] = attr + if (attrPct[attr]) { + attrMap[attr].value = basicNum * attrPct[attr] + attrMap[attr].valueMin = basicNum * attrPct[attr] * 0.7 + } } export const attrNameMap = anMap @@ -88,1142 +105,235 @@ export const mainAttr = { export const subAttr = 'atk,atkPlus,def,defPlus,hp,hpPlus,mastery,recharge,cpct,cdmg'.split(',') export const mainIdMap = { - 10001: { - depotId: 1000, - key: 'hpPlus' - }, - 10002: { - depotId: 1000, - key: 'hp', - weight: 1334 - }, - 10003: { - depotId: 1000, - key: 'atkPlus' - }, - 10004: { - depotId: 1000, - key: 'atk', - weight: 1333 - }, - 10005: { - depotId: 1000, - key: 'defPlus' - }, - 10006: { - depotId: 1000, - key: 'def', - weight: 1333 - }, - 10007: { - depotId: 1000, - key: 'recharge', - weight: 500 - }, - 10008: { - depotId: 1000, - key: 'mastery', - weight: 500 - }, - 12001: { - depotId: 2000, - key: 'atkPlus', - weight: 1000 - }, - 13001: { - depotId: 3000, - key: 'hpPlus' - }, - 13002: { - depotId: 3000, - key: 'hp', - weight: 1100 - }, - 13003: { - depotId: 3000, - key: 'atkPlus' - }, - 13004: { - depotId: 3000, - key: 'atk', - weight: 1100 - }, - 13005: { - depotId: 3000, - key: 'defPlus' - }, - 13006: { - depotId: 3000, - key: 'def', - weight: 1100 - }, - 13007: { - depotId: 3000, - key: 'cpct', - weight: 500 - }, - 13008: { - depotId: 3000, - key: 'cdmg', - weight: 500 - }, - 13009: { - depotId: 3000, - key: 'heal', - weight: 500 - }, - 13010: { - depotId: 3000, - key: 'mastery', - weight: 200 - }, - 14001: { - depotId: 4000, - key: 'hpPlus', - weight: 1000 - }, - 15001: { - depotId: 5000, - key: 'hpPlus' - }, - 15002: { - depotId: 5000, - key: 'hp', - weight: 850 - }, - 15003: { - depotId: 5000, - key: 'atkPlus' - }, - 15004: { - depotId: 5000, - key: 'atk', - weight: 850 - }, - 15005: { - depotId: 5000, - key: 'defPlus' - }, - 15006: { - depotId: 5000, - key: 'def', - weight: 800 - }, - 15007: { - depotId: 5000, - key: 'mastery', - weight: 100 - }, - 15008: { - depotId: 5000, - key: 'pyro', - weight: 200 - }, - 15009: { - depotId: 5000, - key: 'electro', - weight: 200 - }, - 15010: { - depotId: 5000, - key: 'cryo', - weight: 200 - }, - 15011: { - depotId: 5000, - key: 'hydro', - weight: 200 - }, - 15012: { - depotId: 5000, - key: 'anemo', - weight: 200 - }, - 15013: { - depotId: 5000, - key: 'geo', - weight: 200 - }, - 15014: { - depotId: 5000, - key: 'dendro' - }, - 15015: { - depotId: 5000, - key: 'phy', - weight: 200 - }, - 10990: { - depotId: 1099, - key: 'atk', - weight: 999 - }, - 10980: { - depotId: 1098, - key: 'hp', - weight: 999 - }, - 10970: { - depotId: 1097, - key: 'def', - weight: 999 - }, - 10960: { - depotId: 1096, - key: 'recharge', - weight: 999 - }, - 10950: { - depotId: 1095, - key: 'mastery', - weight: 999 - }, - 30990: { - depotId: 3099, - key: 'atk', - weight: 999 - }, - 30980: { - depotId: 3098, - key: 'hp', - weight: 999 - }, - 30970: { - depotId: 3097, - key: 'def', - weight: 999 - }, - 30960: { - depotId: 3096, - key: 'cpct', - weight: 999 - }, - 30950: { - depotId: 3095, - key: 'cdmg', - weight: 999 - }, - 30940: { - depotId: 3094, - key: 'heal', - weight: 999 - }, - 30930: { - depotId: 3093, - key: 'mastery', - weight: 999 - }, - 50990: { - depotId: 5099, - key: 'atk', - weight: 999 - }, - 50980: { - depotId: 5098, - key: 'hp', - weight: 999 - }, - 50970: { - depotId: 5097, - key: 'def', - weight: 999 - }, - 50960: { - depotId: 5096, - key: 'pyro', - weight: 999 - }, - 50950: { - depotId: 5095, - key: 'electro', - weight: 999 - }, - 50940: { - depotId: 5094, - key: 'cryo', - weight: 999 - }, - 50930: { - depotId: 5093, - key: 'hydro', - weight: 999 - }, - 50920: { - depotId: 5092, - key: 'anemo', - weight: 999 - }, - 50910: { - depotId: 5091, - key: 'geo', - weight: 999 - }, - 50900: { - depotId: 5090, - key: 'dendro', - weight: 999 - }, - 50890: { - depotId: 5089, - key: 'phy', - weight: 999 - }, - 50880: { - depotId: 5088, - key: 'mastery', - weight: 999 - } + 10001: 'hpPlus', + 10002: 'hp', + 10003: 'atkPlus', + 10004: 'atk', + 10005: 'defPlus', + 10006: 'def', + 10007: 'recharge', + 10008: 'mastery', + 12001: 'atkPlus', + 13001: 'hpPlus', + 13002: 'hp', + 13003: 'atkPlus', + 13004: 'atk', + 13005: 'defPlus', + 13006: 'def', + 13007: 'cpct', + 13008: 'cdmg', + 13009: 'heal', + 13010: 'mastery', + 14001: 'hpPlus', + 15001: 'hpPlus', + 15002: 'hp', + 15003: 'atkPlus', + 15004: 'atk', + 15005: 'defPlus', + 15006: 'def', + 15007: 'mastery', + 15008: 'pyro', + 15009: 'electro', + 15010: 'cryo', + 15011: 'hydro', + 15012: 'anemo', + 15013: 'geo', + 15014: 'dendro', + 15015: 'phy', + 10990: 'atk', + 10980: 'hp', + 10970: 'def', + 10960: 'recharge', + 10950: 'mastery', + 30990: 'atk', + 30980: 'hp', + 30970: 'def', + 30960: 'cpct', + 30950: 'cdmg', + 30940: 'heal', + 30930: 'mastery', + 50990: 'atk', + 50980: 'hp', + 50970: 'def', + 50960: 'pyro', + 50950: 'electro', + 50940: 'cryo', + 50930: 'hydro', + 50920: 'anemo', + 50910: 'geo', + 50900: 'dendro', + 50890: 'phy', + 50880: 'mastery' } - export const attrIdMap = { - 101021: { - key: 'hpPlus', - eff: 0.7998661408903833, - position: 1 - }, - 101022: { - key: 'hpPlus', - eff: 1, - position: 2 - }, - 101031: { - key: 'hp', - eff: 0.8013698223808419, - position: 1 - }, - 101032: { - key: 'hp', - eff: 1, - position: 2 - }, - 101051: { - key: 'atkPlus', - eff: 0.799999951093626, - position: 1 - }, - 101052: { - key: 'atkPlus', - eff: 1, - position: 2 - }, - 101061: { - key: 'atk', - eff: 0.8013698223808419, - position: 1 - }, - 101062: { - key: 'atk', - eff: 1, - position: 2 - }, - 101081: { - key: 'defPlus', - eff: 0.800865831025008, - position: 1 - }, - 101082: { - key: 'defPlus', - eff: 1, - position: 2 - }, - 101091: { - key: 'def', - eff: 0.8021977881396791, - position: 1 - }, - 101092: { - key: 'def', - eff: 1, - position: 2 - }, - 101201: { - key: 'cpct', - eff: 0.8041236658084417, - position: 1 - }, - 101202: { - key: 'cpct', - eff: 1, - position: 2 - }, - 101221: { - key: 'cdmg', - eff: 0.7989690355415727, - position: 1 - }, - 101222: { - key: 'cdmg', - eff: 1, - position: 2 - }, - 101231: { - key: 'recharge', - eff: 0.8024691315440212, - position: 1 - }, - 101232: { - key: 'recharge', - eff: 1, - position: 2 - }, - 101241: { - key: 'mastery', - eff: 0.7993138779408093, - position: 1 - }, - 101242: { - key: 'mastery', - eff: 1, - position: 2 - }, - 201021: { - key: 'hpPlus', - eff: 0.700000010640718, - position: 1 - }, - 201022: { - key: 'hpPlus', - eff: 0.8500697818291011, - position: 2 - }, - 201023: { - key: 'hpPlus', - eff: 1, - position: 3 - }, - 201031: { - key: 'hp', - eff: 0.6995708401537059, - position: 1 - }, - 201032: { - key: 'hp', - eff: 0.8497854200768529, - position: 2 - }, - 201033: { - key: 'hp', - eff: 1, - position: 3 - }, - 201051: { - key: 'atkPlus', - eff: 0.700214117238633, - position: 1 - }, - 201052: { - key: 'atkPlus', - eff: 0.8501070586193165, - position: 2 - }, - 201053: { - key: 'atkPlus', - eff: 1, - position: 3 - }, - 201061: { - key: 'atk', - eff: 0.6995708401537059, - position: 1 - }, - 201062: { - key: 'atk', - eff: 0.8497854200768529, - position: 2 - }, - 201063: { - key: 'atk', - eff: 1, - position: 3 - }, - 201081: { - key: 'defPlus', - eff: 0.6996403138377545, - position: 1 - }, - 201082: { - key: 'defPlus', - eff: 0.8489208343106637, - position: 2 - }, - 201083: { - key: 'defPlus', - eff: 1, - position: 3 - }, - 201091: { - key: 'def', - eff: 0.7010309324542161, - position: 1 - }, - 201092: { - key: 'def', - eff: 0.8522336763160644, - position: 2 - }, - 201093: { - key: 'def', - eff: 1, - position: 3 - }, - 201201: { - key: 'cpct', - eff: 0.7032258250586824, - position: 1 - }, - 201202: { - key: 'cpct', - eff: 0.8516129125293411, - position: 2 - }, - 201203: { - key: 'cpct', - eff: 1, - position: 3 - }, - 201221: { - key: 'cdmg', - eff: 0.7009646525642665, - position: 1 - }, - 201222: { - key: 'cdmg', - eff: 0.8488746119364413, - position: 2 - }, - 201223: { - key: 'cdmg', - eff: 1, - position: 3 - }, - 201231: { - key: 'recharge', - eff: 0.6988417152242902, - position: 1 - }, - 201232: { - key: 'recharge', - eff: 0.8494208216537456, - position: 2 - }, - 201233: { - key: 'recharge', - eff: 1, - position: 3 - }, - 201241: { - key: 'mastery', - eff: 0.6998928470745912, - position: 1 - }, - 201242: { - key: 'mastery', - eff: 0.8499463979833213, - position: 2 - }, - 201243: { - key: 'mastery', - eff: 1, - position: 3 - }, - 301021: { - key: 'hpPlus', - eff: 0.700000010640718, - position: 1 - }, - 301022: { - key: 'hpPlus', - eff: 0.8000000425628723, - position: 2 - }, - 301023: { - key: 'hpPlus', - eff: 0.9000000212814362, - position: 3 - }, - 301024: { - key: 'hpPlus', - eff: 1, - position: 4 - }, - 301031: { - key: 'hp', - eff: 0.699999978712627, - position: 1 - }, - 301032: { - key: 'hp', - eff: 0.800000021287373, - position: 2 - }, - 301033: { - key: 'hp', - eff: 0.9000000106436865, - position: 3 - }, - 301034: { - key: 'hp', - eff: 1, - position: 4 - }, - 301051: { - key: 'atkPlus', - eff: 0.700214117238633, - position: 1 - }, - 301052: { - key: 'atkPlus', - eff: 0.7997858317081389, - position: 2 - }, - 301053: { - key: 'atkPlus', - eff: 0.8993575461776449, - position: 3 - }, - 301054: { - key: 'atkPlus', - eff: 1, - position: 4 - }, - 301061: { - key: 'atk', - eff: 0.699999978712627, - position: 1 - }, - 301062: { - key: 'atk', - eff: 0.800000021287373, - position: 2 - }, - 301063: { - key: 'atk', - eff: 0.9000000106436865, - position: 3 - }, - 301064: { - key: 'atk', - eff: 1, - position: 4 - }, - 301081: { - key: 'defPlus', - eff: 0.7002700675271825, - position: 1 - }, - 301082: { - key: 'defPlus', - eff: 0.8001800736312134, - position: 2 - }, - 301083: { - key: 'defPlus', - eff: 0.9000900368156067, - position: 3 - }, - 301084: { - key: 'defPlus', - eff: 1, - position: 4 - }, - 301091: { - key: 'def', - eff: 0.7002288624079749, - position: 1 - }, - 301092: { - key: 'def', - eff: 0.8009153643849788, - position: 2 - }, - 301093: { - key: 'def', - eff: 0.8993134980229961, - position: 3 - }, - 301094: { - key: 'def', - eff: 1, - position: 4 - }, - 301201: { - key: 'cpct', - eff: 0.6995708401537059, - position: 1 - }, - 301202: { - key: 'cpct', - eff: 0.7982832806729697, - position: 2 - }, - 301203: { - key: 'cpct', - eff: 0.9012875594807361, - position: 3 - }, - 301204: { - key: 'cpct', - eff: 1, - position: 4 - }, - 301221: { - key: 'cdmg', - eff: 0.6995708401537059, - position: 1 - }, - 301222: { - key: 'cdmg', - eff: 0.8004292397881477, - position: 2 - }, - 301223: { - key: 'cdmg', - eff: 0.9012875594807361, - position: 3 - }, - 301224: { - key: 'cdmg', - eff: 1, - position: 4 - }, - 301231: { - key: 'recharge', - eff: 0.6992288170077031, - position: 1 - }, - 301232: { - key: 'recharge', - eff: 0.7994858620441655, - position: 2 - }, - 301233: { - key: 'recharge', - eff: 0.8997429549635376, - position: 3 - }, - 301234: { - key: 'recharge', - eff: 1, - position: 4 - }, - 301241: { - key: 'mastery', - eff: 0.6997855698371146, - position: 1 - }, - 301242: { - key: 'mastery', - eff: 0.7998570238353141, - position: 2 - }, - 301243: { - key: 'mastery', - eff: 0.8999285460018005, - position: 3 - }, - 301244: { - key: 'mastery', - eff: 1, - position: 4 - }, - 401021: { - key: 'hpPlus', - eff: 0.7000000127688611, - position: 1 - }, - 401022: { - key: 'hpPlus', - eff: 0.7999999872311389, - position: 2 - }, - 401023: { - key: 'hpPlus', - eff: 0.9000000255377223, - position: 3 - }, - 401024: { - key: 'hpPlus', - eff: 1, - position: 4 - }, - 401031: { - key: 'hp', - eff: 0.6995708401537059, - position: 1 - }, - 401032: { - key: 'hp', - eff: 0.8004292397881477, - position: 2 - }, - 401033: { - key: 'hp', - eff: 0.9012875594807361, - position: 3 - }, - 401034: { - key: 'hp', - eff: 1, - position: 4 - }, - 401051: { - key: 'atkPlus', - eff: 0.6998714684861824, - position: 1 - }, - 401052: { - key: 'atkPlus', - eff: 0.8001285008687569, - position: 2 - }, - 401053: { - key: 'atkPlus', - eff: 0.899742906327304, - position: 3 - }, - 401054: { - key: 'atkPlus', - eff: 1, - position: 4 - }, - 401061: { - key: 'atk', - eff: 0.6995708401537059, - position: 1 - }, - 401062: { - key: 'atk', - eff: 0.8004292397881477, - position: 2 - }, - 401063: { - key: 'atk', - eff: 0.9012875594807361, - position: 3 - }, - 401064: { - key: 'atk', - eff: 1, - position: 4 - }, - 401081: { - key: 'defPlus', - eff: 0.6997840020416457, - position: 1 - }, - 401082: { - key: 'defPlus', - eff: 0.800215946464062, - position: 2 - }, - 401083: { - key: 'defPlus', - eff: 0.9001079732320311, - position: 3 - }, - 401084: { - key: 'defPlus', - eff: 1, - position: 4 - }, - 401091: { - key: 'def', - eff: 0.6998285024582124, - position: 1 - }, - 401092: { - key: 'def', - eff: 0.799313882035583, - position: 2 - }, - 401093: { - key: 'def', - eff: 0.9005145565239961, - position: 3 - }, - 401094: { - key: 'def', - eff: 1, - position: 4 - }, - 401201: { - key: 'cpct', - eff: 0.7009646525642665, - position: 1 - }, - 401202: { - key: 'cpct', - eff: 0.8006431216735538, - position: 2 - }, - 401203: { - key: 'cpct', - eff: 0.900321590782841, - position: 3 - }, - 401204: { - key: 'cpct', - eff: 1, - position: 4 - }, - 401221: { - key: 'cdmg', - eff: 0.6993569082725104, - position: 1 - }, - 401222: { - key: 'cdmg', - eff: 0.7990353773817976, - position: 2 - }, - 401223: { - key: 'cdmg', - eff: 0.900321590782841, - position: 3 - }, - 401224: { - key: 'cdmg', - eff: 1, - position: 4 - }, - 401231: { - key: 'recharge', - eff: 0.70077217786434, - position: 1 - }, - 401232: { - key: 'recharge', - eff: 0.7992277861772604, - position: 2 - }, - 401233: { - key: 'recharge', - eff: 0.8996138571302306, - position: 3 - }, - 401234: { - key: 'recharge', - eff: 1, - position: 4 - }, - 401241: { - key: 'mastery', - eff: 0.7002681333376832, - position: 1 - }, - 401242: { - key: 'mastery', - eff: 0.8000000204541412, - position: 2 - }, - 401243: { - key: 'mastery', - eff: 0.9002681640188951, - position: 3 - }, - 401244: { - key: 'mastery', - eff: 1, - position: 4 - }, - 501021: { - key: 'hpPlus', - eff: 0.7000167527458159, - position: 1 - }, - 501022: { - key: 'hpPlus', - eff: 0.8, - position: 2 - }, - 501023: { - key: 'hpPlus', - eff: 0.9000167527458159, - position: 3 - }, - 501024: { - key: 'hpPlus', - eff: 1, - position: 4 - }, - 501031: { - key: 'hp', - eff: 0.6998285024582124, - position: 1 - }, - 501032: { - key: 'hp', - eff: 0.799313882035583, - position: 2 - }, - 501033: { - key: 'hp', - eff: 0.9005145565239961, - position: 3 - }, - 501034: { - key: 'hp', - eff: 1, - position: 4 - }, - 501051: { - key: 'atkPlus', - eff: 0.700257036056831, - position: 1 - }, - 501052: { - key: 'atkPlus', - eff: 0.7999999901935807, - position: 2 - }, - 501053: { - key: 'atkPlus', - eff: 0.9002570458632503, - position: 3 - }, - 501054: { - key: 'atkPlus', - eff: 1, - position: 4 - }, - 501061: { - key: 'atk', - eff: 0.6998285024582124, - position: 1 - }, - 501062: { - key: 'atk', - eff: 0.799313882035583, - position: 2 - }, - 501063: { - key: 'atk', - eff: 0.9005145565239961, - position: 3 - }, - 501064: { - key: 'atk', - eff: 1, - position: 4 - }, - 501081: { - key: 'defPlus', - eff: 0.6997840617661291, - position: 1 - }, - 501082: { - key: 'defPlus', - eff: 0.8000000329563484, - position: 2 - }, - 501083: { - key: 'defPlus', - eff: 0.8997840288097807, - position: 3 - }, - 501084: { - key: 'defPlus', - eff: 1, - position: 4 - }, - 501091: { - key: 'def', - eff: 0.6995884908250543, - position: 1 - }, - 501092: { - key: 'def', - eff: 0.7997256775838287, - position: 2 - }, - 501093: { - key: 'def', - eff: 0.8998628643426032, - position: 3 - }, - 501094: { - key: 'def', - eff: 1, - position: 4 - }, - 501201: { - key: 'cpct', - eff: 0.6992288170077031, - position: 1 - }, - 501202: { - key: 'cpct', - eff: 0.7994858620441655, - position: 2 - }, - 501203: { - key: 'cpct', - eff: 0.8997429549635376, - position: 3 - }, - 501204: { - key: 'cpct', - eff: 1, - position: 4 - }, - 501221: { - key: 'cdmg', - eff: 0.7001287406686748, - position: 1 - }, - 501222: { - key: 'cdmg', - eff: 0.8005148188410904, - position: 2 - }, - 501223: { - key: 'cdmg', - eff: 0.8996139218275844, - position: 3 - }, - 501224: { - key: 'cdmg', - eff: 1, - position: 4 - }, - 501231: { - key: 'recharge', - eff: 0.6990740469264689, - position: 1 - }, - 501232: { - key: 'recharge', - eff: 0.7993827171139947, - position: 2 - }, - 501233: { - key: 'recharge', - eff: 0.8996913298124741, - position: 3 - }, - 501234: { - key: 'recharge', - eff: 1, - position: 4 - }, - 501241: { - key: 'mastery', - eff: 0.7001287030773611, - position: 1 - }, - 501242: { - key: 'mastery', - eff: 0.800085802051574, - position: 2 - }, - 501243: { - key: 'mastery', - eff: 0.900042901025787, - position: 3 - }, - 501244: { - key: 'mastery', - eff: 1, - position: 4 - } + 101021: { key: 'hpPlus', eff: 0.8 }, + 101022: { key: 'hpPlus', eff: 1 }, + 101031: { key: 'hp', eff: 0.8 }, + 101032: { key: 'hp', eff: 1 }, + 101051: { key: 'atkPlus', eff: 0.8 }, + 101052: { key: 'atkPlus', eff: 1 }, + 101061: { key: 'atk', eff: 0.8 }, + 101062: { key: 'atk', eff: 1 }, + 101081: { key: 'defPlus', eff: 0.8 }, + 101082: { key: 'defPlus', eff: 1 }, + 101091: { key: 'def', eff: 0.8 }, + 101092: { key: 'def', eff: 1 }, + 101201: { key: 'cpct', eff: 0.8 }, + 101202: { key: 'cpct', eff: 1 }, + 101221: { key: 'cdmg', eff: 0.8 }, + 101222: { key: 'cdmg', eff: 1 }, + 101231: { key: 'recharge', eff: 0.8 }, + 101232: { key: 'recharge', eff: 1 }, + 101241: { key: 'mastery', eff: 0.8 }, + 101242: { key: 'mastery', eff: 1 }, + 201021: { key: 'hpPlus', eff: 0.7 }, + 201022: { key: 'hpPlus', eff: 0.85 }, + 201023: { key: 'hpPlus', eff: 1 }, + 201031: { key: 'hp', eff: 0.7 }, + 201032: { key: 'hp', eff: 0.85 }, + 201033: { key: 'hp', eff: 1 }, + 201051: { key: 'atkPlus', eff: 0.7 }, + 201052: { key: 'atkPlus', eff: 0.85 }, + 201053: { key: 'atkPlus', eff: 1 }, + 201061: { key: 'atk', eff: 0.7 }, + 201062: { key: 'atk', eff: 0.85 }, + 201063: { key: 'atk', eff: 1 }, + 201081: { key: 'defPlus', eff: 0.7 }, + 201082: { key: 'defPlus', eff: 0.85 }, + 201083: { key: 'defPlus', eff: 1 }, + 201091: { key: 'def', eff: 0.7 }, + 201092: { key: 'def', eff: 0.85 }, + 201093: { key: 'def', eff: 1 }, + 201201: { key: 'cpct', eff: 0.7 }, + 201202: { key: 'cpct', eff: 0.85 }, + 201203: { key: 'cpct', eff: 1 }, + 201221: { key: 'cdmg', eff: 0.7 }, + 201222: { key: 'cdmg', eff: 0.85 }, + 201223: { key: 'cdmg', eff: 1 }, + 201231: { key: 'recharge', eff: 0.7 }, + 201232: { key: 'recharge', eff: 0.85 }, + 201233: { key: 'recharge', eff: 1 }, + 201241: { key: 'mastery', eff: 0.7 }, + 201242: { key: 'mastery', eff: 0.85 }, + 201243: { key: 'mastery', eff: 1 }, + 301021: { key: 'hpPlus', eff: 0.7 }, + 301022: { key: 'hpPlus', eff: 0.8 }, + 301023: { key: 'hpPlus', eff: 0.9 }, + 301024: { key: 'hpPlus', eff: 1 }, + 301031: { key: 'hp', eff: 0.7 }, + 301032: { key: 'hp', eff: 0.8 }, + 301033: { key: 'hp', eff: 0.9 }, + 301034: { key: 'hp', eff: 1 }, + 301051: { key: 'atkPlus', eff: 0.7 }, + 301052: { key: 'atkPlus', eff: 0.8 }, + 301053: { key: 'atkPlus', eff: 0.9 }, + 301054: { key: 'atkPlus', eff: 1 }, + 301061: { key: 'atk', eff: 0.7 }, + 301062: { key: 'atk', eff: 0.8 }, + 301063: { key: 'atk', eff: 0.9 }, + 301064: { key: 'atk', eff: 1 }, + 301081: { key: 'defPlus', eff: 0.7 }, + 301082: { key: 'defPlus', eff: 0.8 }, + 301083: { key: 'defPlus', eff: 0.9 }, + 301084: { key: 'defPlus', eff: 1 }, + 301091: { key: 'def', eff: 0.7 }, + 301092: { key: 'def', eff: 0.8 }, + 301093: { key: 'def', eff: 0.9 }, + 301094: { key: 'def', eff: 1 }, + 301201: { key: 'cpct', eff: 0.7 }, + 301202: { key: 'cpct', eff: 0.8 }, + 301203: { key: 'cpct', eff: 0.9 }, + 301204: { key: 'cpct', eff: 1 }, + 301221: { key: 'cdmg', eff: 0.7 }, + 301222: { key: 'cdmg', eff: 0.8 }, + 301223: { key: 'cdmg', eff: 0.9 }, + 301224: { key: 'cdmg', eff: 1 }, + 301231: { key: 'recharge', eff: 0.7 }, + 301232: { key: 'recharge', eff: 0.8 }, + 301233: { key: 'recharge', eff: 0.9 }, + 301234: { key: 'recharge', eff: 1 }, + 301241: { key: 'mastery', eff: 0.7 }, + 301242: { key: 'mastery', eff: 0.8 }, + 301243: { key: 'mastery', eff: 0.9 }, + 301244: { key: 'mastery', eff: 1 }, + 401021: { key: 'hpPlus', eff: 0.7 }, + 401022: { key: 'hpPlus', eff: 0.8 }, + 401023: { key: 'hpPlus', eff: 0.9 }, + 401024: { key: 'hpPlus', eff: 1 }, + 401031: { key: 'hp', eff: 0.7 }, + 401032: { key: 'hp', eff: 0.8 }, + 401033: { key: 'hp', eff: 0.9 }, + 401034: { key: 'hp', eff: 1 }, + 401051: { key: 'atkPlus', eff: 0.7 }, + 401052: { key: 'atkPlus', eff: 0.8 }, + 401053: { key: 'atkPlus', eff: 0.9 }, + 401054: { key: 'atkPlus', eff: 1 }, + 401061: { key: 'atk', eff: 0.7 }, + 401062: { key: 'atk', eff: 0.8 }, + 401063: { key: 'atk', eff: 0.9 }, + 401064: { key: 'atk', eff: 1 }, + 401081: { key: 'defPlus', eff: 0.7 }, + 401082: { key: 'defPlus', eff: 0.8 }, + 401083: { key: 'defPlus', eff: 0.9 }, + 401084: { key: 'defPlus', eff: 1 }, + 401091: { key: 'def', eff: 0.7 }, + 401092: { key: 'def', eff: 0.8 }, + 401093: { key: 'def', eff: 0.9 }, + 401094: { key: 'def', eff: 1 }, + 401201: { key: 'cpct', eff: 0.7 }, + 401202: { key: 'cpct', eff: 0.8 }, + 401203: { key: 'cpct', eff: 0.9 }, + 401204: { key: 'cpct', eff: 1 }, + 401221: { key: 'cdmg', eff: 0.7 }, + 401222: { key: 'cdmg', eff: 0.8 }, + 401223: { key: 'cdmg', eff: 0.9 }, + 401224: { key: 'cdmg', eff: 1 }, + 401231: { key: 'recharge', eff: 0.7 }, + 401232: { key: 'recharge', eff: 0.8 }, + 401233: { key: 'recharge', eff: 0.9 }, + 401234: { key: 'recharge', eff: 1 }, + 401241: { key: 'mastery', eff: 0.7 }, + 401242: { key: 'mastery', eff: 0.8 }, + 401243: { key: 'mastery', eff: 0.9 }, + 401244: { key: 'mastery', eff: 1 }, + 501021: { key: 'hpPlus', eff: 0.7 }, + 501022: { key: 'hpPlus', eff: 0.8 }, + 501023: { key: 'hpPlus', eff: 0.9 }, + 501024: { key: 'hpPlus', eff: 1 }, + 501031: { key: 'hp', eff: 0.7 }, + 501032: { key: 'hp', eff: 0.8 }, + 501033: { key: 'hp', eff: 0.9 }, + 501034: { key: 'hp', eff: 1 }, + 501051: { key: 'atkPlus', eff: 0.7 }, + 501052: { key: 'atkPlus', eff: 0.8 }, + 501053: { key: 'atkPlus', eff: 0.9 }, + 501054: { key: 'atkPlus', eff: 1 }, + 501061: { key: 'atk', eff: 0.7 }, + 501062: { key: 'atk', eff: 0.8 }, + 501063: { key: 'atk', eff: 0.9 }, + 501064: { key: 'atk', eff: 1 }, + 501081: { key: 'defPlus', eff: 0.7 }, + 501082: { key: 'defPlus', eff: 0.8 }, + 501083: { key: 'defPlus', eff: 0.9 }, + 501084: { key: 'defPlus', eff: 1 }, + 501091: { key: 'def', eff: 0.7 }, + 501092: { key: 'def', eff: 0.8 }, + 501093: { key: 'def', eff: 0.9 }, + 501094: { key: 'def', eff: 1 }, + 501201: { key: 'cpct', eff: 0.7 }, + 501202: { key: 'cpct', eff: 0.8 }, + 501203: { key: 'cpct', eff: 0.9 }, + 501204: { key: 'cpct', eff: 1 }, + 501221: { key: 'cdmg', eff: 0.7 }, + 501222: { key: 'cdmg', eff: 0.8 }, + 501223: { key: 'cdmg', eff: 0.9 }, + 501224: { key: 'cdmg', eff: 1 }, + 501231: { key: 'recharge', eff: 0.7 }, + 501232: { key: 'recharge', eff: 0.8 }, + 501233: { key: 'recharge', eff: 0.9 }, + 501234: { key: 'recharge', eff: 1 }, + 501241: { key: 'mastery', eff: 0.7 }, + 501242: { key: 'mastery', eff: 0.8 }, + 501243: { key: 'mastery', eff: 0.9 }, + 501244: { key: 'mastery', eff: 1 } }