diff --git a/multi.html b/multi.html index 49e71681..47efdd6b 100644 --- a/multi.html +++ b/multi.html @@ -1478,7 +1478,7 @@ const teamsCount = 2; - + diff --git a/script-json_data.js b/script-json_data.js index 8e579c2a..a7893a5b 100644 --- a/script-json_data.js +++ b/script-json_data.js @@ -4251,7 +4251,10 @@ const specialSearchFunctions = (function() { ]}, {group:true,name:"====== Awoken ======",otLangName:{chs:"======觉醒类======",cht:"======覺醒類======"}, functions: [ {name:"Have Sync Awoken",otLangName:{chs:"有同步觉醒",cht:"有同步覺醒"}, - function:cards=>cards.filter(card=>card.syncAwakening) + function:cards=>cards.filter(card=>card.syncAwakening), + addition:card=>{if (card.syncAwakeningConditions) { + return card.syncAwakeningConditions.map(c=>cardN(c.id)).nodeJoin(); + }} }, {name:"8 latent grids",otLangName:{chs:"8格潜觉",cht:"8格潛覺"}, function:cards=>cards.filter(card=>card.is8Latent) diff --git a/script-universal_function.js b/script-universal_function.js index 91671b4f..e49eff4b 100644 --- a/script-universal_function.js +++ b/script-universal_function.js @@ -949,27 +949,27 @@ function calculateAbility_max(id, solo, teamsCount, maxLevel = 110) { } //搜索卡片用 function searchCards(cards, {attrs: sAttrs, fixMainColor, types, typeAndOr, rares, awokens, sawokens, equalAk, incSawoken, canAssist, canLv110, is8Latent, notWeapon}) { - let cardsRange = cards.concat(); //这里需要复制一份原来的数组,不然若无筛选,后面的排序会改变初始Cards + let cardsRange = [...cards]; //这里需要复制一份原来的数组,不然若无筛选,后面的排序会改变初始Cards if (canAssist) cardsRange = cardsRange.filter(card=>card.canAssist); if (canLv110) cardsRange = cardsRange.filter(card=>card.limitBreakIncr>0); if (is8Latent) cardsRange = cardsRange.filter(card=>card.is8Latent); if (notWeapon) cardsRange = cardsRange.filter(card=>!card.awakenings.includes(49) && //不是武器 !card.stackable); //不可堆叠 //属性 - const anyAttrsFlag = 0b1011111; //所有颜色的查找,注意右边才是最低位 + const anyAttrsFlag = 0b101_1111; //所有颜色的查找,注意右边才是最低位 sAttrs = sAttrs.map(attr=>attr || anyAttrsFlag); //如果传入搜索为0,提高到任意色 if (sAttrs.some(attr=>(attr & anyAttrsFlag) !== anyAttrsFlag)) { //当任一属性不为任意颜色时才需要筛选属性,否则跳过属性筛选 //如果固定顺序就直接使用当前颜色顺序;否则不考虑顺序时,去除任意色 - const attrNums = sAttrs.filter(attr=>fixMainColor || attr > 0 && (attr & anyAttrsFlag) !== anyAttrsFlag) - .map(attr=>{ - const attrNum = Bin.unflags(attr); - if (attrNum.includes(6)) attrNum.push(undefined,-1); //如果是包含6的,就添加-1和undefined的值 - return attrNum; - }); + // const attrNums = sAttrs.filter(attr=>fixMainColor || attr > 0 && (attr & anyAttrsFlag) !== anyAttrsFlag) + // .map(attr=>{ + // const attrNum = Bin.unflags(attr); + // if (attrNum.includes(6)) attrNum.push(undefined,-1); //如果是包含6的,就添加-1和undefined的值 + // return attrNum; + // }); if (fixMainColor) {//如果固定了顺序 //只有第一属性有搜索内容时才搜索无主属性 - const isSearchNoMainAttr = (sAttrs[0] ^ 0b1000000) > 0 && sAttrs.slice(1).every(attr=>(attr & anyAttrsFlag) === anyAttrsFlag); + const isSearchNoMainAttr = (sAttrs[0] ^ 0b100_0000) > 0 && sAttrs.slice(1).every(attr=>(attr & anyAttrsFlag) === anyAttrsFlag); cardsRange = cardsRange.filter(({attrs:cAttrs}) => { //默认逻辑为,只要不是any,就判断这个颜色是否包含了对应的颜色 //不能用怪物颜色来查找,因为怪物只有一个颜色就会提前退出循环,导致不搜索副属性 @@ -992,7 +992,7 @@ function searchCards(cards, {attrs: sAttrs, fixMainColor, types, typeAndOr, rare else {//不限定顺序时 //const notAnyAttrsCount = isAnyAttrs.filter(b=>!b).length; cardsRange = cardsRange.filter(({attrs:cAttrs, id}) => { - cAttrs = cAttrs.concat(); + cAttrs = [...cAttrs]; for (let i = 1; i < sAttrs.length; i++) { if (!Number.isInteger(cAttrs[i])) cAttrs[i] = 6; } @@ -1024,7 +1024,7 @@ function searchCards(cards, {attrs: sAttrs, fixMainColor, types, typeAndOr, rare //类型 if (types.length > 0) { //所有type都满足,或只需要满足一个type - let logicFunc = typeAndOr ? Array.prototype.every : Array.prototype.some; + const logicFunc = typeAndOr ? Array.prototype.every : Array.prototype.some; cardsRange = cardsRange.filter(({types: cTypes}) => logicFunc.call(types, t => cTypes.includes(t))); } //稀有度 @@ -1032,7 +1032,7 @@ function searchCards(cards, {attrs: sAttrs, fixMainColor, types, typeAndOr, rare cardsRange = cardsRange.filter(({rarity}) => rares.includes(rarity)); } //觉醒 - let searchAwokens = []; + const searchAwokens = []; //等效觉醒时,把大觉醒数量变成小觉醒数量 if (equalAk) { awokens.forEach(ak=>{ @@ -1049,7 +1049,7 @@ function searchCards(cards, {attrs: sAttrs, fixMainColor, types, typeAndOr, rare } }); } else { - searchAwokens = awokens.concat(); + searchAwokens.push(...awokens); } if (searchAwokens.length > 0) { cardsRange = cardsRange.filter(card => { diff --git a/script.js b/script.js index d6dd1bea..652fd454 100644 --- a/script.js +++ b/script.js @@ -4278,12 +4278,14 @@ function initialize() { editBox.createCardHead = function(id, options = {}) { function clickHeadToNewMon(event) { event.preventDefault(); //取消链接的默认操作 - monstersID.value = this.card.id; + monstersID.value = this.dataset.cardid; formIdSearch.onchange(); } const cli = document.createElement("li"); - const cdom = cli.head = createCardA(options); - cli.appendChild(cdom); + + const cdom = cli.head = cli.appendChild(createCardA(options)); + cdom.onclick = clickHeadToNewMon; + let card; if (id instanceof Member) { changeid(id, cdom); @@ -4402,7 +4404,6 @@ function initialize() { }); } - cli.onclick = clickHeadToNewMon; return cli; }; @@ -5060,9 +5061,8 @@ function initialize() { if (!heads || heads.length === 0) return; //没有数据时,直接返回 const sortIndex = parseInt(s_sortList.value, 10); const reverse = s_sortReverse.checked; - let headsArray = heads.concat(); - headsArray.sort((head_a, head_b) => { + const headsArray = heads.toSorted((head_a, head_b) => { const card_a = head_a.card, card_b = head_b.card; let sortNumber = sort_function_list[sortIndex].function(card_a, card_b); diff --git a/service-worker.js b/service-worker.js index a697aab8..e9409123 100644 --- a/service-worker.js +++ b/service-worker.js @@ -30231,7 +30231,7 @@ const cachesMap = new Map([ ], [ "script-json_data.js", - "982005039010a7e2128a6ce90d21718c" + "37f21417e9c5c4be0685546aa6f280e0" ], [ "script-skill-parser.js", @@ -30239,11 +30239,11 @@ const cachesMap = new Map([ ], [ "script-universal_function.js", - "ca25f0fda84bb0030a2762ce51252f7e" + "23209e5aee458faeb1282ae19fe7bc3e" ], [ "script.js", - "6dc2f6824dc4cccecf17abf976f1787b" + "c5a1df2c76abb1d5c99468c92c68e200" ], [ "solo.html", diff --git a/solo.html b/solo.html index 2b93296d..ca59607c 100644 --- a/solo.html +++ b/solo.html @@ -1216,7 +1216,7 @@ const teamsCount = 1; - + diff --git a/style.css b/style.css index 1e9e4c50..074ea025 100644 --- a/style.css +++ b/style.css @@ -1331,6 +1331,14 @@ body:not(.solo) .awoken-icon[data-awoken-icon="64"]::after .team-leader .monster { border-color: var(--team-ft-color); } +.team-members .monster, +.team-assist .monster { + cursor: grab; +} +.team-members .monster:active, +.team-assist .monster:active { + cursor: grabbing; +} /*三维计算值*/ .team-ability .abilitys @@ -1609,7 +1617,8 @@ label[for="search-string"]::before { transform: scale(0.6); margin: calc(-100px * (1 - 0.6) / 2); } -.rich-text .detail-mon .monster{ +.rich-text .detail-mon .monster, +.custom-addition .detail-mon .monster{ transform: scale(0.5); margin: calc(-100px * (1 - 0.5) / 2); } @@ -2421,7 +2430,7 @@ input[disabled]+.awoken-icon:active, transform: scale(0.84); margin: -3px -1px; } -.edit-box .awoken-ul .awoken-icon, +.edit-box :where(.awoken-div,.row-awoken-sawoken) .awoken-ul .awoken-icon, .row-mon-awoken .awoken-count-num { cursor: pointer; @@ -2742,10 +2751,10 @@ input[disabled]+.awoken-icon:active, /*不允许使用的潜觉,不是手指,半透明,灰度*/ .awoken-icon.unallowable-awoken, -input[disabled]+.awoken-icon, +.search-box .awoken-ul .awoken-count input[disabled]+.awoken-icon, .latent-icon.unallowable-latent { - cursor: default !important; + cursor: not-allowed; opacity: var(--search-icon-unchecked); filter: grayscale(100%); } diff --git a/triple.html b/triple.html index 4508ef4f..c796a2a0 100644 --- a/triple.html +++ b/triple.html @@ -2160,7 +2160,7 @@ const teamsCount = 3; - +