diff --git a/script-universal_function.js b/script-universal_function.js index 5ffe235a..16faa2ad 100644 --- a/script-universal_function.js +++ b/script-universal_function.js @@ -783,7 +783,7 @@ function calculateAbility(member, assist = null, solo = true, teamsCount = 1) { } //倍率类觉醒的比例,直接从1开始乘 - const n_awokenScale = previousAwokenScale[idx].reduce(calculateAwokenScale, 1); + const n_previousAwokenScale = previousAwokenScale[idx].reduce(calculateAwokenScale, 1); //觉醒增加的数值 const n_awoken = awokenList.length > 0 ? Math.round(awokenAdd[idx].reduce((previous, aw) => { @@ -802,32 +802,26 @@ function calculateAbility(member, assist = null, solo = true, teamsCount = 1) { return previous + la.scale * latentCount; }, 0) : 0; - // if (member.id === 10783 && idx === 0) { - // console.debug(n_base, n_awokenScale, n_latentScale) - // } - let reValue = Math.round(n_base * n_awokenScale) + Math.round(n_base * n_latentScale) + n_plus + n_awoken + Math.round((n_assist_base + n_assist_plus) * bonusScale[idx]); - //因为语音觉醒觉醒无效也生效,所以这里需要计算 - let reValueNoAwoken = Math.round(n_base * n_awokenScale) + n_plus + Math.round((n_assist_base + n_assist_plus) * bonusScale[idx]); - - //觉醒生效时的协力、语音觉醒等的倍率 - reValue = Math.floor(reValue * latterAwokenScale[idx].reduce(calculateAwokenScale, 1)); - - //都要做四舍五入 - if (isDge && dgeRate[idx] !== 1) - { - let rate = dgeRate[idx]; + let dgeScale = 1; //地下城强化 + if (isDge && dgeRate[idx] !== 1) { + dgeScale = dgeRate[idx]; //计算攻击力,有浮游觉醒,且比例小于1时 - if (idx === 1 && rate < 1 && awokenList.includes(106)) { + if (idx === 1 && dgeScale < 1 && awokenList.includes(106)) { //比例乘以20,但是不得大于1 - rate = Math.min(1, rate * 20); + dgeScale = Math.min(1, rate * 20); } - reValue = Math.round(reValue * rate); - reValueNoAwoken = Math.round(reValueNoAwoken * rate); - }else - { - reValue = Math.round(reValue); - reValueNoAwoken = Math.round(reValueNoAwoken); } + + let reValue = Math.round(n_base * n_previousAwokenScale) + n_plus + + Math.round(n_base * n_latentScale) + n_awoken + + Math.round((n_assist_base + n_assist_plus) * bonusScale[idx]); + //觉醒生效时的协力、1.5三维、阴阳、熟成等的倍率 + reValue = Math.floor(reValue * latterAwokenScale[idx].reduce(calculateAwokenScale, 1) * dgeScale); + //因为语音觉醒觉醒无效也生效,所以这里需要计算 + let reValueNoAwoken = Math.round(n_base * n_previousAwokenScale) + n_plus + + Math.round((n_assist_base + n_assist_plus) * bonusScale[idx]); + reValueNoAwoken = Math.floor(reValueNoAwoken * dgeScale) + if (idx < 2) //idx顺序为HP、ATK、RCV { //HP和ATK最低为1 reValue = Math.max(reValue, 1);