尝试加个盾的计算
This commit is contained in:
parent
7aa1dfc139
commit
b7ffce9807
|
@ -778,4 +778,56 @@ function countMoveTime(team, leader1id, leader2id, teamIdx)
|
|||
return moveTime;
|
||||
}
|
||||
return moveTime;
|
||||
}
|
||||
//获取盾减伤比例
|
||||
function getReduceScale(ls, allAttr = false, noHPneed = false)
|
||||
{
|
||||
const sk = ls.params;
|
||||
let scale = 0;
|
||||
switch (ls.type)
|
||||
{
|
||||
case 16: //无条件盾
|
||||
scale = sk[0]/100;
|
||||
break;
|
||||
case 17: //单属性盾
|
||||
scale = allAttr ? 0 : sk[1]/100;
|
||||
break;
|
||||
case 36: //2个属性盾
|
||||
scale = allAttr ? 0 : sk[2]/100;
|
||||
break;
|
||||
case 38: //血线下 + 几率
|
||||
case 43: //血线上 + 几率
|
||||
scale = (noHPneed || allAttr) ? 0 : sk[2]/100;
|
||||
break;
|
||||
case 129: //无条件盾,属性个数不固定
|
||||
case 163: //无条件盾,属性个数不固定
|
||||
scale = (allAttr && (sk[5] & 31) != 31) ? 0 : sk[6]/100;
|
||||
break;
|
||||
case 130: //血线下 + 属性个数不固定
|
||||
case 131: //血线上 + 属性个数不固定
|
||||
scale = (noHPneed || allAttr && (sk[5] & 31) != 31) ? 0 : sk[6]/100;
|
||||
break;
|
||||
case 151: //十字心触发
|
||||
case 169: //C触发
|
||||
case 198: //回血触发
|
||||
scale = sk[2]/100;
|
||||
break;
|
||||
case 170: //多色触发
|
||||
case 182: //长串触发
|
||||
case 193: //L触发
|
||||
scale = sk[3]/100;
|
||||
break;
|
||||
case 171: //多串触发
|
||||
scale = sk[6]/100;
|
||||
break;
|
||||
case 183: //又是个有两段血线的队长技
|
||||
scale = noHPneed ? 0 : sk[4]/100;
|
||||
break;
|
||||
|
||||
case 138: //调用其他队长技
|
||||
scale = sk.reduce((pmul,skid)=> 1 - (1-pmul) * (1-getReduceScale(Skills[skid], allAttr, noHPneed)),0);
|
||||
break;
|
||||
default:
|
||||
}
|
||||
return scale || 0;
|
||||
}
|
28
script.js
28
script.js
|
@ -2924,12 +2924,17 @@ function refreshTeamTotalHP(totalDom, team, teamIdx) {
|
|||
const leader2id = teamsCount===2 ? (teamIdx === 1 ? teams[0][0][0].id : teams[1][0][0].id) : team[0][5].id;
|
||||
|
||||
if (tHpDom) {
|
||||
const reduceScale1 = getReduceScale(Skills[Cards[leader1id].leaderSkillId],true);
|
||||
const reduceScale2 = getReduceScale(Skills[Cards[leader2id].leaderSkillId],true);
|
||||
const totalReduce = 1 - (1 - reduceScale1) * (1 - reduceScale2);
|
||||
|
||||
const teamHPArr = countTeamHp(team[0], leader1id, leader2id, solo);
|
||||
const teamHPNoAwokenArr = countTeamHp(team[0], leader1id, leader2id, solo, true);
|
||||
|
||||
const tHP = teamHPArr.reduce((pv, v) => pv + v); //队伍计算的总HP
|
||||
const tHPNoAwoken = teamHPNoAwokenArr.reduce((pv, v) => pv + v); //队伍计算的总HP无觉醒
|
||||
|
||||
let tHP = teamHPArr.reduce((pv, v) => pv + v); //队伍计算的总HP
|
||||
let tHPNoAwoken = teamHPNoAwokenArr.reduce((pv, v) => pv + v); //队伍计算的总HP无觉醒
|
||||
|
||||
|
||||
const teamHPAwoken = awokenCountInTeam(team, 46, solo, teamsCount); //全队大血包个数
|
||||
|
||||
|
@ -2940,8 +2945,13 @@ function refreshTeamTotalHP(totalDom, team, teamIdx) {
|
|||
badgeHPScale = 1.15;
|
||||
}
|
||||
|
||||
tHpDom.textContent = Math.round(Math.round(tHP * (1 + 0.05 * teamHPAwoken)) * badgeHPScale) +
|
||||
` (${Math.round(Math.round(tHPNoAwoken) * badgeHPScale)})`;
|
||||
tHP = Math.round(Math.round(tHP * (1 + 0.05 * teamHPAwoken)) * badgeHPScale);
|
||||
tHPNoAwoken = Math.round(Math.round(tHPNoAwoken) * badgeHPScale);
|
||||
|
||||
const tReduceHP = tHP / (1 - reduceScale1) / (1 - reduceScale2); //队伍正常满血加上盾能承受的最大伤害
|
||||
|
||||
tHpDom.textContent = tHP +
|
||||
` (${tHPNoAwoken}) >> Max ${Math.round(tReduceHP)}(-${(totalReduce * 100).toFixed(2)}%)`;
|
||||
}
|
||||
|
||||
if (tMoveDom) {
|
||||
|
@ -2964,9 +2974,15 @@ function refreshFormationTotalHP(totalDom, teams) {
|
|||
//因为目前仅用于2P,所以直接在外面固定写了
|
||||
const leader1id = teams[0][0][0].id;
|
||||
const leader2id = teams[1][0][0].id;
|
||||
|
||||
const reduceScale1 = getReduceScale(Skills[Cards[leader1id].leaderSkillId],true);
|
||||
const reduceScale2 = getReduceScale(Skills[Cards[leader2id].leaderSkillId],true);
|
||||
const totalReduce = 1 - (1 - reduceScale1) * (1 - reduceScale2);
|
||||
|
||||
const tHPArr = teams.map(function(team) {
|
||||
const teamHPArr = countTeamHp(team[0], leader1id, leader2id, solo);
|
||||
|
||||
|
||||
const teamTHP = teamHPArr.reduce((pv, v) => pv + v); //队伍计算的总HP
|
||||
const teamHPAwoken = awokenCountInTeam(team, 46, solo, teamsCount); //全队大血包个数
|
||||
|
||||
|
@ -2981,8 +2997,10 @@ function refreshFormationTotalHP(totalDom, teams) {
|
|||
const tHP = tHPArr.reduce((pv, v) => pv + v);
|
||||
const tHPNoAwoken = tHPNoAwokenArr.reduce((pv, v) => pv + v);
|
||||
|
||||
const tReduceHP = tHP / (1 - reduceScale1) / (1 - reduceScale2); //队伍正常满血加上盾能承受的最大伤害
|
||||
|
||||
tHpDom.textContent = tHP.toString() +
|
||||
` (${tHPNoAwoken})`;
|
||||
` (${tHPNoAwoken}) >> Max ${Math.round(tReduceHP)}(-${(totalReduce * 100).toFixed(2)}%)`;
|
||||
}
|
||||
}
|
||||
//刷新单人技能CD
|
||||
|
|
Loading…
Reference in New Issue