完善下拉列表分组
This commit is contained in:
parent
5846e50650
commit
2bb76774b0
|
@ -1639,7 +1639,7 @@ function parseSkillDescription(skill)
|
|||
|
||||
const specialSearchFunctions = [
|
||||
{name:"不做筛选",function:cards=>cards},
|
||||
{group:"======队长技======"},
|
||||
{group:"======队长技======", functions: [
|
||||
{name:"队长技固伤追击(按伤害排序)",function:cards=>{
|
||||
const searchTypeArray = [199,200,201];
|
||||
function getSkillFixedDamage(skill)
|
||||
|
@ -2061,7 +2061,8 @@ function parseSkillDescription(skill)
|
|||
const sk = skill.params;
|
||||
return document.createTextNode(`经验x${sk[0]/100}`);
|
||||
}},
|
||||
{group:"-----血倍率-----"},
|
||||
]},
|
||||
{group:"-----血倍率-----", functions: [
|
||||
{name:"队长血倍率[2, ∞)(按倍率排序)",function:cards=>cards.filter(card=>{
|
||||
const skill = Skills[card.leaderSkillId];
|
||||
const HPscale = getHPScale(skill);
|
||||
|
@ -2099,7 +2100,8 @@ function parseSkillDescription(skill)
|
|||
const a_s = Skills[a.leaderSkillId], b_s = Skills[b.leaderSkillId];
|
||||
return getHPScale(a_s) - getHPScale(b_s);
|
||||
})},
|
||||
{group:"-----减伤盾-----"},
|
||||
]},
|
||||
{group:"-----减伤盾-----", functions: [
|
||||
{name:"队长盾减伤[75%, 100%](按倍率排序)",function:cards=>cards.filter(card=>{
|
||||
const skill = Skills[card.leaderSkillId];
|
||||
const reduceScale = getReduceScale(skill);
|
||||
|
@ -2183,8 +2185,9 @@ function parseSkillDescription(skill)
|
|||
const skill = Skills[card.leaderSkillId];
|
||||
return getReduceScale_unconditional(skill) > 0;
|
||||
})},
|
||||
]},
|
||||
|
||||
{group:"======主动技======"},
|
||||
{group:"======主动技======", functions: [
|
||||
{name:"1 CD",function:cards=>cards.filter(card=>{
|
||||
if (card.activeSkillId == 0) return false;
|
||||
const skill = Skills[card.activeSkillId];
|
||||
|
@ -2228,7 +2231,8 @@ function parseSkillDescription(skill)
|
|||
return a_pC - b_pC;
|
||||
})},
|
||||
{name:"随机效果技能",function:cards=>cards.filter(card=>Skills[card.activeSkillId].type == 118)},
|
||||
{group:"-----破吸类-----"},
|
||||
]},
|
||||
{group:"-----破吸类-----", functions: [
|
||||
{name:"破属吸 buff(按破吸回合排序)",function:cards=>cards.filter(card=>{
|
||||
const searchType = 173;
|
||||
const skill = Skills[card.activeSkillId];
|
||||
|
@ -2333,7 +2337,8 @@ function parseSkillDescription(skill)
|
|||
const sk = skill.params;
|
||||
return document.createTextNode(`破贯×${sk[0]}T`);
|
||||
}},
|
||||
{group:"-----解封类-----"},
|
||||
]},
|
||||
{group:"-----解封类-----", functions: [
|
||||
{
|
||||
name:"解封(按解封回合排序)",
|
||||
function:cards=>{
|
||||
|
@ -2439,7 +2444,18 @@ function parseSkillDescription(skill)
|
|||
return document.createTextNode(`${value == 9999 ? "全" : value + "T"}解禁消`);
|
||||
}
|
||||
},
|
||||
{group:"-----锁珠类-----"},
|
||||
{name:"自封技能(能干啥?)",function:cards=>cards.filter(card=>{
|
||||
const searchType = 214;
|
||||
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=>Skills[id]);
|
||||
return subskills.some(subskill=>subskill.type == searchType);
|
||||
}
|
||||
})},
|
||||
]},
|
||||
{group:"-----锁珠类-----", functions: [
|
||||
{name:"解锁",function:cards=>cards.filter(card=>{
|
||||
const searchType = 172;
|
||||
const skill = Skills[card.activeSkillId];
|
||||
|
@ -2512,7 +2528,8 @@ function parseSkillDescription(skill)
|
|||
b_s.params.map(id=>Skills[id]).find(subskill => subskill.type == searchType).params[1];
|
||||
return a_pC - b_pC;
|
||||
})},
|
||||
{group:"-----随机产珠类-----"},
|
||||
]},
|
||||
{group:"-----洗版类-----", functions: [
|
||||
{name:"普通洗版-含心",function:cards=>cards.filter(card=>{
|
||||
function includeHeart(sk)
|
||||
{
|
||||
|
@ -2696,6 +2713,19 @@ function parseSkillDescription(skill)
|
|||
|
||||
return createOrbsList(colors);
|
||||
}},
|
||||
{name:"刷版",function:cards=>cards.filter(card=>{
|
||||
const searchType = 10;
|
||||
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=>Skills[id]);
|
||||
return subskills.some(subskill=>subskill.type == searchType);
|
||||
}
|
||||
})},
|
||||
]},
|
||||
{group:"~~~转珠类有些复杂我没空做~~~"},
|
||||
{group:"-----随机产珠类-----", functions: [
|
||||
{name:"固定30个产珠",function:cards=>cards.filter(card=>{
|
||||
function is30(sk)
|
||||
{
|
||||
|
@ -2724,18 +2754,8 @@ function parseSkillDescription(skill)
|
|||
return subskills.some(subskill=>subskill.type == searchType && is1515(subskill.params));
|
||||
}
|
||||
})},
|
||||
{name:"刷版",function:cards=>cards.filter(card=>{
|
||||
const searchType = 10;
|
||||
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=>Skills[id]);
|
||||
return subskills.some(subskill=>subskill.type == searchType);
|
||||
}
|
||||
})},
|
||||
{name:"~~~转珠类有些复杂我没空做~~~",function:cards=>cards},
|
||||
{group:"-----固定产珠类-----"},
|
||||
]},
|
||||
{group:"-----固定产珠类-----", functions: [
|
||||
{name:"生成特殊形状的",function:cards=>cards.filter(card=>{
|
||||
const searchType = 176;
|
||||
const skill = Skills[card.activeSkillId];
|
||||
|
@ -2895,7 +2915,8 @@ function parseSkillDescription(skill)
|
|||
return subskills.some(subskill=>searchTypeArray.includes(subskill.type) && isRow(subskill));
|
||||
}
|
||||
})},
|
||||
{group:"----- buff 类-----"},
|
||||
]},
|
||||
{group:"----- buff 类-----", functions: [
|
||||
{name:"掉落率提升",function:cards=>cards.filter(card=>{
|
||||
const searchTypeArray = [126];
|
||||
const skill = getCardSkill(card, searchTypeArray);
|
||||
|
@ -3199,16 +3220,8 @@ function parseSkillDescription(skill)
|
|||
b_s.params.map(id=>Skills[id]).find(subskill => subskill.type == searchType).params[0];
|
||||
return a_pC - b_pC;
|
||||
})},
|
||||
{name:"自封技能(能干啥?)",function:cards=>cards.filter(card=>{
|
||||
const searchType = 214;
|
||||
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=>Skills[id]);
|
||||
return subskills.some(subskill=>subskill.type == searchType);
|
||||
}
|
||||
})},
|
||||
]},
|
||||
{group:"-----玩家HP操纵类-----", functions: [
|
||||
{name:"回合结束回血 buff",function:cards=>cards.filter(card=>{
|
||||
const searchTypeArray = [179];
|
||||
const skill = Skills[card.activeSkillId];
|
||||
|
@ -3219,7 +3232,55 @@ function parseSkillDescription(skill)
|
|||
return subskills.some(subskill=>searchTypeArray.includes(subskill.type));
|
||||
}
|
||||
})},
|
||||
{group:"-----对自身队伍生效类-----"},
|
||||
{name:"玩家回血",function:cards=>cards.filter(card=>{
|
||||
const searchTypeArray = [7,8,35,115];
|
||||
const skill = Skills[card.activeSkillId];
|
||||
if (searchTypeArray.includes(skill.type) || skill.type == 117 && (skill.params[1] || skill.params[2] || skill.params[3]))
|
||||
return true;
|
||||
else if (skill.type == 116 || skill.type == 118){
|
||||
const subskills = skill.params.map(id=>Skills[id]);
|
||||
return subskills.some(subskill=>searchTypeArray.includes(subskill.type) || subskill.type == 117 && (subskill.params[1] || subskill.params[2] || subskill.params[3]));
|
||||
}
|
||||
})},
|
||||
{name:"玩家自残(HP 减少,按减少比率排序)",function:cards=>cards.filter(card=>{
|
||||
const searchTypeArray = [84,85,86,87,195];
|
||||
const skill = Skills[card.activeSkillId];
|
||||
if (searchTypeArray.includes(skill.type))
|
||||
return true;
|
||||
else if (skill.type == 116 || skill.type == 118){
|
||||
const subskills = skill.params.map(id=>Skills[id]);
|
||||
return subskills.some(subskill=>searchTypeArray.includes(subskill.type));
|
||||
}
|
||||
}).sort((a,b)=>{
|
||||
const searchTypeArray = [84,85,86,87,195];
|
||||
const a_s = Skills[a.activeSkillId], b_s = Skills[b.activeSkillId];
|
||||
let a_pC = 0,b_pC = 0;
|
||||
function getReduceScale(skill)
|
||||
{
|
||||
const sk = skill.params;
|
||||
if (skill.type == 195)
|
||||
{
|
||||
return sk[0] ? sk[0] : 0.1;
|
||||
}else
|
||||
{
|
||||
return sk[3] ? sk[3] : 0.1;
|
||||
}
|
||||
}
|
||||
function getSubskill(skill)
|
||||
{
|
||||
const subSkill = skill.params.map(id=>Skills[id]).find(subskill => searchTypeArray.includes(subskill.type));
|
||||
return subSkill;
|
||||
}
|
||||
a_pC = searchTypeArray.includes(a_s.type) ?
|
||||
getReduceScale(a_s) :
|
||||
getReduceScale(getSubskill(a_s));
|
||||
b_pC = searchTypeArray.includes(b_s.type) ?
|
||||
getReduceScale(b_s) :
|
||||
getReduceScale(getSubskill(b_s));
|
||||
return b_pC - a_pC;
|
||||
})},
|
||||
]},
|
||||
{group:"-----对自身队伍生效类-----", functions: [
|
||||
{name:"减少CD(按溜数排序,有范围的取小)",function:cards=>cards.filter(card=>{
|
||||
const searchType = 146;
|
||||
const skill = Skills[card.activeSkillId];
|
||||
|
@ -3277,54 +3338,8 @@ function parseSkillDescription(skill)
|
|||
b_s.params.map(id=>Skills[id]).find(subskill => subskill.type == searchType).params[0];
|
||||
return a_pC - b_pC;
|
||||
})},
|
||||
{name:"玩家自残(HP 减少,按减少比率排序)",function:cards=>cards.filter(card=>{
|
||||
const searchTypeArray = [84,85,86,87,195];
|
||||
const skill = Skills[card.activeSkillId];
|
||||
if (searchTypeArray.includes(skill.type))
|
||||
return true;
|
||||
else if (skill.type == 116 || skill.type == 118){
|
||||
const subskills = skill.params.map(id=>Skills[id]);
|
||||
return subskills.some(subskill=>searchTypeArray.includes(subskill.type));
|
||||
}
|
||||
}).sort((a,b)=>{
|
||||
const searchTypeArray = [84,85,86,87,195];
|
||||
const a_s = Skills[a.activeSkillId], b_s = Skills[b.activeSkillId];
|
||||
let a_pC = 0,b_pC = 0;
|
||||
function getReduceScale(skill)
|
||||
{
|
||||
const sk = skill.params;
|
||||
if (skill.type == 195)
|
||||
{
|
||||
return sk[0] ? sk[0] : 0.1;
|
||||
}else
|
||||
{
|
||||
return sk[3] ? sk[3] : 0.1;
|
||||
}
|
||||
}
|
||||
function getSubskill(skill)
|
||||
{
|
||||
const subSkill = skill.params.map(id=>Skills[id]).find(subskill => searchTypeArray.includes(subskill.type));
|
||||
return subSkill;
|
||||
}
|
||||
a_pC = searchTypeArray.includes(a_s.type) ?
|
||||
getReduceScale(a_s) :
|
||||
getReduceScale(getSubskill(a_s));
|
||||
b_pC = searchTypeArray.includes(b_s.type) ?
|
||||
getReduceScale(b_s) :
|
||||
getReduceScale(getSubskill(b_s));
|
||||
return b_pC - a_pC;
|
||||
})},
|
||||
{name:"玩家回血",function:cards=>cards.filter(card=>{
|
||||
const searchTypeArray = [7,8,35,115];
|
||||
const skill = Skills[card.activeSkillId];
|
||||
if (searchTypeArray.includes(skill.type) || skill.type == 117 && (skill.params[1] || skill.params[2] || skill.params[3]))
|
||||
return true;
|
||||
else if (skill.type == 116 || skill.type == 118){
|
||||
const subskills = skill.params.map(id=>Skills[id]);
|
||||
return subskills.some(subskill=>searchTypeArray.includes(subskill.type) || subskill.type == 117 && (subskill.params[1] || subskill.params[2] || subskill.params[3]));
|
||||
}
|
||||
})},
|
||||
{group:"-----对敌 buff 类-----"},
|
||||
]},
|
||||
{group:"-----对敌 buff 类-----", functions: [
|
||||
{name:"威吓(按推迟回合排序)",function:cards=>{
|
||||
const searchTypeArray = [18];
|
||||
return cards.filter(card=>{
|
||||
|
@ -3445,7 +3460,8 @@ function parseSkillDescription(skill)
|
|||
return subskills.some(subskill=>subskill.type == searchType);
|
||||
}
|
||||
})},
|
||||
{group:"-----对敌直接伤害类-----"},
|
||||
]},
|
||||
{group:"-----对敌直接伤害类-重力-----", functions: [
|
||||
{name:"重力-敌人当前血量(按比例排序)",function:cards=>cards.filter(card=>{
|
||||
const searchType = 6;
|
||||
const skill = Skills[card.activeSkillId];
|
||||
|
@ -3488,6 +3504,8 @@ function parseSkillDescription(skill)
|
|||
b_s.params.map(id=>Skills[id]).find(subskill => subskill.type == searchType).params[0];
|
||||
return a_pC - b_pC;
|
||||
})},
|
||||
]},
|
||||
{group:"-----对敌直接伤害类-无视防御固伤-----", functions: [
|
||||
{name:"无视防御固伤-单体(按总伤害排序)",function:cards=>cards.filter(card=>{
|
||||
const searchTypeArray = [55,188];
|
||||
const skill = Skills[card.activeSkillId];
|
||||
|
@ -3535,6 +3553,8 @@ function parseSkillDescription(skill)
|
|||
b_s.params.map(id=>Skills[id]).find(subskill => subskill.type == searchType).params[0];
|
||||
return a_pC - b_pC;
|
||||
})},
|
||||
]},
|
||||
{group:"-----对敌直接伤害类-大炮-----", functions: [
|
||||
{name:"大炮-对象-敌方单体",function:cards=>cards.filter(card=>{
|
||||
const searchTypeArray = [2,35,37,59,84,86,110,115,144];
|
||||
const skill = Skills[card.activeSkillId];
|
||||
|
@ -3773,7 +3793,8 @@ function parseSkillDescription(skill)
|
|||
return subskills.some(subskill=>searchTypeArray.includes(subskill.type));
|
||||
}
|
||||
})},
|
||||
{group:"======进化类型======"},
|
||||
]},
|
||||
{group:"======进化类型======", functions: [
|
||||
{name:"8格潜觉",function:cards=>cards.filter(card=>card.is8Latent)},
|
||||
{name:"非8格潜觉",function:cards=>cards.filter(card=>!card.is8Latent)},
|
||||
{name:"像素进化",function:cards=>cards.filter(card=>card.evoMaterials.includes(3826))},
|
||||
|
@ -3805,7 +3826,8 @@ function parseSkillDescription(skill)
|
|||
{name:"用三神面进化",function:cards=>cards.filter(card=>card.evoMaterials.includes(3795))},
|
||||
{name:"用彩龙果进化",function:cards=>cards.filter(card=>card.evoMaterials.includes(3971))},
|
||||
{name:"由武器进化而来",function:cards=>cards.filter(card=>card.isUltEvo && Cards[card.evoBaseId].awakenings.includes(49))},
|
||||
{group:"======其他搜索======"},
|
||||
]},
|
||||
{group:"======其他搜索======", functions: [
|
||||
{name:"攻击型或水属性(炭治郎队员)",function:cards=>cards.filter(card=>card.attrs.includes(1) || card.types.includes(6))},
|
||||
{name:"火属性或水属性(火车队员)",function:cards=>cards.filter(card=>card.attrs.includes(0) || card.attrs.includes(1))},
|
||||
{name:"不能破除等级限制",function:cards=>cards.filter(card=>card.limitBreakIncr===0)},
|
||||
|
@ -3818,7 +3840,8 @@ function parseSkillDescription(skill)
|
|||
{name:"能获得珠子皮肤",function:cards=>cards.filter(card=>card.blockSkinId>0)},
|
||||
{name:"所有潜觉蛋龙",function:cards=>cards.filter(card=>card.latentAwakeningId>0).sort((a,b)=>a.latentAwakeningId-b.latentAwakeningId)},
|
||||
{name:"龙契士&龙唤士(10001)",function:cards=>cards.filter(card=>card.collabId==10001)},
|
||||
{group:"-----觉醒类-----"},
|
||||
]},
|
||||
{group:"-----觉醒类-----", functions: [
|
||||
{name:"有9个觉醒",function:cards=>cards.filter(card=>card.awakenings.length>=9)},
|
||||
{name:"可以做辅助",function:cards=>cards.filter(card=>card.canAssist)},
|
||||
{name:"不是武器",function:cards=>cards.filter(card=>!card.awakenings.includes(49))},
|
||||
|
@ -3893,6 +3916,7 @@ function parseSkillDescription(skill)
|
|||
return false;
|
||||
}
|
||||
})},
|
||||
]},
|
||||
];
|
||||
|
||||
const searchBox = editBox.querySelector(".search-box");
|
||||
|
@ -3911,6 +3935,12 @@ function parseSkillDescription(skill)
|
|||
{
|
||||
const optgroup = specialSearch.appendChild(document.createElement("optgroup"));
|
||||
optgroup.label = sfunc.group;
|
||||
if (sfunc.functions)
|
||||
{
|
||||
sfunc.functions.forEach((_sfunc,_idx)=>{
|
||||
optgroup.appendChild(new Option(_sfunc.name + (_sfunc.addition ? "+附加显示" : ""),`${idx}|${_idx}`));
|
||||
});
|
||||
}
|
||||
}else
|
||||
{
|
||||
specialSearch.options.add(new Option(sfunc.name + (sfunc.addition ? "+附加显示" : ""),idx));
|
||||
|
@ -3946,7 +3976,8 @@ function parseSkillDescription(skill)
|
|||
searchStart.onclick = function(){
|
||||
const result = specialSearchArray.reduce((pre,ss)=>
|
||||
{
|
||||
const funcObj = specialSearchFunctions[parseInt(ss.value,10)];
|
||||
const indexs = ss.value.split("|").map(Number);
|
||||
const funcObj = indexs.length > 1 ? specialSearchFunctions[indexs[0]].functions[indexs[1]] : specialSearchFunctions[indexs[0]];
|
||||
if (!funcObj) return pre;
|
||||
pre.result = funcObj.function(pre.result); //结果进一步筛选
|
||||
if (funcObj.addition) pre.addition.push(funcObj.addition); //如果有附加显示,则添加到列表
|
||||
|
|
Loading…
Reference in New Issue