From e8d76f529da0ba59e6744ed98e72fbce0833e468 Mon Sep 17 00:00:00 2001 From: yoimiya-kokomi <592981798@qq.com> Date: Sat, 5 Nov 2022 23:47:44 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=AD=A3=E5=AF=B9=E7=89=A9=E4=BC=A4?= =?UTF-8?q?=E7=9A=84=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- config/system/character_system.js | 6 +- models/profile-lib/DmgAttr.js | 8 +-- models/profile-lib/DmgCalc.js | 36 +++++----- models/profile-lib/DmgCalcMeta.js | 76 +++++++++++----------- models/profile-lib/DmgMastery.js | 2 +- resources/meta/artifact/artis-mark.js | 2 +- resources/meta/artifact/calc.js | 4 +- resources/meta/character/纳西妲/calc.js | 22 ++++++- 8 files changed, 84 insertions(+), 72 deletions(-) diff --git a/config/system/character_system.js b/config/system/character_system.js index f35182a8..8e5791e3 100644 --- a/config/system/character_system.js +++ b/config/system/character_system.js @@ -64,11 +64,11 @@ export const characters = { 10000067: ['柯莱', 'Collei', '柯来', '科莱', '科来', '小天使', '须弥安柏', '草安柏', '须弥飞行冠军'], 10000068: ['多莉', 'Dori', '多利', '多力', '奸商'], 10000070: ['妮露', 'nilou', '尼露', '妮璐', '舞娘', '红牛'], - 10000071: ['赛诺', 'cyno', '塞诺', '胡狼'], + 10000071: ['赛诺', 'cyno', '塞诺', '胡狼', '大风纪官', '大风机关'], 10000072: ['坎蒂丝', 'candace', '坎迪斯'], - 10000073: ['纳西妲', '草神', '小草神', '小吉祥', '小吉祥草王', '花神', '草萝莉', '羽毛球'], + 10000073: ['纳西妲', '草神', '小吉祥', '大吉祥', '小草神', '大慈树王', '小吉祥草王', '草萝莉', '羽毛球', '摩诃善法大吉祥智慧主', '智慧主'], 10000074: ['莱依拉', '莱依菈', '来依菈', '来依拉'], - 10000075: ['流浪者', '散兵', '国崩', '雷电国崩', '大炮', '雷电大炮', '雷大炮', '伞兵', '斯卡拉姆齐'], + 10000075: ['流浪者', '散兵', '国崩', '雷电国崩', '大炮', '雷电大炮', '雷大炮', '伞兵', '斯卡拉姆齐', '七叶寂照秘密主', '正机之神'], 10000076: ['珐露珊', '法露珊', '法璐珊', '法露姗', '法璐姗', '珐露姗', '珐璐姗'], // 自定义角色 diff --git a/models/profile-lib/DmgAttr.js b/models/profile-lib/DmgAttr.js index 55fd4ec3..bb20a6e8 100644 --- a/models/profile-lib/DmgAttr.js +++ b/models/profile-lib/DmgAttr.js @@ -70,14 +70,14 @@ let DmgAttr = { ret.vaporize = 0 // 蒸发 ret.melt = 0 // 融化 ret.burning = 0 // 燃烧 - ret.superconduct = 0 // 超导 + ret.superConduct = 0 // 超导 ret.swirl = 0 // 扩散 - ret.electro_charged = 0 // 感电 + ret.electroCharged = 0 // 感电 ret.shatter = 0 // 碎冰 ret.overloaded = 0 // 超载 ret.bloom = 0 // 绽放 ret.burgeon = 0 // 烈绽放 - ret.hyperbloom = 0 // 超绽放 + ret.hyperBloom = 0 // 超绽放 ret.aggravate = 0 // 超激化 ret.spread = 0 // 蔓激化 ret.kx = 0 // 敌人抗性降低 @@ -176,7 +176,7 @@ let DmgAttr = { return } - if (['vaporize', 'melt', 'burning', 'superconduct', 'swirl', 'electro_charged', 'shatter', 'overloaded', 'bloom', 'burgeon', 'hyperbloom', 'aggravate' , 'spread' ,'kx', 'fykx'].includes(key)) { + if (['vaporize', 'melt', 'burning', 'superConduct', 'swirl', 'electroCharged', 'shatter', 'overloaded', 'bloom', 'burgeon', 'hyperBloom', 'aggravate', 'spread', 'kx', 'fykx'].includes(key)) { attr[key] += val * 1 || 0 } }) diff --git a/models/profile-lib/DmgCalc.js b/models/profile-lib/DmgCalc.js index 94d02d9e..bec17ee0 100644 --- a/models/profile-lib/DmgCalc.js +++ b/models/profile-lib/DmgCalc.js @@ -29,7 +29,7 @@ let DmgCalc = { // 倍率独立乘区 let multiNum = attr.multi / 100 - + // 增伤区 let dmgNum = (1 + dmg.base / 100 + dmg.plus / 100) @@ -82,20 +82,17 @@ let DmgCalc = { if (cpctNum === 0) { cdmgNum = 0 } - + + const isEle = ele !== false && ele !== 'phy' // 反应区 - let eleNum = (ele === false) ? 1 : DmgMastery.getBasePct(ele, attr.element) - let eleBase = (ele === false) ? 1 : 1 + attr[ele] / 100 + DmgMastery.getMultiple(ele, attr.mastery.base + attr.mastery.plus) + let eleNum = isEle ? DmgMastery.getBasePct(ele, attr.element) : 1 + let eleBase = isEle ? 1 + attr[ele] / 100 + DmgMastery.getMultiple(ele, attr.mastery.base + attr.mastery.plus) : 1 let dmgBase = (mode === 'basic') ? basicNum : atkNum * pctNum * (1 + multiNum) let ret = {} - console.log(atkNum, multiNum, dmgBase) - - switch(ele) - { + switch (ele) { case 'vaporize': - case 'melt': - { + case 'melt': { ret = { dmg: dmgBase * dmgNum * (1 + cdmgNum) * defNum * kNum * eleBase * eleNum, avg: dmgBase * dmgNum * (1 + cpctNum * cdmgNum) * defNum * kNum * eleBase * eleNum @@ -104,23 +101,21 @@ let DmgCalc = { } case 'burning': - case 'superconduct': + case 'superConduct': case 'swirl': - case 'electro_charged': + case 'electroCharged': case 'shatter': case 'overloaded': case 'bloom': case 'burgeon': - case 'hyperbloom': - { + case 'hyperBloom': { eleBase *= eleBaseDmg[level] ret = { avg: eleBase * eleNum * kNum } break } - + case 'aggravate': - case 'spread': - { + case 'spread': { eleBase *= eleBaseDmg[level] dmgBase += eleBase * eleNum ret = { @@ -130,12 +125,11 @@ let DmgCalc = { break } - default: - { + default: { ret = { - dmg: dmgBase * dmgNum * (1 + cdmgNum) * defNum * kNum , + dmg: dmgBase * dmgNum * (1 + cdmgNum) * defNum * kNum, avg: dmgBase * dmgNum * (1 + cpctNum * cdmgNum) * defNum * kNum - } + } } } diff --git a/models/profile-lib/DmgCalcMeta.js b/models/profile-lib/DmgCalcMeta.js index d9619868..c26e070d 100644 --- a/models/profile-lib/DmgCalcMeta.js +++ b/models/profile-lib/DmgCalcMeta.js @@ -1,3 +1,40 @@ +export const eleMap = { + anemo: '风', + cryo: '冰', + electro: '雷', + geo: '岩', + hydro: '水', + pyro: '火', + dendro: '草' +} + +// 元素反应类型及基数 +export const erType = { + vaporize: { type: 'pct', num: ({ element }) => element === '水' ? 2 : 1.5 }, // 蒸发 + melt: { type: 'pct', num: ({ element }) => element === '火' ? 2 : 1.5 }, // 融化 + burning: { type: 'fusion', num: () => 1 }, // 燃烧 + superConduct: { type: 'fusion', num: () => 2 }, // 超导 + swirl: { type: 'fusion', num: () => 2.4 }, // 扩散 + electroCharged: { type: 'fusion', num: () => 4.8 }, // 感电 + shatter: { type: 'fusion', num: () => 6 }, // 碎冰 + overloaded: { type: 'fusion', num: () => 8 }, // 超载 + bloom: { type: 'fusion', num: () => 8 }, // 绽放 + burgeon: { type: 'fusion', num: () => 12 }, // 烈绽放 + hyperBloom: { type: 'fusion', num: () => 12 }, // 超绽放 + aggravate: { type: 'bonus', num: () => 4.6 }, // 超激化 + spread: { type: 'bonus', num: () => 5.0 } // 蔓激化 +} + +export const attrMap = { + atk: { type: 'pct', val: 5.83, title: '大攻击', text: '5.8%' }, + hp: { type: 'pct', val: 5.83, title: '大生命', text: '5.8%' }, + def: { type: 'pct', val: 7.29, title: '大防御', text: '7.3%' }, + recharge: { type: 'plus', val: 6.48, title: '元素充能', text: '6.5%' }, + mastery: { type: 'plus', val: 23.31, title: '元素精通', text: '23.3' }, + cpct: { type: 'plus', val: 3.89, title: '暴击率', text: '3.9%' }, + cdmg: { type: 'plus', val: 7.77, title: '暴击伤害', text: '7.8%' } +} + // 各等级精通基础伤害 export const eleBaseDmg = { 1: 4.291, @@ -90,41 +127,4 @@ export const eleBaseDmg = { 88: 340.864, 89: 351.274, 90: 361.713 -} - -export const eleMap = { - anemo: '风', - cryo: '冰', - electro: '雷', - geo: '岩', - hydro: '水', - pyro: '火', - dendro: '草' -} - -// 元素反应类型及基数 -export const erType = { - 'vaporize': { type: 'pct', num: ({ element }) => element === '水' ? 2 : 1.5 }, - 'melt': { type: 'pct', num: ({ element }) => element === '火' ? 2 : 1.5 }, - 'burning': { type: 'fusion', num: () => 1 }, - 'superconduct': { type: 'fusion', num: () => 2 }, - 'swirl': { type: 'fusion', num: () => 2.4 }, - 'electro_charged': { type: 'fusion', num: () => 4.8 }, - 'shatter': { type: 'fusion', num: () => 6 }, - 'overloaded': { type: 'fusion', num: () => 8 }, - 'bloom': { type: 'fusion', num: () => 8 }, - 'burgeon': { type: 'fusion', num: () => 12 }, - 'hyperbloom': { type: 'fusion', num: () => 12 }, - 'aggravate': { type: 'bonus', num: () => 4.6 }, - 'spread': { type: 'bonus', num: () => 5.0 } -} - -export const attrMap = { - atk: { type: 'pct', val: 5.83, title: '大攻击', text: '5.8%' }, - hp: { type: 'pct', val: 5.83, title: '大生命', text: '5.8%' }, - def: { type: 'pct', val: 7.29, title: '大防御', text: '7.3%' }, - recharge: { type: 'plus', val: 6.48, title: '元素充能', text: '6.5%' }, - mastery: { type: 'plus', val: 23.31, title: '元素精通', text: '23.3' }, - cpct: { type: 'plus', val: 3.89, title: '暴击率', text: '3.9%' }, - cdmg: { type: 'plus', val: 7.77, title: '暴击伤害', text: '7.8%' } -} +} \ No newline at end of file diff --git a/models/profile-lib/DmgMastery.js b/models/profile-lib/DmgMastery.js index e0c154c7..0c511b5b 100644 --- a/models/profile-lib/DmgMastery.js +++ b/models/profile-lib/DmgMastery.js @@ -7,7 +7,7 @@ let DmgMastery = { return (25 / 9) * mastery / (mastery + 1400) } else if (typeCfg.type === 'fusion') { return 16 * mastery / (mastery + 2000) - } else if(typeCfg.type === 'bonus'){ + } else if (typeCfg.type === 'bonus') { return 5 * mastery / (mastery + 1200) } return 0 diff --git a/resources/meta/artifact/artis-mark.js b/resources/meta/artifact/artis-mark.js index 0afd305b..f4faa107 100644 --- a/resources/meta/artifact/artis-mark.js +++ b/resources/meta/artifact/artis-mark.js @@ -45,7 +45,7 @@ export const usefulAttr = { 神里绫人: { hp: 50, atk: 75, def: 0, cp: 100, cd: 100, mastery: 0, dmg: 100, phy: 0, recharge: 30, heal: 0 }, 八重神子: { hp: 0, atk: 75, def: 0, cp: 100, cd: 100, mastery: 75, dmg: 100, phy: 0, recharge: 55, heal: 0 }, 申鹤: { hp: 0, atk: 100, def: 0, cp: 100, cd: 100, mastery: 0, dmg: 100, phy: 0, recharge: 55, heal: 0 }, - 云堇: { hp: 0, atk: 0, def: 100, cp: 80, cd: 80, mastery: 0, dmg: 80, phy: 0, recharge: 80, heal: 0 }, + 云堇: { hp: 0, atk: 75, def: 100, cp: 80, cd: 80, mastery: 0, dmg: 80, phy: 0, recharge: 80, heal: 0 }, 荒泷一斗: { hp: 0, atk: 50, def: 100, cp: 100, cd: 100, mastery: 0, dmg: 100, phy: 0, recharge: 30, heal: 0 }, 五郎: { hp: 0, atk: 75, def: 100, cp: 50, cd: 50, mastery: 0, dmg: 100, phy: 0, recharge: 75, heal: 0 }, 班尼特: { hp: 100, atk: 50, def: 0, cp: 100, cd: 100, mastery: 0, dmg: 80, phy: 0, recharge: 55, heal: 100 }, diff --git a/resources/meta/artifact/calc.js b/resources/meta/artifact/calc.js index 93f9c810..011bb356 100644 --- a/resources/meta/artifact/calc.js +++ b/resources/meta/artifact/calc.js @@ -204,8 +204,8 @@ const buffs = { title: '如雷4:超载、感电、超导反应造成的伤害提升40%,超激化反应带来的伤害提升提高20%', data: { overloaded: 40, - electro_charged: 40, - superconduct: 40, + electroCharged: 40, + superConduct: 40, aggravate: 20 } }, diff --git a/resources/meta/character/纳西妲/calc.js b/resources/meta/character/纳西妲/calc.js index 47a06026..4afa59ad 100644 --- a/resources/meta/character/纳西妲/calc.js +++ b/resources/meta/character/纳西妲/calc.js @@ -1,10 +1,28 @@ export const details = [{ title: 'E长按伤害', params: { e: true, q: false }, - dmg: ({ talent }, dmg ) => dmg(talent.e['长按伤害'], 'e') + dmg: ({ talent }, dmg) => dmg(talent.e['长按伤害'], 'e') }, { title: '灭净三业伤害', params: { e2: true, q: false }, + dmg: ({ talent, calc, attr }, { basic }) => { + const td = talent.e['灭净三业伤害2'] + const em = calc(attr.mastery) + const atk = calc(attr.atk) + return basic(td[0] * atk / 100 + td[1] * em / 100, 'e') + } +}, { + title: '开Q灭净三业伤害', + params: { e2: true }, + dmg: ({ talent, calc, attr, cons }, { basic }) => { + const td = talent.e['灭净三业伤害2'] + const em = calc(attr.mastery) + const atk = calc(attr.atk) + return basic(td[0] * atk / 100 + td[1] * em / 100, 'e') + } +}, { + title: '灭净三业蔓激化', + params: { e2: true, q: false }, dmg: ({ talent, calc, attr }, { basic }) => { const td = talent.e['灭净三业伤害2'] const em = calc(attr.mastery) @@ -12,7 +30,7 @@ export const details = [{ return basic(td[0] * atk / 100 + td[1] * em / 100, 'e', 'spread') } }, { - title: '开Q灭净三业伤害', + title: '开Q灭净三业蔓激化', params: { e2: true }, dmg: ({ talent, calc, attr, cons }, { basic }) => { const td = talent.e['灭净三业伤害2']