| @@ -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"; | |||
| } | |||
| @@ -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: "超覚醒を含む"; | |||
| } | |||
| @@ -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: "슈퍼 각성 포함"; | |||
| } | |||
| @@ -988,7 +988,7 @@ function parseSkillDescription(skill) | |||
| str += strArr.map(s=>{ | |||
| return `<a class="detail-search monster-collabId" data-collabId="${s}" onclick="searchColla(this.getAttribute('data-collabId'));">${s}</a>`; | |||
| }).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(); | |||
| } | |||
| } | |||
| } | |||
| //增加特殊搜索模式 | |||
| (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); | |||
| })(); | |||
| @@ -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: "包括超覺醒"; | |||
| } | |||
| @@ -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: "包括超觉醒"; | |||
| } | |||
| @@ -457,10 +457,13 @@ var formation = new Formation(teamsCount,5); | |||
| <li class="type-name"><div class="type-icon"></div></li> | |||
| </ul> | |||
| <div class="monsterinfo-cell"> | |||
| <div class="monster-seriesId"></div> | |||
| <div class="monster-collabId"></div> | |||
| <div class="monster-altName"></div> | |||
| </div> | |||
| </div> | |||
| <div class="monsterinfo-cell"> | |||
| </div> | |||
| </div> | |||
| <div class="search-box display-none"> | |||
| <div class="attrs"><!--属性--> | |||
| @@ -502,7 +505,7 @@ var formation = new Formation(teamsCount,5); | |||
| <div class="awoken-div"><!--觉醒--> | |||
| <button class="awoken-clear" ></button> | |||
| <input type="checkbox" name="consider-equivalent-awoken" class="config-checkbox-ipt" id="consider-equivalent-awoken"><label class="config-checkbox-lbl consider-equivalent-awoken-label" for="consider-equivalent-awoken"><div class="config-checkbox-lbl-cicle"></div></label> | |||
| <input type="checkbox" name="include-super-awoken" class="config-checkbox-ipt" id="include-super-awoken"><label class="config-checkbox-lbl include-super-awoken-label" for="include-super-awoken"><div class="config-checkbox-lbl-cicle"></div></label> | |||
| <input type="checkbox" name="can-assist" class="config-checkbox-ipt" id="can-assist"><label class="config-checkbox-lbl can-assist-label" for="can-assist"><div class="config-checkbox-lbl-cicle"></div></label> | |||
| <ul class="awoken-ul"> | |||
| <li class="awoken-count zero"><button class="awoken-icon awoken-43" value="43"></button><button class="count" value="43">0</button></li><!--7c--> | |||
| <li class="awoken-count zero"><button class="awoken-icon awoken-61" value="61"></button><button class="count" value="61">0</button></li><!--10c--> | |||
| @@ -577,6 +580,7 @@ var formation = new Formation(teamsCount,5); | |||
| <li class="awoken-count zero"><button class="awoken-icon awoken-71" value="71"></button><button class="count" value="71">0</button></li><!--掉废--> | |||
| <li class="awoken-count zero"><button class="awoken-icon awoken-72" value="72"></button><button class="count" value="72">0</button></li><!--掉毒--> | |||
| </ul> | |||
| <input type="checkbox" name="include-super-awoken" class="config-checkbox-ipt" id="include-super-awoken"><label class="config-checkbox-lbl include-super-awoken-label" for="include-super-awoken"><div class="config-checkbox-lbl-cicle"></div></label> | |||
| </div> | |||
| <div class="sawoken-div"><!--超觉醒--> | |||
| <button class="sawoken-clear" ></button> | |||
| @@ -635,12 +635,20 @@ function initialize() | |||
| }; | |||
| const smonsterinfoBox = editBox.querySelector(".monsterinfo-box"); | |||
| const mSeriesId = smonsterinfoBox.querySelector(".monster-seriesId"); | |||
| mSeriesId.onclick = function(){ //搜索系列 | |||
| const seriesId = parseInt(this.getAttribute('data-seriesId'),10); | |||
| if (seriesId>0) | |||
| { | |||
| showSearch(Cards.filter(card=>{return card.seriesId == seriesId;})); | |||
| } | |||
| }; | |||
| const mCollabId = smonsterinfoBox.querySelector(".monster-collabId"); | |||
| mCollabId.onclick = function(){ //搜索合作 | |||
| const collabId = parseInt(this.getAttribute('data-collabId')); | |||
| const collabId = parseInt(this.getAttribute('data-collabId'),10); | |||
| if (collabId>0); | |||
| { | |||
| searchColla(this.getAttribute('data-collabId')); | |||
| searchColla(collabId); | |||
| } | |||
| }; | |||
| const mAltName = smonsterinfoBox.querySelector(".monster-altName"); | |||
| @@ -683,7 +691,7 @@ function initialize() | |||
| const s_attr1s = Array.prototype.slice.call(searchBox.querySelectorAll(".attrs .attr-list-1 .attr-radio")); | |||
| const s_attr2s = Array.prototype.slice.call(searchBox.querySelectorAll(".attrs .attr-list-2 .attr-radio")); | |||
| const s_fixMainColor = searchBox.querySelector(".attrs #fix-main-color"); | |||
| const s_fixMainColor = searchBox.querySelector("#fix-main-color"); | |||
| const s_types = Array.prototype.slice.call(searchBox.querySelectorAll(".types-div .type-check")); | |||
| const s_awokensItems = Array.prototype.slice.call(searchBox.querySelectorAll(".awoken-div .awoken-count")); | |||
| const s_awokensIcons = s_awokensItems.map(it=>{ | |||
| @@ -693,16 +701,18 @@ function initialize() | |||
| return it.querySelector(".count"); | |||
| }); | |||
| const s_awokensEquivalent = searchBox.querySelector(".awoken-div #consider-equivalent-awoken"); //搜索等效觉醒 | |||
| const s_awokensEquivalent = searchBox.querySelector("#consider-equivalent-awoken"); //搜索等效觉醒 | |||
| const s_canAssist = searchBox.querySelector("#can-assist"); //只搜索辅助 | |||
| const s_sawokenDiv = searchBox.querySelector(".sawoken-div"); | |||
| const s_sawokens = Array.prototype.slice.call(s_sawokenDiv.querySelectorAll(".sawoken-check")); | |||
| const s_includeSuperAwoken = searchBox.querySelector(".awoken-div #include-super-awoken"); //搜索超觉醒 | |||
| const s_includeSuperAwoken = searchBox.querySelector("#include-super-awoken"); //搜索超觉醒 | |||
| s_includeSuperAwoken.onclick = function(){ | |||
| if (this.checked) | |||
| s_sawokenDiv.classList.add("display-none"); | |||
| s_sawokenDiv.classList.add("display-none"); | |||
| else | |||
| s_sawokenDiv.classList.remove("display-none"); | |||
| s_sawokenDiv.classList.remove("display-none"); | |||
| } | |||
| function search_awokenAdd1() | |||
| @@ -823,9 +833,10 @@ function initialize() | |||
| awokensFilter, | |||
| sawokensFilter, | |||
| s_awokensEquivalent.checked, | |||
| s_canAssist.checked, | |||
| s_includeSuperAwoken.checked | |||
| ); | |||
| console.debug("搜索条件:属性[%d,%d],固定主副%s,类型:%o,觉醒:%o,超觉醒:%o,等效觉醒%s,搜超觉醒%s。\n搜索结果:%o", | |||
| console.debug("搜索条件:属性[%d,%d],固定主副%s,类型:%o,觉醒:%o,超觉醒:%o,等效觉醒%s,可做辅助%s,搜超觉醒%s。\n搜索结果:%o", | |||
| attr1,attr2, | |||
| s_fixMainColor.checked, | |||
| typesFilter, | |||
| @@ -833,6 +844,7 @@ function initialize() | |||
| sawokensFilter, | |||
| s_awokensEquivalent.checked, | |||
| s_includeSuperAwoken.checked, | |||
| s_canAssist.checked, | |||
| searchResult | |||
| ); | |||
| showSearch(searchResult); | |||
| @@ -1014,11 +1026,20 @@ function initialize() | |||
| const rowSkill = settingBox.querySelector(".row-mon-skill"); | |||
| const skillBox = rowSkill.querySelector(".skill-box"); | |||
| const skillTitle = skillBox.querySelector(".skill-name"); | |||
| const skillCD = skillBox.querySelector(".skill-cd"); | |||
| const skillLevel = skillBox.querySelector(".m-skill-level"); | |||
| const skillLevel_1 = skillBox.querySelector(".m-skill-lv-1"); | |||
| const skillLevel_Max = skillBox.querySelector(".m-skill-lv-max"); | |||
| skillTitle.onclick = function(){ | |||
| const skillId = parseInt(this.getAttribute("data-skillid"),10); //获得当前技能ID | |||
| const s_cards = Cards.filter(card=>card.activeSkillId === skillId); //搜索同技能怪物 | |||
| if (s_cards.length > 1) | |||
| { | |||
| showSearch(s_cards); //显示 | |||
| } | |||
| } | |||
| skillLevel.onchange = function(){ | |||
| const card = Cards[editBox.mid] || Cards[0]; //怪物固定数据 | |||
| const skill = Skills[card.activeSkillId]; | |||
| @@ -1381,7 +1402,7 @@ function interchangeCard(formArr,toArr) | |||
| if(formArr[1] != toArr[1]) //从武器拖到非武器才改变类型 | |||
| { | |||
| from = changeType(from,formArr[1]); | |||
| if (!isCopy) to = ichangeType(to,toArr[1]); | |||
| if (!isCopy) to = changeType(to,toArr[1]); | |||
| }else if (isCopy) | |||
| { | |||
| const newFrom = new from.constructor(); | |||
| @@ -1470,6 +1491,13 @@ function changeid(mon,monDom,latentDom) | |||
| if (card.canAssist) | |||
| {//可以辅助的满觉醒打黄色星星 | |||
| awokenIcon.classList.add("allowable-assist"); | |||
| if (card.awakenings.indexOf(49)>=0) | |||
| {//武器 | |||
| awokenIcon.classList.add("wepon"); | |||
| }else | |||
| { | |||
| awokenIcon.classList.remove("wepon"); | |||
| } | |||
| }else | |||
| { | |||
| awokenIcon.classList.remove("allowable-assist"); | |||
| @@ -1478,6 +1506,7 @@ function changeid(mon,monDom,latentDom) | |||
| { | |||
| awokenIcon.classList.remove("full-awoken"); | |||
| awokenIcon.classList.remove("allowable-assist"); | |||
| awokenIcon.classList.remove("wepon"); | |||
| } | |||
| } | |||
| @@ -1677,6 +1706,16 @@ function editBoxChangeMonId(id) | |||
| mExp.innerHTML = card.exp.max;*/ | |||
| const mName = monInfoBox.querySelector(".monster-name"); | |||
| mName.innerHTML = returnMonsterNameArr(card, currentLanguage.searchlist, currentDataSource.code)[0]; | |||
| const mSeriesId = monInfoBox.querySelector(".monster-seriesId"); | |||
| mSeriesId.innerHTML = card.seriesId; | |||
| mSeriesId.setAttribute("data-seriesId",card.seriesId); | |||
| if (card.seriesId == 0) | |||
| { | |||
| mSeriesId.classList.add("display-none"); | |||
| }else | |||
| { | |||
| mSeriesId.classList.remove("display-none"); | |||
| } | |||
| const mCollabId = monInfoBox.querySelector(".monster-collabId"); | |||
| mCollabId.innerHTML = card.collabId; | |||
| mCollabId.setAttribute("data-collabId",card.collabId); | |||
| @@ -1815,6 +1854,7 @@ function editBoxChangeMonId(id) | |||
| fragment.appendChild(skillBox); | |||
| skillTitle.innerHTML = descriptionToHTML(skill.name); | |||
| skillTitle.setAttribute("data-skillid", skill.id); | |||
| skillDetail.innerHTML = parseSkillDescription(skill); | |||
| const t_maxLevel = card.overlay || card.types.indexOf(15)>=0 ? 1 : skill.maxLevel; //遇到不能升技的,最大等级强制为1 | |||
| skillLevel.max = t_maxLevel; | |||
| @@ -409,10 +409,13 @@ var formation = new Formation(teamsCount,6); | |||
| <li class="type-name"><div class="type-icon"></div></li> | |||
| </ul> | |||
| <div class="monsterinfo-cell"> | |||
| <div class="monster-seriesId"></div> | |||
| <div class="monster-collabId"></div> | |||
| <div class="monster-altName"></div> | |||
| </div> | |||
| </div> | |||
| <div class="monsterinfo-cell"> | |||
| </div> | |||
| </div> | |||
| <div class="search-box display-none"> | |||
| <div class="attrs"><!--属性--> | |||
| @@ -454,7 +457,7 @@ var formation = new Formation(teamsCount,6); | |||
| <div class="awoken-div"><!--觉醒--> | |||
| <button class="awoken-clear" ></button> | |||
| <input type="checkbox" name="consider-equivalent-awoken" class="config-checkbox-ipt" id="consider-equivalent-awoken"><label class="config-checkbox-lbl consider-equivalent-awoken-label" for="consider-equivalent-awoken"><div class="config-checkbox-lbl-cicle"></div></label> | |||
| <input type="checkbox" name="include-super-awoken" class="config-checkbox-ipt" id="include-super-awoken"><label class="config-checkbox-lbl include-super-awoken-label" for="include-super-awoken"><div class="config-checkbox-lbl-cicle"></div></label> | |||
| <input type="checkbox" name="can-assist" class="config-checkbox-ipt" id="can-assist"><label class="config-checkbox-lbl can-assist-label" for="can-assist"><div class="config-checkbox-lbl-cicle"></div></label> | |||
| <ul class="awoken-ul"> | |||
| <li class="awoken-count zero"><button class="awoken-icon awoken-43" value="43"></button><button class="count" value="43">0</button></li><!--7c--> | |||
| <li class="awoken-count zero"><button class="awoken-icon awoken-61" value="61"></button><button class="count" value="61">0</button></li><!--10c--> | |||
| @@ -529,6 +532,7 @@ var formation = new Formation(teamsCount,6); | |||
| <li class="awoken-count zero"><button class="awoken-icon awoken-71" value="71"></button><button class="count" value="71">0</button></li><!--掉废--> | |||
| <li class="awoken-count zero"><button class="awoken-icon awoken-72" value="72"></button><button class="count" value="72">0</button></li><!--掉毒--> | |||
| </ul> | |||
| <input type="checkbox" name="include-super-awoken" class="config-checkbox-ipt" id="include-super-awoken"><label class="config-checkbox-lbl include-super-awoken-label" for="include-super-awoken"><div class="config-checkbox-lbl-cicle"></div></label> | |||
| </div> | |||
| <div class="sawoken-div"><!--超觉醒--> | |||
| <button class="sawoken-clear" ></button> | |||
| @@ -105,7 +105,7 @@ body{ | |||
| width: 20px; | |||
| height: 20px; | |||
| position: absolute; | |||
| transition: .2s ease-out; | |||
| transition: .3s ease-out; | |||
| background-color: #c6c6c6; | |||
| box-shadow: 0 2px 4px 0 #0003; | |||
| border-radius: 50%; | |||
| @@ -276,6 +276,14 @@ ul{ | |||
| text-shadow: none; | |||
| background-position: 0 -38px; | |||
| } | |||
| /*武器*/ | |||
| .monster .awoken-count.allowable-assist.wepon{ | |||
| transform: scale(0.80) translateY(4px); | |||
| width:32px;height:32px; | |||
| background-image: url(images/awoken.png); | |||
| background-position-x: 0; | |||
| background-position-y: -1568px; | |||
| } | |||
| /*怪物-超觉醒*/ | |||
| .monster .super-awoken{ | |||
| position: absolute; | |||
| @@ -633,7 +641,7 @@ ul{ | |||
| font-family: 'FOT-KurokaneStd-EB', "Malgun Gothic", "맑은 고딕", "Gulim", AppleGothic; | |||
| color: white; | |||
| text-shadow: black 2px 2px 0; | |||
| height: 100px; | |||
| min-height: 100px; | |||
| margin: 5px 0; | |||
| background-image: linear-gradient(#798421,#394914); | |||
| border-top: #B1BB39 solid 4px; | |||
| @@ -899,17 +907,25 @@ ul{ | |||
| .monsterinfo-box .monster-id{ | |||
| width:150px; | |||
| } | |||
| .monsterinfo-box .monster-seriesId, | |||
| .monsterinfo-box .monster-collabId, | |||
| .monsterinfo-box .monster-altName{ | |||
| .monsterinfo-box .monster-altName | |||
| { | |||
| cursor: pointer; | |||
| font-size: 14px; | |||
| line-height: 16px; | |||
| vertical-align: bottom; | |||
| max-width: 270px; | |||
| /*max-width: 270px;*/ | |||
| white-space:nowrap; | |||
| text-overflow:ellipsis; | |||
| overflow:hidden; | |||
| } | |||
| .monsterinfo-box .monster-seriesId:hover::after, | |||
| .monsterinfo-box .monster-collabId:hover::after, | |||
| .monsterinfo-box .monster-altName:hover::after | |||
| { | |||
| content: "🔍"; | |||
| } | |||
| /*.monsterinfo-box .monster-id::before{ | |||
| content: "No."; | |||
| }*/ | |||
| @@ -1155,6 +1171,10 @@ ul{ | |||
| } | |||
| .row-mon-skill .skill-title .skill-name{ | |||
| color: #84BAFC; | |||
| cursor: pointer; | |||
| } | |||
| .row-mon-skill .skill-title .skill-name:hover::after{ | |||
| content: "🔍"; | |||
| } | |||
| .row-mon-leader-skill .skill-title::before{ | |||
| /*content: "隊長技能";*/ | |||
| @@ -1043,10 +1043,13 @@ var formation = new Formation(teamsCount,6); | |||
| <li class="type-name"><div class="type-icon"></div></li> | |||
| </ul> | |||
| <div class="monsterinfo-cell"> | |||
| <div class="monster-seriesId"></div> | |||
| <div class="monster-collabId"></div> | |||
| <div class="monster-altName"></div> | |||
| </div> | |||
| </div> | |||
| <div class="monsterinfo-cell"> | |||
| </div> | |||
| </div> | |||
| <div class="search-box display-none"> | |||
| <div class="attrs"><!--属性--> | |||
| @@ -1088,7 +1091,7 @@ var formation = new Formation(teamsCount,6); | |||
| <div class="awoken-div"><!--觉醒--> | |||
| <button class="awoken-clear" ></button> | |||
| <input type="checkbox" name="consider-equivalent-awoken" class="config-checkbox-ipt" id="consider-equivalent-awoken"><label class="config-checkbox-lbl consider-equivalent-awoken-label" for="consider-equivalent-awoken"><div class="config-checkbox-lbl-cicle"></div></label> | |||
| <input type="checkbox" name="include-super-awoken" class="config-checkbox-ipt" id="include-super-awoken"><label class="config-checkbox-lbl include-super-awoken-label" for="include-super-awoken"><div class="config-checkbox-lbl-cicle"></div></label> | |||
| <input type="checkbox" name="can-assist" class="config-checkbox-ipt" id="can-assist"><label class="config-checkbox-lbl can-assist-label" for="can-assist"><div class="config-checkbox-lbl-cicle"></div></label> | |||
| <ul class="awoken-ul"> | |||
| <li class="awoken-count zero"><button class="awoken-icon awoken-43" value="43"></button><button class="count" value="43">0</button></li><!--7c--> | |||
| <li class="awoken-count zero"><button class="awoken-icon awoken-61" value="61"></button><button class="count" value="61">0</button></li><!--10c--> | |||
| @@ -1163,6 +1166,7 @@ var formation = new Formation(teamsCount,6); | |||
| <li class="awoken-count zero"><button class="awoken-icon awoken-71" value="71"></button><button class="count" value="71">0</button></li><!--掉废--> | |||
| <li class="awoken-count zero"><button class="awoken-icon awoken-72" value="72"></button><button class="count" value="72">0</button></li><!--掉毒--> | |||
| </ul> | |||
| <input type="checkbox" name="include-super-awoken" class="config-checkbox-ipt" id="include-super-awoken"><label class="config-checkbox-lbl include-super-awoken-label" for="include-super-awoken"><div class="config-checkbox-lbl-cicle"></div></label> | |||
| </div> | |||
| <div class="sawoken-div"><!--超觉醒--> | |||
| <button class="sawoken-clear" ></button> | |||
| @@ -294,9 +294,14 @@ function calculateAbility(member = null, assist = null, solo = true) | |||
| return abilitys; | |||
| } | |||
| //搜索卡片用 | |||
| function searchCards(cards,attr1,attr2,fixMainColor,types,awokens,sawokens,equalAk,incSawoken) | |||
| function searchCards(cards,attr1,attr2,fixMainColor,types,awokens,sawokens,equalAk,canAssist,incSawoken) | |||
| { | |||
| let cardsRange = cards; | |||
| //是否允许作为辅助 | |||
| if (canAssist) | |||
| { | |||
| cardsRange = cardsRange.filter(c=>c.canAssist); | |||
| } | |||
| //属性 | |||
| if (attr1 != null && attr1 === attr2) | |||
| { //当两个颜色相同时,主副一样颜色的只需判断一次 | |||
| @@ -328,7 +333,6 @@ function searchCards(cards,attr1,attr2,fixMainColor,types,awokens,sawokens,equal | |||
| cardsRange = cardsRange.filter(c=>types.some(t=>c.types.indexOf(t)>=0)); | |||
| } | |||
| //觉醒 | |||
| //等效觉醒时,事先去除大觉醒 | |||
| if (equalAk) | |||
| { | |||
| @@ -376,6 +380,7 @@ function searchCards(cards,attr1,attr2,fixMainColor,types,awokens,sawokens,equal | |||
| }); | |||
| }); | |||
| } | |||
| //超觉醒 | |||
| if (sawokens.length>0 && !incSawoken) | |||
| { | |||