From 681eeee12686ee182d3dadb11d7d791f124e42e1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9E=AB=E8=B0=B7=E5=89=91=E4=BB=99?= Date: Fri, 13 May 2022 20:06:47 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B0=83=E6=95=B4=E6=8A=80=E8=83=BD=E7=AD=9B?= =?UTF-8?q?=E9=80=89=E9=A1=BA=E5=BA=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- script-json_data.js | 495 ++++++++++++++++++++------------------------ 1 file changed, 226 insertions(+), 269 deletions(-) diff --git a/script-json_data.js b/script-json_data.js index 11a37787..4f7f74d7 100644 --- a/script-json_data.js +++ b/script-json_data.js @@ -973,6 +973,19 @@ const specialSearchFunctions = (function() { fragment.appendChild(createOrbsList(colors.flat())); return fragment; } + function numericalATK_Addition(card) + { + const searchTypeArray = [0,1,2,35,37,42,58,59,84,85,86,87,110,115,143,144]; + const skill = getCardActiveSkill(card, searchTypeArray); + //const sk = skill.params; + + const colors = [getCannonAttr(skill)]; + + const fragment = document.createDocumentFragment(); + fragment.appendChild(document.createTextNode(`射`)); + fragment.appendChild(createOrbsList(colors)); + return fragment; + } function healImmediately_Rate(card) { const searchTypeArray = [7, //宠物回复力 @@ -1197,21 +1210,7 @@ const specialSearchFunctions = (function() { const functions = [ {name:"No Filter",otLangName:{chs:"不做筛选",cht:"不做篩選"},function:cards=>cards}, {group:true,name:"======Very commonly used=====",otLangName:{chs:"======非常常用======",cht:"======非常常用======"}, functions: [ - {name:"↑Increase skills charge(sort by turns)",otLangName:{chs:"【溜】减少CD(按回合排序)",cht:"【溜】減少CD(按回合排序)"}, - function:cards=>{ - const searchTypeArray = [146]; - return cards.filter(card=>{ - const skill = getCardActiveSkill(card, searchTypeArray); - return skill; - }).sort((a,b)=>sortByParams(a,b,searchTypeArray)); - }, - addition:card=>{ - const searchTypeArray = [146]; - const skill = getCardActiveSkill(card, searchTypeArray); - const sk = skill.params; - return document.createTextNode(`${sk[0]}${sk[0]!=sk[1]?`~${sk[1]}`:""}溜`); - } - }, + /* {name:"Voids both absorption(sort by turns)",otLangName:{chs:"双破吸 buff(按破吸回合排序)",cht:"雙破吸 buff(按破吸回合排序)"}, function:cards=>{ const searchTypeArray = [173]; @@ -1272,136 +1271,11 @@ const specialSearchFunctions = (function() { return document.createTextNode(`${value == 9999 ? "全" : value + "T"}解禁消`); } }, - {name:"Fixed damage inflicts(sort by damage)",otLangName:{chs:"队长技固伤追击(按伤害排序)",cht:"隊長技固傷追擊(按傷害排序)"}, - function:cards=>{ - return cards.filter(card=>{ - return getSkillFixedDamage(card) > 0; - }).sort((a,b)=>{ - let a_pC = getSkillFixedDamage(a),b_pC = getSkillFixedDamage(b); - return a_pC - b_pC; - }); - }, - addition:card=>{ - const value = getSkillFixedDamage(card); - let nodeArr = [`${value.bigNumberToString()}固伤`]; - let skill; - if (skill = getCardLeaderSkill(card, [235])) { - nodeArr.push("/"); - nodeArr.push(createOrbsList(flags(skill.params[0]))); - nodeArr.push(`×${skill.params[2]}`); - } - return nodeArr.nodeJoin(); - } - }, - {name:"Adds combo(sort by combo)",otLangName:{chs:"队长技+C(按+C数排序)",cht:"隊長技+C(按+C數排序)"}, - function:cards=>{ - return cards.filter(card=>{ - return getSkillAddCombo(card) > 0; - }).sort((a,b)=>{ - let a_pC = getSkillAddCombo(a),b_pC = getSkillAddCombo(b); - return a_pC - b_pC; - }); - }, - addition:card=>{ - const value = getSkillAddCombo(card); - let nodeArr = [`+${value.bigNumberToString()}C`]; - let skill; - if (skill = getCardLeaderSkill(card, [210])) { - nodeArr.push("/十字"); - } else if (skill = getCardLeaderSkill(card, [235])) { - nodeArr.push("/"); - nodeArr.push(createOrbsList(flags(skill.params[0]))); - nodeArr.push(`×${skill.params[2]}`); - } - return nodeArr.nodeJoin(); - } - }, {name:"8 latent grids",otLangName:{chs:"8格潜觉",cht:"8格潛覺"}, function:cards=>cards.filter(card=>card.is8Latent) - }, + },*/ ]}, {group:true,name:"======Active Skill======",otLangName:{chs:"======主动技======",cht:"======主動技======"}, functions: [ - {name:"1 CD",otLangName:{chs:"1 CD",cht:"1 CD"}, - function:cards=>cards.filter(card=>{ - if (card.activeSkillId == 0) return false; - const skill = Skills[card.activeSkillId]; - return skill.initialCooldown - (skill.maxLevel - 1) <= 1; - }) - }, - {name:"Less than 4 can be cycled use(Inaccurate)",otLangName:{chs:"除 1 CD 外,4 个以下能永动开(可能不精确)",cht:"除 1 CD 外,4 個以下能永動開(可能不精確)"}, - function:cards=>cards.filter(card=>{ - if (card.activeSkillId == 0) return false; - const skill = Skills[card.activeSkillId]; - const minCD = skill.initialCooldown - (skill.maxLevel - 1); //主动技最小的CD - let realCD = minCD; - - const searchTypeArray = [14]; - const subSkill = getCardLeaderSkill(card, searchTypeArray); - if (subSkill) - { - realCD -= subSkill.params[0] * 3; - } - return minCD > 1 && realCD <= 4; - }) - }, - {name:"Time pause(sort by time)",otLangName:{chs:"时间暂停(按停止时间排序)",cht:"時間暫停(按停止時間排序)"}, - function:cards=>{ - const searchTypeArray = [5]; - return cards.filter(card=>{ - const skill = getCardActiveSkill(card, searchTypeArray); - return skill; - }).sort((a,b)=>sortByParams(a,b,searchTypeArray)); - }, - addition:card=>{ - const searchTypeArray = [5]; - const skill = getCardActiveSkill(card, searchTypeArray); - const value = skill.params[0]; - return `时停${value}s`; - } - }, - { - name:"Random effect active",otLangName:{chs:"随机效果技能",cht:"隨機效果技能"}, - function:cards=>cards.filter(card=>Skills[card.activeSkillId].type == 118) - }, - { - name:"Evolved active",otLangName:{chs:"进化类技能",cht:"進化類技能"}, - function:cards=>cards.filter(card=>{ - let skType = Skills[card.activeSkillId].type; - return skType == 232 || skType == 233; - }) - }, - {name:"Enable require HP range",otLangName:{chs:"技能使用血线要求",cht:"技能使用血線要求"}, - function:cards=>cards.filter(card=>{ - const searchTypeArray = [225]; - const skill = getCardActiveSkill(card, searchTypeArray); - return skill; - }), - addition:card=>{ - const searchTypeArray = [225]; - const skill = getCardActiveSkill(card, searchTypeArray); - const sk = skill.params; - let strArr = []; - if (sk[0]) strArr.push(`≥${sk[0]}%`); - if (sk[1]) strArr.push(`≤${sk[1]}%`); - return `HP ${strArr.join(" ")}`; - } - }, - {name:"Enable require Dungeon Stage",otLangName:{chs:"技能使用地下城层数要求",cht:"技能使用地下城層數要求"}, - function:cards=>cards.filter(card=>{ - const searchTypeArray = [234]; - const skill = getCardActiveSkill(card, searchTypeArray); - return skill; - }), - addition:card=>{ - const searchTypeArray = [234]; - const skill = getCardActiveSkill(card, searchTypeArray); - const sk = skill.params; - let strArr = []; - if (sk[0]) strArr.push(`≥${sk[0]}`); - if (sk[1]) strArr.push(`≤${sk[1]}`); - return `层 ${strArr.join(" ")}`; - } - }, ]}, {group:true,name:"-----Voids Absorption-----",otLangName:{chs:"-----破吸类-----",cht:"-----破吸類-----"}, functions: [ {name:"Voids attribute absorption(sort by turns)",otLangName:{chs:"破属吸 buff(按破吸回合排序)",cht:"破屬吸 buff(按破吸回合排序)"}, @@ -1700,24 +1574,6 @@ const specialSearchFunctions = (function() { return `无↓×${sk[0]}T`; } }, - {name:"Creates Roulette Orb",otLangName:{chs:"生成变换位(转转珠)",cht:"生成變換位(轉轉珠)"}, - function:cards=>{ - const searchTypeArray = [207]; - return cards.filter(card=>{ - const skill = getCardActiveSkill(card, searchTypeArray); - return skill; - }).sort((a,b)=>sortByParams(a,b,searchTypeArray)); - }, - addition:card=>{ - const searchTypeArray = [207]; - const skill = getCardActiveSkill(card, searchTypeArray); - const sk = skill.params; - if (sk[7]) - return `${sk[7]}个×${sk[0]}T`; - else - return `特殊形状×${sk[0]}T`; - } - }, {name:"Adds combo(sort by combo)",otLangName:{chs:"加C buff(按C数排列)",cht:"加C buff(按C數排列)"}, function:cards=>{ const searchTypeArray = [160]; @@ -1828,6 +1684,24 @@ const specialSearchFunctions = (function() { return `全体×${sk[0]}T`; } }, + {name:"Creates Roulette Orb",otLangName:{chs:"生成变换位(转转珠)",cht:"生成變換位(轉轉珠)"}, + function:cards=>{ + const searchTypeArray = [207]; + return cards.filter(card=>{ + const skill = getCardActiveSkill(card, searchTypeArray); + return skill; + }).sort((a,b)=>sortByParams(a,b,searchTypeArray)); + }, + addition:card=>{ + const searchTypeArray = [207]; + const skill = getCardActiveSkill(card, searchTypeArray); + const sk = skill.params; + if (sk[7]) + return `${sk[7]}个×${sk[0]}T`; + else + return `特殊形状×${sk[0]}T`; + } + }, ]}, {group:true,name:"-----For Enemy-----",otLangName:{chs:"-----对敌 buff 类-----",cht:"-----對敵 buff 類-----"}, functions: [ {name:"Menace(sort by turns)",otLangName:{chs:"威吓(按推迟回合排序)",cht:"威嚇(按推遲迴合排序)"}, @@ -2246,19 +2120,20 @@ const specialSearchFunctions = (function() { {group:true,name:"-----Damage Enemy - Numerical damage-----",otLangName:{chs:"-----对敌直接伤害类-大炮-----",cht:"-----對敵直接傷害類-大炮-----"}, functions: [ {name:"Numerical ATK - Target - Single",otLangName:{chs:"大炮-对象-敌方单体",cht:"大炮-對象-敵方單體"}, function:cards=>cards.filter(card=>{ - const searchTypeArray = [2,35,37,59,84,86,110,115,144]; - function isSingle(skill) - { - if (skill.type == 110) - return Boolean(skill.params[0]); - else if (skill.type == 144) - return Boolean(skill.params[2]); - else - return true; - } - const skill = getCardActiveSkill(card, searchTypeArray); - return skill && isSingle(skill); - }) + const searchTypeArray = [2,35,37,59,84,86,110,115,144]; + function isSingle(skill) + { + if (skill.type == 110) + return Boolean(skill.params[0]); + else if (skill.type == 144) + return Boolean(skill.params[2]); + else + return true; + } + const skill = getCardActiveSkill(card, searchTypeArray); + return skill && isSingle(skill); + }), + addition: numericalATK_Addition }, {name:"Numerical ATK - Target - Mass",otLangName:{chs:"大炮-对象-敌方全体",cht:"大炮-對象-敵方全體"}, function:cards=>cards.filter(card=>{ @@ -2274,7 +2149,8 @@ const specialSearchFunctions = (function() { } const skill = getCardActiveSkill(card, searchTypeArray); return skill && skill.id!=0 && isAll(skill); - }) + }), + addition: numericalATK_Addition }, {name:"Numerical ATK - Target - Designate Attr",otLangName:{chs:"大炮-对象-指定属性敌人",cht:"大炮-對象-指定屬性敵人"}, function:cards=>cards.filter(card=>{ @@ -2283,125 +2159,110 @@ const specialSearchFunctions = (function() { return skill; }) }, - - {name:"Numerical ATK - Attr - Any",otLangName:{chs:"大炮-属性-不限",cht:"大炮-屬性-不限"}, - function:cards=>cards.filter(card=>{ - const searchTypeArray = [0,1,2,35,37,42,58,59,84,85,86,87,110,115,143,144]; - const skill = getCardActiveSkill(card, searchTypeArray); - return skill && skill.id!=0; - }), - addition:card=>{ - const searchTypeArray = [0,1,2,35,37,42,58,59,84,85,86,87,110,115,143,144]; - const skill = getCardActiveSkill(card, searchTypeArray); - //const sk = skill.params; - - const colors = [getCannonAttr(skill)]; - - const fragment = document.createDocumentFragment(); - fragment.appendChild(document.createTextNode(`射`)); - fragment.appendChild(createOrbsList(colors)); - return fragment; - } - }, {name:"Numerical ATK - Attr - Actors self",otLangName:{chs:"大炮-属性-释放者自身",cht:"大炮-屬性-釋放者自身"}, function:cards=>cards.filter(card=>{ - const searchTypeArray = [2,35]; - const skill = getCardActiveSkill(card, searchTypeArray); - return skill; + const searchTypeArray = [2,35]; + const skill = getCardActiveSkill(card, searchTypeArray); + return skill; }) }, {name:"Numerical ATK - Damage - Rate by Actors self ATK(sort by rate)",otLangName:{chs:"大炮-伤害-自身攻击倍率(按倍率排序,范围取小)",cht:"大炮-傷害-自身攻擊倍率(按倍率排序,範圍取小)"}, function:cards=>cards.filter(card=>{ - const searchTypeArray = [0,2,35,37,58,59,84,85,115]; - const skill = getCardActiveSkill(card, searchTypeArray); - return skill && skill.id!=0; - }).sort((a,b)=>{ - const searchTypeArray = [0,2,35,37,58,59,84,85,115]; - const a_s = getCardActiveSkill(a, searchTypeArray), b_s = getCardActiveSkill(b, searchTypeArray); - function getNumber(skill) - { - const sk = skill.params; - switch(skill.type) + const searchTypeArray = [0,2,35,37,58,59,84,85,115]; + const skill = getCardActiveSkill(card, searchTypeArray); + return skill && skill.id!=0; + }).sort((a,b)=>{ + const searchTypeArray = [0,2,35,37,58,59,84,85,115]; + const a_s = getCardActiveSkill(a, searchTypeArray), b_s = getCardActiveSkill(b, searchTypeArray); + function getNumber(skill) { - case 0: - case 37: - case 58: - case 59: - case 84: - case 85: - case 115: - return sk[1]; - case 2: - case 35: - return sk[0]; - default: - return 0; + const sk = skill.params; + switch(skill.type) + { + case 0: + case 37: + case 58: + case 59: + case 84: + case 85: + case 115: + return sk[1]; + case 2: + case 35: + return sk[0]; + default: + return 0; + } } - } - let a_pC = getNumber(a_s),b_pC = getNumber(b_s); - return a_pC - b_pC; - }) + let a_pC = getNumber(a_s),b_pC = getNumber(b_s); + return a_pC - b_pC; + }), + addition: numericalATK_Addition }, {name:"Numerical ATK - Damage - Fixed Attr Number (sort by number)",otLangName:{chs:"大炮-伤害-指定属性数值(按数值排序)",cht:"大炮-傷害-指定屬性數值(按數值排序)"}, function:cards=>cards.filter(card=>{ - const searchTypeArray = [1,42,86,87]; - const skill = getCardActiveSkill(card, searchTypeArray); - return skill; - }).sort((a,b)=>{ - const searchTypeArray = [1,42,86,87]; - const a_s = getCardActiveSkill(a, searchTypeArray), b_s = getCardActiveSkill(b, searchTypeArray); - function getNumber(skill) - { - const sk = skill.params; - switch(skill.type) + const searchTypeArray = [1,42,86,87]; + const skill = getCardActiveSkill(card, searchTypeArray); + return skill; + }).sort((a,b)=>{ + const searchTypeArray = [1,42,86,87]; + const a_s = getCardActiveSkill(a, searchTypeArray), b_s = getCardActiveSkill(b, searchTypeArray); + function getNumber(skill) { - case 1: - case 86: - case 87: - return sk[1]; - case 42: - return sk[2]; - default: - return 0; + const sk = skill.params; + switch(skill.type) + { + case 1: + case 86: + case 87: + return sk[1]; + case 42: + return sk[2]; + default: + return 0; + } } - } - let a_pC = getNumber(a_s),b_pC = getNumber(b_s); - return a_pC - b_pC; - }) + let a_pC = getNumber(a_s),b_pC = getNumber(b_s); + return a_pC - b_pC; + }), + addition: numericalATK_Addition }, {name:"Numerical ATK - Damage - By remaining HP (sort by rate at HP 1)",otLangName:{chs:"大炮-伤害-根据剩余血量(按 1 HP 时倍率排序)",cht:"大炮-傷害-根據剩餘血量(按 1 HP 時倍率排序)"}, function:cards=>{ - const searchTypeArray = [110]; - return cards.filter(card=>{ - const skill = getCardActiveSkill(card, searchTypeArray); - return skill; - }).sort((a,b)=>sortByParams(a,b,searchTypeArray,3)); - } + const searchTypeArray = [110]; + return cards.filter(card=>{ + const skill = getCardActiveSkill(card, searchTypeArray); + return skill; + }).sort((a,b)=>sortByParams(a,b,searchTypeArray,3)); + }, + addition: numericalATK_Addition }, {name:"Numerical ATK - Damage - Team total HP (sort by rate)",otLangName:{chs:"大炮-伤害-队伍总 HP(按倍率排序)",cht:"大炮-傷害-隊伍總 HP(按倍率排序)"}, function:cards=>{ - const searchTypeArray = [143]; - return cards.filter(card=>{ - const skill = getCardActiveSkill(card, searchTypeArray); - return skill; - }).sort((a,b)=>sortByParams(a,b,searchTypeArray)); - } + const searchTypeArray = [143]; + return cards.filter(card=>{ + const skill = getCardActiveSkill(card, searchTypeArray); + return skill; + }).sort((a,b)=>sortByParams(a,b,searchTypeArray)); + }, + addition: numericalATK_Addition }, {name:"Numerical ATK - Damage - Team attrs ATK (sort by rate)",otLangName:{chs:"大炮-伤害-队伍某属性总攻击(按倍率排序)",cht:"大炮-傷害-隊伍某屬性總攻擊(按倍率排序)"}, function:cards=>{ - const searchTypeArray = [144]; - return cards.filter(card=>{ - const skill = getCardActiveSkill(card, searchTypeArray); - return skill; - }).sort((a,b)=>sortByParams(a,b,searchTypeArray,1)); - } + const searchTypeArray = [144]; + return cards.filter(card=>{ + const skill = getCardActiveSkill(card, searchTypeArray); + return skill; + }).sort((a,b)=>sortByParams(a,b,searchTypeArray,1)); + }, + addition: numericalATK_Addition }, {name:"Numerical ATK - Special - Vampire",otLangName:{chs:"大炮-特殊-吸血",cht:"大炮-特殊-吸血"}, function:cards=>cards.filter(card=>{ - const searchTypeArray = [35,115]; - const skill = getCardActiveSkill(card, searchTypeArray); - return skill; + const searchTypeArray = [35,115]; + const skill = getCardActiveSkill(card, searchTypeArray); + return skill; }) }, ]}, @@ -2890,6 +2751,89 @@ const specialSearchFunctions = (function() { }) }, ]}, + {group:true,name:"-----Others Active Skills-----",otLangName:{chs:"-----其他主动技-----",cht:"-----其他主動技-----"}, functions: [ + {name:"1 CD",otLangName:{chs:"1 CD",cht:"1 CD"}, + function:cards=>cards.filter(card=>{ + if (card.activeSkillId == 0) return false; + const skill = Skills[card.activeSkillId]; + return skill.initialCooldown - (skill.maxLevel - 1) <= 1; + }) + }, + {name:"Less than 4 can be cycled use(Inaccurate)",otLangName:{chs:"除 1 CD 外,4 个以下能永动开(可能不精确)",cht:"除 1 CD 外,4 個以下能永動開(可能不精確)"}, + function:cards=>cards.filter(card=>{ + if (card.activeSkillId == 0) return false; + const skill = Skills[card.activeSkillId]; + const minCD = skill.initialCooldown - (skill.maxLevel - 1); //主动技最小的CD + let realCD = minCD; + + const searchTypeArray = [14]; + const subSkill = getCardLeaderSkill(card, searchTypeArray); + if (subSkill) + { + realCD -= subSkill.params[0] * 3; + } + return minCD > 1 && realCD <= 4; + }) + }, + {name:"Time pause(sort by time)",otLangName:{chs:"时间暂停(按停止时间排序)",cht:"時間暫停(按停止時間排序)"}, + function:cards=>{ + const searchTypeArray = [5]; + return cards.filter(card=>{ + const skill = getCardActiveSkill(card, searchTypeArray); + return skill; + }).sort((a,b)=>sortByParams(a,b,searchTypeArray)); + }, + addition:card=>{ + const searchTypeArray = [5]; + const skill = getCardActiveSkill(card, searchTypeArray); + const value = skill.params[0]; + return `时停${value}s`; + } + }, + { + name:"Random effect active",otLangName:{chs:"随机效果技能",cht:"隨機效果技能"}, + function:cards=>cards.filter(card=>Skills[card.activeSkillId].type == 118) + }, + { + name:"Evolved active",otLangName:{chs:"进化类技能",cht:"進化類技能"}, + function:cards=>cards.filter(card=>{ + let skType = Skills[card.activeSkillId].type; + return skType == 232 || skType == 233; + }) + }, + {name:"Enable require HP range",otLangName:{chs:"技能使用血线要求",cht:"技能使用血線要求"}, + function:cards=>cards.filter(card=>{ + const searchTypeArray = [225]; + const skill = getCardActiveSkill(card, searchTypeArray); + return skill; + }), + addition:card=>{ + const searchTypeArray = [225]; + const skill = getCardActiveSkill(card, searchTypeArray); + const sk = skill.params; + let strArr = []; + if (sk[0]) strArr.push(`≥${sk[0]}%`); + if (sk[1]) strArr.push(`≤${sk[1]}%`); + return `HP ${strArr.join(" ")}`; + } + }, + {name:"Enable require Dungeon Stage",otLangName:{chs:"技能使用地下城层数要求",cht:"技能使用地下城層數要求"}, + function:cards=>cards.filter(card=>{ + const searchTypeArray = [234]; + const skill = getCardActiveSkill(card, searchTypeArray); + return skill; + }), + addition:card=>{ + const searchTypeArray = [234]; + const skill = getCardActiveSkill(card, searchTypeArray); + const sk = skill.params; + let strArr = []; + if (sk[0]) strArr.push(`≥${sk[0]}`); + if (sk[1]) strArr.push(`≤${sk[1]}`); + return `层 ${strArr.join(" ")}`; + } + }, + ]}, {group:true,name:"======Leader Skills=====",otLangName:{chs:"======队长技======",cht:"======隊長技======"}, functions: [ {name:"Fixed damage inflicts(sort by damage)",otLangName:{chs:"队长技固伤追击(按伤害排序)",cht:"隊長技固傷追擊(按傷害排序)"}, @@ -3360,9 +3304,6 @@ const specialSearchFunctions = (function() { {name:"Pixel Evo",otLangName:{chs:"像素进化",cht:"像素進化"}, function:cards=>cards.filter(card=>card.evoMaterials.includes(3826)) }, - {name:"8 latent grids",otLangName:{chs:"8格潜觉",cht:"8格潛覺"}, - function:cards=>cards.filter(card=>card.is8Latent) - }, //{name:"",otLangName:{chs:"非8格潜觉",cht:"非8格潛覺"},function:cards=>cards.filter(card=>!card.is8Latent)}, {name:"Reincarnation/Super Re..",otLangName:{chs:"转生、超转生进化",cht:"轉生、超轉生進化"}, function:cards=>cards.filter(card=>isReincarnated(card)) @@ -3412,6 +3353,9 @@ const specialSearchFunctions = (function() { }, ]}, {group:true,name:"----- Awoken -----",otLangName:{chs:"-----觉醒类-----",cht:"-----覺醒類-----"}, functions: [ + {name:"8 latent grids",otLangName:{chs:"8格潜觉",cht:"8格潛覺"}, + function:cards=>cards.filter(card=>card.is8Latent) + }, {name:"Have 9 awokens",otLangName:{chs:"有9个觉醒",cht:"有9個覺醒"}, function:cards=>cards.filter(card=>card.awakenings.length>=9) }, @@ -3505,5 +3449,18 @@ const specialSearchFunctions = (function() { },*/ ]}, ]; + //非常常用 + let commonlyUsed = functions.find(g=>g.group && g.name.includes("commonly used")); + if (commonlyUsed) { + let list = [ + functions.find(g=>g.group && g.name.includes("player team"))?.functions.find(f=>f.name.includes("skills charge")), + functions.find(g=>g.group && g.name.includes("For Enemy"))?.functions.find(f=>f.name.includes("Menace")), + functions.find(g=>g.group && g.name.includes("Awoken"))?.functions.find(f=>f.name.includes("8 latent")), + functions.find(g=>g.group && g.name.includes("Leader Skills"))?.functions.find(f=>f.name.includes("Fixed damage inflicts")), + functions.find(g=>g.group && g.name.includes("Leader Skills"))?.functions.find(f=>f.name.includes("Adds combo")), + ].filter(Boolean); + commonlyUsed.functions.push(...list); + } + return functions; })(); \ No newline at end of file