| @@ -172,7 +172,7 @@ function parseSkillDescription(skill) | |||||
| str = `对敌方全体造成${sk[1]}的${attrN(sk[0])}属性攻击`; | str = `对敌方全体造成${sk[1]}的${attrN(sk[0])}属性攻击`; | ||||
| break; | break; | ||||
| case 2: | case 2: | ||||
| str = `对敌方1体造成自身攻击力×${sk[0]/100}倍的伤害`; | |||||
| str = `对敌方1体造成自身攻击力×${sk[0]/100}${sk[1]&&sk[1]!=sk[0]?'~'+sk[1]/100:''}倍的自身属性伤害`; | |||||
| break; | break; | ||||
| case 3: | case 3: | ||||
| str = `${sk[0]}回合内,受到的伤害减少${sk[1]}%`; | str = `${sk[0]}回合内,受到的伤害减少${sk[1]}%`; | ||||
| @@ -261,7 +261,7 @@ function parseSkillDescription(skill) | |||||
| str = `宝珠移动和消除的声音变成太鼓达人的音效`; | str = `宝珠移动和消除的声音变成太鼓达人的音效`; | ||||
| break; | break; | ||||
| case 35: | case 35: | ||||
| str = `对敌方1体造成自身攻击力×${sk[0]/100}倍的伤害,并回复${sk[1]}%的 HP`; | |||||
| str = `对敌方1体造成自身攻击力×${sk[0]/100}倍的自身属性伤害,并回复伤害${sk[1]}%的 HP`; | |||||
| break; | break; | ||||
| case 36: | case 36: | ||||
| str = `受到的${attrN(sk[0])}属性${sk[1]>=0?`和${attrN(sk[1])}属性`:""}的伤害减少${sk[2]}%`; | str = `受到的${attrN(sk[0])}属性${sk[1]>=0?`和${attrN(sk[1])}属性`:""}的伤害减少${sk[2]}%`; | ||||
| @@ -478,7 +478,7 @@ function parseSkillDescription(skill) | |||||
| if (sk[2]) str += `,所有宠物的${getFixedHpAtkRcvString({atk:sk[2]})}`; | if (sk[2]) str += `,所有宠物的${getFixedHpAtkRcvString({atk:sk[2]})}`; | ||||
| break; | break; | ||||
| case 110: | case 110: | ||||
| str = `根据余下 HP 对敌方${sk[0]?"1":"全"}体造成${attrN(sk[1])}属性伤害(100% HP 时为自身攻击力×${sk[2]/100}倍,1 HP 时为自身攻击力×${sk[3]/100}倍)`; | |||||
| str = `根据余下 HP 对敌方${sk[0] || "全"}体造成${attrN(sk[1])}属性伤害(100% HP 时为自身攻击力×${sk[2]/100}倍,1 HP 时为自身攻击力×${sk[3]/100}倍)`; | |||||
| break; | break; | ||||
| //case 111: 在45 | //case 111: 在45 | ||||
| case 115: | case 115: | ||||
| @@ -654,7 +654,7 @@ function parseSkillDescription(skill) | |||||
| str = `对敌方全体造成队伍总 HP×${sk[0]/100}倍的${attrN(sk[1])}属性伤害`; | str = `对敌方全体造成队伍总 HP×${sk[0]/100}倍的${attrN(sk[1])}属性伤害`; | ||||
| break; | break; | ||||
| case 144: | case 144: | ||||
| str = `对敌方${sk[2]?sk[2]:"全"}体造成${nb(sk[0],attrsName).join("、")}属性总攻击力×${sk[1]/100}倍的${attrN(sk[3])}属性伤害`; | |||||
| str = `对敌方${sk[2] || "全"}体造成${nb(sk[0],attrsName).join("、")}属性总攻击力×${sk[1]/100}倍的${attrN(sk[3])}属性伤害`; | |||||
| break; | break; | ||||
| case 145: | case 145: | ||||
| str = `回复队伍总回复力×${sk[0]/100}倍的 HP`; | str = `回复队伍总回复力×${sk[0]/100}倍的 HP`; | ||||
| @@ -2217,6 +2217,32 @@ 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=>{ | |||||
| const searchTypeArray = [55,188]; | |||||
| 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 = [55,188]; | |||||
| const a_s = Skills[a.activeSkillId], b_s = Skills[b.activeSkillId]; | |||||
| let a_pC = 0,b_pC = 0; | |||||
| function totalDamage(skill) | |||||
| { | |||||
| const subSkill = skill.params.map(id=>Skills[id]).find(subskill => searchTypeArray.includes(subskill.type)); | |||||
| return subSkill.params[0] * skill.params.filter(p=>p==subSkill.id).length; | |||||
| } | |||||
| a_pC = searchTypeArray.includes(a_s.type) ? | |||||
| a_s.params[0] : | |||||
| totalDamage(a_s); | |||||
| b_pC = searchTypeArray.includes(b_s.type) ? | |||||
| b_s.params[0] : | |||||
| totalDamage(b_s); | |||||
| 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]; | ||||
| @@ -2238,8 +2264,47 @@ 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=>{ | |||||
| const searchTypeArray = [55,188]; | |||||
| {name:"单体大炮",function:cards=>cards.filter(card=>{ | |||||
| const searchTypeArray = [2,35,37,59,84,86,110,115,144]; | |||||
| const skill = Skills[card.activeSkillId]; | |||||
| function isSingle(skill) | |||||
| { | |||||
| if (skill.type == 110) | |||||
| return Boolean(skill.params[0]); | |||||
| else if (skill.type == 114) | |||||
| return Boolean(skill.params[2]); | |||||
| else | |||||
| return true; | |||||
| } | |||||
| if (searchTypeArray.includes(skill.type) && isSingle(skill)) | |||||
| 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) && isSingle(subskill)); | |||||
| } | |||||
| })}, | |||||
| {name:"全体大炮",function:cards=>cards.filter(card=>{ | |||||
| const searchTypeArray = [0,1,58,85,87,110,143,144]; | |||||
| const skill = Skills[card.activeSkillId]; | |||||
| function isAll(skill) | |||||
| { | |||||
| if (skill.id == 0 ) return false; | |||||
| if (skill.type == 110) | |||||
| return !Boolean(skill.params[0]); | |||||
| else if (skill.type == 114) | |||||
| return !Boolean(skill.params[2]); | |||||
| else | |||||
| return true; | |||||
| } | |||||
| if (searchTypeArray.includes(skill.type) && isAll(skill)) | |||||
| 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) && isAll(subskill)); | |||||
| } | |||||
| })}, | |||||
| {name:"自身攻击倍率指定属性伤害(全体)",function:cards=>cards.filter(card=>{ | |||||
| const searchTypeArray = [0,58,85]; | |||||
| const skill = Skills[card.activeSkillId]; | const skill = Skills[card.activeSkillId]; | ||||
| if (searchTypeArray.includes(skill.type)) | if (searchTypeArray.includes(skill.type)) | ||||
| return true; | return true; | ||||
| @@ -2247,22 +2312,116 @@ 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 = [55,188]; | |||||
| const a_s = Skills[a.activeSkillId], b_s = Skills[b.activeSkillId]; | |||||
| let a_pC = 0,b_pC = 0; | |||||
| function totalDamage(skill) | |||||
| { | |||||
| const subSkill = skill.params.map(id=>Skills[id]).find(subskill => searchTypeArray.includes(subskill.type)); | |||||
| return subSkill.params[0] * skill.params.filter(p=>p==subSkill.id).length; | |||||
| })}, | |||||
| {name:"固定值指定属性伤害(全体)",function:cards=>cards.filter(card=>{ | |||||
| const searchTypeArray = [1,87]; | |||||
| 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)); | |||||
| } | |||||
| })}, | |||||
| {name:"固定值指定属性伤害(单体)",function:cards=>cards.filter(card=>{ | |||||
| const searchTypeArray = [86]; | |||||
| 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)); | |||||
| } | |||||
| })}, | |||||
| {name:"自身攻击倍率自身属性伤害(单体)",function:cards=>cards.filter(card=>{ | |||||
| const searchTypeArray = [2]; | |||||
| 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)); | |||||
| } | |||||
| })}, | |||||
| {name:"造成敌方伤害后吸血",function:cards=>cards.filter(card=>{ | |||||
| const searchTypeArray = [35,115]; | |||||
| 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)); | |||||
| } | |||||
| })}, | |||||
| {name:"自身攻击倍率自身属性伤害并吸血(单体)",function:cards=>cards.filter(card=>{ | |||||
| const searchTypeArray = [35]; | |||||
| 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)); | |||||
| } | |||||
| })}, | |||||
| {name:"自身攻击倍率指定属性伤害(单体)",function:cards=>cards.filter(card=>{ | |||||
| const searchTypeArray = [37,59,84]; | |||||
| 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)); | |||||
| } | |||||
| })}, | |||||
| {name:"自身攻击倍率指定属性伤害并吸血(单体)",function:cards=>cards.filter(card=>{ | |||||
| const searchTypeArray = [115]; | |||||
| 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)); | |||||
| } | |||||
| })}, | |||||
| {name:"对指定属性造成固定值指定属性伤害",function:cards=>cards.filter(card=>{ | |||||
| const searchTypeArray = [42]; | |||||
| 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)); | |||||
| } | |||||
| })}, | |||||
| {name:"根据血量造成指定属性伤害",function:cards=>cards.filter(card=>{ | |||||
| const searchTypeArray = [110]; | |||||
| 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)); | |||||
| } | |||||
| })}, | |||||
| {name:"根据队伍总血量造成指定属性伤害",function:cards=>cards.filter(card=>{ | |||||
| const searchTypeArray = [143]; | |||||
| 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)); | |||||
| } | |||||
| })}, | |||||
| {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)); | |||||
| } | } | ||||
| a_pC = searchTypeArray.includes(a_s.type) ? | |||||
| a_s.params[0] : | |||||
| totalDamage(a_s); | |||||
| b_pC = searchTypeArray.includes(b_s.type) ? | |||||
| b_s.params[0] : | |||||
| totalDamage(b_s); | |||||
| return a_pC - b_pC; | |||||
| })}, | })}, | ||||
| {name:"-----大炮有些复杂我没空做-----",function:cards=>cards}, | {name:"-----大炮有些复杂我没空做-----",function:cards=>cards}, | ||||
| {name:"======队长技======",function:cards=>cards}, | {name:"======队长技======",function:cards=>cards}, | ||||