diff --git a/languages/en.css b/languages/en.css
index 09323ded..53400167 100644
--- a/languages/en.css
+++ b/languages/en.css
@@ -692,11 +692,19 @@ label[for="qr-data-type-paddb"]::before
}
.dialog-dungeon-enchance .collab-list::before
{
- content: "Collab ID:";
+ content: "Collab ID:";
}
.dialog-dungeon-enchance .gacha-list::before
{
- content: "Egg Machine ID:";
+ content: "Egg Machine ID:";
+}
+.dialog-dungeon-enchance .benefit-list::before
+{
+ content: "Yin-Yang Protection:";
+}
+.dialog-dungeon-enchance .current-stage-list::before
+{
+ content: "Current Stage:";
}
.dialog-dungeon-enchance .collab-list::after,
.dialog-dungeon-enchance .gacha-list::after
diff --git a/languages/ja.css b/languages/ja.css
index 39094a01..384412c1 100644
--- a/languages/ja.css
+++ b/languages/ja.css
@@ -642,19 +642,27 @@ label[for="qr-data-type-paddb"]::before
}
.dialog-dungeon-enchance .attr-list::before
{
- content: "有効な属性:";
+ content: "有効な属性:";
}
.dialog-dungeon-enchance .type-list::before
{
- content: "有効なタイプ:";
+ content: "有効なタイプ:";
}
.dialog-dungeon-enchance .collab-list::before
{
- content: "有効コラボID:";
+ content: "有効コラボID:";
}
.dialog-dungeon-enchance .gacha-list::before
{
- content: "有効ガチャID:";
+ content: "有効ガチャID:";
+}
+.dialog-dungeon-enchance .benefit-list::before
+{
+ content: "陰と陽の加護:";
+}
+.dialog-dungeon-enchance .current-stage-list::before
+{
+ content: "現在の層数:";
}
.dialog-dungeon-enchance .collab-list::after,
.dialog-dungeon-enchance .gacha-list::after
diff --git a/languages/ko.css b/languages/ko.css
index b0ba4400..15442d89 100644
--- a/languages/ko.css
+++ b/languages/ko.css
@@ -630,11 +630,19 @@ label[for="qr-data-type-paddb"]::before
}
.dialog-dungeon-enchance .collab-list::before
{
- content: "유효한 콜라보 ID:";
+ content: "유효한 콜라보 ID:";
}
.dialog-dungeon-enchance .gacha-list::before
{
- content: "유효한 가챠 ID:";
+ content: "유효한 가챠 ID:";
+}
+.dialog-dungeon-enchance .benefit-list::before
+{
+ content: "음과 양 보호:";
+}
+.dialog-dungeon-enchance .current-stage-list::before
+{
+ content: "현재 단계:";
}
.dialog-dungeon-enchance .collab-list::after,
.dialog-dungeon-enchance .gacha-list::after
diff --git a/languages/zh-TW.css b/languages/zh-TW.css
index 51ed7c2f..b8af6714 100644
--- a/languages/zh-TW.css
+++ b/languages/zh-TW.css
@@ -648,6 +648,14 @@ label[for="qr-data-type-paddb"]::before
{
content: "生效抽蛋ID:";
}
+.dialog-dungeon-enchance .benefit-list::before
+{
+ content: "生效陰陽:";
+}
+.dialog-dungeon-enchance .current-stage-list::before
+{
+ content: "当前層数:";
+}
.dialog-dungeon-enchance .collab-list::after,
.dialog-dungeon-enchance .gacha-list::after
{
diff --git a/languages/zh-TW.js b/languages/zh-TW.js
index 9c5aad8c..28616191 100644
--- a/languages/zh-TW.js
+++ b/languages/zh-TW.js
@@ -228,6 +228,7 @@ const _localTranslating = {
teamatk: tp`隊伍${'attrs'}總攻擊力`,
teamrcv: tp`隊伍回復力`,
cstage: tp`當前地下城層數`,
+ state_is: tp`${'state'}:${'num'}`,
},
unit: {
orbs: tp`個`,
diff --git a/languages/zh.css b/languages/zh.css
index 18861474..aa0edbb2 100644
--- a/languages/zh.css
+++ b/languages/zh.css
@@ -651,6 +651,10 @@ label[for="qr-data-type-paddb"]::before
{
content: "生效陰陽:";
}
+.dialog-dungeon-enchance .current-stage-list::before
+{
+ content: "当前層数:";
+}
.dialog-dungeon-enchance .collab-list::after,
.dialog-dungeon-enchance .gacha-list::after
{
diff --git a/languages/zh.js b/languages/zh.js
index 9ce70dff..8b6ac7f7 100644
--- a/languages/zh.js
+++ b/languages/zh.js
@@ -228,6 +228,7 @@ const _localTranslating = {
teamatk: tp`队伍${'attrs'}总攻击力`,
teamrcv: tp`队伍回复力`,
cstage: tp`当前地下城层数`,
+ state_is: tp`${'state'}:${'num'}`,
},
unit: {
orbs: tp`个`,
diff --git a/multi.html b/multi.html
index a253424a..6d4cc284 100644
--- a/multi.html
+++ b/multi.html
@@ -1546,6 +1546,9 @@ const teamsCount = 2;
+
diff --git a/script-json_data.js b/script-json_data.js
index 3356c050..f5992a8b 100644
--- a/script-json_data.js
+++ b/script-json_data.js
@@ -242,6 +242,7 @@ let localTranslating = {
teamatk: tp`Team ${'attrs'} ATK`,
teamrcv: tp`Team RCV`,
cstage: tp`current Stage of Dungeon`,
+ state_is: tp`${'state'}: ${'num'}`,
},
unit: {
orbs: tp``,
@@ -453,8 +454,9 @@ let localTranslating = {
[125]: tp`${'icon'}Enhanced Dark Combos+`,
[126]: tp`${'icon'}[T] Increased Attack`,
[127]: tp`${'icon'}Enhanced Stats`,
- [128]: tp`${'icon'}Benefits of the Yang`,
- [129]: tp`${'icon'}Benefits of the Yin`,
+ [128]: tp`${'icon'}Yang Protection`,
+ [129]: tp`${'icon'}Yin Protection`,
+ [130]: tp`${'icon'}After-Ripening`,
}
},
};
@@ -554,7 +556,7 @@ const official_awoken_sorting = [
121,122,123,124,125, 39, 40, 41, 42,
91, 92, 93, 94, 95, 65, 66, 67,105,
84, 83, 85, 86, 87, 88, 89, 90, 64,
- 63,128,129
+ 63,128,129,130
];
const PAD_PASS_BADGE = 1<<7 | 1; //本程序的月卡徽章编号,129
diff --git a/script-skill-parser.js b/script-skill-parser.js
index f49084bc..5fb932b7 100644
--- a/script-skill-parser.js
+++ b/script-skill-parser.js
@@ -2977,12 +2977,18 @@ function renderCondition(cond) {
break;
}
case 'series':{
+ //搜索并显示合作
+ function searchCollab(event) {
+ const collabId = parseInt(this.getAttribute('data-collabId'), 10);
+ showSearchBySeriesId(collabId, "collab");
+ return false;
+ }
dict.ids = cond.compo.ids.map(cid=>{
const lnk = document.createElement("a");
- lnk.className ="detail-search monster-collabId";
+ lnk.className ="series-search card-collabId";
lnk.setAttribute("data-collabId",cid);
lnk.onclick = searchCollab;
- lnk.textContent = (cid == 10001 ? Cards[5435] : Cards.find(card=>card.collabId == cid))?.altName?.[0] ?? `No.${cid}`;
+ lnk.textContent = cid;
return lnk;
}).nodeJoin(tsp.word.slight_pause());
frg.ap(tsp.cond.compo_type_series(dict));
@@ -2991,7 +2997,7 @@ function renderCondition(cond) {
case 'evolution':{
dict.ids = cond.compo.ids.map(type=>{
const lnk = document.createElement("a");
- lnk.className ="detail-search";
+ lnk.className ="series-search";
switch (type)
{
case "pixel-evo":{ //像素进化
diff --git a/script-universal_function.js b/script-universal_function.js
index 44c1bb93..c0073c26 100644
--- a/script-universal_function.js
+++ b/script-universal_function.js
@@ -747,10 +747,21 @@ function calculateAbility(member, assist = null, solo = true, teamsCount = 1) {
if (dge.benefit) { //当存在加护
const benefitAwokens = [128 , 129]; //0b1是阳,0b10是阴,可以两者都强化
flags(dge.benefit).forEach(idx=>{
- const benefitAwoken = benefitAwokens[idx]; //得到加护觉醒编号
- latterAwokenScale[0].push({ index: benefitAwoken, scale: 1.2 }); //HP
- latterAwokenScale[1].push({ index: benefitAwoken, scale: 5 }); //ATK
- latterAwokenScale[2].push({ index: benefitAwoken, scale: 1.2 }); //RCV
+ const akId = benefitAwokens[idx]; //得到加护觉醒编号
+ latterAwokenScale[0].push({ index: akId, scale: 1.2 }); //HP
+ latterAwokenScale[1].push({ index: akId, scale: 5 }); //ATK
+ latterAwokenScale[2].push({ index: akId, scale: 1.2 }); //RCV
+ });
+ }
+
+ if (dge.stage > 1) { //当存在地下城层数
+ let scale = 1;
+ if (dge.stage>=10) scale = 2;
+ else if (dge.stage>=5) scale = 1.5;
+
+ const akId = 130; //130号熟成觉醒
+ latterAwokenScale.forEach(ab => {
+ ab.push({ index: akId, scale: scale });
});
}
@@ -1040,12 +1051,26 @@ function changeToIdInSkillDetail(event) {
monstersID.onchange();
return false; //取消链接的默认操作
}
-//搜索并显示合作
-function searchCollab(event) {
- const collabId = parseInt(this.getAttribute('data-collabId'), 10);
- showSearch(Cards.filter(card => card.collabId == collabId));
- return false;
+
+function showSearchBySeriesId(sId, sType) {
+ showSearch(searchBySeriesId(sId, sType));
}
+function searchBySeriesId(sId, sType) {
+ if (!Number.isInteger(sId)) sId = parseInt(sId, 10);
+ switch (sType) {
+ case "collab": {//合作
+ return Cards.filter(card => card.collabId == sId);
+ }
+ case "gacha": {//桶
+ return Cards.filter(card => card.gachaId == sId);
+ }
+ case "series":
+ default: { //系列
+ return Cards.filter(card => card.seriesId == sId);
+ }
+ }
+}
+
//创建序号类图标
function createIndexedIcon(type, index) {
if (type == 'card') {//卡片头像
diff --git a/script.js b/script.js
index a4ba1264..6e092c2f 100644
--- a/script.js
+++ b/script.js
@@ -352,10 +352,11 @@ Formation.prototype.outObj = function() {
return teamArr;
});
let dge = this.dungeonEnchance;
- if (Object.values(dge.rate).some(rate => rate != 1) || dge.benefit) obj.r = [
+ if (Object.values(dge.rate).some(rate => rate != 1) || dge.benefit || dge.stage>1) obj.r = [
[reflags(dge.types),reflags(dge.attrs),reflags(dge.rarities),dge.collabs.length ? dge.collabs : 0,dge.gachas.length ? dge.gachas : 0].deleteLatter(0), //类型,属性,星级
[dge.rate.hp,dge.rate.atk,dge.rate.rcv].deleteLatter(1),
- dge.benefit || 0 //地下城阴阳加护
+ dge.benefit || 0, //地下城阴阳加护
+ dge.stage || 1 //地下城层数
];
obj.v = dataStructure;
/*if (obj.f.every(team=>team[0].length == 0 && team[1].length == 0 && team[2] == undefined) &&
@@ -387,6 +388,7 @@ Formation.prototype.loadObj = function(f) {
dge.rate.atk = 1;
dge.rate.rcv = 1;
dge.benefit = 0;
+ dge.stage = 1;
return;
}
const dataVeision = f?.v ?? (f.f ? 2 : 1); //是第几版格式
@@ -441,7 +443,7 @@ Formation.prototype.loadObj = function(f) {
if (f.r)
{
if (Array.isArray(f.r[0])) {
- const [[types, attrs, rarities, collabs, gachas] = [], [hp , atk, rcv] = [], benefit] = f.r;
+ const [[types, attrs, rarities, collabs, gachas] = [], [hp , atk, rcv] = [], benefit, stage] = f.r;
dge.types = flags(types ?? 0);
dge.attrs = flags(attrs ?? 0);
@@ -454,6 +456,7 @@ Formation.prototype.loadObj = function(f) {
dge.rate.rcv = rcv ?? 1;
dge.benefit = benefit || 0;
+ dge.stage = stage || 1;
} else {
dge.attrs = flags(f.r[0] ?? 0);
dge.types = flags(f.r[1] ?? 0);
@@ -3221,6 +3224,7 @@ function initialize() {
const gachaIdIpt = dialogContent.querySelector("#dungeon-gacha-id");
const benefitDoms = Array.from(dialogContent.querySelectorAll(".benefit-list .benefit-check"));
const benefit0 = benefitDoms.find(dom=>parseInt(dom.value, 10) == 0);
+ const currentStageIpt = dialogContent.querySelector("#current-stage");
/*const benefitNot0 = benefitDoms.filter(dom=>dom != benefit0);
const notChecked = function(e){
console.log(this.checked,e);
@@ -3236,8 +3240,6 @@ function initialize() {
attrDoms.forEach(runCheck,dge.attrs);
typeDoms.forEach(runCheck,dge.types);
gachaIdIpt.value = dge.gachas.join();
- const benefit = dge.benefit || 0;
- benefitDoms.find(dom=>parseInt(dom.value, 10) == benefit).checked = true;
collabIdIpt.value = dge.collabs.join();
const {hp, atk, rcv} = dge.rate;
@@ -3245,6 +3247,10 @@ function initialize() {
dialogContent.querySelector("#dungeon-atk").value = atk;
dialogContent.querySelector("#dungeon-rcv").value = rcv;
+ const benefit = dge.benefit || 0;
+ benefitDoms.find(dom=>parseInt(dom.value, 10) == benefit).checked = true;
+ currentStageIpt.value = dge.stage || 1;
+
this.classList.remove(className_displayNone);
}
//初始化Dialog
@@ -3266,6 +3272,7 @@ function initialize() {
dge.collabs = collabIdIpt.value.split(',').map(str=>parseInt(str,10)).filter(Boolean);
dge.gachas = gachaIdIpt.value.split(',').map(str=>parseInt(str,10)).filter(Boolean);
dge.benefit = benefit;
+ dge.stage = parseInt(currentStageIpt.value, 10);
dungeonEnchanceDialog.close();
createNewUrl();
@@ -3285,6 +3292,7 @@ function initialize() {
dialogContent.querySelector("#dungeon-hp").value = 1;
dialogContent.querySelector("#dungeon-atk").value = 1;
dialogContent.querySelector("#dungeon-rcv").value = 1;
+ currentStageIpt.value = 1;
};
const dungeonEnchanceDialogOpen = controlBox.querySelector("#btn-set-dungeon-enchance");
dungeonEnchanceDialogOpen.onclick = function(){
@@ -3323,23 +3331,23 @@ function initialize() {
const mSeriesId = monInfoBox.querySelector(".monster-seriesId");
mSeriesId.onclick = function() { //搜索系列
- const seriesId = parseInt(this.getAttribute(dataAttrName), 10);
- if (seriesId > 0) {
- showSearch(Cards.filter(card => card.seriesId == seriesId));
+ const sid = parseInt(this.getAttribute(dataAttrName), 10);
+ if (sid > 0) {
+ showSearchBySeriesId(sid, "series");
}
};
const mCollabId = monInfoBox.querySelector(".monster-collabId");
mCollabId.onclick = function() { //搜索合作
- const collabId = parseInt(this.getAttribute(dataAttrName), 10);
- if (collabId > 0); {
- showSearch(Cards.filter(card => card.collabId == collabId));
+ const sid = parseInt(this.getAttribute(dataAttrName), 10);
+ if (sid > 0) {
+ showSearchBySeriesId(sid, "collab");
}
};
const mGachaId = monInfoBox.querySelector(".monster-gachaId");
- mGachaId.onclick = function() { //搜索合作
- const gachaId = parseInt(this.getAttribute(dataAttrName), 10);
- if (gachaId > 0); {
- showSearch(Cards.filter(card => card.gachaId == gachaId));
+ mGachaId.onclick = function() { //搜索桶
+ const sid = parseInt(this.getAttribute(dataAttrName), 10);
+ if (sid > 0) {
+ showSearchBySeriesId(sid, "gacha");
}
};
//以字符串搜索窗口
@@ -5411,10 +5419,10 @@ function refreshAll(formationData) {
//地下城强化的显示,稀有度没有现成的,所以这里来循环生成
const dge = formationData.dungeonEnchance;
- if (Object.values(dge.rate).some(rate => rate != 1) || dge?.benefit) //如果有任何一个属性的比率不为1,才产生强化图标
+ dungeonEnchanceDom.classList.add(className_displayNone);
+ dungeonEnchanceDom.innerHTML = '';
+ if (Object.values(dge.rate).some(rate => rate != 1)) //如果有任何一个属性的比率不为1,才产生强化图标
{
- dungeonEnchanceDom.innerHTML = '';
-
if (dge.rarities.length > 0) {
dge.rarities.forEach(rarity=>{
const icon = dungeonEnchanceDom.appendChild(document.createElement("icon"));
@@ -5423,30 +5431,66 @@ function refreshAll(formationData) {
})
}
+ const seriesFragment = [];
if (dge?.collabs?.length) { //添加合作的ID名称
- dungeonEnchanceDom.appendChild(localTranslating?.skill_parse?.target?.collab_id({id:dge.collabs.join()}));
+ //搜索并显示合作
+ function searchCollab(event) {
+ const collabId = parseInt(this.getAttribute(dataAttrName), 10);
+ showSearchBySeriesId(collabId, "collab");
+ return false;
+ }
+ const fragment = dge.collabs.map(id=>{
+ const lnk = document.createElement("a");
+ lnk.className ="series-search card-collabId";
+ lnk.setAttribute(dataAttrName, id);
+ lnk.onclick = searchCollab;
+ lnk.textContent = id;
+ return lnk;
+ }).nodeJoin(localTranslating?.skill_parse?.word?.slight_pause());
+
+ seriesFragment.push(localTranslating?.skill_parse?.target?.collab_id({id:fragment}));
}
if (dge?.gachas?.length) { //添加抽蛋的ID名称
- dungeonEnchanceDom.appendChild(localTranslating?.skill_parse?.target?.gacha_id({id:dge.gachas.join()}));
- }
-
- let skill = powerUp(dge.attrs, dge.types, p.mul({hp: dge.rate.hp * 100, atk: dge.rate.atk * 100, rcv: dge.rate.rcv * 100}));
- dungeonEnchanceDom.appendChild(renderSkill(skill));
+ //搜索并显示抽蛋
+ function searchGacha(event) {
+ const collabId = parseInt(this.getAttribute(dataAttrName), 10);
+ showSearchBySeriesId(collabId, "gacha");
+ return false;
+ }
+ const fragment = dge.gachas.map(id=>{
+ const lnk = document.createElement("a");
+ lnk.className ="series-search card-gachaId";
+ lnk.setAttribute(dataAttrName, id);
+ lnk.onclick = searchGacha;
+ lnk.textContent = id;
+ return lnk;
+ }).nodeJoin(localTranslating?.skill_parse?.word?.slight_pause());
- if (dge?.benefit) { //添加阴阳
- const benefitAwoken = (dge.benefit & 0b1) ? 128 : 129;
- const icon = document.createElement("icon");
- icon.className ="awoken-icon";
- icon.setAttribute("data-awoken-icon", benefitAwoken);
- if (dge.benefit & 0b10) icon.classList.add("yinyang")
- dungeonEnchanceDom.appendChild(icon);
+ seriesFragment.push(localTranslating?.skill_parse?.target?.gacha_id({id:fragment}));
}
+ const skill = powerUp(dge.attrs, dge.types, p.mul({hp: dge.rate.hp * 100, atk: dge.rate.atk * 100, rcv: dge.rate.rcv * 100}));
+ seriesFragment.push(renderSkill(skill));
- dungeonEnchanceDom.classList.remove(className_displayNone);
- }else
- {
- dungeonEnchanceDom.classList.add(className_displayNone);
+ dungeonEnchanceDom.appendChild(seriesFragment.nodeJoin(localTranslating?.skill_parse?.word?.comma()));
}
+ if (dge?.benefit) { //添加阴阳
+ const benefitAwoken = (dge.benefit & 0b1) ? 128 : 129;
+ const icon = document.createElement("icon");
+ icon.className ="awoken-icon";
+ icon.setAttribute("data-awoken-icon", benefitAwoken);
+ if (dge.benefit & 0b10) icon.classList.add("yinyang")
+ dungeonEnchanceDom.appendChild(icon);
+ }
+ if (dge?.stage > 1) { //添加层数
+ const states = localTranslating?.skill_parse?.stats;
+ const dict = {
+ state:states?.cstage(),
+ num: dge?.stage
+ };
+ dungeonEnchanceDom.appendChild(states?.state_is(dict));
+ }
+ dungeonEnchanceDom.classList.remove(className_displayNone);
+
teamBigBoxs.forEach((teamBigBox, teamNum) => {
const teamBox = teamBigBox.querySelector(".team-box");
diff --git a/solo.html b/solo.html
index 0e674466..8db0d710 100644
--- a/solo.html
+++ b/solo.html
@@ -1310,6 +1310,9 @@ const teamsCount = 1;
+
diff --git a/style.css b/style.css
index f2f1f71b..724ed8bb 100644
--- a/style.css
+++ b/style.css
@@ -2755,9 +2755,18 @@ input[disabled]+.awoken-icon,
font-family: var(--game-font-family);
font-weight: normal;
}
-.skill-datail-parsed .detail-search::before{
+a.series-search {
+ cursor: pointer;
+ color: brown;
+}
+a.series-search:hover {
+ background: rgba(150,110,10,0.5);
+ border-radius: 5px;
+}
+a.series-search::before {
content: "🔍";
}
+
.random-active-skill,
.evolved-active-skill
{
@@ -4103,16 +4112,6 @@ body.external-link-support #external-support{
transform: scale(0.5);
margin: -10px;
}
-.skill-datail-parsed a.detail-search
-{
- cursor: pointer;
- color: brown;
-}
-.skill-datail-parsed a.detail-search:hover
-{
- background: rgba(150,110,10,0.5);
- border-radius: 5px;
-}
.skill-datail-parsed .merge-board
{
diff --git a/triple.html b/triple.html
index 8f9a1d14..52d21d75 100644
--- a/triple.html
+++ b/triple.html
@@ -2300,6 +2300,9 @@ const teamsCount = 3;
+