From 94ae19ad8ddff8b090729f1aa4b302b3140f73a7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9E=AB=E8=B0=B7=E5=89=91=E4=BB=99?= Date: Tue, 21 Jan 2020 20:18:47 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E4=BA=86=E6=8C=89=E7=BB=84?= =?UTF-8?q?=E6=90=9C=E7=B4=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- languages/zh-dev.js | 309 +++++++++++++++++++++++++++++++++++++------- script.js | 33 ++--- style.css | 10 ++ 3 files changed, 290 insertions(+), 62 deletions(-) diff --git a/languages/zh-dev.js b/languages/zh-dev.js index c761bd84..68b60900 100644 --- a/languages/zh-dev.js +++ b/languages/zh-dev.js @@ -59,7 +59,7 @@ function parseSkillDescription(skill) } //返回flag里值为true的数组,如[1,4,7] function flags(num){ - return Array.from(new Array(33)).map((a,i)=>{return i;}).filter(i => num & (1 << i)); + return Array.from(new Array(32)).map((a,i)=>{return i;}).filter(i => num & (1 << i)); } //从二进制的数字中获得有哪些内容 function getNamesFromBinary(num,dataArr) @@ -76,14 +76,22 @@ function parseSkillDescription(skill) } const nb = getNamesFromBinary; //化简名称 - function getAttrTypeString(attrsArray,typesArray) + function getAttrTypeString(attrsArray = [],typesArray = []) { let outArr = []; - if (attrsArray.length) + if (attrsArray && attrsArray.indexOf(0)>=0 && + attrsArray.indexOf(1)>=0 && + attrsArray.indexOf(2)>=0 && + attrsArray.indexOf(3)>=0 && + attrsArray.indexOf(4)>=0) + { + return "所有属性"; + } + if (attrsArray && attrsArray.length) { outArr.push(attrsArray.map(attrN).join("、") + "属性"); } - if (typesArray.length) + if (typesArray && typesArray.length) { outArr.push(typesArray.map(typeN).join("、") + "类型"); } @@ -123,7 +131,7 @@ function parseSkillDescription(skill) if (hasDiff) { str += mulArr.map((m,i)=>{ - return m!=1?`${mulName[i]}×${m}倍`:null; + return (m>0 && m!=1)?(mulName[i]+(m>=1?`×${m}倍`:`变为${m*100}%`)):null; }).filter(s=>{return s!=null;}).join(","); }else { @@ -135,7 +143,7 @@ function parseSkillDescription(skill) { str+=hasMulName.join("和"); } - str += `×${hasMul[0]}倍`; + str += hasMul[0]>=1?`×${hasMul[0]}倍`:`变为${hasMul[0]*100}%`; } }else { @@ -442,6 +450,9 @@ function parseSkillDescription(skill) strArr = [sk[0],sk[1]].filter(s=>{return s>0;}).map(s=>{if(s==1) return "攻击力"; else if(s==2) return "回复力";}); str = `使用技能时,所有宠物的${strArr.join("和")}×${sk[2]/100}倍`; break; + case 101: + str = `刚刚好${sk[0]}连击时,所有宠物的${getFixedHpAtkRcvString({atk:sk[1]})}`; + break; case 103: strArr = [sk[1],sk[2]].filter(s=>{return s>0;}).map(s=>{if(s==1) return "攻击力"; else if(s==2) return "回复力";}); str = `${sk[0]}连击或以上时所有宠物的${strArr.join("和")}×${sk[3]/100}倍`; @@ -450,8 +461,21 @@ function parseSkillDescription(skill) strArr = [sk[2],sk[3]].filter(s=>{return s>0;}).map(s=>{if(s==1) return "攻击力"; else if(s==2) return "回复力";}); str = `${sk[0]}连击以上时时${nb(sk[1],attrsName).join("、")}属性宠物的${strArr.join("和")}×${sk[4]/100}倍`; break; + case 105: + str = `所有宠物的${getFixedHpAtkRcvString({rcv:sk[0],atk:sk[1]})}`; + break; + case 106: + str = `所有宠物的${getFixedHpAtkRcvString({hp:sk[0],atk:sk[1]})}`; + break; + case 107: + str = `所有宠物的${getFixedHpAtkRcvString({hp:sk[0]})}`; + break; case 108: - str = `HP 变为${sk[0]}%,${typeN(sk[1])}类型宠物的攻击力×${sk[2]/100}倍`; + str = `所有宠物的${getFixedHpAtkRcvString({hp:sk[0]})},${typeN(sk[1])}类型宠物的攻击力×${sk[2]/100}倍`; + break; + case 109: + str = `相连消除${sk[1]}个或以上${nb(sk[0],attrsName).join("或")}宝珠时`; + if (sk[2]) str += `,所有宠物的${getFixedHpAtkRcvString({atk:sk[2]})}`; break; case 110: str = `根据余下 HP 对敌方${sk[0]?"1":"全"}体造成${attrN(sk[1])}属性伤害(100% HP 时为自身攻击力×${sk[2]/100}倍,1 HP 时为自身攻击力×${sk[3]/100}倍)`; @@ -561,7 +585,7 @@ function parseSkillDescription(skill) str = `${strArr.map(a=>{return nb(a, attrsName);}).join("、")}中${sk[5]}串同时攻击时,所有宠物的攻击力×${sk[6]/100}倍,每多1串+${sk[7]/100}倍,最大${strArr.length}串时×${(sk[6]+sk[7]*(strArr.length-sk[5]))/100}倍`; }else {//木寶珠有2COMBO時,所有寵物的攻擊力3倍,每多1COMBO+4倍,最大5COMBO時15倍 - str = `${nb(strArr[0], attrsName).join("、")}宝珠有${strArr.length}串时,所有宠物的攻击力×${sk[6]/100}倍,每多1串+${sk[7]/100}倍,最大${strArr.length}串时×${(sk[6]+sk[7]*(strArr.length-sk[5]))/100}倍`; + str = `${nb(strArr[0], attrsName).join("、")}宝珠有${sk[5]}串时,所有宠物的攻击力×${sk[6]/100}倍,每多1串+${sk[7]/100}倍,最大${strArr.length}串时×${(sk[6]+sk[7]*(strArr.length-sk[5]))/100}倍`; } }else { @@ -570,7 +594,7 @@ function parseSkillDescription(skill) str = `${strArr.map(a=>{return nb(a, attrsName);}).join("、")}同时攻击时,所有宠物的攻击力×${sk[6]/100}倍`; }else {//光寶珠有2COMBO或以上時,所有寵物的攻擊力3倍 - str = `${nb(strArr[0], attrsName).join("、")}宝珠有${strArr.length}串或以上时,所有宠物的攻击力×${sk[6]/100}倍`; + str = `${nb(strArr[0], attrsName).join("、")}宝珠有${sk[5]}串或以上时,所有宠物的攻击力×${sk[6]/100}倍`; } } break; @@ -669,7 +693,7 @@ function parseSkillDescription(skill) } break; case 131: - str = `HP ${sk[0]}%以上时`; + str = `HP ${sk[0]==100?"全满":`${sk[0]}%以上`}时`; strArr =[]; if (sk[1] & 31 == 31) { @@ -709,6 +733,16 @@ function parseSkillDescription(skill) if (sk[3]) {strArr.push(`回复力×${sk[3]/100}倍`);} str += strArr.join("、"); break; + case 136: + str = ""; + str += `${getAttrTypeString(flags(sk[0]))}宠物的${getFixedHpAtkRcvString({hp:sk[1],atk:sk[2],rcv:sk[3]})}`; + if (sk[4]) str += `,${getAttrTypeString(flags(sk[4]))}宠物的${getFixedHpAtkRcvString({hp:sk[5],atk:sk[6],rcv:sk[7]})}`; + break; + case 137: + str = ""; + str += `${getAttrTypeString(null,flags(sk[0]))}宠物的${getFixedHpAtkRcvString({hp:sk[1],atk:sk[2],rcv:sk[3]})}`; + if (sk[4]) str += `,${getAttrTypeString(null,flags(sk[4]))}宠物的${getFixedHpAtkRcvString({hp:sk[5],atk:sk[6],rcv:sk[7]})}`; + break; case 138: //多内容队长技能,按顺序组合发动如下队长技能: str = `