| @@ -269,20 +269,10 @@ | |||||
| content:"Change \"Swap\" to \"Copy\" when dragging"; | content:"Change \"Swap\" to \"Copy\" when dragging"; | ||||
| } | } | ||||
| .team-total-info .tIf-total-hp::before{ | |||||
| content: "Team HP (No Awoken): "; | |||||
| } | |||||
| .team-total-info .tIf-total-move::before{ | |||||
| content: "Team Move Time: "; | |||||
| } | |||||
| .team-total-info .tIf-total-move::after{ | |||||
| content: "s"; | |||||
| } | |||||
| .team-total-info .tIf-total-move.fixed-move-time::after{ | |||||
| content: "s (Fiexd)"; | |||||
| } | |||||
| .formation-total-info .tIf-total-hp::before{ | |||||
| content: "Total HP (No Awoken): "; | |||||
| .tIf-total-move .general::after, | |||||
| .tIf-total-move .awoken-bind::after | |||||
| { | |||||
| content: " sec"; | |||||
| } | } | ||||
| .setting-box .row-mon-id .open-search::before{ | .setting-box .row-mon-id .open-search::before{ | ||||
| @@ -19,4 +19,13 @@ | |||||
| .badge[data-badge-icon='2']::before | .badge[data-badge-icon='2']::before | ||||
| { | { | ||||
| background-position-x: -36px; | background-position-x: -36px; | ||||
| } | |||||
| .tIf-total-hp .awoken-bind::before, | |||||
| .tIf-total-move .awoken-bind::before | |||||
| { | |||||
| background-position-x: -16px; | |||||
| } | |||||
| .tIf-total-hp .reduce::before{ | |||||
| background-position-x: -16px; | |||||
| } | } | ||||
| @@ -261,21 +261,11 @@ | |||||
| content:"ドラッグ時に「スワップ」を「コピー」に変更"; | content:"ドラッグ時に「スワップ」を「コピー」に変更"; | ||||
| } | } | ||||
| .team-total-info .tIf-total-hp::before{ | |||||
| content: "チームHP (覚醒無効):"; | |||||
| } | |||||
| .team-total-info .tIf-total-move::before{ | |||||
| content: "チーム操作時間:"; | |||||
| } | |||||
| .team-total-info .tIf-total-move::after{ | |||||
| .tIf-total-move .general::after, | |||||
| .tIf-total-move .awoken-bind::after | |||||
| { | |||||
| content: " 秒"; | content: " 秒"; | ||||
| } | } | ||||
| .team-total-info .tIf-total-move.fixed-move-time::after{ | |||||
| content: " 秒 (固定)"; | |||||
| } | |||||
| .formation-total-info .tIf-total-hp::before{ | |||||
| content: "総HP (覚醒無効):"; | |||||
| } | |||||
| .setting-box .row-mon-id .open-search::before{ | .setting-box .row-mon-id .open-search::before{ | ||||
| content: "簡単な検索"; | content: "簡単な検索"; | ||||
| @@ -258,20 +258,10 @@ | |||||
| content:"드래그할 때 \"바꾸기\"를 \"복사\"로 변경"; | content:"드래그할 때 \"바꾸기\"를 \"복사\"로 변경"; | ||||
| } | } | ||||
| .team-total-info .tIf-total-hp::before{ | |||||
| content: "팀 HP (각성은 없습니다):"; | |||||
| } | |||||
| .team-total-info .tIf-total-move::before{ | |||||
| content: "팀 운영 시간입니다:"; | |||||
| } | |||||
| .team-total-info .tIf-total-move::after{ | |||||
| content: "초"; | |||||
| } | |||||
| .team-total-info .tIf-total-move.fixed-move-time::after{ | |||||
| content: "초 (고정합니다)"; | |||||
| } | |||||
| .formation-total-info .tIf-total-hp::before{ | |||||
| content: "총 HP (각성은 없습니다):"; | |||||
| .tIf-total-move .general::after, | |||||
| .tIf-total-move .awoken-bind::after | |||||
| { | |||||
| content: " 초"; | |||||
| } | } | ||||
| .setting-box .row-mon-id .open-search::before{ | .setting-box .row-mon-id .open-search::before{ | ||||
| @@ -2011,6 +2011,10 @@ function parseSkillDescription(skill) | |||||
| const skill = Skills[card.leaderSkillId]; | const skill = Skills[card.leaderSkillId]; | ||||
| return getReduceScale(skill, undefined, true) > 0; | return getReduceScale(skill, undefined, true) > 0; | ||||
| })}, | })}, | ||||
| {name:"队长盾减伤-排除几率盾",function:cards=>cards.filter(card=>{ | |||||
| const skill = Skills[card.leaderSkillId]; | |||||
| return getReduceScale(skill, undefined, undefined, true) > 0; | |||||
| })}, | |||||
| {name:"满血99重力不下半血-队长盾减伤[29%, 100%)",function:cards=>cards.filter(card=>{ | {name:"满血99重力不下半血-队长盾减伤[29%, 100%)",function:cards=>cards.filter(card=>{ | ||||
| const skill = Skills[card.leaderSkillId]; | const skill = Skills[card.leaderSkillId]; | ||||
| const reduceScale = getReduceScale(skill); | const reduceScale = getReduceScale(skill); | ||||
| @@ -264,21 +264,11 @@ | |||||
| content:"拖拽時使用“複製”而不是“替換”"; | content:"拖拽時使用“複製”而不是“替換”"; | ||||
| } | } | ||||
| .team-total-info .tIf-total-hp::before{ | |||||
| content: "隊伍HP (無覺醒):"; | |||||
| } | |||||
| .team-total-info .tIf-total-move::before{ | |||||
| content: "隊伍操作時間:"; | |||||
| } | |||||
| .team-total-info .tIf-total-move::after{ | |||||
| .tIf-total-move .general::after, | |||||
| .tIf-total-move .awoken-bind::after | |||||
| { | |||||
| content: " 秒"; | content: " 秒"; | ||||
| } | } | ||||
| .team-total-info .tIf-total-move.fixed-move-time::after{ | |||||
| content: " 秒(固定)"; | |||||
| } | |||||
| .formation-total-info .tIf-total-hp::before{ | |||||
| content: "總HP (無覺醒):"; | |||||
| } | |||||
| .setting-box .row-mon-id .open-search::before{ | .setting-box .row-mon-id .open-search::before{ | ||||
| content: "簡易搜索"; | content: "簡易搜索"; | ||||
| @@ -264,21 +264,11 @@ | |||||
| content:"拖拽时使用“复制”而不是“替换”"; | content:"拖拽时使用“复制”而不是“替换”"; | ||||
| } | } | ||||
| .team-total-info .tIf-total-hp::before{ | |||||
| content: "队伍HP (无觉醒):"; | |||||
| } | |||||
| .team-total-info .tIf-total-move::before{ | |||||
| content: "队伍操作时间:"; | |||||
| } | |||||
| .team-total-info .tIf-total-move::after{ | |||||
| .tIf-total-move .general::after, | |||||
| .tIf-total-move .awoken-bind::after | |||||
| { | |||||
| content: " 秒"; | content: " 秒"; | ||||
| } | } | ||||
| .team-total-info .tIf-total-move.fixed-move-time::after{ | |||||
| content: " 秒 (固定)"; | |||||
| } | |||||
| .formation-total-info .tIf-total-hp::before{ | |||||
| content: "总HP (无觉醒):"; | |||||
| } | |||||
| .setting-box .row-mon-id .open-search::before{ | .setting-box .row-mon-id .open-search::before{ | ||||
| content: "简易搜索"; | content: "简易搜索"; | ||||
| @@ -1 +1 @@ | |||||
| [{"code":"ja","ckey":{"card":"e7da40a58dda7b97054ac2333602e2c6","skill":"d829065777d5b3d0519cca1a9a43ae2a"},"updateTime":1608475052805},{"code":"en","ckey":{"card":"a1dd13cd3c7243536e66dee37375522b","skill":"1cfc69c93eed2ce73d642f98e288c384"},"updateTime":1608289647603},{"code":"ko","ckey":{"card":"ab7ec2c7964c791db5bd41662511433a","skill":"ef7de03968a8673c034df0d05e5d94df"},"updateTime":1608475052805}] | |||||
| [{"code":"ja","ckey":{"card":"8cc80162edf086b387d97a9d6f694b6e","skill":"d829065777d5b3d0519cca1a9a43ae2a"},"updateTime":1608710446774},{"code":"en","ckey":{"card":"26df0faf12dd89144ce0e5aa540065c9","skill":"1cfc69c93eed2ce73d642f98e288c384"},"updateTime":1608710446774},{"code":"ko","ckey":{"card":"7664377aa213ed2364b35210fd0dafb8","skill":"c3dbb11d1c4676c39d3bce48d113a6e7"},"updateTime":1608710446774}] | |||||
| @@ -25,6 +25,26 @@ const teamsCount = 2; | |||||
| <script type="text/javascript"> | <script type="text/javascript"> | ||||
| var formation = new Formation(teamsCount,5); | var formation = new Formation(teamsCount,5); | ||||
| </script> | </script> | ||||
| <style type="text/css"> | |||||
| .show-team-name-left .team-box-name::before{ | |||||
| display: inline-block; | |||||
| } | |||||
| .show-team-name-right .team-box-name::after{ | |||||
| display: inline-block; | |||||
| } | |||||
| .show-team-name-right .team-total-info .team-awoken, | |||||
| .show-team-name-right .team-total-info>div, | |||||
| .show-team-name-left .team-total-info .team-awoken, | |||||
| .show-team-name-left .team-total-info>div | |||||
| { | |||||
| display: inline-block; | |||||
| } | |||||
| .show-team-name-right .team-total-info .team-awoken::before, | |||||
| .show-team-name-left .team-total-info .team-awoken::before | |||||
| { | |||||
| display: none; | |||||
| } | |||||
| </style> | |||||
| </head> | </head> | ||||
| <body> | <body> | ||||
| @@ -53,11 +73,20 @@ var formation = new Formation(teamsCount,5); | |||||
| </div> | </div> | ||||
| <div class="formation-box"> | <div class="formation-box"> | ||||
| <div class="title-box edit"><input type="text" class="title" placeholder="输入队伍标题" /><h1 class="title-display"></h1></div> | <div class="title-box edit"><input type="text" class="title" placeholder="输入队伍标题" /><h1 class="title-display"></h1></div> | ||||
| <div class="formation-total-info"><div class="tIf-total-hp"></div></div> | |||||
| <div class="formation-total-info"> | |||||
| <div class="tIf-total-hp"> | |||||
| <span class="general"></span> | |||||
| <span class="awoken-bind"></span> | |||||
| <span class="reduce"></span> | |||||
| </div> | |||||
| </div> | |||||
| <ul class="teams"> | <ul class="teams"> | ||||
| <li class="team-bigbox team-1 show-team-name-right"> | <li class="team-bigbox team-1 show-team-name-right"> | ||||
| <div class="team-total-info"> | <div class="team-total-info"> | ||||
| <div class="tIf-total-move"></div> | |||||
| <div class="tIf-total-move"> | |||||
| <span class="general"></span> | |||||
| <span class="awoken-bind"></span> | |||||
| </div> | |||||
| <div class="team-awoken"> | <div class="team-awoken"> | ||||
| <!--怪物觉醒--> | <!--怪物觉醒--> | ||||
| <ul class="awoken-ul"> | <ul class="awoken-ul"> | ||||
| @@ -439,7 +468,10 @@ var formation = new Formation(teamsCount,5); | |||||
| </div> | </div> | ||||
| </div> | </div> | ||||
| <div class="team-total-info"> | <div class="team-total-info"> | ||||
| <div class="tIf-total-move"></div> | |||||
| <div class="tIf-total-move"> | |||||
| <span class="general"></span> | |||||
| <span class="awoken-bind"></span> | |||||
| </div> | |||||
| <div class="team-awoken"> | <div class="team-awoken"> | ||||
| <!--怪物觉醒--> | <!--怪物觉醒--> | ||||
| <ul class="awoken-ul"> | <ul class="awoken-ul"> | ||||
| @@ -692,23 +692,46 @@ function countMoveTime(team, leader1id, leader2id, teamIdx) | |||||
| const time1 = leaderSkillMoveTime(ls1); | const time1 = leaderSkillMoveTime(ls1); | ||||
| const time2 = leaderSkillMoveTime(ls2); | const time2 = leaderSkillMoveTime(ls2); | ||||
| let moveTime = {fixed:false,duration:5}; //基础5秒 | |||||
| let moveTime = { | |||||
| fixed:false, | |||||
| duration:{ | |||||
| default:5, | |||||
| leader:0, | |||||
| badge:0, | |||||
| awoken:0, | |||||
| } | |||||
| }; //基础5秒 | |||||
| //固定操作时间的直接返回 | //固定操作时间的直接返回 | ||||
| if (time1.fixed || time2.fixed) | if (time1.fixed || time2.fixed) | ||||
| { | { | ||||
| moveTime.fixed = true; | moveTime.fixed = true; | ||||
| moveTime.duration = time1.fixed ? | |||||
| (time2.fixed && time2.duration < time1.duration ? time2.duration : time1.duration) : | |||||
| moveTime.duration.leader = time1.fixed ? | |||||
| (time2.fixed ? Math.min(time1.duration, time2.duration) : time1.duration) : | |||||
| time2.duration; | time2.duration; | ||||
| } else | } else | ||||
| { | { | ||||
| moveTime.duration += time1.duration + time2.duration | |||||
| //2人协力时的特殊处理 | |||||
| if (teamsCount === 2) | |||||
| moveTime.duration.leader = time1.duration + time2.duration; | |||||
| //1人、3人计算徽章 | |||||
| if (solo || teamsCount === 3) | |||||
| { | |||||
| //徽章部分 | |||||
| if (team[2] == 1) //小手指 | |||||
| { | |||||
| moveTime.duration.badge = 1; | |||||
| } else if (team[2] == 13) //大手指 | |||||
| { | |||||
| moveTime.duration.badge = 2; | |||||
| } else if (team[2] == 18) //月卡 | |||||
| { | |||||
| moveTime.duration.badge = 3; | |||||
| } | |||||
| } | |||||
| else if (teamsCount === 2) //2人协力时的特殊处理 | |||||
| { | { | ||||
| const teams = formation.teams; | const teams = formation.teams; | ||||
| const team2 = teamIdx === 1 ? teams[0] : teams[1]; //获取队伍2 | const team2 = teamIdx === 1 ? teams[0] : teams[1]; //获取队伍2 | ||||
| //复制队伍1 | |||||
| //复制队伍1,这里参数里的 team 换成了一个新的数组 | |||||
| team = [ | team = [ | ||||
| team[0].concat(), | team[0].concat(), | ||||
| team[1].concat() | team[1].concat() | ||||
| @@ -718,19 +741,12 @@ function countMoveTime(team, leader1id, leader2id, teamIdx) | |||||
| team[1].push(team2[1][0]); | team[1].push(team2[1][0]); | ||||
| } | } | ||||
| //徽章部分 | |||||
| if (team[2] == 1 && (solo || teamsCount === 3)) { | |||||
| moveTime.duration += 1; | |||||
| } else if (team[2] == 13 && (solo || teamsCount === 3)) { | |||||
| moveTime.duration += 2; | |||||
| } | |||||
| //觉醒 | //觉醒 | ||||
| const awokenMoveTime = [ | const awokenMoveTime = [ | ||||
| {index:19,value:0.5}, //小手指 | {index:19,value:0.5}, //小手指 | ||||
| {index:53,value:1}, //大手指 | {index:53,value:1}, //大手指 | ||||
| ]; | ]; | ||||
| moveTime.duration += awokenMoveTime.reduce((duration,aw)=> | |||||
| moveTime.duration.awoken += awokenMoveTime.reduce((duration,aw)=> | |||||
| duration + awokenCountInTeam(team, aw.index, solo, teamsCount) * aw.value | duration + awokenCountInTeam(team, aw.index, solo, teamsCount) * aw.value | ||||
| ,0); | ,0); | ||||
| //潜觉 | //潜觉 | ||||
| @@ -739,7 +755,7 @@ function countMoveTime(team, leader1id, leader2id, teamIdx) | |||||
| {index:31,value:0.12}, //大手指潜觉 | {index:31,value:0.12}, //大手指潜觉 | ||||
| ]; | ]; | ||||
| moveTime.duration += latentMoveTime.reduce((duration,la)=> | |||||
| moveTime.duration.awoken += latentMoveTime.reduce((duration,la)=> | |||||
| duration + team[0].reduce((count,menber)=> | duration + team[0].reduce((count,menber)=> | ||||
| count + (menber.latent ? menber.latent.filter(l=>l==la.index).length : 0) | count + (menber.latent ? menber.latent.filter(l=>l==la.index).length : 0) | ||||
| ,0) * la.value | ,0) * la.value | ||||
| @@ -780,7 +796,7 @@ function countMoveTime(team, leader1id, leader2id, teamIdx) | |||||
| return moveTime; | return moveTime; | ||||
| } | } | ||||
| //获取盾减伤比例 | //获取盾减伤比例 | ||||
| function getReduceScale(ls, allAttr = false, noHPneed = false) | |||||
| function getReduceScale(ls, allAttr = false, noHPneed = false, noProbability = false) | |||||
| { | { | ||||
| const sk = ls.params; | const sk = ls.params; | ||||
| let scale = 0; | let scale = 0; | ||||
| @@ -795,9 +811,9 @@ function getReduceScale(ls, allAttr = false, noHPneed = false) | |||||
| case 36: //2个属性盾 | case 36: //2个属性盾 | ||||
| scale = allAttr ? 0 : sk[2]/100; | scale = allAttr ? 0 : sk[2]/100; | ||||
| break; | break; | ||||
| case 38: //血线下 + 几率 | |||||
| case 43: //血线上 + 几率 | |||||
| scale = (noHPneed || allAttr) ? 0 : sk[2]/100; | |||||
| case 38: //血线下 + 可能几率 | |||||
| case 43: //血线上 + 可能几率 | |||||
| scale = (noHPneed || noProbability && sk[1] !== 100) ? 0 : sk[2]/100; | |||||
| break; | break; | ||||
| case 129: //无条件盾,属性个数不固定 | case 129: //无条件盾,属性个数不固定 | ||||
| case 163: //无条件盾,属性个数不固定 | case 163: //无条件盾,属性个数不固定 | ||||
| @@ -1974,18 +1974,26 @@ function initialize() { | |||||
| const teamAbilityDom = teamBigBox.querySelector(".team-ability"); | const teamAbilityDom = teamBigBox.querySelector(".team-ability"); | ||||
| refreshAbility(teamAbilityDom, teamData, editBox.memberIdx[2]); //本人能力值 | refreshAbility(teamAbilityDom, teamData, editBox.memberIdx[2]); //本人能力值 | ||||
| const teamTotalInfoDom = teamBigBox.querySelector(".team-total-info"); //队伍能力值合计 | |||||
| if (teamTotalInfoDom) refreshTeamTotalHP(teamTotalInfoDom, teamData, editBox.memberIdx[0]); | |||||
| const formationTotalInfoDom = formationBox.querySelector(".formation-total-info"); //所有队伍能力值合计 | |||||
| if (formationTotalInfoDom) refreshFormationTotalHP(formationTotalInfoDom, formation.teams); | |||||
| const teamAwokenDom = teamBigBox.querySelector(".team-awoken"); //队伍觉醒合计 | |||||
| if (teamAwokenDom) refreshTeamAwokenCount(teamAwokenDom, teamData); | |||||
| const formationAwokenDom = formationBox.querySelector(".formation-awoken"); //所有队伍觉醒合计 | |||||
| if (formationAwokenDom) refreshFormationAwokenCount(formationAwokenDom, formation.teams); | |||||
| //如果是2人协力,且修改的是队长的情况,为了刷新另一个队伍时间计算,直接刷新整个队形 | |||||
| if (teamsCount === 2 && editBox.memberIdx[2] === 0) | |||||
| { | |||||
| refreshAll(formation); | |||||
| }else | |||||
| { | |||||
| const teamTotalInfoDom = teamBigBox.querySelector(".team-total-info"); //队伍能力值合计 | |||||
| if (teamTotalInfoDom) refreshTeamTotalHP(teamTotalInfoDom, teamData, editBox.memberIdx[0]); | |||||
| const formationTotalInfoDom = formationBox.querySelector(".formation-total-info"); //所有队伍能力值合计 | |||||
| if (formationTotalInfoDom) refreshFormationTotalHP(formationTotalInfoDom, formation.teams); | |||||
| const teamAwokenDom = teamBigBox.querySelector(".team-awoken"); //队伍觉醒合计 | |||||
| if (teamAwokenDom) refreshTeamAwokenCount(teamAwokenDom, teamData); | |||||
| const formationAwokenDom = formationBox.querySelector(".formation-awoken"); //所有队伍觉醒合计 | |||||
| if (formationAwokenDom) refreshFormationAwokenCount(formationAwokenDom, formation.teams); | |||||
| //刷新改队员的CD | |||||
| refreshMemberSkillCD(teamBox, teamData, editBox.memberIdx[2]); | |||||
| } | |||||
| //刷新改队员的CD | |||||
| refreshMemberSkillCD(teamBox, teamData, editBox.memberIdx[2]); | |||||
| creatNewUrl(); | creatNewUrl(); | ||||
| editBox.hide(); | editBox.hide(); | ||||
| }; | }; | ||||
| @@ -2910,6 +2918,15 @@ function refreshAbility(abilityDom, team, idx) { | |||||
| } | } | ||||
| }); | }); | ||||
| } | } | ||||
| function setTextContentAndAttribute(dom,str) | |||||
| { | |||||
| if (!dom) return; | |||||
| const attrName = "data-value"; | |||||
| dom.textContent = str; | |||||
| dom.setAttribute(attrName, str); | |||||
| } | |||||
| //刷新队伍能力值合计 | //刷新队伍能力值合计 | ||||
| function refreshTeamTotalHP(totalDom, team, teamIdx) { | function refreshTeamTotalHP(totalDom, team, teamIdx) { | ||||
| //计算总的生命值 | //计算总的生命值 | ||||
| @@ -2924,8 +2941,8 @@ 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; | const leader2id = teamsCount===2 ? (teamIdx === 1 ? teams[0][0][0].id : teams[1][0][0].id) : team[0][5].id; | ||||
| if (tHpDom) { | if (tHpDom) { | ||||
| const reduceScale1 = getReduceScale(Skills[Cards[leader1id].leaderSkillId],true); | |||||
| const reduceScale2 = getReduceScale(Skills[Cards[leader2id].leaderSkillId],true); | |||||
| const reduceScale1 = getReduceScale(Skills[Cards[leader1id].leaderSkillId],true,true,true); | |||||
| const reduceScale2 = getReduceScale(Skills[Cards[leader2id].leaderSkillId],true,true,true); | |||||
| const totalReduce = 1 - (1 - reduceScale1) * (1 - reduceScale2); | const totalReduce = 1 - (1 - reduceScale1) * (1 - reduceScale2); | ||||
| const teamHPArr = countTeamHp(team[0], leader1id, leader2id, solo); | const teamHPArr = countTeamHp(team[0], leader1id, leader2id, solo); | ||||
| @@ -2948,19 +2965,36 @@ function refreshTeamTotalHP(totalDom, team, teamIdx) { | |||||
| tHP = Math.round(Math.round(tHP * (1 + 0.05 * teamHPAwoken)) * badgeHPScale); | tHP = Math.round(Math.round(tHP * (1 + 0.05 * teamHPAwoken)) * badgeHPScale); | ||||
| tHPNoAwoken = Math.round(Math.round(tHPNoAwoken) * badgeHPScale); | tHPNoAwoken = Math.round(Math.round(tHPNoAwoken) * badgeHPScale); | ||||
| const tReduceHP = tHP / (1 - reduceScale1) / (1 - reduceScale2); //队伍正常满血加上盾能承受的最大伤害 | |||||
| const tReduceHP = Math.round(tHP / (1 - reduceScale1) / (1 - reduceScale2)); //队伍正常满血加上盾能承受的最大伤害 | |||||
| const tReduceHPNoAwoken = Math.round(tHPNoAwoken / (1 - reduceScale1) / (1 - reduceScale2)); //队伍封觉醒满血加上盾能承受的最大伤害 | |||||
| const tHpDom_general = tHpDom.querySelector(".general"); | |||||
| const tHpDom_noAwoken = tHpDom.querySelector(".awoken-bind"); | |||||
| const tHpDom_reduce = tHpDom.querySelector(".reduce"); | |||||
| tHpDom.textContent = tHP + | |||||
| ` (${tHPNoAwoken}) >> Max ${Math.round(tReduceHP)}(-${(totalReduce * 100).toFixed(2)}%)`; | |||||
| setTextContentAndAttribute(tHpDom_general, tHP); | |||||
| setTextContentAndAttribute(tHpDom_noAwoken, tHPNoAwoken); | |||||
| setTextContentAndAttribute(tHpDom_reduce, (totalReduce * 100).toFixed(2)); | |||||
| tHpDom_reduce.setAttribute("data-max-equal-general", tReduceHP); | |||||
| tHpDom_reduce.setAttribute("data-max-equal-awoken-bind", tReduceHPNoAwoken); | |||||
| } | } | ||||
| if (tMoveDom) { | if (tMoveDom) { | ||||
| const moveTime = countMoveTime(team, leader1id, leader2id, teamIdx); | const moveTime = countMoveTime(team, leader1id, leader2id, teamIdx); | ||||
| tMoveDom.textContent = moveTime.duration; | |||||
| if (moveTime.fixed) | |||||
| const tMoveDom_general = tMoveDom.querySelector(".general"); | |||||
| const tMoveDom_noAwoken = tMoveDom.querySelector(".awoken-bind"); | |||||
| if (moveTime.fixed) //固定时间的 | |||||
| { | |||||
| tMoveDom.classList.add("fixed-move-time"); | tMoveDom.classList.add("fixed-move-time"); | ||||
| else | |||||
| setTextContentAndAttribute(tMoveDom_general, moveTime.duration.leader); | |||||
| setTextContentAndAttribute(tMoveDom_noAwoken, moveTime.duration.leader); | |||||
| } else | |||||
| { | |||||
| tMoveDom.classList.remove("fixed-move-time"); | tMoveDom.classList.remove("fixed-move-time"); | ||||
| setTextContentAndAttribute(tMoveDom_general, Math.round((moveTime.duration.default + moveTime.duration.leader + moveTime.duration.badge + moveTime.duration.awoken) * 100) / 100); | |||||
| setTextContentAndAttribute(tMoveDom_noAwoken, Math.round((moveTime.duration.default + moveTime.duration.leader + moveTime.duration.badge) * 100) / 100); | |||||
| } | |||||
| } | } | ||||
| } | } | ||||
| //刷新所有队伍能力值合计 | //刷新所有队伍能力值合计 | ||||
| @@ -2975,8 +3009,8 @@ function refreshFormationTotalHP(totalDom, teams) { | |||||
| const leader1id = teams[0][0][0].id; | const leader1id = teams[0][0][0].id; | ||||
| const leader2id = teams[1][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 reduceScale1 = getReduceScale(Skills[Cards[leader1id].leaderSkillId],true,true,true); | |||||
| const reduceScale2 = getReduceScale(Skills[Cards[leader2id].leaderSkillId],true,true,true); | |||||
| const totalReduce = 1 - (1 - reduceScale1) * (1 - reduceScale2); | const totalReduce = 1 - (1 - reduceScale1) * (1 - reduceScale2); | ||||
| const tHPArr = teams.map(function(team) { | const tHPArr = teams.map(function(team) { | ||||
| @@ -2997,10 +3031,18 @@ function refreshFormationTotalHP(totalDom, teams) { | |||||
| const tHP = tHPArr.reduce((pv, v) => pv + v); | const tHP = tHPArr.reduce((pv, v) => pv + v); | ||||
| const tHPNoAwoken = tHPNoAwokenArr.reduce((pv, v) => pv + v); | const tHPNoAwoken = tHPNoAwokenArr.reduce((pv, v) => pv + v); | ||||
| const tReduceHP = tHP / (1 - reduceScale1) / (1 - reduceScale2); //队伍正常满血加上盾能承受的最大伤害 | |||||
| const tReduceHP = Math.round(tHP / (1 - reduceScale1) / (1 - reduceScale2)); //队伍正常满血加上盾能承受的最大伤害 | |||||
| const tReduceHPNoAwoken = Math.round(tHPNoAwoken / (1 - reduceScale1) / (1 - reduceScale2)); //队伍封觉醒满血加上盾能承受的最大伤害 | |||||
| const tHpDom_general = tHpDom.querySelector(".general"); | |||||
| const tHpDom_noAwoken = tHpDom.querySelector(".awoken-bind"); | |||||
| const tHpDom_reduce = tHpDom.querySelector(".reduce"); | |||||
| tHpDom.textContent = tHP.toString() + | |||||
| ` (${tHPNoAwoken}) >> Max ${Math.round(tReduceHP)}(-${(totalReduce * 100).toFixed(2)}%)`; | |||||
| setTextContentAndAttribute(tHpDom_general, tHP); | |||||
| setTextContentAndAttribute(tHpDom_noAwoken, tHPNoAwoken); | |||||
| setTextContentAndAttribute(tHpDom_reduce, (totalReduce * 100).toFixed(2)); | |||||
| tHpDom_reduce.setAttribute("data-max-equal-general", tReduceHP); | |||||
| tHpDom_reduce.setAttribute("data-max-equal-awoken-bind", tReduceHPNoAwoken); | |||||
| } | } | ||||
| } | } | ||||
| //刷新单人技能CD | //刷新单人技能CD | ||||
| @@ -74,7 +74,17 @@ var formation = new Formation(teamsCount,6); | |||||
| <li><input type="radio" name="team-1-badge" class="badge-radio" value="16" id="team-1-badge-16"><label class="badge" data-badge-icon="16" for="team-1-badge-16"></label></li> | <li><input type="radio" name="team-1-badge" class="badge-radio" value="16" id="team-1-badge-16"><label class="badge" data-badge-icon="16" for="team-1-badge-16"></label></li> | ||||
| <li><input type="radio" name="team-1-badge" class="badge-radio" value="17" id="team-1-badge-17"><label class="badge" data-badge-icon="17" for="team-1-badge-17"></label></li> | <li><input type="radio" name="team-1-badge" class="badge-radio" value="17" id="team-1-badge-17"><label class="badge" data-badge-icon="17" for="team-1-badge-17"></label></li> | ||||
| <li><input type="radio" name="team-1-badge" class="badge-radio" value="18" id="team-1-badge-18"><label class="badge" data-badge-icon="18" for="team-1-badge-18"></label></li> | <li><input type="radio" name="team-1-badge" class="badge-radio" value="18" id="team-1-badge-18"><label class="badge" data-badge-icon="18" for="team-1-badge-18"></label></li> | ||||
| <div class="team-total-info"><div class="tIf-total-hp"></div><div class="tIf-total-move"></div></div> | |||||
| <div class="team-total-info"> | |||||
| <div class="tIf-total-hp"> | |||||
| <span class="general"></span> | |||||
| <span class="awoken-bind"></span> | |||||
| <span class="reduce"></span> | |||||
| </div> | |||||
| <div class="tIf-total-move"> | |||||
| <span class="general"></span> | |||||
| <span class="awoken-bind"></span> | |||||
| </div> | |||||
| </div> | |||||
| </ul> | </ul> | ||||
| <div class="team-box-name"> | <div class="team-box-name"> | ||||
| <div class="team-box"> | <div class="team-box"> | ||||
| @@ -486,24 +486,6 @@ ul{ | |||||
| width: var(--head-block-width); | width: var(--head-block-width); | ||||
| height: var(--head-block-height); | height: var(--head-block-height); | ||||
| } | } | ||||
| .show-team-name-left .team-box-name::before{ | |||||
| display: inline-block; | |||||
| } | |||||
| .show-team-name-right .team-box-name::after{ | |||||
| display: inline-block; | |||||
| } | |||||
| .show-team-name-right .team-total-info .team-awoken, | |||||
| .show-team-name-right .team-total-info>div, | |||||
| .show-team-name-left .team-total-info .team-awoken, | |||||
| .show-team-name-left .team-total-info>div | |||||
| { | |||||
| display: inline-block; | |||||
| } | |||||
| .show-team-name-right .team-total-info .team-awoken::before, | |||||
| .show-team-name-left .team-total-info .team-awoken::before | |||||
| { | |||||
| display: none; | |||||
| } | |||||
| .reverse-member-assist .team-box-name::after, | .reverse-member-assist .team-box-name::after, | ||||
| @@ -576,11 +558,67 @@ ul{ | |||||
| { | { | ||||
| display: inline-block; | display: inline-block; | ||||
| } | } | ||||
| /* | |||||
| .team-info .tIf-total-hp,.team-info .tIf-total-rcv{ | |||||
| display:inline-block; | |||||
| /*各种信息统计的图标*/ | |||||
| .tIf-total-hp::before, | |||||
| .tIf-total-move::before, | |||||
| .tIf-total-hp .awoken-bind::before, | |||||
| .tIf-total-move .awoken-bind::before, | |||||
| .tIf-total-move.fixed-move-time::after, | |||||
| .tIf-total-hp .reduce::before | |||||
| { | |||||
| content: " "; | |||||
| background-size: cover; | |||||
| display: inline-block; | |||||
| width: 16px; | |||||
| height: 16px; | |||||
| } | } | ||||
| */ | |||||
| .tIf-total-hp .awoken-bind::before, | |||||
| .tIf-total-move .awoken-bind::before | |||||
| { | |||||
| background-image: url(images/icon-awoken-bind.png); | |||||
| } | |||||
| .tIf-total-hp::before{ | |||||
| background-image: url(images/icon-HP.png); | |||||
| } | |||||
| .tIf-total-hp .reduce::before{ | |||||
| background-image: url(images/icon-reduce.png); | |||||
| } | |||||
| .tIf-total-hp .reduce::after{ | |||||
| content: "%"; | |||||
| } | |||||
| .tIf-total-hp .reduce:not([data-value="0.00"])::after{ | |||||
| content: "%⇔" attr(data-max-equal-general) "/" attr(data-max-equal-awoken-bind); | |||||
| } | |||||
| .tIf-total-move::before{ | |||||
| background-image: url(images/icon-orb-move-time.png); | |||||
| } | |||||
| /*固定手指的情况*/ | |||||
| .tIf-total-move.fixed-move-time .awoken-bind | |||||
| { | |||||
| display: none; | |||||
| } | |||||
| .tIf-total-move.fixed-move-time{ | |||||
| position: relative; | |||||
| } | |||||
| @keyframes hidden-visible-animate{ | |||||
| from { | |||||
| opacity: 1; | |||||
| } | |||||
| to { | |||||
| opacity: 0.3; | |||||
| } | |||||
| } | |||||
| .tIf-total-move.fixed-move-time::after{ | |||||
| background-image: url(images/icon-bind.png); | |||||
| position: absolute; | |||||
| left:0; | |||||
| top:2px; | |||||
| animation: hidden-visible-animate 0.5s infinite linear alternate; | |||||
| } | |||||
| /*队伍的潜觉*/ | /*队伍的潜觉*/ | ||||
| .team-latents .latents{ | .team-latents .latents{ | ||||
| width: var(--head-block-width); | width: var(--head-block-width); | ||||
| @@ -720,12 +758,6 @@ ul{ | |||||
| display: none; | display: none; | ||||
| content: ""; | content: ""; | ||||
| } | } | ||||
| .show-team-name-left .team-ability::before{ | |||||
| display: inline-block; | |||||
| } | |||||
| .show-team-name-right .team-ability::after{ | |||||
| display: inline-block; | |||||
| } | |||||
| .abilitys .hp::before, | .abilitys .hp::before, | ||||
| .abilitys .atk::before, | .abilitys .atk::before, | ||||
| .abilitys .rcv::before | .abilitys .rcv::before | ||||
| @@ -89,7 +89,17 @@ var formation = new Formation(teamsCount,6); | |||||
| <li><input type="radio" name="team-1-badge" class="badge-radio" value="16" id="team-1-badge-16"><label class="badge" data-badge-icon="16" for="team-1-badge-16"></label></li> | <li><input type="radio" name="team-1-badge" class="badge-radio" value="16" id="team-1-badge-16"><label class="badge" data-badge-icon="16" for="team-1-badge-16"></label></li> | ||||
| <li><input type="radio" name="team-1-badge" class="badge-radio" value="17" id="team-1-badge-17"><label class="badge" data-badge-icon="17" for="team-1-badge-17"></label></li> | <li><input type="radio" name="team-1-badge" class="badge-radio" value="17" id="team-1-badge-17"><label class="badge" data-badge-icon="17" for="team-1-badge-17"></label></li> | ||||
| <li><input type="radio" name="team-1-badge" class="badge-radio" value="18" id="team-1-badge-18"><label class="badge" data-badge-icon="18" for="team-1-badge-18"></label></li> | <li><input type="radio" name="team-1-badge" class="badge-radio" value="18" id="team-1-badge-18"><label class="badge" data-badge-icon="18" for="team-1-badge-18"></label></li> | ||||
| <div class="team-total-info"><div class="tIf-total-hp"></div><div class="tIf-total-move"></div></div> | |||||
| <div class="team-total-info"> | |||||
| <div class="tIf-total-hp"> | |||||
| <span class="general"></span> | |||||
| <span class="awoken-bind"></span> | |||||
| <span class="reduce"></span> | |||||
| </div> | |||||
| <div class="tIf-total-move"> | |||||
| <span class="general"></span> | |||||
| <span class="awoken-bind"></span> | |||||
| </div> | |||||
| </div> | |||||
| </ul> | </ul> | ||||
| <div class="team-box-name"> | <div class="team-box-name"> | ||||
| <div class="team-box"> | <div class="team-box"> | ||||
| @@ -434,8 +444,18 @@ var formation = new Formation(teamsCount,6); | |||||
| <li><input type="radio" name="team-2-badge" class="badge-radio" value="15" id="team-2-badge-15"><label class="badge" data-badge-icon="15" for="team-2-badge-15"></label></li> | <li><input type="radio" name="team-2-badge" class="badge-radio" value="15" id="team-2-badge-15"><label class="badge" data-badge-icon="15" for="team-2-badge-15"></label></li> | ||||
| <li><input type="radio" name="team-2-badge" class="badge-radio" value="16" id="team-2-badge-16"><label class="badge" data-badge-icon="16" for="team-2-badge-16"></label></li> | <li><input type="radio" name="team-2-badge" class="badge-radio" value="16" id="team-2-badge-16"><label class="badge" data-badge-icon="16" for="team-2-badge-16"></label></li> | ||||
| <li><input type="radio" name="team-2-badge" class="badge-radio" value="17" id="team-2-badge-17"><label class="badge" data-badge-icon="17" for="team-2-badge-17"></label></li> | <li><input type="radio" name="team-2-badge" class="badge-radio" value="17" id="team-2-badge-17"><label class="badge" data-badge-icon="17" for="team-2-badge-17"></label></li> | ||||
| <li><input type="radio" name="team-1-badge" class="badge-radio" value="18" id="team-1-badge-18"><label class="badge" data-badge-icon="18" for="team-1-badge-18"></label></li> | |||||
| <div class="team-total-info"><div class="tIf-total-hp"></div><div class="tIf-total-move"></div></div> | |||||
| <li><input type="radio" name="team-2-badge" class="badge-radio" value="18" id="team-2-badge-18"><label class="badge" data-badge-icon="18" for="team-2-badge-18"></label></li> | |||||
| <div class="team-total-info"> | |||||
| <div class="tIf-total-hp"> | |||||
| <span class="general"></span> | |||||
| <span class="awoken-bind"></span> | |||||
| <span class="reduce"></span> | |||||
| </div> | |||||
| <div class="tIf-total-move"> | |||||
| <span class="general"></span> | |||||
| <span class="awoken-bind"></span> | |||||
| </div> | |||||
| </div> | |||||
| </ul> | </ul> | ||||
| <div class="team-box-name"> | <div class="team-box-name"> | ||||
| <div class="team-box"> | <div class="team-box"> | ||||
| @@ -780,8 +800,18 @@ var formation = new Formation(teamsCount,6); | |||||
| <li><input type="radio" name="team-3-badge" class="badge-radio" value="15" id="team-3-badge-15"><label class="badge" data-badge-icon="15" for="team-3-badge-15"></label></li> | <li><input type="radio" name="team-3-badge" class="badge-radio" value="15" id="team-3-badge-15"><label class="badge" data-badge-icon="15" for="team-3-badge-15"></label></li> | ||||
| <li><input type="radio" name="team-3-badge" class="badge-radio" value="16" id="team-3-badge-16"><label class="badge" data-badge-icon="16" for="team-3-badge-16"></label></li> | <li><input type="radio" name="team-3-badge" class="badge-radio" value="16" id="team-3-badge-16"><label class="badge" data-badge-icon="16" for="team-3-badge-16"></label></li> | ||||
| <li><input type="radio" name="team-3-badge" class="badge-radio" value="17" id="team-3-badge-17"><label class="badge" data-badge-icon="17" for="team-3-badge-17"></label></li> | <li><input type="radio" name="team-3-badge" class="badge-radio" value="17" id="team-3-badge-17"><label class="badge" data-badge-icon="17" for="team-3-badge-17"></label></li> | ||||
| <li><input type="radio" name="team-1-badge" class="badge-radio" value="18" id="team-1-badge-18"><label class="badge" data-badge-icon="18" for="team-1-badge-18"></label></li> | |||||
| <div class="team-total-info"><div class="tIf-total-hp"></div><div class="tIf-total-move"></div></div> | |||||
| <li><input type="radio" name="team-3-badge" class="badge-radio" value="18" id="team-3-badge-18"><label class="badge" data-badge-icon="18" for="team-3-badge-18"></label></li> | |||||
| <div class="team-total-info"> | |||||
| <div class="tIf-total-hp"> | |||||
| <span class="general"></span> | |||||
| <span class="awoken-bind"></span> | |||||
| <span class="reduce"></span> | |||||
| </div> | |||||
| <div class="tIf-total-move"> | |||||
| <span class="general"></span> | |||||
| <span class="awoken-bind"></span> | |||||
| </div> | |||||
| </div> | |||||
| </ul> | </ul> | ||||
| <div class="team-box-name"> | <div class="team-box-name"> | ||||
| <div class="team-box"> | <div class="team-box"> | ||||