From 80317eba95a0e76d97d20e70b4ec78391e73703c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9E=AB=E8=B0=B7=E5=89=91=E4=BB=99?= Date: Mon, 24 Feb 2020 02:22:05 +0800 Subject: [PATCH] =?UTF-8?q?1=E3=80=81=E4=BF=AE=E5=A4=8D=E5=8D=8F=E5=8A=9B?= =?UTF-8?q?=E7=BD=91=E9=A1=B5=E7=9A=84BUG=202=E3=80=81=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E5=8F=AF=E5=90=A6=E8=BE=85=E5=8A=A9=E6=90=9C=E7=B4=A2=203?= =?UTF-8?q?=E3=80=81=E5=A2=9E=E5=8A=A0=E7=B3=BB=E5=88=97=E6=90=9C=E7=B4=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- languages/en.css | 10 +- languages/ja.css | 10 +- languages/ko.css | 10 +- languages/zh-CN.js | 397 +++++++++++++++++++++++++++++++++++++++++- languages/zh-TW.css | 10 +- languages/zh.css | 10 +- multi.html | 6 +- script.js | 58 +++++- solo.html | 6 +- style.css | 28 ++- triple.html | 6 +- universal_function.js | 9 +- 12 files changed, 530 insertions(+), 30 deletions(-) diff --git a/languages/en.css b/languages/en.css index 8ac9a4de..20d77614 100644 --- a/languages/en.css +++ b/languages/en.css @@ -68,11 +68,14 @@ .monsterinfo-box .monster-cost::before{ content: "COST:"; } -.monsterinfo-box .monster-collabId::before{ +.monsterinfo-box .monster-seriesId::before{ content: "Series ID:"; } +.monsterinfo-box .monster-collabId::before{ + content: "Collab ID:"; +} .monsterinfo-box .monster-altName::before{ - content: "Series name:"; + content: "Alternative Name:"; } .edit-box .setting-box .row-mon-level::before{ content: "▼Monster Level"; @@ -251,6 +254,9 @@ .search-box .consider-equivalent-awoken-label::after{ content: "Search for Equivalent Awoken"; } +.search-box .can-assist-label::after{ + content: "Can be assist"; +} .search-box .include-super-awoken-label::after{ content: "Including Super Awoken"; } diff --git a/languages/ja.css b/languages/ja.css index 9a203e89..92faf2aa 100644 --- a/languages/ja.css +++ b/languages/ja.css @@ -67,11 +67,14 @@ .monsterinfo-box .monster-cost::before{ content: "コスト:"; } +.monsterinfo-box .monster-seriesId::before{ + content: "シリーズ ID:"; +} .monsterinfo-box .monster-collabId::before{ - content: "シリーズ ID:"; + content: "コラボ ID:"; } .monsterinfo-box .monster-altName::before{ - content: "シリーズの名前:"; + content: "別名:"; } .edit-box .setting-box .row-mon-level::before{ content: "▼モンスターレベル"; @@ -244,6 +247,9 @@ .search-box .consider-equivalent-awoken-label::after{ content: "同時に同等の覚醒を検索"; } +.search-box .can-assist-label::after{ + content: "アシスト可能"; +} .search-box .include-super-awoken-label::after{ content: "超覚醒を含む"; } diff --git a/languages/ko.css b/languages/ko.css index 213053c7..d3382464 100644 --- a/languages/ko.css +++ b/languages/ko.css @@ -67,11 +67,14 @@ .monsterinfo-box .monster-cost::before{ content: "코스트:"; } +.monsterinfo-box .monster-seriesId::before{ + content: "시리즈 ID:"; +} .monsterinfo-box .monster-collabId::before{ - content: "시리즈 ID:"; + content: "콜라보 ID:"; } .monsterinfo-box .monster-altName::before{ - content: "시리즈 이름:"; + content: "대체 이름:"; } .edit-box .setting-box .row-mon-level::before{ content: "▼몬스터 레벨"; @@ -244,6 +247,9 @@ .search-box .consider-equivalent-awoken-label::after{ content: "동시에 해당 경계를 각성"; } +.search-box .can-assist-label::after{ + content: "지원 할 수 있습니다"; +} .search-box .include-super-awoken-label::after{ content: "슈퍼 각성 포함"; } diff --git a/languages/zh-CN.js b/languages/zh-CN.js index 6a1d6590..3b54b91e 100644 --- a/languages/zh-CN.js +++ b/languages/zh-CN.js @@ -988,7 +988,7 @@ function parseSkillDescription(skill) str += strArr.map(s=>{ return `${s}`; }).join("、"); - str += `系列角色时,所有宠物的${getFixedHpAtkRcvString({hp:sk[3],atk:sk[4],rcv:sk[5]})}`; + str += `合作角色时,所有宠物的${getFixedHpAtkRcvString({hp:sk[3],atk:sk[4],rcv:sk[5]})}`; break; case 176: //●◉○◍◯ @@ -1194,4 +1194,397 @@ function parseBigNumber(number) return number.toLocaleString(); } -} \ No newline at end of file +} + +//增加特殊搜索模式 +(function() { + 'use strict'; + const specialSearchFunctions = [ + {name:"临时的特殊搜索",function:()=>false}, + {name:"====主动技====",function:()=>false}, + {name:"所有 1 CD",function:()=>Cards.filter(card=>{ + if (card.activeSkillId == 0) return false; + const skill = Skills[card.activeSkillId]; + return skill.initialCooldown - (skill.maxLevel - 1) <= 1; + })}, + {name:"所有换队长",function:()=>Cards.filter(card=>{ + const searchType = 93; + const skill = Skills[card.activeSkillId]; + if (skill.type == searchType) + return true; + else if (skill.type == 116 || skill.type == 118){ + const subskills = skill.params.map(id=>{return Skills[id];}); + return subskills.some(subskill=>{return subskill.type == searchType}); + } + })}, + {name:"所有破属吸",function:()=>Cards.filter(card=>{ + const searchType = 173; + const skill = Skills[card.activeSkillId]; + if (skill.type == searchType && skill.params[1]) + return true; + else if (skill.type == 116 || skill.type == 118){ + const subskills = skill.params.map(id=>{return Skills[id];}); + return subskills.some(subskill=>{return subskill.type == searchType && subskill.params[1]}); + } + })}, + {name:"所有破伤吸",function:()=>Cards.filter(card=>{ + const searchType = 173; + const skill = Skills[card.activeSkillId]; + if (skill.type == searchType && skill.params[3]) + return true; + else if (skill.type == 116 || skill.type == 118){ + const subskills = skill.params.map(id=>{return Skills[id];}); + return subskills.some(subskill=>{return subskill.type == searchType && subskill.params[3]}); + } + })}, + {name:"所有双破吸",function:()=>Cards.filter(card=>{ + const searchType = 173; + const skill = Skills[card.activeSkillId]; + if (skill.type == searchType && skill.params[1] && skill.params[3]) + return true; + else if (skill.type == 116 || skill.type == 118){ + const subskills = skill.params.map(id=>{return Skills[id];}); + return subskills.some(subskill=>{return subskill.type == searchType && subskill.params[1] && subskill.params[3]}); + } + })}, + {name:"所有贯穿无效盾",function:()=>Cards.filter(card=>{ + const searchType = 191; + const skill = Skills[card.activeSkillId]; + if (skill.type == searchType) + return true; + else if (skill.type == 116 || skill.type == 118){ + const subskills = skill.params.map(id=>{return Skills[id];}); + return subskills.some(subskill=>{return subskill.type == searchType}); + } + })}, + {name:"所有解禁消珠",function:()=>Cards.filter(card=>{ + const searchType = 196; + const skill = Skills[card.activeSkillId]; + if (skill.type == searchType) + return true; + else if (skill.type == 116 || skill.type == 118){ + const subskills = skill.params.map(id=>{return Skills[id];}); + return subskills.some(subskill=>{return subskill.type == searchType}); + } + })}, + {name:"所有解觉醒",function:()=>Cards.filter(card=>{ + const searchType = 117; + const skill = Skills[card.activeSkillId]; + if (skill.type == searchType && skill.params[4]) + return true; + else if (skill.type == 116 || skill.type == 118){ + const subskills = skill.params.map(id=>{return Skills[id];}); + return subskills.some(subskill=>{return subskill.type == searchType && subskill.params[4]}); + } + })}, + {name:"所有解封+觉醒",function:()=>Cards.filter(card=>{ + const searchType = 117; + const skill = Skills[card.activeSkillId]; + if (skill.type == searchType && skill.params[0] && skill.params[4]) + return true; + else if (skill.type == 116 || skill.type == 118){ + const subskills = skill.params.map(id=>{return Skills[id];}); + return subskills.some(subskill=>{return subskill.type == searchType && subskill.params[0] && subskill.params[4]}); + } + })}, + {name:"所有解锁",function:()=>Cards.filter(card=>{ + const searchType = 172; + const skill = Skills[card.activeSkillId]; + if (skill.type == searchType) + return true; + else if (skill.type == 116 || skill.type == 118){ + const subskills = skill.params.map(id=>{return Skills[id];}); + return subskills.some(subskill=>{return subskill.type == searchType}); + } + })}, + {name:"所有变身",function:()=>Cards.filter(card=>{ + const searchType = 202; + const skill = Skills[card.activeSkillId]; + if (skill.type == searchType) + return true; + else if (skill.type == 116 || skill.type == 118){ + const subskills = skill.params.map(id=>{return Skills[id];}); + return subskills.some(subskill=>{return subskill.type == searchType}); + } + })}, + {name:"所有最大值重力",function:()=>Cards.filter(card=>{ + const searchType = 161; + const skill = Skills[card.activeSkillId]; + if (skill.type == searchType) + return true; + else if (skill.type == 116 || skill.type == 118){ + const subskills = skill.params.map(id=>{return Skills[id];}); + return subskills.some(subskill=>{return subskill.type == searchType}); + } + })}, + {name:"所有宝石姬类技能",function:()=>Cards.filter(card=>{ + const searchTypeArray = [156,168]; + const skill = Skills[card.activeSkillId]; + if (searchTypeArray.some(t=>{return skill.type == t;})) + return true; + else if (skill.type == 116 || skill.type == 118){ + const subskills = skill.params.map(id=>{return Skills[id];}); + return subskills.some(subskill=>{return searchTypeArray.some(t=>{return subskill.type == t;});}); + } + })}, + {name:"所有生成特殊形状的(单独方块见下)",function:()=>Cards.filter(card=>{ + const searchType = 176; + const skill = Skills[card.activeSkillId]; + if (skill.type == searchType) + return true; + else if (skill.type == 116 || skill.type == 118){ + const subskills = skill.params.map(id=>{return Skills[id];}); + return subskills.some(subskill=>{return subskill.type == searchType}); + } + })}, + {name:"临时的特所有生成3x3方块殊搜索",function:()=>Cards.filter(card=>{ + function is3x3(sk) + { + for (let si=0;si<3;si++) + { + if (sk[si] === sk[si+1] && sk[si] === sk[si+2] && //3行连续相等 + (si>0?(sk[si-1] & sk[si]) ===0:true) && //如果上一行存在,并且无交集(and为0) + (si+2<4?(sk[si+3] & sk[si]) ===0:true) && //如果下一行存在,并且无交集(and为0) + (sk[si] === 7 || sk[si] === 7<<1 || sk[si] === 7<<2 || sk[si] === 7<<3) //如果这一行满足任意2珠并联(二进制111=十进制7) + ) + return true; + } + return false; + } + const searchType = 176; + const skill = Skills[card.activeSkillId]; + if (skill.type == searchType && is3x3(skill.params)) + return true; + else if (skill.type == 116 || skill.type == 118){ + const subskills = skill.params.map(id=>{return Skills[id];}); + return subskills.some(subskill=>{return subskill.type == searchType && is3x3(subskill.params)}); + } + })}, + {name:"所有花火(按进化树排列)",function:()=>Cards.filter(card=>{ + function isOnly1(sk) + { + if (sk.length<2 || sk.indexOf(-1)==1) return true; + else return false; + } + const searchType = 71; + const skill = Skills[card.activeSkillId]; + if (skill.type == searchType && isOnly1(skill.params)) + return true; + else if (skill.type == 116 || skill.type == 118){ + const subskills = skill.params.map(id=>{return Skills[id];}); + return subskills.some(subskill=>{return subskill.type == searchType && isOnly1(subskill.params)}); + } + }).sort((a,b)=>{//优先按技能排列,其次按进化树排列 + return (a.activeSkillId - b.activeSkillId) || (a.evoRootId - b.evoRootId); + })}, + {name:"所有顶毒",function:()=>Cards.filter(card=>{ + const searchType = 126; + const skill = Skills[card.activeSkillId]; + if (skill.type == searchType && (skill.params[0] & 960) > 0) // 960 = 二进制 1111000000 + return true; + else if (skill.type == 116 || skill.type == 118){ + const subskills = skill.params.map(id=>{return Skills[id];}); + return subskills.some(subskill=>{return subskill.type == searchType && (subskill.params[0] & 960) > 0}); + } + })}, + {name:"所有99回合掉落",function:()=>Cards.filter(card=>{ + const searchType = 126; + const skill = Skills[card.activeSkillId]; + if (skill.type == searchType && skill.params[1] >= 99) // 960 = 二进制 1111000000 + return true; + else if (skill.type == 116 || skill.type == 118){ + const subskills = skill.params.map(id=>{return Skills[id];}); + return subskills.some(subskill=>{return subskill.type == searchType && subskill.params[1] >= 99}); + } + })}, + {name:"====队长技====",function:()=>false}, + {name:"所有普通追打",function:()=>Cards.filter(card=>{ + const searchType = 12; + const skill = Skills[card.leaderSkillId]; + if (skill.type == searchType) + return true; + else if (skill.type == 138){ + const subskills = skill.params.map(id=>{return Skills[id];}); + return subskills.some(subskill=>{return subskill.type == searchType;}); + } + })}, + {name:"所有固伤追击",function:()=>Cards.filter(card=>{ + const searchTypeArray = [199,200,201]; + const skill = Skills[card.leaderSkillId]; + if (searchTypeArray.some(t=>{return skill.type == t;})) + return true; + else if (skill.type == 138){ + const subskills = skill.params.map(id=>{return Skills[id];}); + return subskills.some(subskill=>{return searchTypeArray.some(t=>{return subskill.type == t;});}); + } + })}, + {name:"所有队长+C(按+C数从小到大排列)",function:()=>Cards.filter(card=>{ + const searchTypeArray = [192,194]; + const skill = Skills[card.leaderSkillId]; + if (searchTypeArray.some(t=>{return skill.type == t && skill.params[3]>0;})) + return true; + else if (skill.type == 138){ + const subskills = skill.params.map(id=>Skills[id]); + return subskills.some(subskill=>{return searchTypeArray.some(t=>{return subskill.type == t && subskill.params[3]>0;});}); + } + }).sort((a,b)=>{ + const searchTypeArray = [192,194]; + const a_s = Skills[a.leaderSkillId], b_s = Skills[b.leaderSkillId]; + let a_pC = 0,b_pC = 0; + a_pC = searchTypeArray.some(t => a_s.type === t) ? + a_s.params[3] : + a_s.params.map(id=>Skills[id]).find(subskill => searchTypeArray.some(t=>subskill.type === t)).params[3]; + b_pC = searchTypeArray.some(t=> b_s.type === t) ? + b_s.params[3] : + b_s.params.map(id=>Skills[id]).find(subskill => searchTypeArray.some(t=>subskill.type === t)).params[3]; + return a_pC - b_pC; + })}, + {name:"所有毒无效",function:()=>Cards.filter(card=>{ + const searchType = 197; + const skill = Skills[card.leaderSkillId]; + if (skill.type == searchType) + return true; + else if (skill.type == 138){ + const subskills = skill.params.map(id=>{return Skills[id];}); + return subskills.some(subskill=>{return subskill.type == searchType;}); + } + })}, + {name:"所有回血加盾",function:()=>Cards.filter(card=>{ + const searchType = 198; + const skill = Skills[card.leaderSkillId]; + if (skill.type == searchType && skill.params[2]) + return true; + else if (skill.type == 138){ + const subskills = skill.params.map(id=>{return Skills[id];}); + return subskills.some(subskill=>{return subskill.type == searchType && subskill.params[2];}); + } + })}, + {name:"所有回血解觉",function:()=>Cards.filter(card=>{ + const searchType = 198; + const skill = Skills[card.leaderSkillId]; + if (skill.type == searchType && skill.params[3]) + return true; + else if (skill.type == 138){ + const subskills = skill.params.map(id=>{return Skills[id];}); + return subskills.some(subskill=>{return subskill.type == searchType && subskill.params[3];}); + } + })}, + {name:"所有76版",function:()=>Cards.filter(card=>{ + const searchTypeArray = [162,186]; + const skill = Skills[card.leaderSkillId]; + if (searchTypeArray.some(t=>{return skill.type == t;})) + return true; + else if (skill.type == 138){ + const subskills = skill.params.map(id=>{return Skills[id];}); + return subskills.some(subskill=>{return searchTypeArray.some(t=>{return subskill.type == t;});}); + } + })}, + {name:"所有无天降",function:()=>Cards.filter(card=>{ + const searchTypeArray = [163,177]; + const skill = Skills[card.leaderSkillId]; + if (searchTypeArray.some(t=>{return skill.type == t;})) + return true; + else if (skill.type == 138){ + const subskills = skill.params.map(id=>{return Skills[id];}); + return subskills.some(subskill=>{return searchTypeArray.some(t=>{return subskill.type == t;});}); + } + })}, + {name:"所有根性",function:()=>Cards.filter(card=>{ + const searchType = 14; + const skill = Skills[card.leaderSkillId]; + if (skill.type == searchType) + return true; + else if (skill.type == 138){ + const subskills = skill.params.map(id=>{return Skills[id];}); + return subskills.some(subskill=>{return subskill.type == searchType;}); + } + })}, + {name:"指定队伍队员编号",function:()=>Cards.filter(card=>{ + const searchType = 125; + const skill = Skills[card.leaderSkillId]; + if (skill.type == searchType) + return true; + else if (skill.type == 138){ + const subskills = skill.params.map(id=>{return Skills[id];}); + return subskills.some(subskill=>{return subskill.type == searchType;}); + } + })}, + {name:"指定队伍队员合作",function:()=>Cards.filter(card=>{ + const searchType = 175; + const skill = Skills[card.leaderSkillId]; + if (skill.type == searchType) + return true; + else if (skill.type == 138){ + const subskills = skill.params.map(id=>{return Skills[id];}); + return subskills.some(subskill=>{return subskill.type == searchType;}); + } + })}, + {name:"指定队伍队员都是像素",function:()=>Cards.filter(card=>{ + const searchType = 203; + const skill = Skills[card.leaderSkillId]; + if (skill.type == searchType) + return true; + else if (skill.type == 138){ + const subskills = skill.params.map(id=>{return Skills[id];}); + return subskills.some(subskill=>{return subskill.type == searchType;}); + } + })}, + {name:"增加掉落率",function:()=>Cards.filter(card=>{ + const searchType = 53; + const skill = Skills[card.leaderSkillId]; + if (skill.type == searchType) + return true; + else if (skill.type == 138){ + const subskills = skill.params.map(id=>{return Skills[id];}); + return subskills.some(subskill=>{return subskill.type == searchType;}); + } + })}, + {name:"增加金币",function:()=>Cards.filter(card=>{ + const searchType = 54; + const skill = Skills[card.leaderSkillId]; + if (skill.type == searchType) + return true; + else if (skill.type == 138){ + const subskills = skill.params.map(id=>{return Skills[id];}); + return subskills.some(subskill=>{return subskill.type == searchType;}); + } + })}, + {name:"增加经验",function:()=>Cards.filter(card=>{ + const searchType = 148; + const skill = Skills[card.leaderSkillId]; + if (skill.type == searchType) + return true; + else if (skill.type == 138){ + const subskills = skill.params.map(id=>{return Skills[id];}); + return subskills.some(subskill=>{return subskill.type == searchType;}); + } + })}, + {name:"====其他搜索====",function:()=>false}, + {name:"全部像素进化",function:()=>Cards.filter(card=>{ + return card.evoMaterials.indexOf(3826)>=0; + })}, + {name:"全部110级三维成长100%",function:()=>Cards.filter(card=>{ + return card.limitBreakIncr>=100; + })}, + {name:"全部珠子皮肤",function:()=>Cards.filter(card=>{ + return card.blockSkinId>0; + })}, + {name:"全部8格浅觉",function:()=>Cards.filter(card=>{ + return card.is8Latent; + })}, + ]; + + + + const searchBox = editBox.querySelector(".search-box"); + const controlDiv = searchBox.querySelector(".control-div"); + let fragment = document.createDocumentFragment(); + const specialSearch = fragment.appendChild(document.createElement("select")); + specialSearchFunctions.forEach((sfunc,idx)=>{ + specialSearch.options.add(new Option(sfunc.name,idx)); + }); + specialSearch.onchange = function(){ + showSearch(specialSearchFunctions[parseInt(this.value,10)].function()); + } + controlDiv.appendChild(fragment); +})(); \ No newline at end of file diff --git a/languages/zh-TW.css b/languages/zh-TW.css index a975b7bd..f8cc0800 100644 --- a/languages/zh-TW.css +++ b/languages/zh-TW.css @@ -70,11 +70,14 @@ .monsterinfo-box .monster-cost::before{ content: "消耗:"; } -.monsterinfo-box .monster-collabId::before{ +.monsterinfo-box .monster-seriesId::before{ content: "系列ID:"; } +.monsterinfo-box .monster-collabId::before{ + content: "合作ID:"; +} .monsterinfo-box .monster-altName::before{ - content: "系列名称:"; + content: "替代名稱:"; } .edit-box .setting-box .row-mon-level::before{ content: "▼怪物等級"; @@ -250,6 +253,9 @@ .search-box .consider-equivalent-awoken-label::after{ content: "同時搜索等效覺醒"; } +.search-box .can-assist-label::after{ + content: "可以作爲輔助"; +} .search-box .include-super-awoken-label::after{ content: "包括超覺醒"; } diff --git a/languages/zh.css b/languages/zh.css index f41f6d89..1747e9a1 100644 --- a/languages/zh.css +++ b/languages/zh.css @@ -70,11 +70,14 @@ .monsterinfo-box .monster-cost::before{ content: "消耗:"; } -.monsterinfo-box .monster-collabId::before{ +.monsterinfo-box .monster-seriesId::before{ content: "系列ID:"; } +.monsterinfo-box .monster-collabId::before{ + content: "合作ID:"; +} .monsterinfo-box .monster-altName::before{ - content: "系列名称:"; + content: "替代名称:"; } .edit-box .setting-box .row-mon-level::before{ content: "▼怪物等级"; @@ -250,6 +253,9 @@ .search-box .consider-equivalent-awoken-label::after{ content: "同时搜索等效觉醒"; } +.search-box .can-assist-label::after{ + content: "可以作为辅助"; +} .search-box .include-super-awoken-label::after{ content: "包括超觉醒"; } diff --git a/multi.html b/multi.html index 11168fbb..e06c8487 100644 --- a/multi.html +++ b/multi.html @@ -457,10 +457,13 @@ var formation = new Formation(teamsCount,5);
  • +
    +
    +