增加血和盾的筛选
This commit is contained in:
parent
7b173c8c71
commit
6aa14dcc19
|
@ -9,7 +9,7 @@
|
|||
},
|
||||
{
|
||||
name:"中文(简体)技能解析",i18n:"zh-CN",searchlist:["chs","ja"],
|
||||
guideURL:id=>`http://pad.skyozora.com/pets/${id}`
|
||||
guideURL:id=>{const url = new URL(location);url.search = '';url.searchParams.set("guide",1);url.searchParams.set("id",id); return url;}
|
||||
},
|
||||
{
|
||||
name:"中文(简体)原版技能",i18n:"zh",searchlist:["chs","ja"],
|
||||
|
|
|
@ -7,7 +7,7 @@ function findFullSkill(subSkill){
|
|||
return {skill:parentSkill,card:aCard};
|
||||
}
|
||||
//document.querySelector(".edit-box .row-mon-id .m-id").type = "number";
|
||||
//Skills.filter(s=>{const sk = s.params; return s.type == 156;}).map(findFullSkill)
|
||||
//console.table(Skills.filter(s=>{const sk = s.params; return s.type == 156;}).map(findFullSkill));
|
||||
|
||||
//返回flag里值为true的数组,如[1,4,7]
|
||||
function flags(num){
|
||||
|
@ -331,8 +331,7 @@ function parseSkillDescription(skill)
|
|||
str = `对敌方1体造成自身攻击力×${sk[1]/100}倍的${attrN(sk[0])}属性伤害`;
|
||||
break;
|
||||
case 38:
|
||||
str = `HP ${sk[0] == 100?"全满":`${sk[0]}%以下`}时${sk[1]<100?`有${sk[1]}的几率使`:""}受到的伤害减少${sk[2]}%`;
|
||||
if (sk[1]!=100) str+=`未知的 参数1 ${sk[1]}`;
|
||||
str = `HP ${sk[0] == 100?"全满":`${sk[0]}%以下`}时${sk[1]<100?`有${sk[1]}%的几率使`:""}受到的伤害减少${sk[2]}%`;
|
||||
break;
|
||||
case 39:
|
||||
strArr = [sk[1],sk[2]].filter(s=>s>0).map(s=>{if(s==1) return "攻击力"; else if(s==2) return "回复力";});
|
||||
|
@ -348,7 +347,7 @@ function parseSkillDescription(skill)
|
|||
str = `对${attrN(sk[0])}属性敌人造成${parseBigNumber(sk[2])}点${attrN(sk[1])}属性伤害`;
|
||||
break;
|
||||
case 43:
|
||||
str = `HP ${sk[0]==100 ?"全满":`${sk[0]}%以上`}时${sk[1]<100?`有${sk[1]}的几率使`:""}受到的伤害减少${sk[2]}`;
|
||||
str = `HP ${sk[0]==100 ?"全满":`${sk[0]}%以上`}时${sk[1]<100?`有${sk[1]}%的几率使`:""}受到的伤害减少${sk[2]}%`;
|
||||
break;
|
||||
case 44:
|
||||
strArr = [sk[1],sk[2]].filter(s=>s>0).map(s=>{if(s==1) return "攻击力"; else if(s==2) return "回复力";});
|
||||
|
@ -700,19 +699,20 @@ function parseSkillDescription(skill)
|
|||
return fragment;
|
||||
break;
|
||||
case 129:
|
||||
str = `${getAttrTypeString(flags(sk[0]),flags(sk[1]))}宠物`;
|
||||
str = "";
|
||||
if (sk[0] || sk[1]) str += `${getAttrTypeString(flags(sk[0]),flags(sk[1]))}宠物`;
|
||||
if (sk[2] || sk[3] || sk[4]) str += `的${getFixedHpAtkRcvString({hp:sk[2],atk:sk[3],rcv:sk[4]})}`;
|
||||
if (sk[5]) str += `,受到的${nb(sk[5],attrsName).join("、")}属性伤害减少${sk[6]}%`;
|
||||
if (sk[5]) str += `${str.length>0?",":""}受到的${nb(sk[5],attrsName).join("、")}属性伤害减少${sk[6]}%`;
|
||||
break;
|
||||
case 130:
|
||||
str = `HP ${sk[0]}%以下时`;
|
||||
str += `${getAttrTypeString(flags(sk[1]),flags(sk[2]))}宠物`;
|
||||
if (sk[1] || sk[2]) str += `${getAttrTypeString(flags(sk[1]),flags(sk[2]))}宠物`;
|
||||
if (sk[3] || sk[4]) str += `的${getFixedHpAtkRcvString({atk:sk[3],rcv:sk[4]})}`;
|
||||
if (sk[5]) str += `,受到的${nb(sk[5],attrsName).join("、")}属性伤害减少${sk[6]}%`;
|
||||
break;
|
||||
case 131:
|
||||
str = `HP ${sk[0]==100?"全满":`${sk[0]}%以上`}时`;
|
||||
str += `${getAttrTypeString(flags(sk[1]),flags(sk[2]))}宠物`;
|
||||
if (sk[1] || sk[2]) str += `${getAttrTypeString(flags(sk[1]),flags(sk[2]))}宠物`;
|
||||
if (sk[3] || sk[4]) str += `的${getFixedHpAtkRcvString({atk:sk[3],rcv:sk[4]})}`;
|
||||
if (sk[5]) str += `,受到的${nb(sk[5],attrsName).join("、")}属性伤害减少${sk[6]}%`;
|
||||
break;
|
||||
|
@ -876,8 +876,8 @@ function parseSkillDescription(skill)
|
|||
case 163:
|
||||
str = '<span class="spColor">【没有天降消除】</span>';
|
||||
if (sk[0] || sk[1]) str += `${getAttrTypeString(flags(sk[0]),flags(sk[1]))}宠物`;
|
||||
if (sk[2] || sk[3] || sk[4]) str += "的"+getFixedHpAtkRcvString({hp:sk[2],atk:sk[3],rcv:sk[4]});
|
||||
if (sk[5] || sk[6]) str += `,受到的${getAttrTypeString(flags(sk[5]))}伤害减少${sk[6]}`;
|
||||
if (sk[2] || sk[3] || sk[4]) str += "的"+getFixedHpAtkRcvString({hp:sk[2],atk:sk[3],rcv:sk[4]}) + ",";
|
||||
if (sk[5] || sk[6]) str += `受到的${getAttrTypeString(flags(sk[5]))}伤害减少${sk[6]}%`;
|
||||
break;
|
||||
case 164:
|
||||
fullColor = sk.slice(0,4).filter(c=>c>0); //最多4串珠
|
||||
|
@ -1406,7 +1406,96 @@ function parseBigNumber(number)
|
|||
|
||||
//增加特殊搜索模式
|
||||
(function() {
|
||||
'use strict';
|
||||
'use strict';
|
||||
//获取血倍率
|
||||
function getHPScale(ls)
|
||||
{
|
||||
const sk = ls.params;
|
||||
let scale = 1;
|
||||
switch (ls.type)
|
||||
{
|
||||
case 23: case 30: case 62: case 77: case 63: case 65:
|
||||
case 29: case 114: case 45: case 111: case 46: case 48: case 67:
|
||||
scale = sk[sk.length-1]/100;
|
||||
break;
|
||||
case 73: case 76:
|
||||
case 121: case 129: case 163: case 186:
|
||||
case 155:
|
||||
scale = sk[2]/100;
|
||||
break;
|
||||
case 106: case 107: case 108:
|
||||
scale = sk[0]/100;
|
||||
break;
|
||||
case 125:
|
||||
scale = sk[5]/100;
|
||||
break;
|
||||
case 136:
|
||||
case 137:
|
||||
scale = (sk[1]/100 || 1) * (sk[5]/100 || 1);
|
||||
break;
|
||||
case 158:
|
||||
scale = sk[4]/100;
|
||||
break;
|
||||
case 175:
|
||||
case 178: case 185:
|
||||
scale = sk[3]/100;
|
||||
break;
|
||||
case 203:
|
||||
scale = sk[1]/100;
|
||||
break;
|
||||
case 138: //调用其他队长技
|
||||
scale = sk.reduce((pmul,skid)=>pmul * getHPScale(Skills[skid]),1);
|
||||
break;
|
||||
default:
|
||||
}
|
||||
return scale || 1;
|
||||
}
|
||||
//获取盾减伤比例
|
||||
function getReduceScale(ls, allAttr = false)
|
||||
{
|
||||
const sk = ls.params;
|
||||
let scale = 0;
|
||||
switch (ls.type)
|
||||
{
|
||||
case 16: //无条件盾
|
||||
scale = sk[0]/100;
|
||||
break;
|
||||
case 17: //单属性盾
|
||||
scale = allAttr ? 0 : sk[1]/100;
|
||||
break;
|
||||
case 36: //2个属性盾
|
||||
scale = allAttr ? 0 : sk[2]/100;
|
||||
break;
|
||||
case 38: case 43: //血线盾 + 几率盾
|
||||
scale = (allAttr && sk[1]<100) ? 0 : sk[2]/100;
|
||||
break;
|
||||
case 129: case 130: case 131: case 163: //属性个数不固定
|
||||
scale = (allAttr && (sk[5] & 31) != 31) ? 0 : sk[6]/100;
|
||||
break;
|
||||
case 151: //十字心触发
|
||||
case 169: //C触发
|
||||
case 198: //回血触发
|
||||
scale = sk[2]/100;
|
||||
break;
|
||||
case 170: //多色触发
|
||||
case 182: //长串触发
|
||||
case 193: //L触发
|
||||
scale = sk[3]/100;
|
||||
break;
|
||||
case 171: //多串触发
|
||||
scale = sk[6]/100;
|
||||
break;
|
||||
case 183: //又是个有两段血线的队长技
|
||||
scale = sk[4]/100;
|
||||
break;
|
||||
|
||||
case 138: //调用其他队长技
|
||||
scale = sk.reduce((pmul,skid)=> 1 - (1-pmul) * (1-getReduceScale(Skills[skid], allAttr)),0);
|
||||
break;
|
||||
default:
|
||||
}
|
||||
return scale || 0;
|
||||
}
|
||||
const specialSearchFunctions = [
|
||||
{name:"暂时仅中文有的特殊搜索",function:cards=>cards},
|
||||
{name:"======队长技======",function:cards=>cards},
|
||||
|
@ -1579,7 +1668,7 @@ function parseBigNumber(number)
|
|||
return subskills.some(subskill=>subskill.type == searchType);
|
||||
}
|
||||
})},
|
||||
{name:"回血加盾",function:cards=>cards.filter(card=>{
|
||||
/*{name:"回血加盾",function:cards=>cards.filter(card=>{
|
||||
const searchType = 198;
|
||||
const skill = Skills[card.leaderSkillId];
|
||||
if (skill.type == searchType && skill.params[2])
|
||||
|
@ -1588,7 +1677,7 @@ function parseBigNumber(number)
|
|||
const subskills = skill.params.map(id=>Skills[id]);
|
||||
return subskills.some(subskill=>subskill.type == searchType && subskill.params[2]);
|
||||
}
|
||||
})},
|
||||
})},*/
|
||||
{name:"回血解觉",function:cards=>cards.filter(card=>{
|
||||
const searchType = 198;
|
||||
const skill = Skills[card.leaderSkillId];
|
||||
|
@ -1754,6 +1843,84 @@ function parseBigNumber(number)
|
|||
b_s.params.map(id=>Skills[id]).find(subskill => subskill.type == searchType).params[0];
|
||||
return a_pC - b_pC;
|
||||
})},
|
||||
{name:"-----血倍率-----",function:cards=>cards},
|
||||
{name:"队长血倍率[2, ∞)(按倍率排序)",function:cards=>cards.filter(card=>{
|
||||
const skill = Skills[card.leaderSkillId];
|
||||
const HPscale = getHPScale(skill);
|
||||
return HPscale >= 2;
|
||||
}).sort((a,b)=>{
|
||||
const a_s = Skills[a.leaderSkillId], b_s = Skills[b.leaderSkillId];
|
||||
return getHPScale(a_s) - getHPScale(b_s);
|
||||
})},
|
||||
{name:"队长血倍率[1.5, 2)(按倍率排序)",function:cards=>cards.filter(card=>{
|
||||
const skill = Skills[card.leaderSkillId];
|
||||
const HPscale = getHPScale(skill);
|
||||
return HPscale >= 1.5 && HPscale < 2;
|
||||
}).sort((a,b)=>{
|
||||
const a_s = Skills[a.leaderSkillId], b_s = Skills[b.leaderSkillId];
|
||||
return getHPScale(a_s) - getHPScale(b_s);
|
||||
})},
|
||||
{name:"队长血倍率[1, 1.5)(按倍率排序)",function:cards=>cards.filter(card=>{
|
||||
const skill = Skills[card.leaderSkillId];
|
||||
const HPscale = getHPScale(skill);
|
||||
return HPscale >= 1 && HPscale < 1.5;
|
||||
}).sort((a,b)=>{
|
||||
const a_s = Skills[a.leaderSkillId], b_s = Skills[b.leaderSkillId];
|
||||
return getHPScale(a_s) - getHPScale(b_s);
|
||||
})},
|
||||
{name:"队长血倍率[0, 1)(按倍率排序)",function:cards=>cards.filter(card=>{
|
||||
const skill = Skills[card.leaderSkillId];
|
||||
const HPscale = getHPScale(skill);
|
||||
return HPscale<1;
|
||||
}).sort((a,b)=>{
|
||||
const a_s = Skills[a.leaderSkillId], b_s = Skills[b.leaderSkillId];
|
||||
return getHPScale(a_s) - getHPScale(b_s);
|
||||
})},
|
||||
{name:"-----减伤盾-----",function:cards=>cards},
|
||||
{name:"队长盾减伤-必须全属性减伤",function:cards=>cards.filter(card=>{
|
||||
const skill = Skills[card.leaderSkillId];
|
||||
return getReduceScale(skill, true) > 0;
|
||||
})},
|
||||
{name:"队长盾减伤[75%, 100%](按倍率排序)",function:cards=>cards.filter(card=>{
|
||||
const skill = Skills[card.leaderSkillId];
|
||||
const reduceScale = getReduceScale(skill);
|
||||
return reduceScale>=0.75;
|
||||
}).sort((a,b)=>{
|
||||
const a_s = Skills[a.leaderSkillId], b_s = Skills[b.leaderSkillId];
|
||||
return getReduceScale(a_s) - getReduceScale(b_s);
|
||||
})},
|
||||
{name:"队长盾减伤[50%, 75%)(按倍率排序)",function:cards=>cards.filter(card=>{
|
||||
const skill = Skills[card.leaderSkillId];
|
||||
const reduceScale = getReduceScale(skill);
|
||||
return reduceScale>=0.5 && reduceScale < 0.75;
|
||||
}).sort((a,b)=>{
|
||||
const a_s = Skills[a.leaderSkillId], b_s = Skills[b.leaderSkillId];
|
||||
return getReduceScale(a_s) - getReduceScale(b_s);
|
||||
})},
|
||||
{name:"队长盾减伤[25%, 50%)(按倍率排序)",function:cards=>cards.filter(card=>{
|
||||
const skill = Skills[card.leaderSkillId];
|
||||
const reduceScale = getReduceScale(skill);
|
||||
return reduceScale>=0.25 && reduceScale < 0.5;
|
||||
}).sort((a,b)=>{
|
||||
const a_s = Skills[a.leaderSkillId], b_s = Skills[b.leaderSkillId];
|
||||
return getReduceScale(a_s) - getReduceScale(b_s);
|
||||
})},
|
||||
{name:"队长盾减伤(0%, 25%)(按倍率排序)",function:cards=>cards.filter(card=>{
|
||||
const skill = Skills[card.leaderSkillId];
|
||||
const reduceScale = getReduceScale(skill);
|
||||
return reduceScale>0 && reduceScale < 0.25;
|
||||
}).sort((a,b)=>{
|
||||
const a_s = Skills[a.leaderSkillId], b_s = Skills[b.leaderSkillId];
|
||||
return getReduceScale(a_s) - getReduceScale(b_s);
|
||||
})},
|
||||
{name:"99重力不下半血-队长盾减伤[29%, 100%)(按倍率排序)",function:cards=>cards.filter(card=>{
|
||||
const skill = Skills[card.leaderSkillId];
|
||||
const reduceScale = getReduceScale(skill);
|
||||
return reduceScale>=0.29;
|
||||
}).sort((a,b)=>{
|
||||
const a_s = Skills[a.leaderSkillId], b_s = Skills[b.leaderSkillId];
|
||||
return getReduceScale(a_s) - getReduceScale(b_s);
|
||||
})},
|
||||
|
||||
{name:"======主动技======",function:cards=>cards},
|
||||
{name:"1 CD",function:cards=>cards.filter(card=>{
|
||||
|
|
Loading…
Reference in New Issue