修正伤害计算的天赋加成遗漏

修正圣遗物流派判定的部分错误
This commit is contained in:
yoimiya-kokomi 2022-11-06 12:27:45 +08:00
parent e8d76f529d
commit c6a70b3a6d
24 changed files with 117 additions and 115 deletions

View File

@ -1,7 +1,7 @@
# 2.0.6 # 2.0.6
* 增加纳西妲的伤害计算 * 增加纳西妲的伤害计算
* 注:所有草元素反应伤害计算暂未支持,后续统一添加 * 底层增加草元素反应计算逻辑 **@冷落**
* 增加3.3角色信息及图片,可通过`#散兵天赋`、`#珐露珊命座`查看 * 增加3.3角色信息及图片,可通过`#散兵天赋`、`#珐露珊命座`查看
* 一些已知问题修复 * 一些已知问题修复

View File

@ -41,7 +41,7 @@ const CharArtis = {
let def = function (attrWeight) { let def = function (attrWeight) {
let title = [] let title = []
let weight = lodash.extend({}, attrWeight || usefulAttr[char.name] || { atk: 75, cp: 100, cd: 100 }) let weight = lodash.extend({}, attrWeight || usefulAttr[char.name] || { atk: 75, cpct: 100, cdmg: 100 })
let check = (key, max = 75, maxPlus = 75, isWeapon = true) => { let check = (key, max = 75, maxPlus = 75, isWeapon = true) => {
let original = weight[key] || 0 let original = weight[key] || 0
if (original < max) { if (original < max) {
@ -97,7 +97,7 @@ const CharArtis = {
} }
let charRule = charCfg[char.name]?.default || function ({ def }) { let charRule = charCfg[char.name]?.default || function ({ def }) {
return def(usefulAttr[char.name] || { atk: 75, cp: 100, cd: 100 }) return def(usefulAttr[char.name] || { atk: 75, cpct: 100, cdmg: 100 })
} }
if (charRule) { if (charRule) {

View File

@ -127,14 +127,16 @@ let DmgCalc = {
default: { default: {
ret = { ret = {
dmg: dmgBase * dmgNum * (1 + cdmgNum) * defNum * kNum, dmg: (dmgBase + plusNum) * dmgNum * (1 + cdmgNum) * defNum * kNum,
avg: dmgBase * dmgNum * (1 + cpctNum * cdmgNum) * defNum * kNum avg: (dmgBase + plusNum) * dmgNum * (1 + cpctNum * cdmgNum) * defNum * kNum
} }
} }
} }
if (showDetail) { if (showDetail) {
console.log(attr, { atkNum, pctNum, multiNum, plusNum, dmgNum, cpctNum, cdmgNum, defNum, eleNum, kNum }, ret) console.log('Attr', attr)
console.log({ mode, dmgBase, atkNum, pctNum, multiNum, plusNum, dmgNum, cpctNum, cdmgNum, defNum, eleNum, kNum })
console.log('Ret', ret)
} }
return ret return ret

View File

@ -127,4 +127,4 @@ export const eleBaseDmg = {
88: 340.864, 88: 340.864,
89: 351.274, 89: 351.274,
90: 361.713 90: 361.713
} }

View File

@ -1,6 +1,6 @@
export const attrValue = { export const attrValue = {
cp: 3.89, cpct: 3.89,
cd: 7.77, cdmg: 7.77,
mastery: 23.31, mastery: 23.31,
atk: 5.83, atk: 5.83,
hp: 5.83, hp: 5.83,
@ -17,8 +17,8 @@ export const attrMap = {
defPlus: { title: '小防御', format: 'comma', type: 'plus', base: 'def', value: 18.52 }, defPlus: { title: '小防御', format: 'comma', type: 'plus', base: 'def', value: 18.52 },
hp: { title: '大生命', format: 'pct', type: 'normal', value: 5.83, text: '5.83%' }, hp: { title: '大生命', format: 'pct', type: 'normal', value: 5.83, text: '5.83%' },
hpPlus: { title: '小生命', format: 'comma', type: 'plus', base: 'hp', value: 239.0 }, hpPlus: { title: '小生命', format: 'comma', type: 'plus', base: 'hp', value: 239.0 },
cp: { title: '暴击率', format: 'pct', type: 'normal', value: 3.89, text: '3.89%' }, cpct: { title: '暴击率', format: 'pct', type: 'normal', value: 3.89, text: '3.89%' },
cd: { title: '暴击伤害', format: 'pct', type: 'normal', value: 7.77, text: '7.77%' }, cdmg: { title: '暴击伤害', format: 'pct', type: 'normal', value: 7.77, text: '7.77%' },
mastery: { title: '元素精通', format: 'comma', type: 'normal', value: 23.31, text: '23.31' }, mastery: { title: '元素精通', format: 'comma', type: 'normal', value: 23.31, text: '23.31' },
recharge: { title: '充能效率', format: 'pct', type: 'normal', value: 6.48, text: '6.48%' }, recharge: { title: '充能效率', format: 'pct', type: 'normal', value: 6.48, text: '6.48%' },
dmg: { title: '元素伤害', format: 'pct', type: 'normal', value: 5.825, text: '5.83%' }, dmg: { title: '元素伤害', format: 'pct', type: 'normal', value: 5.825, text: '5.83%' },
@ -36,67 +36,67 @@ export const attrNameMap = anMap
export const mainAttr = { export const mainAttr = {
3: 'atk,def,hp,mastery,recharge'.split(','), 3: 'atk,def,hp,mastery,recharge'.split(','),
4: 'atk,def,hp,mastery,dmg,phy'.split(','), 4: 'atk,def,hp,mastery,dmg,phy'.split(','),
5: 'atk,def,hp,mastery,heal,cp,cd'.split(',') 5: 'atk,def,hp,mastery,heal,cpct,cdmg'.split(',')
} }
export const subAttr = 'atk,def,hp,mastery,recharge,cp,cd'.split(',') export const subAttr = 'atk,def,hp,mastery,recharge,cpct,cdmg'.split(',')
export const usefulAttr = { export const usefulAttr = {
神里绫人: { hp: 50, atk: 75, def: 0, cp: 100, cd: 100, mastery: 0, dmg: 100, phy: 0, recharge: 30, heal: 0 }, 神里绫人: { hp: 50, atk: 75, def: 0, cpct: 100, cdmg: 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: 75, def: 0, cpct: 100, cdmg: 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: 100, def: 0, cpct: 100, cdmg: 100, mastery: 0, dmg: 100, phy: 0, recharge: 55, 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: 75, def: 100, cpct: 80, cdmg: 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: 50, def: 100, cpct: 100, cdmg: 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: 0, atk: 75, def: 100, cpct: 50, cdmg: 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 }, 班尼特: { hp: 100, atk: 50, def: 0, cpct: 100, cdmg: 100, mastery: 0, dmg: 80, phy: 0, recharge: 55, heal: 100 },
枫原万叶: { hp: 0, atk: 75, def: 0, cp: 100, cd: 100, mastery: 100, dmg: 100, phy: 0, recharge: 55, heal: 0 }, 枫原万叶: { hp: 0, atk: 75, def: 0, cpct: 100, cdmg: 100, mastery: 100, dmg: 100, phy: 0, recharge: 55, heal: 0 },
行秋: { hp: 0, atk: 75, def: 0, cp: 100, cd: 100, mastery: 0, dmg: 100, phy: 0, recharge: 75, heal: 0 }, 行秋: { hp: 0, atk: 75, def: 0, cpct: 100, cdmg: 100, mastery: 0, dmg: 100, phy: 0, recharge: 75, heal: 0 },
钟离: { hp: 80, atk: 75, def: 0, cp: 100, cd: 100, mastery: 0, dmg: 100, phy: 50, recharge: 55, heal: 0 }, 钟离: { hp: 80, atk: 75, def: 0, cpct: 100, cdmg: 100, mastery: 0, dmg: 100, phy: 50, recharge: 55, heal: 0 },
神里绫华: { hp: 0, atk: 75, def: 0, cp: 100, cd: 100, mastery: 0, dmg: 100, phy: 0, recharge: 30, heal: 0 }, 神里绫华: { hp: 0, atk: 75, def: 0, cpct: 100, cdmg: 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: 75, def: 0, cpct: 100, cdmg: 100, mastery: 75, dmg: 100, phy: 0, recharge: 55, heal: 0 },
胡桃: { hp: 80, atk: 50, def: 0, cp: 100, cd: 100, mastery: 75, dmg: 100, phy: 0, recharge: 0, heal: 0 }, 胡桃: { hp: 80, atk: 50, def: 0, cpct: 100, cdmg: 100, mastery: 75, dmg: 100, phy: 0, recharge: 0, 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: 75, def: 0, cpct: 100, cdmg: 100, mastery: 75, dmg: 100, phy: 0, recharge: 55, heal: 0 },
珊瑚宫心海: { hp: 100, atk: 50, def: 0, cp: 0, cd: 0, mastery: 0, dmg: 100, phy: 0, recharge: 55, heal: 100 }, 珊瑚宫心海: { hp: 100, atk: 50, def: 0, cpct: 0, cdmg: 0, mastery: 0, dmg: 100, phy: 0, recharge: 55, heal: 100 },
莫娜: { hp: 0, atk: 75, def: 0, cp: 100, cd: 100, mastery: 75, dmg: 100, phy: 0, recharge: 75, heal: 0 }, 莫娜: { hp: 0, atk: 75, def: 0, cpct: 100, cdmg: 100, mastery: 75, dmg: 100, phy: 0, recharge: 75, heal: 0 },
阿贝多: { hp: 0, atk: 0, def: 100, cp: 100, cd: 100, mastery: 0, dmg: 100, phy: 0, recharge: 0, heal: 0 }, 阿贝多: { hp: 0, atk: 0, def: 100, cpct: 100, cdmg: 100, mastery: 0, dmg: 100, phy: 0, recharge: 0, heal: 0 },
迪奥娜: { hp: 100, atk: 50, def: 0, cp: 50, cd: 50, mastery: 0, dmg: 100, phy: 0, recharge: 90, heal: 100 }, 迪奥娜: { hp: 100, atk: 50, def: 0, cpct: 50, cdmg: 50, mastery: 0, dmg: 100, phy: 0, recharge: 90, heal: 100 },
优菈: { hp: 0, atk: 75, def: 0, cp: 100, cd: 100, mastery: 0, dmg: 40, phy: 100, recharge: 55, heal: 0 }, 优菈: { hp: 0, atk: 75, def: 0, cpct: 100, cdmg: 100, mastery: 0, dmg: 40, phy: 100, recharge: 55, heal: 0 },
达达利亚: { hp: 0, atk: 75, def: 0, cp: 100, cd: 100, mastery: 75, dmg: 100, phy: 0, recharge: 30, heal: 0 }, 达达利亚: { hp: 0, atk: 75, def: 0, cpct: 100, cdmg: 100, mastery: 75, dmg: 100, phy: 0, recharge: 30, heal: 0 },
: { hp: 0, atk: 75, def: 0, cp: 100, cd: 100, mastery: 0, dmg: 100, phy: 0, recharge: 55, heal: 0 }, : { hp: 0, atk: 75, def: 0, cpct: 100, cdmg: 100, mastery: 0, dmg: 100, phy: 0, recharge: 55, heal: 0 },
宵宫: { hp: 0, atk: 75, def: 0, cp: 100, cd: 100, mastery: 75, dmg: 100, phy: 0, recharge: 0, heal: 0 }, 宵宫: { hp: 0, atk: 75, def: 0, cpct: 100, cdmg: 100, mastery: 75, dmg: 100, phy: 0, recharge: 0, heal: 0 },
九条裟罗: { hp: 0, atk: 75, def: 0, cp: 100, cd: 100, mastery: 0, dmg: 100, phy: 0, recharge: 55, heal: 0 }, 九条裟罗: { hp: 0, atk: 75, def: 0, cpct: 100, cdmg: 100, mastery: 0, dmg: 100, phy: 0, recharge: 55, heal: 0 },
: { hp: 0, atk: 75, def: 0, cp: 100, cd: 100, mastery: 0, dmg: 100, phy: 100, recharge: 55, heal: 100 }, : { hp: 0, atk: 75, def: 0, cpct: 100, cdmg: 100, mastery: 0, dmg: 100, phy: 100, recharge: 55, heal: 100 },
菲谢尔: { hp: 0, atk: 75, def: 0, cp: 100, cd: 100, mastery: 75, dmg: 100, phy: 60, recharge: 0, heal: 0 }, 菲谢尔: { hp: 0, atk: 75, def: 0, cpct: 100, cdmg: 100, mastery: 75, dmg: 100, phy: 60, recharge: 0, heal: 0 },
罗莎莉亚: { hp: 0, atk: 75, def: 0, cp: 100, cd: 100, mastery: 0, dmg: 70, phy: 80, recharge: 30, heal: 0 }, 罗莎莉亚: { hp: 0, atk: 75, def: 0, cpct: 100, cdmg: 100, mastery: 0, dmg: 70, phy: 80, recharge: 30, heal: 0 },
可莉: { hp: 0, atk: 75, def: 0, cp: 100, cd: 100, mastery: 75, dmg: 100, phy: 0, recharge: 30, heal: 0 }, 可莉: { hp: 0, atk: 75, def: 0, cpct: 100, cdmg: 100, mastery: 75, dmg: 100, phy: 0, recharge: 30, heal: 0 },
凝光: { hp: 0, atk: 75, def: 0, cp: 100, cd: 100, mastery: 0, dmg: 100, phy: 0, recharge: 30, heal: 0 }, 凝光: { hp: 0, atk: 75, def: 0, cpct: 100, cdmg: 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: 75, def: 0, cpct: 100, cdmg: 100, mastery: 75, dmg: 100, phy: 0, recharge: 55, heal: 0 },
刻晴: { hp: 0, atk: 75, def: 0, cp: 100, cd: 100, mastery: 75, dmg: 100, phy: 100, recharge: 0, heal: 0 }, 刻晴: { hp: 0, atk: 75, def: 0, cpct: 100, cdmg: 100, mastery: 75, dmg: 100, phy: 100, recharge: 0, heal: 0 },
托马: { hp: 90, atk: 55, def: 0, cp: 90, cd: 90, mastery: 0, dmg: 90, phy: 0, recharge: 55, heal: 0 }, 托马: { hp: 90, atk: 55, def: 0, cpct: 90, cdmg: 90, mastery: 0, dmg: 90, phy: 0, recharge: 55, heal: 0 },
迪卢克: { hp: 0, atk: 75, def: 0, cp: 100, cd: 100, mastery: 75, dmg: 100, phy: 0, recharge: 0, heal: 0 }, 迪卢克: { hp: 0, atk: 75, def: 0, cpct: 100, cdmg: 100, mastery: 75, dmg: 100, phy: 0, recharge: 0, heal: 0 },
诺艾尔: { hp: 0, atk: 50, def: 90, cp: 100, cd: 100, mastery: 0, dmg: 100, phy: 0, recharge: 70, heal: 0 }, 诺艾尔: { hp: 0, atk: 50, def: 90, cpct: 100, cdmg: 100, mastery: 0, dmg: 100, phy: 0, recharge: 70, heal: 0 },
旅行者: { hp: 0, atk: 75, def: 0, cp: 100, cd: 100, mastery: 0, dmg: 100, phy: 0, recharge: 55, heal: 0 }, 旅行者: { hp: 0, atk: 75, def: 0, cpct: 100, cdmg: 100, mastery: 0, dmg: 100, phy: 0, recharge: 55, 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: 75, def: 0, cpct: 100, cdmg: 100, mastery: 75, dmg: 100, phy: 0, recharge: 55, heal: 0 },
七七: { hp: 0, atk: 75, def: 0, cp: 100, cd: 100, mastery: 0, dmg: 100, phy: 100, recharge: 55, heal: 100 }, 七七: { hp: 0, atk: 75, def: 0, cpct: 100, cdmg: 100, mastery: 0, dmg: 100, phy: 100, recharge: 55, heal: 100 },
凯亚: { hp: 0, atk: 75, def: 0, cp: 100, cd: 100, mastery: 0, dmg: 100, phy: 100, recharge: 30, heal: 0 }, 凯亚: { hp: 0, atk: 75, def: 0, cpct: 100, cdmg: 100, mastery: 0, dmg: 100, phy: 100, recharge: 30, heal: 0 },
烟绯: { hp: 0, atk: 75, def: 0, cp: 100, cd: 100, mastery: 75, dmg: 100, phy: 0, recharge: 30, heal: 0 }, 烟绯: { hp: 0, atk: 75, def: 0, cpct: 100, cdmg: 100, mastery: 75, dmg: 100, phy: 0, recharge: 30, heal: 0 },
早柚: { hp: 0, atk: 75, def: 0, cp: 100, cd: 100, mastery: 100, dmg: 100, phy: 0, recharge: 55, heal: 100 }, 早柚: { hp: 0, atk: 75, def: 0, cpct: 100, cdmg: 100, mastery: 100, dmg: 100, phy: 0, recharge: 55, heal: 100 },
安柏: { hp: 0, atk: 75, def: 0, cp: 100, cd: 100, mastery: 75, dmg: 100, phy: 100, recharge: 0, heal: 0 }, 安柏: { hp: 0, atk: 75, def: 0, cpct: 100, cdmg: 100, mastery: 75, dmg: 100, phy: 100, recharge: 0, heal: 0 },
丽莎: { hp: 0, atk: 75, def: 0, cp: 100, cd: 100, mastery: 75, dmg: 100, phy: 0, recharge: 0, heal: 0 }, 丽莎: { hp: 0, atk: 75, def: 0, cpct: 100, cdmg: 100, mastery: 75, dmg: 100, phy: 0, recharge: 0, heal: 0 },
埃洛伊: { hp: 0, atk: 75, def: 0, cp: 100, cd: 100, mastery: 0, dmg: 100, phy: 0, recharge: 0, heal: 0 }, 埃洛伊: { hp: 0, atk: 75, def: 0, cpct: 100, cdmg: 100, mastery: 0, dmg: 100, phy: 0, recharge: 0, heal: 0 },
辛焱: { hp: 0, atk: 75, def: 75, cp: 100, cd: 100, mastery: 0, dmg: 100, phy: 100, recharge: 0, heal: 0 }, 辛焱: { hp: 0, atk: 75, def: 75, cpct: 100, cdmg: 100, mastery: 0, dmg: 100, phy: 100, recharge: 0, heal: 0 },
砂糖: { hp: 0, atk: 75, def: 0, cp: 100, cd: 100, mastery: 100, dmg: 75, phy: 0, recharge: 55, heal: 0 }, 砂糖: { hp: 0, atk: 75, def: 0, cpct: 100, cdmg: 100, mastery: 100, dmg: 75, phy: 0, recharge: 55, heal: 0 },
雷泽: { hp: 0, atk: 75, def: 0, cp: 100, cd: 100, mastery: 0, dmg: 100, phy: 100, recharge: 0, heal: 0 }, 雷泽: { hp: 0, atk: 75, def: 0, cpct: 100, cdmg: 100, mastery: 0, dmg: 100, phy: 100, recharge: 0, heal: 0 },
夜兰: { hp: 80, atk: 0, def: 0, cp: 100, cd: 100, mastery: 0, dmg: 100, phy: 0, recharge: 55, heal: 0 }, 夜兰: { hp: 80, atk: 0, def: 0, cpct: 100, cdmg: 100, mastery: 0, dmg: 100, phy: 0, recharge: 55, heal: 0 },
久岐忍: { hp: 100, atk: 50, def: 0, cp: 100, cd: 100, mastery: 75, dmg: 100, phy: 0, recharge: 55, heal: 100 }, 久岐忍: { hp: 100, atk: 50, def: 0, cpct: 100, cdmg: 100, mastery: 75, dmg: 100, phy: 0, recharge: 55, heal: 100 },
鹿野院平藏: { hp: 0, atk: 75, def: 0, cp: 100, cd: 100, mastery: 75, dmg: 100, phy: 0, recharge: 30, heal: 0 }, 鹿野院平藏: { hp: 0, atk: 75, def: 0, cpct: 100, cdmg: 100, mastery: 75, dmg: 100, phy: 0, recharge: 30, heal: 0 },
提纳里: { hp: 0, atk: 75, def: 0, cp: 100, cd: 100, mastery: 90, dmg: 100, phy: 0, recharge: 30, heal: 0 }, 提纳里: { hp: 0, atk: 75, def: 0, cpct: 100, cdmg: 100, mastery: 90, 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: 30, heal: 0 }, 柯莱: { hp: 0, atk: 75, def: 0, cpct: 100, cdmg: 100, mastery: 75, 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: 75, def: 0, cpct: 100, cdmg: 100, mastery: 75, dmg: 100, phy: 0, recharge: 55, 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: 75, def: 0, cpct: 100, cdmg: 100, mastery: 75, dmg: 100, phy: 0, recharge: 55, 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: 75, def: 0, cpct: 100, cdmg: 100, mastery: 75, dmg: 100, phy: 0, recharge: 55, heal: 0 },
坎蒂丝: { hp: 75, atk: 75, def: 0, cp: 100, cd: 100, mastery: 0, dmg: 100, phy: 0, recharge: 55, heal: 0 }, 坎蒂丝: { hp: 75, atk: 75, def: 0, cpct: 100, cdmg: 100, mastery: 0, dmg: 100, phy: 0, recharge: 55, heal: 0 },
妮露: { hp: 80, atk: 0, def: 0, cp: 100, cd: 100, mastery: 75, dmg: 80, phy: 0, recharge: 30, heal: 0 }, 妮露: { hp: 80, atk: 0, def: 0, cpct: 100, cdmg: 100, mastery: 75, dmg: 80, phy: 0, recharge: 30, heal: 0 },
纳西妲: { hp: 0, atk: 55, def: 0, cp: 100, cd: 100, mastery: 100, dmg: 100, phy: 0, recharge: 55, heal: 0 }, 纳西妲: { hp: 0, atk: 55, def: 0, cpct: 100, cdmg: 100, mastery: 100, dmg: 100, phy: 0, recharge: 55, heal: 0 },
多莉: { hp: 75, atk: 75, def: 0, cp: 100, cd: 100, mastery: 0, dmg: 75, phy: 0, recharge: 55, heal: 100 } 多莉: { hp: 75, atk: 75, def: 0, cpct: 100, cdmg: 100, mastery: 0, dmg: 75, phy: 0, recharge: 55, heal: 100 }
} }

View File

@ -39,8 +39,8 @@ export const abbr = {
} }
export const attrValue = { export const attrValue = {
cp: 3.89, cpct: 3.89,
cd: 7.77, cdmg: 7.77,
mastery: 23.31, mastery: 23.31,
atk: 5.83, atk: 5.83,
hp: 5.83, hp: 5.83,
@ -57,8 +57,8 @@ export const attrMap = {
defPlus: { title: '小防御', format: 'comma', type: 'plus', base: 'def', value: 18.52 }, defPlus: { title: '小防御', format: 'comma', type: 'plus', base: 'def', value: 18.52 },
hp: { title: '大生命', format: 'pct', type: 'normal', value: 5.83, text: '5.83%' }, hp: { title: '大生命', format: 'pct', type: 'normal', value: 5.83, text: '5.83%' },
hpPlus: { title: '小生命', format: 'comma', type: 'plus', base: 'hp', value: 239.0 }, hpPlus: { title: '小生命', format: 'comma', type: 'plus', base: 'hp', value: 239.0 },
cp: { title: '暴击率', format: 'pct', type: 'normal', value: 3.89, text: '3.89%' }, cpct: { title: '暴击率', format: 'pct', type: 'normal', value: 3.89, text: '3.89%' },
cd: { title: '暴击伤害', format: 'pct', type: 'normal', value: 7.77, text: '7.77%' }, cdmg: { title: '暴击伤害', format: 'pct', type: 'normal', value: 7.77, text: '7.77%' },
mastery: { title: '元素精通', format: 'comma', type: 'normal', value: 23.31, text: '23.31' }, mastery: { title: '元素精通', format: 'comma', type: 'normal', value: 23.31, text: '23.31' },
recharge: { title: '充能效率', format: 'pct', type: 'normal', value: 6.48, text: '6.48%' }, recharge: { title: '充能效率', format: 'pct', type: 'normal', value: 6.48, text: '6.48%' },
dmg: { title: '元素伤害', format: 'pct', type: 'normal', value: 5.825, text: '5.83%' }, dmg: { title: '元素伤害', format: 'pct', type: 'normal', value: 5.825, text: '5.83%' },
@ -76,7 +76,7 @@ export const attrNameMap = anMap
export const mainAttr = { export const mainAttr = {
3: 'atk,def,hp,mastery,recharge'.split(','), 3: 'atk,def,hp,mastery,recharge'.split(','),
4: 'atk,def,hp,mastery,dmg,phy'.split(','), 4: 'atk,def,hp,mastery,dmg,phy'.split(','),
5: 'atk,def,hp,mastery,heal,cp,cd'.split(',') 5: 'atk,def,hp,mastery,heal,cpct,cdmg'.split(',')
} }
export const subAttr = 'atk,def,hp,mastery,recharge,cp,cd'.split(',') export const subAttr = 'atk,def,hp,mastery,recharge,cpct,cdmg'.split(',')

View File

@ -1,6 +1,6 @@
export default function ({ attr, artis, rule, def }) { export default function ({ attr, artis, rule, def }) {
if (artis.is('dmg', 4) && artis.is('cpct,cdmg,def,atk', 5) && attr.cp * 2 + attr.cd > 180) { if (artis.is('dmg', 4) && artis.is('cpct,cdmg,def', 5) && (attr.cpct * 2 + attr.cdmg > 180)) {
return rule('云堇-输出', { def: 100, cp: 100, cd: 100, dmg: 100, recharge: 75 }) return rule('云堇-输出', { atk: 75, def: 100, cpct: 100, cdmg: 100, dmg: 100, recharge: 75 })
} }
return def({ def: 100, cp: 50, cd: 50, recharge: 90 }) return def({ def: 100, cpct: 50, cdmg: 50, recharge: 90 })
} }

View File

@ -1,7 +1,7 @@
export default function ({ attr, rule, def }) { export default function ({ attr, rule, def }) {
// 优菈核爆 // 优菈核爆
if (attr.cpct < 15 && attr.cdmg > 200) { if (attr.cpct < 15 && attr.cdmg > 200) {
return rule('优菈-核爆', { atk: 100, cd: 100, phy: 100 }) return rule('优菈-核爆', { atk: 100, cdmg: 100, phy: 100 })
} }
return def({ atk: 75, cp: 100, cd: 100, phy: 100, recharge: 55 }) return def({ atk: 75, cpct: 100, cdmg: 100, phy: 100, recharge: 55 })
} }

View File

@ -1,3 +1,3 @@
export default function ({ def }) { export default function ({ def }) {
return def({ atk: 75, cp: 100, cd: 100, mastery: 75, dmg: 100, recharge: 55 }) return def({ atk: 75, cpct: 100, cdmg: 100, mastery: 75, dmg: 100, recharge: 55 })
} }

View File

@ -1,7 +1,7 @@
export default function ({ attr, rule, def }) { export default function ({ attr, rule, def }) {
// 激化精通璃月雷神,具体数值待定 // 激化精通璃月雷神,具体数值待定
if (attr.mastery > 80) { if (attr.mastery > 80) {
return rule('刻晴-精通', { atk: 75, cp: 100, cd: 100, mastery: 75, dmg: 100 }) return rule('刻晴-精通', { atk: 75, cpct: 100, cdmg: 100, mastery: 75, dmg: 100 })
} }
return def({ atk: 75, cp: 100, cd: 100, dmg: 100, phy: 100 }) return def({ atk: 75, cpct: 100, cdmg: 100, dmg: 100, phy: 100 })
} }

View File

@ -1,6 +1,6 @@
export default function ({ attr, weapon, rule, def }) { export default function ({ attr, weapon, rule, def }) {
if (attr.mastery < 50 && attr.cp * 2 + attr.cd > 320) { if (attr.mastery < 50 && attr.cpct * 2 + attr.cdmg > 320) {
return rule('可莉-纯火', { atk: 85, cp: 100, cd: 100, dmg: 100, recharge: 55 }) return rule('可莉-纯火', { atk: 85, cpct: 100, cdmg: 100, dmg: 100, recharge: 55 })
} }
return def({ atk: 75, cp: 100, cd: 100, mastery: 75, dmg: 100, recharge: 30 }) return def({ atk: 75, cpct: 100, cdmg: 100, mastery: 75, dmg: 100, recharge: 30 })
} }

View File

@ -11,7 +11,7 @@ export default function ({ attr, weapon, rule, def }) {
hp = 100 hp = 100
} }
if (title.length > 0) { if (title.length > 0) {
return rule(`夜兰-${title.join('')}`, { hp, cp: 100, cd: 100, mastery, dmg: 100, recharge: 55 }) return rule(`夜兰-${title.join('')}`, { hp, cpct: 100, cdmg: 100, mastery, dmg: 100, recharge: 55 })
} }
return def({ hp: 80, cp: 100, cd: 100, dmg: 100, recharge: 55 }) return def({ hp: 80, cpct: 100, cdmg: 100, dmg: 100, recharge: 55 })
} }

View File

@ -1,10 +1,10 @@
export default function ({ attr, artis, rule, def }) { export default function ({ attr, artis, rule, def }) {
// 宵宫纯色流派 // 宵宫纯色流派
if (attr.mastery < 50 && attr.cpct * 2 + attr.cdmg > 320) { if (attr.mastery < 50 && attr.cpct * 2 + attr.cdmg > 320) {
return rule('宵宫-纯火', { atk: 85, cp: 100, cd: 100, dmg: 100 }) return rule('宵宫-纯火', { atk: 85, cpct: 100, cdmg: 100, dmg: 100 })
} }
if (attr.mastery > 200 && artis.is('mastery', 3)) { if (attr.mastery > 200 && artis.is('mastery', 3)) {
return rule('宵宫-精通', { atk: 75, cp: 100, cd: 100, mastery: 100, dmg: 100 }) return rule('宵宫-精通', { atk: 75, cpct: 100, cdmg: 100, mastery: 100, dmg: 100 })
} }
return def({ atk: 75, cp: 100, cd: 100, mastery: 75, dmg: 100 }) return def({ atk: 75, cpct: 100, cdmg: 100, mastery: 75, dmg: 100 })
} }

View File

@ -1,6 +1,6 @@
export default function ({ attr, rule, def }) { export default function ({ attr, rule, def }) {
if (attr.recharge > 240) { if (attr.recharge > 240) {
return rule('温迪-充能', { atk: 75, cp: 100, cd: 100, mastery: 75, dmg: 100, recharge: 100 }) return rule('温迪-充能', { atk: 75, cpct: 100, cdmg: 100, mastery: 75, dmg: 100, recharge: 100 })
} }
return def({ atk: 75, cp: 100, cd: 100, mastery: 75, dmg: 100, recharge: 75 }) return def({ atk: 75, cpct: 100, cdmg: 100, mastery: 75, dmg: 100, recharge: 75 })
} }

View File

@ -1,6 +1,6 @@
export default function ({ artis, rule, def }) { export default function ({ artis, rule, def }) {
if (artis.is('冰套4')) { if (artis.is('冰套4')) {
return rule('甘雨-永冻', { atk: 75, cp: 100, cd: 100, dmg: 100, recharge: 55 }) return rule('甘雨-永冻', { atk: 75, cpct: 100, cdmg: 100, dmg: 100, recharge: 55 })
} }
return def({ atk: 75, cp: 100, cd: 100, mastery: 75, dmg: 100 }) return def({ atk: 75, cpct: 100, cdmg: 100, mastery: 75, dmg: 100 })
} }

View File

@ -1,7 +1,7 @@
export default function ({ attr, rule, def }) { export default function ({ attr, rule, def }) {
// 蒸发绫人,具体数值待定 // 蒸发绫人,具体数值待定
if (attr.mastery > 120) { if (attr.mastery > 120) {
return rule('绫人-精通', { hp: 45, atk: 60, cp: 100, cd: 100, mastery: 60, dmg: 100, recharge: 30 }) return rule('绫人-精通', { hp: 45, atk: 60, cpct: 100, cdmg: 100, mastery: 60, dmg: 100, recharge: 30 })
} }
return def({ hp: 50, atk: 75, cp: 100, cd: 100, dmg: 100, recharge: 30 }) return def({ hp: 50, atk: 75, cpct: 100, cdmg: 100, dmg: 100, recharge: 30 })
} }

View File

@ -1,6 +1,6 @@
export default function ({ attr, rule, def }) { export default function ({ attr, rule, def }) {
if (attr.mastery > 120) { if (attr.mastery > 120) {
return rule('神里-精通', { atk: 75, cp: 100, cd: 100, mastery: 75, dmg: 100, recharge: 30 }) return rule('神里-精通', { atk: 75, cpct: 100, cdmg: 100, mastery: 75, dmg: 100, recharge: 30 })
} }
return def({ atk: 75, cp: 100, cd: 100, dmg: 100, phy: 100, recharge: 30 }) return def({ atk: 75, cpct: 100, cdmg: 100, dmg: 100, phy: 100, recharge: 30 })
} }

View File

@ -21,7 +21,7 @@ export const details = [{
return basic(td[0] * atk / 100 + td[1] * em / 100, 'e') return basic(td[0] * atk / 100 + td[1] * em / 100, 'e')
} }
}, { }, {
title: '灭净三业蔓激化', title: '灭净三业·蔓激化',
params: { e2: true, q: false }, params: { e2: true, q: false },
dmg: ({ talent, calc, attr }, { basic }) => { dmg: ({ talent, calc, attr }, { basic }) => {
const td = talent.e['灭净三业伤害2'] const td = talent.e['灭净三业伤害2']
@ -30,7 +30,7 @@ export const details = [{
return basic(td[0] * atk / 100 + td[1] * em / 100, 'e', 'spread') return basic(td[0] * atk / 100 + td[1] * em / 100, 'e', 'spread')
} }
}, { }, {
title: '开Q灭净三业蔓激化', title: '开Q灭净三业·蔓激化',
params: { e2: true }, params: { e2: true },
dmg: ({ talent, calc, attr, cons }, { basic }) => { dmg: ({ talent, calc, attr, cons }, { basic }) => {
const td = talent.e['灭净三业伤害2'] const td = talent.e['灭净三业伤害2']

View File

@ -1,7 +1,7 @@
export default function ({ attr, rule, def }) { export default function ({ attr, rule, def }) {
// 核爆胡桃 // 核爆胡桃
if (attr.cpct < 15 && attr.cdmg > 280) { if (attr.cpct < 15 && attr.cdmg > 280) {
return rule('胡桃-核爆', { hp: 90, atk: 50, cd: 100, mastery: 90, dmg: 100 }) return rule('胡桃-核爆', { hp: 90, atk: 50, cdmg: 100, mastery: 90, dmg: 100 })
} }
return def({ hp: 80, atk: 50, cp: 100, cd: 100, mastery: 75, dmg: 100 }) return def({ hp: 80, atk: 50, cpct: 100, cdmg: 100, mastery: 75, dmg: 100 })
} }

View File

@ -1,6 +1,6 @@
export default function ({ attr, artis, rule, def }) { export default function ({ attr, artis, rule, def }) {
if (attr.cpct * 2 + attr.cdmg >= 180 && artis.is('dmg', 4)) { if (attr.cpct * 2 + attr.cdmg >= 180 && artis.is('dmg', 4)) {
return rule('暴力芭芭拉', { hp: 50, atk: 75, cp: 100, cd: 100, mastery: 75, dmg: 100, recharge: 30, heal: 50 }) return rule('暴力芭芭拉', { hp: 50, atk: 75, cpct: 100, cdmg: 100, mastery: 75, dmg: 100, recharge: 30, heal: 50 })
} }
return def({ hp: 100, atk: 50, cp: 50, cd: 50, dmg: 80, recharge: 55, heal: 100 }) return def({ hp: 100, atk: 50, cpct: 50, cdmg: 50, dmg: 80, recharge: 55, heal: 100 })
} }

View File

@ -1,6 +1,6 @@
export default function ({ attr, rule, def }) { export default function ({ attr, rule, def }) {
if (attr.mastery > 120) { if (attr.mastery > 120) {
return rule('行秋-蒸发', { atk: 75, cp: 100, cd: 100, mastery: 75, dmg: 100, recharge: 75 }) return rule('行秋-蒸发', { atk: 75, cpct: 100, cdmg: 100, mastery: 75, dmg: 100, recharge: 75 })
} }
return def({ atk: 75, cp: 100, cd: 100, mastery: 0, dmg: 100, recharge: 75 }) return def({ atk: 75, cpct: 100, cdmg: 100, mastery: 0, dmg: 100, recharge: 75 })
} }

View File

@ -1,7 +1,7 @@
export default function ({ attr, artis, rule, def }) { export default function ({ attr, artis, rule, def }) {
if (artis.is('hp', '3,4,5') && attr.hp > 40000 && attr.cpct * 2 + attr.cdmg < 100) { if (artis.is('hp', '3,4,5') && attr.hp > 40000 && attr.cpct * 2 + attr.cdmg < 100) {
// 血牛钟离其余词缀权重不高于27.89,确保小生命命中副词缀最高权重 // 血牛钟离其余词缀权重不高于27.89,确保小生命命中副词缀最高权重
return rule('钟离-血牛', { hp: 100, atk: 27, cp: 27, cd: 27, recharge: 27 }) return rule('钟离-血牛', { hp: 100, atk: 27, cpct: 27, cdmg: 27, recharge: 27 })
} }
return def({ hp: 80, atk: 75, cp: 100, cd: 100, dmg: 80, phy: 80, recharge: 55 }) return def({ hp: 80, atk: 75, cpct: 100, cdmg: 100, dmg: 80, phy: 80, recharge: 55 })
} }

View File

@ -1,10 +1,10 @@
export default function ({ attr, weapon, rule, def }) { export default function ({ attr, weapon, rule, def }) {
// 辅助精通雷神,具体数值待定 // 辅助精通雷神,具体数值待定
if (attr.mastery > 500) { if (attr.mastery > 500) {
return rule('雷神-精通', { atk: 75, cp: 90, cd: 90, mastery: 100, dmg: 75, recharge: 90 }) return rule('雷神-精通', { atk: 75, cpct: 90, cdmg: 90, mastery: 100, dmg: 75, recharge: 90 })
} }
if (weapon.name === '薙草之稻光' && weapon.affix >= 3) { if (weapon.name === '薙草之稻光' && weapon.affix >= 3) {
return rule('雷神-高精', { atk: 90, cp: 100, cd: 100, dmg: 90, recharge: 90 }) return rule('雷神-高精', { atk: 90, cpct: 100, cdmg: 100, dmg: 90, recharge: 90 })
} }
return def({ atk: 75, cp: 100, cd: 100, mastery: 0, dmg: 75, recharge: 90 }) return def({ atk: 75, cpct: 100, cdmg: 100, mastery: 0, dmg: 75, recharge: 90 })
} }

View File

@ -1,3 +1,3 @@
export default function ({ def }) { export default function ({ def }) {
return def({ atk: 75, cp: 100, cd: 100, mastery: 75, dmg: 100, recharge: 55 }) return def({ atk: 75, cpct: 100, cdmg: 100, mastery: 75, dmg: 100, recharge: 55 })
} }