From 667eb4c2cc1431fc44e775ac6200c8fefbf15ba2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9E=AB=E8=B0=B7=E5=89=91=E4=BB=99?= Date: Sun, 8 May 2022 17:54:55 +0800 Subject: [PATCH] =?UTF-8?q?=E5=9B=9E=E5=A4=8D=E5=8A=9B=E5=92=8C=E6=94=BB?= =?UTF-8?q?=E5=87=BB=E5=8A=9B=E4=BC=9A=E4=BA=92=E7=9B=B8=E6=8B=AE=E6=8A=97?= =?UTF-8?q?=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- script-json_data.js | 162 +++++++++++++++++++++++--------------------- 1 file changed, 84 insertions(+), 78 deletions(-) diff --git a/script-json_data.js b/script-json_data.js index 75390e0d..11a37787 100644 --- a/script-json_data.js +++ b/script-json_data.js @@ -1024,58 +1024,61 @@ const specialSearchFunctions = (function() { 156,168,231, //宝石姬 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) { @@ -1083,34 +1086,37 @@ const specialSearchFunctions = (function() { 50,90, 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) {