| @@ -169,7 +169,7 @@ function parseSkillDescription(skill) | |||||
| str = `对敌方全体造成自身攻击力×${sk[1]/100}倍的${attrN(sk[0])}属性伤害`; | str = `对敌方全体造成自身攻击力×${sk[1]/100}倍的${attrN(sk[0])}属性伤害`; | ||||
| break; | break; | ||||
| case 1: | case 1: | ||||
| str = `对敌方全体造成${sk[1]}的${attrN(sk[0])}属性攻击`; | |||||
| str = `对敌方全体造成${sk[1]}点${attrN(sk[0])}属性伤害`; | |||||
| break; | break; | ||||
| case 2: | case 2: | ||||
| str = `对敌方1体造成自身攻击力×${sk[0]/100}${sk[1]&&sk[1]!=sk[0]?'~'+sk[1]/100:''}倍的自身属性伤害`; | str = `对敌方1体造成自身攻击力×${sk[0]/100}${sk[1]&&sk[1]!=sk[0]?'~'+sk[1]/100:''}倍的自身属性伤害`; | ||||
| @@ -325,10 +325,10 @@ function parseSkillDescription(skill) | |||||
| str = `对敌方全体造成${sk[0]}点无视防御的固定伤害`; | str = `对敌方全体造成${sk[0]}点无视防御的固定伤害`; | ||||
| break; | break; | ||||
| case 58: | case 58: | ||||
| str = `对敌方全体造成自身攻击力×${sk[1]==sk[2]?sk[1]/100:`${sk[1]/100}~${sk[2]/100}`}倍的${attrN(sk[0])}属性伤害`; | |||||
| str = `对敌方全体造成自身攻击力×${sk[1]/100}${sk[2]&&sk[2]!=sk[1]?'~'+sk[2]/100:''}倍的${attrN(sk[0])}属性伤害`; | |||||
| break; | break; | ||||
| case 59: | case 59: | ||||
| str = `对敌方1体造成自身攻击力×${sk[1]==sk[2]?sk[1]/100:`${sk[1]/100}~${sk[2]/100}`}倍的${attrN(sk[0])}属性伤害`; | |||||
| str = `对敌方1体造成自身攻击力×${sk[1]/100}${sk[2]&&sk[2]!=sk[1]?'~'+sk[2]/100:''}倍的${attrN(sk[0])}属性伤害`; | |||||
| break; | break; | ||||
| case 60: | case 60: | ||||
| str = `${sk[0]}回合内,受到伤害时进行受到伤害${sk[1]/100+"倍的"+attrN(sk[2])}属性反击`; | str = `${sk[0]}回合内,受到伤害时进行受到伤害${sk[1]/100+"倍的"+attrN(sk[2])}属性反击`; | ||||
| @@ -395,10 +395,10 @@ function parseSkillDescription(skill) | |||||
| if (sk[2] || sk[3] || sk[4]) str += `的${getFixedHpAtkRcvString({hp:sk[2],atk:sk[2],rcv:sk[2]})}`; | if (sk[2] || sk[3] || sk[4]) str += `的${getFixedHpAtkRcvString({hp:sk[2],atk:sk[2],rcv:sk[2]})}`; | ||||
| break; | break; | ||||
| case 84: | case 84: | ||||
| str = `HP ${(sk[3]?(`减少${100-sk[3]}%`):"变为1")},对敌方1体造成自身攻击力×${sk[1]/100}${sk[1]!=sk[2]?`~${+sk[2]/100}`:""}倍的${attrN(sk[0])}属性伤害`; | |||||
| str = `HP ${(sk[3]?(`减少${100-sk[3]}%`):"变为1")},对敌方1体造成自身攻击力×${sk[1]/100}${sk[2]&&sk[2]!=sk[1]?'~'+sk[2]/100:''}倍的${attrN(sk[0])}属性伤害`; | |||||
| break; | break; | ||||
| case 85: | case 85: | ||||
| str = `HP ${(sk[3]?(`减少${100-sk[3]}%`):"变为1")},对敌方全体造成自身攻击力×${sk[1]/100}${sk[1]!=sk[2]?`~${+sk[2]/100}`:""}倍的${attrN(sk[0])}属性伤害`; | |||||
| str = `HP ${(sk[3]?(`减少${100-sk[3]}%`):"变为1")},对敌方全体造成自身攻击力×${sk[1]/100}${sk[2]&&sk[2]!=sk[1]?'~'+sk[2]/100:''}倍的${attrN(sk[0])}属性伤害`; | |||||
| break; | break; | ||||
| case 86: | case 86: | ||||
| str = `HP ${(sk[3]?(`减少${100-sk[3]}%`):"变为1")},对敌方1体造成${sk[1]}点${attrN(sk[0])}属性伤害`; | str = `HP ${(sk[3]?(`减少${100-sk[3]}%`):"变为1")},对敌方1体造成${sk[1]}点${attrN(sk[0])}属性伤害`; | ||||
| @@ -1989,7 +1989,7 @@ function parseBigNumber(number) | |||||
| b_s.params.map(id=>Skills[id]).find(subskill => subskill.type == searchType).params[0]; | b_s.params.map(id=>Skills[id]).find(subskill => subskill.type == searchType).params[0]; | ||||
| return a_pC - b_pC; | return a_pC - b_pC; | ||||
| })}, | })}, | ||||
| {name:"-----对队员生效类-----",function:cards=>cards}, | |||||
| {name:"-----对自身队伍生效类-----",function:cards=>cards}, | |||||
| {name:"溜(按溜数排序,有范围的取小)",function:cards=>cards.filter(card=>{ | {name:"溜(按溜数排序,有范围的取小)",function:cards=>cards.filter(card=>{ | ||||
| const searchType = 146; | const searchType = 146; | ||||
| const skill = Skills[card.activeSkillId]; | const skill = Skills[card.activeSkillId]; | ||||
| @@ -2175,7 +2175,7 @@ function parseBigNumber(number) | |||||
| } | } | ||||
| })}, | })}, | ||||
| {name:"-----对敌伤害类-----",function:cards=>cards}, | {name:"-----对敌伤害类-----",function:cards=>cards}, | ||||
| {name:"普通重力(按比例排序)",function:cards=>cards.filter(card=>{ | |||||
| {name:"重力-敌人当前血量(按比例排序)",function:cards=>cards.filter(card=>{ | |||||
| const searchType = 6; | const searchType = 6; | ||||
| const skill = Skills[card.activeSkillId]; | const skill = Skills[card.activeSkillId]; | ||||
| if (skill.type == searchType) | if (skill.type == searchType) | ||||
| @@ -2196,7 +2196,7 @@ function parseBigNumber(number) | |||||
| b_s.params.map(id=>Skills[id]).find(subskill => subskill.type == searchType).params[0]; | b_s.params.map(id=>Skills[id]).find(subskill => subskill.type == searchType).params[0]; | ||||
| return a_pC - b_pC; | return a_pC - b_pC; | ||||
| })}, | })}, | ||||
| {name:"最大值重力(按比例排序)",function:cards=>cards.filter(card=>{ | |||||
| {name:"重力-敌人最大血量(按比例排序)",function:cards=>cards.filter(card=>{ | |||||
| const searchType = 161; | const searchType = 161; | ||||
| const skill = Skills[card.activeSkillId]; | const skill = Skills[card.activeSkillId]; | ||||
| if (skill.type == searchType) | if (skill.type == searchType) | ||||
| @@ -2217,7 +2217,7 @@ function parseBigNumber(number) | |||||
| b_s.params.map(id=>Skills[id]).find(subskill => subskill.type == searchType).params[0]; | b_s.params.map(id=>Skills[id]).find(subskill => subskill.type == searchType).params[0]; | ||||
| return a_pC - b_pC; | return a_pC - b_pC; | ||||
| })}, | })}, | ||||
| {name:"单体固伤(按总伤害排序)",function:cards=>cards.filter(card=>{ | |||||
| {name:"无视防御固伤-单体(按总伤害排序)",function:cards=>cards.filter(card=>{ | |||||
| const searchTypeArray = [55,188]; | const searchTypeArray = [55,188]; | ||||
| const skill = Skills[card.activeSkillId]; | const skill = Skills[card.activeSkillId]; | ||||
| if (searchTypeArray.includes(skill.type)) | if (searchTypeArray.includes(skill.type)) | ||||
| @@ -2243,7 +2243,7 @@ function parseBigNumber(number) | |||||
| totalDamage(b_s); | totalDamage(b_s); | ||||
| return a_pC - b_pC; | return a_pC - b_pC; | ||||
| })}, | })}, | ||||
| {name:"全体固伤(按伤害数排序)",function:cards=>cards.filter(card=>{ | |||||
| {name:"无视防御固伤-全体(按伤害数排序)",function:cards=>cards.filter(card=>{ | |||||
| const searchType = 56; | const searchType = 56; | ||||
| const skill = Skills[card.activeSkillId]; | const skill = Skills[card.activeSkillId]; | ||||
| if (skill.type == searchType) | if (skill.type == searchType) | ||||
| @@ -2264,7 +2264,7 @@ function parseBigNumber(number) | |||||
| b_s.params.map(id=>Skills[id]).find(subskill => subskill.type == searchType).params[0]; | b_s.params.map(id=>Skills[id]).find(subskill => subskill.type == searchType).params[0]; | ||||
| return a_pC - b_pC; | return a_pC - b_pC; | ||||
| })}, | })}, | ||||
| {name:"单体大炮",function:cards=>cards.filter(card=>{ | |||||
| {name:"大炮-敌方-单体",function:cards=>cards.filter(card=>{ | |||||
| const searchTypeArray = [2,35,37,59,84,86,110,115,144]; | const searchTypeArray = [2,35,37,59,84,86,110,115,144]; | ||||
| const skill = Skills[card.activeSkillId]; | const skill = Skills[card.activeSkillId]; | ||||
| function isSingle(skill) | function isSingle(skill) | ||||
| @@ -2283,12 +2283,11 @@ function parseBigNumber(number) | |||||
| return subskills.some(subskill=>searchTypeArray.includes(subskill.type) && isSingle(subskill)); | return subskills.some(subskill=>searchTypeArray.includes(subskill.type) && isSingle(subskill)); | ||||
| } | } | ||||
| })}, | })}, | ||||
| {name:"全体大炮",function:cards=>cards.filter(card=>{ | |||||
| {name:"大炮-敌方-全体",function:cards=>cards.filter(card=>{ | |||||
| const searchTypeArray = [0,1,58,85,87,110,143,144]; | const searchTypeArray = [0,1,58,85,87,110,143,144]; | ||||
| const skill = Skills[card.activeSkillId]; | const skill = Skills[card.activeSkillId]; | ||||
| function isAll(skill) | function isAll(skill) | ||||
| { | { | ||||
| if (skill.id == 0 ) return false; | |||||
| if (skill.type == 110) | if (skill.type == 110) | ||||
| return !Boolean(skill.params[0]); | return !Boolean(skill.params[0]); | ||||
| else if (skill.type == 114) | else if (skill.type == 114) | ||||
| @@ -2296,75 +2295,221 @@ function parseBigNumber(number) | |||||
| else | else | ||||
| return true; | return true; | ||||
| } | } | ||||
| if (searchTypeArray.includes(skill.type) && isAll(skill)) | |||||
| if (searchTypeArray.includes(skill.type) && skill.id!=0 && isAll(skill)) | |||||
| return true; | return true; | ||||
| else if (skill.type == 116 || skill.type == 118){ | else if (skill.type == 116 || skill.type == 118){ | ||||
| const subskills = skill.params.map(id=>Skills[id]); | const subskills = skill.params.map(id=>Skills[id]); | ||||
| return subskills.some(subskill=>searchTypeArray.includes(subskill.type) && isAll(subskill)); | return subskills.some(subskill=>searchTypeArray.includes(subskill.type) && isAll(subskill)); | ||||
| } | } | ||||
| })}, | })}, | ||||
| {name:"自身攻击倍率指定属性伤害(全体)",function:cards=>cards.filter(card=>{ | |||||
| const searchTypeArray = [0,58,85]; | |||||
| {name:"大炮-敌方-指定属性敌人",function:cards=>cards.filter(card=>{ | |||||
| const searchTypeArray = [42]; | |||||
| const skill = Skills[card.activeSkillId]; | const skill = Skills[card.activeSkillId]; | ||||
| if (searchTypeArray.includes(skill.type)) | if (searchTypeArray.includes(skill.type)) | ||||
| return true; | return true; | ||||
| else if (skill.type == 116 || skill.type == 118){ | else if (skill.type == 116 || skill.type == 118){ | ||||
| const subskills = skill.params.map(id=>Skills[id]); | const subskills = skill.params.map(id=>Skills[id]); | ||||
| return subskills.some(subskill=>searchTypeArray.includes(subskill.type)); | |||||
| return subskills.some(subskill=>searchTypeArray.includes(subskill.type) && isAll(subskill)); | |||||
| } | } | ||||
| })}, | })}, | ||||
| {name:"固定值指定属性伤害(全体)",function:cards=>cards.filter(card=>{ | |||||
| const searchTypeArray = [1,87]; | |||||
| {name:"大炮-属性-不限",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 = Skills[card.activeSkillId]; | const skill = Skills[card.activeSkillId]; | ||||
| if (searchTypeArray.includes(skill.type)) | |||||
| if (searchTypeArray.includes(skill.type) && skill.id!=0) | |||||
| return true; | return true; | ||||
| else if (skill.type == 116 || skill.type == 118){ | else if (skill.type == 116 || skill.type == 118){ | ||||
| const subskills = skill.params.map(id=>Skills[id]); | const subskills = skill.params.map(id=>Skills[id]); | ||||
| return subskills.some(subskill=>searchTypeArray.includes(subskill.type)); | return subskills.some(subskill=>searchTypeArray.includes(subskill.type)); | ||||
| } | } | ||||
| })}, | })}, | ||||
| {name:"固定值指定属性伤害(单体)",function:cards=>cards.filter(card=>{ | |||||
| const searchTypeArray = [86]; | |||||
| {name:"大炮-属性-火",function:cards=>cards.filter(card=>{ | |||||
| const searchTypeArray = [0,1,37,42,58,59,84,85,86,87,110,115,143,144]; | |||||
| const skill = Skills[card.activeSkillId]; | const skill = Skills[card.activeSkillId]; | ||||
| if (searchTypeArray.includes(skill.type)) | |||||
| function getAttr(skill) | |||||
| { | |||||
| const sk = skill.params; | |||||
| switch(skill.type) | |||||
| { | |||||
| case 0: | |||||
| case 1: | |||||
| case 37: | |||||
| case 58: | |||||
| case 59: | |||||
| case 84: | |||||
| case 85: | |||||
| case 86: | |||||
| case 87: | |||||
| case 115: | |||||
| return sk[0]; | |||||
| case 110: | |||||
| case 143: | |||||
| return sk[1]; | |||||
| case 42: | |||||
| return sk[1]; | |||||
| case 144: | |||||
| return sk[3]; | |||||
| default: | |||||
| return -1; | |||||
| } | |||||
| } | |||||
| if (searchTypeArray.includes(skill.type) && skill.id!=0 && getAttr(skill) == 0) | |||||
| return true; | return true; | ||||
| else if (skill.type == 116 || skill.type == 118){ | else if (skill.type == 116 || skill.type == 118){ | ||||
| const subskills = skill.params.map(id=>Skills[id]); | const subskills = skill.params.map(id=>Skills[id]); | ||||
| return subskills.some(subskill=>searchTypeArray.includes(subskill.type)); | |||||
| return subskills.some(subskill=>searchTypeArray.includes(subskill.type) && getAttr(subskill) == 0); | |||||
| } | } | ||||
| })}, | })}, | ||||
| {name:"自身攻击倍率自身属性伤害(单体)",function:cards=>cards.filter(card=>{ | |||||
| const searchTypeArray = [2]; | |||||
| {name:"大炮-属性-水",function:cards=>cards.filter(card=>{ | |||||
| const searchTypeArray = [0,1,37,42,58,59,84,85,86,87,110,115,143,144]; | |||||
| const skill = Skills[card.activeSkillId]; | const skill = Skills[card.activeSkillId]; | ||||
| if (searchTypeArray.includes(skill.type)) | |||||
| function getAttr(skill) | |||||
| { | |||||
| const sk = skill.params; | |||||
| switch(skill.type) | |||||
| { | |||||
| case 0: | |||||
| case 1: | |||||
| case 37: | |||||
| case 58: | |||||
| case 59: | |||||
| case 84: | |||||
| case 85: | |||||
| case 86: | |||||
| case 87: | |||||
| case 115: | |||||
| return sk[0]; | |||||
| case 110: | |||||
| case 143: | |||||
| return sk[1]; | |||||
| case 42: | |||||
| return sk[1]; | |||||
| case 144: | |||||
| return sk[3]; | |||||
| default: | |||||
| return -1; | |||||
| } | |||||
| } | |||||
| if (searchTypeArray.includes(skill.type) && skill.id!=0 && getAttr(skill) == 1) | |||||
| return true; | return true; | ||||
| else if (skill.type == 116 || skill.type == 118){ | else if (skill.type == 116 || skill.type == 118){ | ||||
| const subskills = skill.params.map(id=>Skills[id]); | const subskills = skill.params.map(id=>Skills[id]); | ||||
| return subskills.some(subskill=>searchTypeArray.includes(subskill.type)); | |||||
| return subskills.some(subskill=>searchTypeArray.includes(subskill.type) && getAttr(subskill) == 1); | |||||
| } | } | ||||
| })}, | })}, | ||||
| {name:"造成敌方伤害后吸血",function:cards=>cards.filter(card=>{ | |||||
| const searchTypeArray = [35,115]; | |||||
| {name:"大炮-属性-木",function:cards=>cards.filter(card=>{ | |||||
| const searchTypeArray = [0,1,37,42,58,59,84,85,86,87,110,115,143,144]; | |||||
| const skill = Skills[card.activeSkillId]; | const skill = Skills[card.activeSkillId]; | ||||
| if (searchTypeArray.includes(skill.type)) | |||||
| function getAttr(skill) | |||||
| { | |||||
| const sk = skill.params; | |||||
| switch(skill.type) | |||||
| { | |||||
| case 0: | |||||
| case 1: | |||||
| case 37: | |||||
| case 58: | |||||
| case 59: | |||||
| case 84: | |||||
| case 85: | |||||
| case 86: | |||||
| case 87: | |||||
| case 115: | |||||
| return sk[0]; | |||||
| case 110: | |||||
| case 143: | |||||
| return sk[1]; | |||||
| case 42: | |||||
| return sk[1]; | |||||
| case 144: | |||||
| return sk[3]; | |||||
| default: | |||||
| return -1; | |||||
| } | |||||
| } | |||||
| if (searchTypeArray.includes(skill.type) && skill.id!=0 && getAttr(skill) == 2) | |||||
| return true; | return true; | ||||
| else if (skill.type == 116 || skill.type == 118){ | else if (skill.type == 116 || skill.type == 118){ | ||||
| const subskills = skill.params.map(id=>Skills[id]); | const subskills = skill.params.map(id=>Skills[id]); | ||||
| return subskills.some(subskill=>searchTypeArray.includes(subskill.type)); | |||||
| return subskills.some(subskill=>searchTypeArray.includes(subskill.type) && getAttr(subskill) == 2); | |||||
| } | } | ||||
| })}, | })}, | ||||
| {name:"自身攻击倍率自身属性伤害并吸血(单体)",function:cards=>cards.filter(card=>{ | |||||
| const searchTypeArray = [35]; | |||||
| {name:"大炮-属性-光",function:cards=>cards.filter(card=>{ | |||||
| const searchTypeArray = [0,1,37,42,58,59,84,85,86,87,110,115,143,144]; | |||||
| const skill = Skills[card.activeSkillId]; | const skill = Skills[card.activeSkillId]; | ||||
| if (searchTypeArray.includes(skill.type)) | |||||
| function getAttr(skill) | |||||
| { | |||||
| const sk = skill.params; | |||||
| switch(skill.type) | |||||
| { | |||||
| case 0: | |||||
| case 1: | |||||
| case 37: | |||||
| case 58: | |||||
| case 59: | |||||
| case 84: | |||||
| case 85: | |||||
| case 86: | |||||
| case 87: | |||||
| case 115: | |||||
| return sk[0]; | |||||
| case 110: | |||||
| case 143: | |||||
| return sk[1]; | |||||
| case 42: | |||||
| return sk[1]; | |||||
| case 144: | |||||
| return sk[3]; | |||||
| default: | |||||
| return -1; | |||||
| } | |||||
| } | |||||
| if (searchTypeArray.includes(skill.type) && skill.id!=0 && getAttr(skill) == 3) | |||||
| return true; | return true; | ||||
| else if (skill.type == 116 || skill.type == 118){ | else if (skill.type == 116 || skill.type == 118){ | ||||
| const subskills = skill.params.map(id=>Skills[id]); | const subskills = skill.params.map(id=>Skills[id]); | ||||
| return subskills.some(subskill=>searchTypeArray.includes(subskill.type)); | |||||
| return subskills.some(subskill=>searchTypeArray.includes(subskill.type) && getAttr(subskill) == 3); | |||||
| } | |||||
| })}, | |||||
| {name:"大炮-属性-暗",function:cards=>cards.filter(card=>{ | |||||
| const searchTypeArray = [0,1,37,42,58,59,84,85,86,87,110,115,143,144]; | |||||
| const skill = Skills[card.activeSkillId]; | |||||
| function getAttr(skill) | |||||
| { | |||||
| const sk = skill.params; | |||||
| switch(skill.type) | |||||
| { | |||||
| case 0: | |||||
| case 1: | |||||
| case 37: | |||||
| case 58: | |||||
| case 59: | |||||
| case 84: | |||||
| case 85: | |||||
| case 86: | |||||
| case 87: | |||||
| case 115: | |||||
| return sk[0]; | |||||
| case 110: | |||||
| case 143: | |||||
| return sk[1]; | |||||
| case 42: | |||||
| return sk[1]; | |||||
| case 144: | |||||
| return sk[3]; | |||||
| default: | |||||
| return -1; | |||||
| } | |||||
| } | |||||
| if (searchTypeArray.includes(skill.type) && skill.id!=0 && getAttr(skill) == 4) | |||||
| 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) && getAttr(subskill) == 4); | |||||
| } | } | ||||
| })}, | })}, | ||||
| {name:"自身攻击倍率指定属性伤害(单体)",function:cards=>cards.filter(card=>{ | |||||
| const searchTypeArray = [37,59,84]; | |||||
| {name:"大炮-属性-释放者自身",function:cards=>cards.filter(card=>{ | |||||
| const searchTypeArray = [2,35]; | |||||
| const skill = Skills[card.activeSkillId]; | const skill = Skills[card.activeSkillId]; | ||||
| if (searchTypeArray.includes(skill.type)) | if (searchTypeArray.includes(skill.type)) | ||||
| return true; | return true; | ||||
| @@ -2373,18 +2518,53 @@ function parseBigNumber(number) | |||||
| return subskills.some(subskill=>searchTypeArray.includes(subskill.type)); | return subskills.some(subskill=>searchTypeArray.includes(subskill.type)); | ||||
| } | } | ||||
| })}, | })}, | ||||
| {name:"自身攻击倍率指定属性伤害并吸血(单体)",function:cards=>cards.filter(card=>{ | |||||
| const searchTypeArray = [115]; | |||||
| {name:"大炮-伤害-自身攻击倍率(按倍率排序,范围取小)",function:cards=>cards.filter(card=>{ | |||||
| const searchTypeArray = [0,2,35,37,58,59,84,85,115]; | |||||
| const skill = Skills[card.activeSkillId]; | const skill = Skills[card.activeSkillId]; | ||||
| if (searchTypeArray.includes(skill.type)) | |||||
| if (searchTypeArray.includes(skill.type) && skill.id!=0) | |||||
| return true; | return true; | ||||
| else if (skill.type == 116 || skill.type == 118){ | else if (skill.type == 116 || skill.type == 118){ | ||||
| const subskills = skill.params.map(id=>Skills[id]); | const subskills = skill.params.map(id=>Skills[id]); | ||||
| return subskills.some(subskill=>searchTypeArray.includes(subskill.type)); | return subskills.some(subskill=>searchTypeArray.includes(subskill.type)); | ||||
| } | } | ||||
| }).sort((a,b)=>{ | |||||
| const searchTypeArray = [0,2,35,37,58,59,84,85,115]; | |||||
| const a_s = Skills[a.activeSkillId], b_s = Skills[b.activeSkillId]; | |||||
| function getSkillOrSub(skill) | |||||
| { | |||||
| if (searchTypeArray.includes(skill.type)) | |||||
| return skill; | |||||
| else | |||||
| return skill.params.map(id=>Skills[id]).find(subskill => searchTypeArray.includes(subskill.type)); | |||||
| } | |||||
| function getNumber(skill) | |||||
| { | |||||
| 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 = 0,b_pC = 0; | |||||
| a_pC = getNumber(getSkillOrSub(a_s)); | |||||
| b_pC = getNumber(getSkillOrSub(b_s)); | |||||
| return a_pC - b_pC; | |||||
| })}, | })}, | ||||
| {name:"对指定属性造成固定值指定属性伤害",function:cards=>cards.filter(card=>{ | |||||
| const searchTypeArray = [42]; | |||||
| {name:"大炮-伤害-指定属性数值(按数值排序)",function:cards=>cards.filter(card=>{ | |||||
| const searchTypeArray = [1,42,86,87]; | |||||
| const skill = Skills[card.activeSkillId]; | const skill = Skills[card.activeSkillId]; | ||||
| if (searchTypeArray.includes(skill.type)) | if (searchTypeArray.includes(skill.type)) | ||||
| return true; | return true; | ||||
| @@ -2392,18 +2572,58 @@ function parseBigNumber(number) | |||||
| const subskills = skill.params.map(id=>Skills[id]); | const subskills = skill.params.map(id=>Skills[id]); | ||||
| return subskills.some(subskill=>searchTypeArray.includes(subskill.type)); | return subskills.some(subskill=>searchTypeArray.includes(subskill.type)); | ||||
| } | } | ||||
| }).sort((a,b)=>{ | |||||
| const searchTypeArray = [1,42,86,87]; | |||||
| const a_s = Skills[a.activeSkillId], b_s = Skills[b.activeSkillId]; | |||||
| function getSkillOrSub(skill) | |||||
| { | |||||
| if (searchTypeArray.includes(skill.type)) | |||||
| return skill; | |||||
| else | |||||
| return skill.params.map(id=>Skills[id]).find(subskill => searchTypeArray.includes(subskill.type)); | |||||
| } | |||||
| function getNumber(skill) | |||||
| { | |||||
| 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 = 0,b_pC = 0; | |||||
| a_pC = getNumber(getSkillOrSub(a_s)); | |||||
| b_pC = getNumber(getSkillOrSub(b_s)); | |||||
| return a_pC - b_pC; | |||||
| })}, | })}, | ||||
| {name:"根据血量造成指定属性伤害",function:cards=>cards.filter(card=>{ | |||||
| {name:"大炮-伤害-根据剩余血量(按 1 HP 时倍率排序)",function:cards=>cards.filter(card=>{ | |||||
| const searchTypeArray = [110]; | const searchTypeArray = [110]; | ||||
| const skill = Skills[card.activeSkillId]; | const skill = Skills[card.activeSkillId]; | ||||
| if (searchTypeArray.includes(skill.type)) | |||||
| if (searchTypeArray.includes(skill.type) && skill.id!=0) | |||||
| return true; | return true; | ||||
| else if (skill.type == 116 || skill.type == 118){ | else if (skill.type == 116 || skill.type == 118){ | ||||
| const subskills = skill.params.map(id=>Skills[id]); | const subskills = skill.params.map(id=>Skills[id]); | ||||
| return subskills.some(subskill=>searchTypeArray.includes(subskill.type)); | return subskills.some(subskill=>searchTypeArray.includes(subskill.type)); | ||||
| } | } | ||||
| }).sort((a,b)=>{ | |||||
| const searchTypeArray = [110]; | |||||
| const a_s = Skills[a.activeSkillId], b_s = Skills[b.activeSkillId]; | |||||
| let a_pC = 0,b_pC = 0; | |||||
| a_pC = (searchTypeArray.includes(a_s.type)) ? | |||||
| a_s.params[3] : | |||||
| a_s.params.map(id=>Skills[id]).find(subskill => searchTypeArray.includes(subskill.type)).params[3]; | |||||
| b_pC = (searchTypeArray.includes(b_s.type)) ? | |||||
| b_s.params[3] : | |||||
| b_s.params.map(id=>Skills[id]).find(subskill => searchTypeArray.includes(subskill.type)).params[3]; | |||||
| return a_pC - b_pC; | |||||
| })}, | })}, | ||||
| {name:"根据队伍总血量造成指定属性伤害",function:cards=>cards.filter(card=>{ | |||||
| {name:"大炮-伤害-队伍总 HP(按倍率排序)",function:cards=>cards.filter(card=>{ | |||||
| const searchTypeArray = [143]; | const searchTypeArray = [143]; | ||||
| const skill = Skills[card.activeSkillId]; | const skill = Skills[card.activeSkillId]; | ||||
| if (searchTypeArray.includes(skill.type)) | if (searchTypeArray.includes(skill.type)) | ||||
| @@ -2412,9 +2632,42 @@ function parseBigNumber(number) | |||||
| const subskills = skill.params.map(id=>Skills[id]); | const subskills = skill.params.map(id=>Skills[id]); | ||||
| return subskills.some(subskill=>searchTypeArray.includes(subskill.type)); | return subskills.some(subskill=>searchTypeArray.includes(subskill.type)); | ||||
| } | } | ||||
| }).sort((a,b)=>{ | |||||
| const searchTypeArray = [143]; | |||||
| const a_s = Skills[a.activeSkillId], b_s = Skills[b.activeSkillId]; | |||||
| let a_pC = 0,b_pC = 0; | |||||
| a_pC = (searchTypeArray.includes(a_s.type)) ? | |||||
| a_s.params[0] : | |||||
| a_s.params.map(id=>Skills[id]).find(subskill => searchTypeArray.includes(subskill.type)).params[0]; | |||||
| b_pC = (searchTypeArray.includes(b_s.type)) ? | |||||
| b_s.params[0] : | |||||
| b_s.params.map(id=>Skills[id]).find(subskill => searchTypeArray.includes(subskill.type)).params[0]; | |||||
| return a_pC - b_pC; | |||||
| })}, | })}, | ||||
| {name:"根据队伍属性总攻击造成指定属性伤害",function:cards=>cards.filter(card=>{ | |||||
| {name:"大炮-伤害-队伍某属性总攻击(按倍率排序)",function:cards=>cards.filter(card=>{ | |||||
| const searchTypeArray = [144]; | |||||
| 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 = [144]; | const searchTypeArray = [144]; | ||||
| const a_s = Skills[a.activeSkillId], b_s = Skills[b.activeSkillId]; | |||||
| let a_pC = 0,b_pC = 0; | |||||
| a_pC = (searchTypeArray.includes(a_s.type)) ? | |||||
| a_s.params[1] : | |||||
| a_s.params.map(id=>Skills[id]).find(subskill => searchTypeArray.includes(subskill.type)).params[1]; | |||||
| b_pC = (searchTypeArray.includes(b_s.type)) ? | |||||
| b_s.params[1] : | |||||
| b_s.params.map(id=>Skills[id]).find(subskill => searchTypeArray.includes(subskill.type)).params[1]; | |||||
| return a_pC - b_pC; | |||||
| })}, | |||||
| {name:"大炮-特殊-吸血",function:cards=>cards.filter(card=>{ | |||||
| const searchTypeArray = [35,115]; | |||||
| const skill = Skills[card.activeSkillId]; | const skill = Skills[card.activeSkillId]; | ||||
| if (searchTypeArray.includes(skill.type)) | if (searchTypeArray.includes(skill.type)) | ||||
| return true; | return true; | ||||
| @@ -2423,7 +2676,6 @@ function parseBigNumber(number) | |||||
| return subskills.some(subskill=>searchTypeArray.includes(subskill.type)); | return subskills.some(subskill=>searchTypeArray.includes(subskill.type)); | ||||
| } | } | ||||
| })}, | })}, | ||||
| {name:"-----大炮有些复杂我没空做-----",function:cards=>cards}, | |||||
| {name:"======队长技======",function:cards=>cards}, | {name:"======队长技======",function:cards=>cards}, | ||||
| {name:"队长技固伤追击",function:cards=>cards.filter(card=>{ | {name:"队长技固伤追击",function:cards=>cards.filter(card=>{ | ||||
| const searchTypeArray = [199,200,201]; | const searchTypeArray = [199,200,201]; | ||||