| @@ -1024,58 +1024,61 @@ const specialSearchFunctions = (function() { | |||||
| 156,168,231, //宝石姬 | 156,168,231, //宝石姬 | ||||
| 228, //属性、类型数量 | 228, //属性、类型数量 | ||||
| ]; | ]; | ||||
| const skill = getCardActiveSkill(card, searchTypeArray); | |||||
| const outObj = { | |||||
| skilltype: 0, //0为没有,1为宝石姬类,2为指定类型、属性 | |||||
| types: [], | |||||
| attrs: [], | |||||
| awoken: [], | |||||
| rate: 0, | |||||
| turns: 0, | |||||
| }; | |||||
| if (!skill) return outObj; | |||||
| const sk = skill.params; | |||||
| if (skill.type == 88 || skill.type == 92) | |||||
| { | |||||
| outObj.skilltype = 2; | |||||
| outObj.types = sk.slice(1, skill.type == 88 ? 2 : 3); | |||||
| outObj.turns = sk[0]; | |||||
| outObj.rate = sk[skill.type == 88 ? 2 : 3]; | |||||
| } | |||||
| else if(skill.type == 50 || skill.type == 90) | |||||
| { | |||||
| outObj.attrs = sk.slice(1, skill.type == 50 ? 2 : 3).filter(a=>a !== 5); | |||||
| if (!outObj.attrs.length) //去除回复力 | |||||
| return outObj; | |||||
| outObj.skilltype = 2; | |||||
| outObj.turns = sk[0]; | |||||
| outObj.rate = sk[skill.type == 50 ? 2 : 3]; | |||||
| } | |||||
| else if(skill.type == 156 && sk[4] == 2 //必须要是加攻击力 | |||||
| || skill.type == 168) | |||||
| { | |||||
| outObj.skilltype = 1; | |||||
| outObj.awoken = sk.slice(1, skill.type == 168 ? 7 : 4).filter(Boolean); | |||||
| outObj.turns = sk[0]; | |||||
| outObj.rate = skill.type == 168 ? sk[7] : sk[5] - 100; | |||||
| } | |||||
| else if(skill.type == 228 && sk[3] > 0) | |||||
| { | |||||
| outObj.skilltype = 1; | |||||
| outObj.attrs = flags(sk[1]); | |||||
| outObj.types = flags(sk[2]); | |||||
| outObj.turns = sk[0]; | |||||
| outObj.rate = sk[3]; | |||||
| } | |||||
| else if(skill.type == 231 && sk[6] > 0) | |||||
| { | |||||
| outObj.skilltype = 1; | |||||
| outObj.awoken = sk.slice(1, 5).filter(Boolean).filter(flags); | |||||
| outObj.turns = sk[0]; | |||||
| outObj.rate = sk[6]; | |||||
| const skills = getCardActiveSkills(card, searchTypeArray); | |||||
| return skills.map(atkBuffParse).find(s=>s.rate != 0) || atkBuffParse(); | |||||
| function atkBuffParse(skill) { | |||||
| const outObj = { | |||||
| skilltype: 0, //0为没有,1为宝石姬类,2为指定类型、属性 | |||||
| types: [], | |||||
| attrs: [], | |||||
| awoken: [], | |||||
| rate: 0, | |||||
| turns: 0, | |||||
| }; | |||||
| if (!skill) return outObj; | |||||
| const sk = skill.params; | |||||
| if (skill.type == 88 || skill.type == 92) | |||||
| { | |||||
| outObj.skilltype = 2; | |||||
| outObj.types = sk.slice(1, skill.type == 88 ? 2 : 3); | |||||
| outObj.turns = sk[0]; | |||||
| outObj.rate = sk[skill.type == 88 ? 2 : 3]; | |||||
| } | |||||
| else if(skill.type == 50 || skill.type == 90) | |||||
| { | |||||
| outObj.attrs = sk.slice(1, skill.type == 50 ? 2 : 3).filter(a=>a !== 5); | |||||
| if (!outObj.attrs.length) //去除回复力 | |||||
| return outObj; | |||||
| outObj.skilltype = 2; | |||||
| outObj.turns = sk[0]; | |||||
| outObj.rate = sk[skill.type == 50 ? 2 : 3]; | |||||
| } | |||||
| else if(skill.type == 156 && sk[4] == 2 //必须要是加攻击力 | |||||
| || skill.type == 168) | |||||
| { | |||||
| outObj.skilltype = 1; | |||||
| outObj.awoken = sk.slice(1, skill.type == 168 ? 7 : 4).filter(Boolean); | |||||
| outObj.turns = sk[0]; | |||||
| outObj.rate = skill.type == 168 ? sk[7] : sk[5] - 100; | |||||
| } | |||||
| else if(skill.type == 228 && sk[3] > 0) | |||||
| { | |||||
| outObj.skilltype = 1; | |||||
| outObj.attrs = flags(sk[1]); | |||||
| outObj.types = flags(sk[2]); | |||||
| outObj.turns = sk[0]; | |||||
| outObj.rate = sk[3]; | |||||
| } | |||||
| else if(skill.type == 231 && sk[6] > 0) | |||||
| { | |||||
| outObj.skilltype = 1; | |||||
| outObj.awoken = sk.slice(1, 5).filter(Boolean).filter(flags); | |||||
| outObj.turns = sk[0]; | |||||
| outObj.rate = sk[6]; | |||||
| } | |||||
| return outObj; | |||||
| } | } | ||||
| return outObj; | |||||
| } | } | ||||
| function rcvBuff_Rate(card) | function rcvBuff_Rate(card) | ||||
| { | { | ||||
| @@ -1083,34 +1086,37 @@ const specialSearchFunctions = (function() { | |||||
| 50,90, | 50,90, | ||||
| 228, 231, //宝石姬 | 228, 231, //宝石姬 | ||||
| ]; | ]; | ||||
| const skill = getCardActiveSkill(card, searchTypeArray); | |||||
| const outObj = { | |||||
| skilltype: 0, //0为没有,1为宝石姬类,2为指定类型、属性 | |||||
| types: [], | |||||
| attrs: [], | |||||
| awoken: [], | |||||
| rate: 0, | |||||
| turns: 0, | |||||
| }; | |||||
| if (!skill) return outObj; | |||||
| const sk = skill.params; | |||||
| if (skill.type == 228 && sk[4] > 0) { | |||||
| outObj.skilltype = 1; | |||||
| outObj.attrs = flags(sk[1]); | |||||
| outObj.types = flags(sk[2]); | |||||
| outObj.turns = sk[0]; | |||||
| outObj.rate = sk[4]; | |||||
| } else if (skill.type == 231 && sk[7] > 0) { | |||||
| outObj.skilltype = 1; | |||||
| outObj.awoken = sk.slice(1, 5).filter(Boolean).filter(flags); | |||||
| outObj.turns = sk[0]; | |||||
| outObj.rate = sk[7]; | |||||
| } else if (skill.type == 50 || skill.type == 90) { | |||||
| outObj.skilltype = sk.slice(1,sk.length>2?-1:undefined).includes(5) ? 2 : 0; | |||||
| outObj.turns = sk[0]; | |||||
| outObj.rate = sk.length > 2 ? sk[sk.length-1] : 0; | |||||
| const skills = getCardActiveSkills(card, searchTypeArray); | |||||
| return skills.map(rcvBuffParse).find(s=>s.rate != 0) || rcvBuffParse(); | |||||
| function rcvBuffParse(skill) { | |||||
| const outObj = { | |||||
| skilltype: 0, //0为没有,1为宝石姬类,2为指定类型、属性 | |||||
| types: [], | |||||
| attrs: [], | |||||
| awoken: [], | |||||
| rate: 0, | |||||
| turns: 0, | |||||
| }; | |||||
| if (!skill) return outObj; | |||||
| const sk = skill.params; | |||||
| if (skill.type == 228 && sk[4] > 0) { | |||||
| outObj.skilltype = 1; | |||||
| outObj.attrs = flags(sk[1]); | |||||
| outObj.types = flags(sk[2]); | |||||
| outObj.turns = sk[0]; | |||||
| outObj.rate = sk[4]; | |||||
| } else if (skill.type == 231 && sk[7] > 0) { | |||||
| outObj.skilltype = 1; | |||||
| outObj.awoken = sk.slice(1, 5).filter(Boolean).filter(flags); | |||||
| outObj.turns = sk[0]; | |||||
| outObj.rate = sk[7]; | |||||
| } else if (skill.type == 50 || skill.type == 90) { | |||||
| outObj.skilltype = sk.slice(1,sk.length>2?-1:undefined).includes(5) ? 2 : 0; | |||||
| outObj.turns = sk[0]; | |||||
| outObj.rate = sk.length > 2 ? sk[sk.length-1] : 0; | |||||
| } | |||||
| return outObj; | |||||
| } | } | ||||
| return outObj; | |||||
| } | } | ||||
| function damageSelf_Rate(card) | function damageSelf_Rate(card) | ||||
| { | { | ||||