diff --git a/languages/en.css b/languages/en.css
index 229a434f..364255db 100644
--- a/languages/en.css
+++ b/languages/en.css
@@ -235,23 +235,36 @@ label[for="merge-skill"]::after{
content: "⛔Remove Assist";
}
.control-box .config-display-list summary::before{
- content:"Display Switchs List";
+ content:"Displayed Information Switchs List";
}
-.control-box .show-mon-id-lbl::after{
- content:"🆔Show card's ID";
+label[for="show-card-id"]::after{
+ content:"🆔Card's ID";
}
-.control-box .show-mon-skill-cd-lbl::after{
- content:"❄️Show skill's cooldown";
+label[for="show-card-rarity"]::after{
+ content:"⭐️Card's Rarity";
}
-label[for="show-mon-rarity"]::after{
- content:"⭐️Show Rarity";
+label[for="show-member-skill-cd"]::after{
+ content:"❄️Member's Skill CD";
}
-.control-box .show-mon-awoken-lbl::after{
- content:"👁️Show card awoken";
+label[for="show-member-ability"]::after{
+ content:"⚔️Member's Ability";
}
-.control-box .show-awoken-count-lbl::after{
- content:"⚔️Show awoken count and ability";
+label[for="show-member-awoken"]::after{
+ content:"👁️Member's Awoken";
}
+label[for="show-team-total-info"]::after{
+ content:"Team's HP Info";
+}
+label[for="show-team-awoken-count"]::after{
+ content:"Team's Awoken Count";
+}
+label[for="show-team-awoken-effect"]::after{
+ content:"Team's Awoken Effect Calculate";
+}
+label[for="show-team-attrtype-count"]::after{
+ content:"Team's Rarity, Attributes, Types Count";
+}
+
label[for="change-swap-to-copy"]::after{
content:"\"Copy\" when dragging (or hold down Ctrl)";
}
@@ -309,7 +322,7 @@ label[for="default-level"]::after
.search-box .attrs-div label[for="fix-main-color"]::after{
content: "The order of the attributes is consistent with the order you selected";
}
-.search-box .consider-equivalent-awoken-label::after{
+.search-box label[for="consider-equivalent-awoken"]::after{
content: "Search for Equivalent Awoken";
}
.search-box label[for="include-super-awoken"]::after{
diff --git a/languages/ja.css b/languages/ja.css
index f0f93323..b0333fb1 100644
--- a/languages/ja.css
+++ b/languages/ja.css
@@ -228,23 +228,37 @@ label[for="merge-skill"]::after{
content: "⛔アシストを解除";
}
.control-box .config-display-list summary::before{
- content:"表示内容の開閉器一覧";
+ content:"情報表示内容の開閉器一覧";
}
-label[for="show-mon-id"]::after{
- content:"🆔モンスターIDを表示";
+
+label[for="show-card-id"]::after{
+ content:"🆔カード番号";
+}
+label[for="show-card-rarity"]::after{
+ content:"⭐️カードの希少性";
+}
+label[for="show-member-skill-cd"]::after{
+ content:"❄️メンバーズスキルCD";
}
-label[for="show-mon-skill-cd"]::after{
- content:"❄️スキル クールを表示";
+label[for="show-member-ability"]::after{
+ content:"⚔️メンバーの能力";
}
-label[for="show-mon-rarity"]::after{
- content:"⭐️希少性を表示";
+label[for="show-member-awoken"]::after{
+ content:"👁️メンバーの覚醒";
}
-label[for="show-mon-awoken"]::after{
- content:"👁️カードの覚醒を表示";
+label[for="show-team-total-info"]::after{
+ content:"チームのHP情報";
}
-label[for="show-awoken-count"]::after{
- content:"⚔️総覚醒と能力値の表示";
+label[for="show-team-awoken-count"]::after{
+ content:"チームの覚醒合計";
}
+label[for="show-team-awoken-effect"]::after{
+ content:"チームの覚醒効果の計算";
+}
+label[for="show-team-attrtype-count"]::after{
+ content:"チームの希少性、属性、タイプの合計";
+}
+
label[for="change-swap-to-copy"]::after{
content:"ドラッグ時にコピー (またはCtrlを押したまま)";
}
@@ -302,7 +316,7 @@ label[for="default-level"]::after
.search-box .attrs-div label[for="fix-main-color"]::after{
content: "属性の順序は、選択した順序と一致";
}
-.search-box .consider-equivalent-awoken-label::after{
+.search-box label[for="consider-equivalent-awoken"]::after{
content: "同時に同等の覚醒を検索";
}
.search-box label[for="include-super-awoken"]::after{
diff --git a/languages/ko.css b/languages/ko.css
index d080d86d..57a490ca 100644
--- a/languages/ko.css
+++ b/languages/ko.css
@@ -224,25 +224,38 @@ label[for="merge-skill"]::after{
content: "⛔보조를 해제합";
}
.control-box .config-display-list summary::before{
- content:"디스플레이 스위치 목록";
+ content:"표시된 정보 전환 목록";
}
-label[for="show-mon-id"]::after{
- content:"🆔몬스터 ID 표시";
+label[for="show-card-id"]::after{
+ content:"🆔카드 ID";
}
-label[for="show-mon-skill-cd"]::after{
- content:"❄️스킬의 사용 대기 시간 표시";
+label[for="show-card-rarity"]::after{
+ content:"⭐️카드의 희귀도";
}
-label[for="show-mon-rarity"]::after{
- content:"⭐️희귀도 표시";
+label[for="show-member-skill-cd"]::after{
+ content:"❄️회원의 CD";
}
-label[for="show-mon-awoken"]::after{
- content:"👁️카드 각성을 표시합";
+label[for="show-member-ability"]::after{
+ content:"⚔️회원의 능력";
}
-label[for="show-awoken-count"]::after{
- content:"⚔️각성 통계 및 기능 값 표시";
+label[for="show-member-awoken"]::after{
+ content:"👁️회원이 깨어났다";
}
+label[for="show-team-total-info"]::after{
+ content:"팀의 HP 정보";
+}
+label[for="show-team-awoken-count"]::after{
+ content:"팀의 각성 카운트";
+}
+label[for="show-team-awoken-effect"]::after{
+ content:"팀의 각성 효과 계산";
+}
+label[for="show-team-attrtype-count"]::after{
+ content:"팀의 희귀도, 속성, 유형 수";
+}
+
label[for="change-swap-to-copy"]::after{
- content:"끌 때 복사 (또는 Ctrl 키를 누른 채)";
+ content:"끌 때 복사(또는 Ctrl 키를 누른 채)";
}
label[for="default-level"]::after
{
@@ -298,7 +311,7 @@ label[for="default-level"]::after
.search-box .attrs-div label[for="fix-main-color"]::after{
content: "속성 순서는 선택한 순서와 일치합니다";
}
-.search-box .consider-equivalent-awoken-label::after{
+.search-box label[for="consider-equivalent-awoken"]::after{
content: "동시에 해당 경계를 각성";
}
.search-box label[for="include-super-awoken"]::after{
diff --git a/languages/zh-TW.css b/languages/zh-TW.css
index 08a1cded..022c6620 100644
--- a/languages/zh-TW.css
+++ b/languages/zh-TW.css
@@ -234,22 +234,34 @@ label[for="merge-skill"]::after{
content: "⛔解除輔助";
}
.control-box .config-display-list summary::before{
- content:"展示內容開關列表";
+ content:"展示信息開關列表";
}
-label[for="show-mon-id"]::after{
- content:"🆔顯示怪物ID";
+label[for="show-card-id"]::after{
+ content:"🆔卡片ID";
}
-label[for="show-mon-skill-cd"]::after{
- content:"❄️顯示技能冷卻";
+label[for="show-card-rarity"]::after{
+ content:"⭐️卡片稀有度";
}
-label[for="show-mon-rarity"]::after{
- content:"⭐️顯示稀有度";
+label[for="show-member-skill-cd"]::after{
+ content:"❄️隊員技能冷卻";
}
-label[for="show-mon-awoken"]::after{
- content:"👁️顯示卡片覺醒";
+label[for="show-member-ability"]::after{
+ content:"⚔️隊員能力值";
}
-label[for="show-awoken-count"]::after{
- content:"⚔️顯示覺醒統計和能力值";
+label[for="show-member-awoken"]::after{
+ content:"👁️隊員覺醒";
+}
+label[for="show-team-total-info"]::after{
+ content:"隊伍生命值等信息統計";
+}
+label[for="show-team-awoken-count"]::after{
+ content:"隊伍覺醒計數";
+}
+label[for="show-team-awoken-effect"]::after{
+ content:"隊伍覺醒效果計算";
+}
+label[for="show-team-attrtype-count"]::after{
+ content:"隊伍稀有度、屬性與類型計數";
}
label[for="change-swap-to-copy"]::after{
content:"拖拽時使用“複製”(或按住 Ctrl)";
@@ -308,7 +320,7 @@ label[for="default-level"]::after
.search-box .attrs-div label[for="fix-main-color"]::after{
content: "強制屬性順序與選擇順序一致";
}
-.search-box .consider-equivalent-awoken-label::after{
+.search-box label[for="consider-equivalent-awoken"]::after{
content: "同時搜索等效覺醒";
}
.search-box label[for="include-super-awoken"]::after{
diff --git a/languages/zh.css b/languages/zh.css
index 54270f2d..95615969 100644
--- a/languages/zh.css
+++ b/languages/zh.css
@@ -145,6 +145,9 @@ label[for="merge-skill"]::after{
.edit-box .button-box .button-done.only-assist::after{
content: "只能辅助";
}
+.team-awoken-effect::before{
+ content: "队伍觉醒效果:";
+}
.team-awoken::before{
content: "队伍觉醒总计:";
}
@@ -233,7 +236,7 @@ label[for="merge-skill"]::after{
content: "⛔解除辅助";
}
.control-box .config-display-list summary::before{
- content:"展示内容开关列表";
+ content:"展示信息开关列表";
}
label[for="show-card-id"]::after{
content:"🆔卡片ID";
@@ -250,14 +253,14 @@ label[for="show-member-ability"]::after{
label[for="show-member-awoken"]::after{
content:"👁️队员觉醒";
}
-label[for="show-3P-team-total-info"]::after{
- content:"队伍信息统计";
+label[for="show-team-total-info"]::after{
+ content:"队伍生命值等信息统计";
}
label[for="show-team-awoken-count"]::after{
content:"队伍觉醒计数";
}
label[for="show-team-awoken-effect"]::after{
- content:"队伍觉醒效果统计";
+ content:"队伍觉醒效果计算";
}
label[for="show-team-attrtype-count"]::after{
content:"队伍稀有度、属性与类型计数";
@@ -319,7 +322,7 @@ label[for="default-level"]::after
.search-box .attrs-div label[for="fix-main-color"]::after{
content: "强制属性顺序与选择顺序一致";
}
-.search-box .consider-equivalent-awoken-label::after{
+.search-box label[for="consider-equivalent-awoken"]::after{
content: "同时搜索等效觉醒";
}
.search-box label[for="include-super-awoken"]::after{
diff --git a/multi.html b/multi.html
index 3b319132..47902acc 100644
--- a/multi.html
+++ b/multi.html
@@ -37,7 +37,8 @@ const teamsCount = 2;
.show-team-name-left :where(
.team-member-awoken,
.team-assist-awoken,
- .team-member-types
+ .team-member-types,
+ .team-ability
){
padding-left: var(--head-block-width);
}
@@ -74,9 +75,10 @@ const teamsCount = 2;
+
-
+
-
@@ -1306,12 +1328,12 @@ const teamsCount = 2;
-
-
-
-
-
-
+
+
+
+
+
+
diff --git a/script-universal_function.js b/script-universal_function.js
index 5393b8f3..eb0eca5c 100644
--- a/script-universal_function.js
+++ b/script-universal_function.js
@@ -1194,7 +1194,7 @@ function countTeamHp(team, leader1id, leader2id, solo, noAwoken = false) {
case 217:{ //限定队伍星级,不包括好友队长
let cardsArr = memberArr.slice(0, 5).filter(m => m.id > 0).map(m => m.card); //所有的卡片
const rarityCount = cardsArr.reduce((pre, memberCard)=>{
- return pre + memberCard.rarity;
+ return pre + (memberCard?.rarity || 1);
}, 0);
scale = rarityCount <= sk[0] ? sk[1] / 100 : 1;
break;
diff --git a/script.js b/script.js
index c88d99a3..291afacf 100644
--- a/script.js
+++ b/script.js
@@ -3050,7 +3050,9 @@ function initialize() {
teamBadge.classList.remove(className_ChoseBadges);
team[2] = parseInt(this.value, 10);
const teamTotalInfoDom = teamBigBox.querySelector(".team-total-info"); //队伍能力值合计
- refreshTeamTotalHP(teamTotalInfoDom, team, teamIdx);
+ if (teamTotalInfoDom) refreshTeamTotalHP(teamTotalInfoDom, team, teamIdx);
+ const teamAwokenEffectDom = teamBigBox.querySelector(".team-awoken-effect"); //队伍觉醒效果计算
+ if (teamAwokenEffectDom) refreshTeamAwokenEfeect(teamAwokenEffectDom, team, teamIdx);
createNewUrl();
} else {
teamBadge.classList.add(className_ChoseBadges);
@@ -4575,15 +4577,19 @@ function initialize() {
} 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 teamAwokenEffectDom = teamBigBox.querySelector(".team-awoken-effect"); //队伍觉醒效果计算
+ if (teamAwokenEffectDom) refreshTeamAwokenEfeect(teamAwokenEffectDom, teamData, editBox.memberIdx[0]);
const teamMemberTypesDom = teamBigBox.querySelector(".team-member-types"); //队员类型
- if (teamMemberTypesDom) refreshmemberTypes(teamMemberTypesDom, teamData, editBox.memberIdx[2]); //刷新本人觉醒
+ if (teamMemberTypesDom) refreshMemberTypes(teamMemberTypesDom, teamData, editBox.memberIdx[2]); //刷新本人觉醒
const teamMemberAwokenDom = teamBigBox.querySelector(".team-member-awoken"); //队员觉醒
const teamAssistAwokenDom = teamBigBox.querySelector(".team-assist-awoken"); //辅助觉醒
- if (teamMemberAwokenDom && teamAssistAwokenDom) refreshmemberAwoken(teamMemberAwokenDom, teamAssistAwokenDom, teamData, editBox.memberIdx[2]); //刷新本人觉醒
+ if (teamMemberAwokenDom && teamAssistAwokenDom) refreshMemberAwoken(teamMemberAwokenDom, teamAssistAwokenDom, teamData, editBox.memberIdx[2]); //刷新本人觉醒
const teamAwokenDom = teamBigBox.querySelector(".team-awoken"); //队伍觉醒合计
if (teamAwokenDom) refreshTeamAwokenCount(teamAwokenDom, teamData);
@@ -4656,11 +4662,11 @@ function initialize() {
if (formationTotalInfoDom) refreshFormationTotalHP(formationTotalInfoDom, formation.teams);
const teamMemberTypesDom = teamBigBox.querySelector(".team-member-types"); //队员类型
- if (teamMemberTypesDom) refreshmemberTypes(teamMemberTypesDom, teamData, editBox.memberIdx[2]); //刷新本人觉醒
+ if (teamMemberTypesDom) refreshMemberTypes(teamMemberTypesDom, teamData, editBox.memberIdx[2]); //刷新本人觉醒
const teamMemberAwokenDom = teamBigBox.querySelector(".team-member-awoken"); //队员觉醒
const teamAssistAwokenDom = teamBigBox.querySelector(".team-assist-awoken"); //辅助觉醒
- if (teamMemberAwokenDom && teamAssistAwokenDom) refreshmemberAwoken(teamMemberAwokenDom, teamAssistAwokenDom, teamData, editBox.memberIdx[2]); //刷新本人觉醒
+ if (teamMemberAwokenDom && teamAssistAwokenDom) refreshMemberAwoken(teamMemberAwokenDom, teamAssistAwokenDom, teamData, editBox.memberIdx[2]); //刷新本人觉醒
const teamAwokenDom = teamBigBox.querySelector(".team-awoken"); //队伍觉醒合计
if (teamAwokenDom) refreshTeamAwokenCount(teamAwokenDom, teamData);
@@ -5451,8 +5457,8 @@ function refreshAll(formationData) {
}
refreshMemberSkillCD(teamBox, teamData, ti); //技能CD
refreshAbility(teamAbilityDom, teamData, ti); //本人能力值
- refreshmemberAwoken(teamMemberAwokenDom, teamAssistAwokenDom, teamData, ti); //本人觉醒
- refreshmemberTypes(teamMemberTypesDom, teamData, ti); //本人类型
+ refreshMemberAwoken(teamMemberAwokenDom, teamAssistAwokenDom, teamData, ti); //本人觉醒
+ refreshMemberTypes(teamMemberTypesDom, teamData, ti); //本人类型
}
const teamTotalInfoDom = teamBigBox.querySelector(".team-total-info"); //队伍能力值合计
@@ -5460,6 +5466,9 @@ function refreshAll(formationData) {
const teamAwokenDom = teamBigBox.querySelector(".team-awoken"); //队伍觉醒合计
if (teamAwokenDom) refreshTeamAwokenCount(teamAwokenDom, teamData);
+
+ const teamAwokenEffectDom = teamBigBox.querySelector(".team-awoken-effect"); //队伍觉醒效果计算
+ if (teamAwokenEffectDom) refreshTeamAwokenEfeect(teamAwokenEffectDom, teamData, teamNum);
});
if (formationTotalInfoDom) refreshFormationTotalHP(formationTotalInfoDom, formation.teams);
@@ -5470,6 +5479,295 @@ function refreshAll(formationData) {
// txtDetail.onblur(); //这个需要放在显示出来后再改才能生效
}
+//刷新队伍觉醒效果计算
+function refreshTeamAwokenEfeect(awokenEffectDom, team, ti) {
+ let targetIcon;
+ //防绑
+ if (targetIcon = awokenEffectDom.querySelector(".awoken-icon[data-awoken-icon=\"52\"]")) {
+ const teamFlagsMembers = Array.from(targetIcon.parentElement.querySelectorAll(".team-flags li"));
+ const equivalentAwoken = equivalent_awoken.find(eak => eak.big === 52);
+ //储存附加 52 即大防绑的队长技能
+ const leader1 = team[0][0], leader2 = team[0][5];
+ const parseLSkill = skillParser(leader1?.card?.leaderSkillId).concat(skillParser(leader2?.card?.leaderSkillId));
+ let lsAwoken = parseLSkill.filter(skill=>skill.kind == SkillKinds.ImpartAwakenings);
+
+ for (let mi=0; mi < team[0].length; mi++) {
+ const memberData = team[0][mi];
+ const assistData = team[1][mi];
+ let thisAwokenNum = 0;
+ if (team[2] === 8 && mi === 0) {
+ thisAwokenNum = 2;
+ } else {
+ let effectiveAwokens = memberData.effectiveAwokens(assistData);
+ if (lsAwoken.length) { //增加队长技赋予的觉醒
+ const {attrs, types} = memberData.getAttrsTypesWithWeapon(assistData);
+ lsAwoken.forEach(pls=>{
+ if (attrs.some(a => pls.attrs.includes(a)) || types.some(t => pls.types.includes(t))) {
+ effectiveAwokens.push(...pls.awakenings);
+ }
+ });
+ }
+ thisAwokenNum = effectiveAwokens.filter(ak=>ak==equivalentAwoken.small).length + effectiveAwokens.filter(ak=>ak==equivalentAwoken.big).length * equivalentAwoken.times;
+ }
+ teamFlagsMembers[mi].setAttribute("data-percent", Math.round(Math.min(thisAwokenNum/2,1)*100));
+ }
+ }
+ //SX
+ if (targetIcon = awokenEffectDom.querySelector(".awoken-icon[data-awoken-icon=\"28\"]")) {
+ const targetValue = targetIcon.parentElement.querySelector(".prob");
+ const thisAwokenNum = awokenCountInTeam(team, 28, solo, teamsCount);
+ let prob = thisAwokenNum / 5;
+ if (team[2] == 9) prob += 0.5;
+ targetValue.setAttribute(dataAttrName, Math.round(Math.min(prob,1)*100));
+ }
+ //暗
+ if (targetIcon = awokenEffectDom.querySelector(".awoken-icon[data-awoken-icon=\"68\"]")) {
+ const targetValue = targetIcon.parentElement.querySelector(".prob");
+ const equivalentAwoken = equivalent_awoken.find(eak => eak.big === 68);
+ const thisAwokenNum = awokenCountInTeam(team, equivalentAwoken.small, solo, teamsCount) +
+ awokenCountInTeam(team, equivalentAwoken.big, solo, teamsCount) * equivalentAwoken.times;
+ let prob = thisAwokenNum / 5;
+ if (team[2] == 12) prob += 0.5;
+ targetValue.setAttribute(dataAttrName, Math.round(Math.min(prob,1)*100));
+ }
+ //废
+ if (targetIcon = awokenEffectDom.querySelector(".awoken-icon[data-awoken-icon=\"69\"]")) {
+ const targetValue = targetIcon.parentElement.querySelector(".prob");
+ const equivalentAwoken = equivalent_awoken.find(eak => eak.big === 69);
+ const thisAwokenNum = awokenCountInTeam(team, equivalentAwoken.small, solo, teamsCount) +
+ awokenCountInTeam(team, equivalentAwoken.big, solo, teamsCount) * equivalentAwoken.times;
+ let prob = thisAwokenNum / 5;
+ if (team[2] == 13) prob += 0.5;
+ targetValue.setAttribute(dataAttrName, Math.round(Math.min(prob,1)*100));
+ }
+ //毒
+ if (targetIcon = awokenEffectDom.querySelector(".awoken-icon[data-awoken-icon=\"70\"]")) {
+ const targetValue = targetIcon.parentElement.querySelector(".prob");
+ const equivalentAwoken = equivalent_awoken.find(eak => eak.big === 70);
+ const thisAwokenNum = awokenCountInTeam(team, equivalentAwoken.small, solo, teamsCount) +
+ awokenCountInTeam(team, equivalentAwoken.big, solo, teamsCount) * equivalentAwoken.times;
+ let prob = thisAwokenNum / 5;
+ if (team[2] == 14) prob += 0.5;
+ targetValue.setAttribute(dataAttrName, Math.round(Math.min(prob,1)*100));
+ }
+ //云
+ if (targetIcon = awokenEffectDom.querySelector(".awoken-icon[data-awoken-icon=\"54\"]")) {
+ const targetValue = targetIcon.parentElement.querySelector(".prob");
+ const thisAwokenNum = awokenCountInTeam(team, 54, solo, teamsCount);
+ let prob = thisAwokenNum / 1;
+ targetValue.setAttribute(dataAttrName, Math.round(Math.min(prob,1)*100));
+ }
+ //封条
+ if (targetIcon = awokenEffectDom.querySelector(".awoken-icon[data-awoken-icon=\"55\"]")) {
+ const targetValue = targetIcon.parentElement.querySelector(".prob");
+ const thisAwokenNum = awokenCountInTeam(team, 55, solo, teamsCount);
+ let prob = thisAwokenNum / 1;
+ targetValue.setAttribute(dataAttrName, Math.round(Math.min(prob,1)*100));
+ }
+ //掉废
+ if (targetIcon = awokenEffectDom.querySelector(".latent-icon[data-latent-icon=\"14\"]")) {
+ const targetValue = targetIcon.parentElement.querySelector(".prob");
+ let prob = team[0].some(member=>member?.latent?.includes(14)) ? 1 : 0;
+ targetValue.setAttribute(dataAttrName, Math.round(Math.min(prob,1)*100));
+ }
+ //掉毒
+ if (targetIcon = awokenEffectDom.querySelector(".latent-icon[data-latent-icon=\"15\"]")) {
+ const targetValue = targetIcon.parentElement.querySelector(".prob");
+ let prob = team[0].some(member=>member.latent.includes(15)) ? 1 : 0;
+ targetValue.setAttribute(dataAttrName, Math.round(Math.min(prob,1)*100));
+ }
+ //心横解转转
+ if (targetIcon = awokenEffectDom.querySelector(".latent-icon[data-latent-icon=\"40\"]")) {
+ const targetValue = targetIcon.parentElement.querySelector(".count");
+ const equivalentAwoken = equivalent_awoken.find(eak => eak.small === 20);
+ let count = 0;
+ for (let mi=0; mi < team[0].length; mi++) {
+ const memberData = team[0][mi];
+ const assistData = team[1][mi];
+ if (memberData.latent.includes(40)) {
+ let effectiveAwokens = memberData.effectiveAwokens(assistData);
+ count += effectiveAwokens.filter(ak=>ak==equivalentAwoken.small).length + effectiveAwokens.filter(ak=>ak==equivalentAwoken.big).length * equivalentAwoken.times;
+ } else {
+ continue;
+ }
+ }
+ targetValue.setAttribute(dataAttrName, count);
+ }
+ //心追解云封
+ if (targetIcon = awokenEffectDom.querySelector(".latent-icon[data-latent-icon=\"46\"]")) {
+ const targetValue = targetIcon.parentElement.querySelector(".count");
+ let count = 0;
+ for (let mi=0; mi < team[0].length; mi++) {
+ const memberData = team[0][mi];
+ const assistData = team[1][mi];
+ if (memberData.latent.includes(46)) {
+ let effectiveAwokens = memberData.effectiveAwokens(assistData);
+ count += effectiveAwokens.filter(ak=>ak==45).length;
+ } else {
+ continue;
+ }
+ }
+ targetValue.setAttribute(dataAttrName, count);
+ }
+ //普通L
+ if (targetIcon = awokenEffectDom.querySelector(".awoken-icon[data-awoken-icon=\"60\"]")) {
+ const orbs = Array.from(targetIcon.parentElement.querySelectorAll(".orb-list .orb"));
+ const equivalentAwoken = equivalent_awoken.find(eak => eak.small === 60);
+ let count = new Array(orbs.length).fill(0);
+ for (let mi=0; mi < team[0].length; mi++) {
+ const memberData = team[0][mi];
+ const assistData = team[1][mi];
+ let effectiveAwokens = memberData?.effectiveAwokens(assistData);
+ let thisAwokenNum = effectiveAwokens.filter(ak=>ak==equivalentAwoken.small).length + effectiveAwokens.filter(ak=>ak==equivalentAwoken.big).length * equivalentAwoken.times;
+ if (thisAwokenNum == 0) continue;
+ const {attrs=[]} = memberData.getAttrsTypesWithWeapon(assistData) || {};
+ attrs.distinct().forEach(attr=>{
+ count[attr] += thisAwokenNum;
+ });
+ }
+ orbs.forEach((orb,oi)=>{
+ orb.setAttribute(dataAttrName,count[oi]);
+ });
+ }
+ //L解禁武器
+ if (targetIcon = awokenEffectDom.querySelector(".latent-icon[data-latent-icon=\"48\"]")) {
+ const orbs = Array.from(targetIcon.parentElement.querySelectorAll(".orb-list .orb"));
+ const equivalentAwoken = equivalent_awoken.find(eak => eak.small === 60);
+ let count = new Array(orbs.length).fill(0);
+ for (let mi=0; mi < team[0].length; mi++) {
+ const memberData = team[0][mi];
+ //const assistData = team[1][mi]; //L解禁武器,武器上的L无意义
+ if (memberData.latent.includes(48)) {
+ let effectiveAwokens = memberData.effectiveAwokens();
+ let thisAwokenNum = effectiveAwokens.filter(ak=>ak==equivalentAwoken.small).length + effectiveAwokens.filter(ak=>ak==equivalentAwoken.big).length * equivalentAwoken.times;
+ if (thisAwokenNum == 0) continue;
+ const {attrs=[]} = memberData.getAttrsTypesWithWeapon() || {};
+ attrs.distinct().forEach(attr=>{
+ count[attr] += thisAwokenNum;
+ });
+ } else {
+ continue;
+ }
+ }
+ orbs.forEach((orb,oi)=>{
+ orb.setAttribute(dataAttrName,count[oi]);
+ });
+ }
+ //普通十字
+ if (targetIcon = awokenEffectDom.querySelector(".awoken-icon[data-awoken-icon=\"78\"]")) {
+ const orbs = Array.from(targetIcon.parentElement.querySelectorAll(".orb-list .orb"));
+ const equivalentAwoken = equivalent_awoken.find(eak => eak.small === 78);
+ let count = new Array(orbs.length).fill(0);
+ for (let mi=0; mi < team[0].length; mi++) {
+ const memberData = team[0][mi];
+ const assistData = team[1][mi];
+ let effectiveAwokens = memberData.effectiveAwokens(assistData);
+ let thisAwokenNum = effectiveAwokens.filter(ak=>ak==equivalentAwoken.small).length + effectiveAwokens.filter(ak=>ak==equivalentAwoken.big).length * equivalentAwoken.times;
+ if (thisAwokenNum == 0) continue;
+ const {attrs=[]} = memberData.getAttrsTypesWithWeapon(assistData) || {};
+ attrs.distinct().forEach(attr=>{
+ count[attr] += thisAwokenNum;
+ });
+ }
+ orbs.forEach((orb,oi)=>{
+ orb.setAttribute(dataAttrName,count[oi]);
+ });
+ }
+ //U解禁消
+ if (targetIcon = awokenEffectDom.querySelector(".latent-icon[data-latent-icon=\"41\"]")) {
+ const orbs = Array.from(targetIcon.parentElement.querySelectorAll(".orb-list .orb"));
+ const equivalentAwoken = equivalent_awoken.find(eak => eak.small === 27);
+ let count = new Array(orbs.length).fill(0);
+ for (let mi=0; mi < team[0].length; mi++) {
+ const memberData = team[0][mi];
+ //const assistData = team[1][mi]; //L解禁武器,武器上的L无意义
+ if (memberData.latent.includes(41)) {
+ let effectiveAwokens = memberData.effectiveAwokens();
+ let thisAwokenNum = effectiveAwokens.filter(ak=>ak==equivalentAwoken.small).length + effectiveAwokens.filter(ak=>ak==equivalentAwoken.big).length * equivalentAwoken.times;
+ if (thisAwokenNum == 0) continue;
+ const {attrs=[]} = memberData.getAttrsTypesWithWeapon() || {};
+ attrs.distinct().forEach(attr=>{
+ count[attr] += thisAwokenNum;
+ });
+ } else {
+ continue;
+ }
+ }
+ orbs.forEach((orb,oi)=>{
+ orb.setAttribute(dataAttrName,count[oi]);
+ });
+ }
+ //普通C珠
+ if (targetIcon = awokenEffectDom.querySelector(".awoken-icon[data-awoken-icon=\"62\"]")) {
+ const orbs = Array.from(targetIcon.parentElement.querySelectorAll(".orb-list .orb"));
+ //目前没有大觉醒
+ //const equivalentAwoken = equivalent_awoken.find(eak => eak.small === 78);
+ let count = new Array(orbs.length).fill(0);
+ for (let mi=0; mi < team[0].length; mi++) {
+ const memberData = team[0][mi];
+ const assistData = team[1][mi];
+ let effectiveAwokens = memberData.effectiveAwokens(assistData);
+ //let thisAwokenNum = effectiveAwokens.filter(ak=>ak==equivalentAwoken.small).length + effectiveAwokens.filter(ak=>ak==equivalentAwoken.big).length * equivalentAwoken.times;
+ let thisAwokenNum = effectiveAwokens.filter(ak=>ak==62).length;
+ if (thisAwokenNum == 0) continue;
+ const {attrs=[]} = memberData.getAttrsTypesWithWeapon(assistData) || {};
+ attrs.distinct().forEach(attr=>{
+ count[attr] += thisAwokenNum;
+ });
+ }
+ orbs.forEach((orb,oi)=>{
+ orb.setAttribute(dataAttrName,count[oi]);
+ });
+ }
+ //C珠破吸
+ if (targetIcon = awokenEffectDom.querySelector(".latent-icon[data-latent-icon=\"39\"]")) {
+ const orbs = Array.from(targetIcon.parentElement.querySelectorAll(".orb-list .orb"));
+ //目前没有大觉醒
+ //const equivalentAwoken = equivalent_awoken.find(eak => eak.small === 27);
+ let count = new Array(orbs.length).fill(0);
+ for (let mi=0; mi < team[0].length; mi++) {
+ const memberData = team[0][mi];
+ //const assistData = team[1][mi]; //L解禁武器,武器上的L无意义
+ if (memberData.latent.includes(39)) {
+ let effectiveAwokens = memberData.effectiveAwokens();
+ //let thisAwokenNum = effectiveAwokens.filter(ak=>ak==equivalentAwoken.small).length + effectiveAwokens.filter(ak=>ak==equivalentAwoken.big).length * equivalentAwoken.times;
+ let thisAwokenNum = effectiveAwokens.filter(ak=>ak==62).length;
+ if (thisAwokenNum == 0) continue;
+ const {attrs=[]} = memberData.getAttrsTypesWithWeapon() || {};
+ attrs.distinct().forEach(attr=>{
+ count[attr] += thisAwokenNum;
+ });
+ } else {
+ continue;
+ }
+ }
+ orbs.forEach((orb,oi)=>{
+ orb.setAttribute(dataAttrName,count[oi]);
+ });
+ }
+ //普通T字
+ if (targetIcon = awokenEffectDom.querySelector(".awoken-icon[data-awoken-icon=\"126\"]")) {
+ const orbs = Array.from(targetIcon.parentElement.querySelectorAll(".orb-list .orb"));
+ //目前没有大觉醒
+ //const equivalentAwoken = equivalent_awoken.find(eak => eak.small === 78);
+ let count = new Array(orbs.length).fill(0);
+ for (let mi=0; mi < team[0].length; mi++) {
+ const memberData = team[0][mi];
+ const assistData = team[1][mi];
+ let effectiveAwokens = memberData.effectiveAwokens(assistData);
+ //let thisAwokenNum = effectiveAwokens.filter(ak=>ak==equivalentAwoken.small).length + effectiveAwokens.filter(ak=>ak==equivalentAwoken.big).length * equivalentAwoken.times;
+ let thisAwokenNum = effectiveAwokens.filter(ak=>ak==126).length;
+ if (thisAwokenNum == 0) continue;
+ const {attrs=[]} = memberData.getAttrsTypesWithWeapon(assistData) || {};
+ attrs.distinct().forEach(attr=>{
+ count[attr] += thisAwokenNum;
+ });
+ }
+ orbs.forEach((orb,oi)=>{
+ orb.setAttribute(dataAttrName,count[oi]);
+ });
+ }
+}
//刷新队伍觉醒统计
function refreshTeamAwokenCount(awokenDom, team) {
let fragment = document.createDocumentFragment(); //创建节点用的临时空间
@@ -5574,7 +5872,7 @@ function refreshAbility(abilityDom, team, idx) {
});
}
//刷新队员
-function refreshmemberTypes(memberTypesDom, team, idx) {
+function refreshMemberTypes(memberTypesDom, team, idx) {
if (!memberTypesDom) return; //如果没有dom,直接跳过
const member = team[0][idx];
const assist = team[1][idx];
@@ -5594,7 +5892,7 @@ function refreshmemberTypes(memberTypesDom, team, idx) {
}
}
//刷新队员觉醒
-function refreshmemberAwoken(memberAwokenDom, assistAwokenDom, team, idx) {
+function refreshMemberAwoken(memberAwokenDom, assistAwokenDom, team, idx) {
if (!memberAwokenDom) return; //如果没有dom,直接跳过
const memberData = team[0][idx];
@@ -5603,19 +5901,10 @@ function refreshmemberAwoken(memberAwokenDom, assistAwokenDom, team, idx) {
const memberCard = Cards[memberData.id] || Cards[0];
const assistCard = Cards[assistData.id] || Cards[0];
//队员觉醒
- let memberAwokens = memberCard?.awakenings?.slice(0,memberData.awoken) || [];
- //单人和三人为队员增加超觉醒
- if ((solo || teamsCount === 3) &&
- memberData.sawoken > 0 && //怪物超觉醒编号大于0
- //memberCard?.superAwakenings?.length > 0 && //卡片有超觉醒
- memberData.level >= 100 && //怪物大于100级
- memberData.plus.every(p=>p>=99) //怪物297了
- ) {
- memberAwokens.push(memberData.sawoken);
- }
+ let memberAwokens = memberData.effectiveAwokens() || [];
//memberAwokens.sort();
//武器觉醒
- let assistAwokens = assistCard?.awakenings?.slice(0,assistData?.awoken);
+ let assistAwokens = assistData.effectiveAwokens() || [];
if (!assistAwokens?.includes(49)) assistAwokens = []; //清空非武器的觉醒
//assistAwokens.sort();
/*if (assistAwokens.includes(49))
diff --git a/solo.html b/solo.html
index 949d3f27..2134d54d 100644
--- a/solo.html
+++ b/solo.html
@@ -57,9 +57,10 @@ const teamsCount = 1;
+
-
+
@@ -506,7 +507,48 @@ const teamsCount = 1;
-
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+
+
@@ -1043,12 +1085,12 @@ const teamsCount = 1;
-
-
-
-
-
-
+
+
+
+
+
+
diff --git a/style-monsterimages.css b/style-monsterimages.css
index b41e49f8..16503a67 100644
--- a/style-monsterimages.css
+++ b/style-monsterimages.css
@@ -1347,7 +1347,7 @@
){ /*所以横向占两格*/
grid-column: span 2;
}
-.edit-box .m-latent-allowable-ul .latent-icon:where(
+.latent-icon.show-enabling-awokwn:where(
[data-latent-icon='39'],
[data-latent-icon='40'],
[data-latent-icon='41'],
@@ -1361,22 +1361,22 @@
margin-left: 6px;
opacity: 0.5;
}
-.m-latent-allowable-ul .latent-icon[data-latent-icon='39']::after{ /*C珠破吸*/
+.latent-icon.show-enabling-awokwn[data-latent-icon='39']::after{ /*C珠破吸*/
background-position-y: calc(-32px * 62);
}
-.m-latent-allowable-ul .latent-icon[data-latent-icon='40']::after{ /*心横解转转*/
+.latent-icon.show-enabling-awokwn[data-latent-icon='40']::after{ /*心横解转转*/
background-position-y: calc(-32px * 20);
}
-.m-latent-allowable-ul .latent-icon[data-latent-icon='41']::after{ /*U解禁消*/
+.latent-icon.show-enabling-awokwn[data-latent-icon='41']::after{ /*U解禁消*/
background-position-y: calc(-32px * 27);
}
-.m-latent-allowable-ul .latent-icon[data-latent-icon='46']::after{ /*心追解云封*/
+.latent-icon.show-enabling-awokwn[data-latent-icon='46']::after{ /*心追解云封*/
background-position-y: calc(-32px * 45);
}
-.m-latent-allowable-ul .latent-icon[data-latent-icon='47']::after{ /*心L大SB*/
+.latent-icon.show-enabling-awokwn[data-latent-icon='47']::after{ /*心L大SB*/
background-position-y: calc(-32px * 59);
}
-.m-latent-allowable-ul .latent-icon[data-latent-icon='48']::after{ /*心L大SB*/
+.latent-icon.show-enabling-awokwn[data-latent-icon='48']::after{ /*心L大SB*/
background-position-y: calc(-32px * 60);
}
diff --git a/style.css b/style.css
index 94b8cd57..a62a305c 100644
--- a/style.css
+++ b/style.css
@@ -775,15 +775,16 @@ body:not(.show-team-awoken-effect) .team-awoken-effect /*队伍觉醒效果统
{
opacity: 0.5;
}
-body:not(.show-3P-team-total-info):not(.solo) .formation-box .team-total-info /*3P下隐藏队伍血量统计*/
+ /*3P下隐藏队伍血量统计*/
+body:not(.show-team-total-info) .formation-box .team-total-info
{
display: none;
}
-body:not(.show-3P-team-total-info):not(.solo) .formation-box .team-bigbox
+body:not(.show-team-total-info):not(.solo) .formation-box .team-bigbox
{
margin-bottom: 5px;
}
-body:not(.show-3P-team-total-info):not(.solo) .formation-box .team-badge
+body:not(.show-team-total-info):not(.solo) .formation-box .team-badge
{
position: absolute;
z-index: 10;
@@ -1246,7 +1247,7 @@ body:not(.solo) .awoken-icon[data-awoken-icon="64"]::after
.abilitys>div::before
{
font-size: 0.75em;
- width: 2.5em;
+ width: 3em;
display: inline-block;
}
/*.abilitys .hp::before{
@@ -2767,6 +2768,81 @@ body:not(.solo) .awoken-icon[data-awoken-icon="64"]::after
margin-top:5px;
/*content: "觉醒总计:";*/
}
+.team-awoken-effect {
+ font-family: var(--game-font-family);
+ font-size: 16px;
+ line-height: 32px;
+}
+.team-awoken-effect::before{
+ font-family: var(--font-family);
+}
+.team-awoken-effect>ul {
+ display: grid;
+ grid-template-columns: repeat(6, 110px);
+}
+.team-awoken-effect .team-flags {
+ display: inline-block;
+ vertical-align: middle;
+}
+.team-awoken-effect .team-flags .team-member-icon {
+ width: 15px;
+ height: 15px;
+}
+.team-awoken-effect .team-flags .team-member-icon[data-percent="0"] {
+ background-color: red;
+}
+.team-awoken-effect .team-flags .team-member-icon[data-percent="50"] {
+ background-color: pink;
+}
+.team-awoken-effect .team-flags .team-member-icon[data-percent="100"] {
+ background-color: lightgreen;
+}
+.team-awoken-effect .prob[data-value="100"] {
+ color: #28c031;
+ text-shadow: black 1px 1px 1px;
+}
+.team-awoken-effect .prob::before{
+ content: attr(data-value);
+}
+.team-awoken-effect .prob::after{
+ content: "%";
+}
+.team-awoken-effect .count::before{
+ content: "×";
+}
+.team-awoken-effect .count::after{
+ content: attr(data-value);
+}
+.team-awoken-effect .latent-icon {
+ display: inline-flex;
+ width: 32px;
+ vertical-align: middle;
+}
+.team-awoken-effect .latent-icon.show-enabling-awokwn {
+ width: 64px;
+}
+.team-awoken-effect .orb-list {
+ display: inline-block;
+ vertical-align: middle;
+}
+.team-awoken-effect .orb-list .orb {
+ font-size: 16px;
+}
+
+.team-awoken-effect .orb-list .orb:not([data-value]),
+.team-awoken-effect .orb-list .orb[data-value="0"]{
+ filter: grayscale(100%);
+}
+.team-awoken-effect .orb-list .orb[data-value]:not([data-value="0"])::before {
+ content: "x"attr(data-value);
+ color: white;
+ -webkit-text-stroke: 1px black;
+ text-stroke: 1px black;
+ text-shadow: black 1px 1px 1px;
+ position: relative;
+ text-align: center;
+}
+
.detail-box{
margin-top:5px;
}
@@ -3310,11 +3386,6 @@ table .orb-icon
-webkit-text-stroke: 3px black; /*非W3C标准,但都支持*/
}
-.control-box,
-.control-box button
-{
- font-family: var(--icon-font-family);
-}
#default-level {
width: 50px;
}
@@ -3417,11 +3488,6 @@ body.external-link-support #external-support{
color: white;
text-align: center;
font-size: 2em;
- font-family: var(--icon-font-family);
-}
-#player-data-frame .brown-button::before
-{
- font-family: var(--icon-font-family);
}
#player-data-frame .upload-data
{
diff --git a/triple.html b/triple.html
index dc0b832c..37aa94d4 100644
--- a/triple.html
+++ b/triple.html
@@ -68,7 +68,7 @@ const teamsCount = 3;
-
+
@@ -519,6 +519,48 @@ const teamsCount = 3;
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+
+