From 16f5c2d2ca133eac6551e7c293b9c1f3ea2f4b69 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9E=AB=E8=B0=B7=E5=89=91=E4=BB=99?= Date: Fri, 25 Jun 2021 19:08:42 +0800 Subject: [PATCH] =?UTF-8?q?229=E6=8A=80=E8=83=BD=E7=9A=84=E8=A7=A3?= =?UTF-8?q?=E6=9E=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- languages/zh-CN.js | 9 ++++++--- script-universal_function.js | 11 +++++++++++ 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/languages/zh-CN.js b/languages/zh-CN.js index c20ba96a..2d41e1e2 100644 --- a/languages/zh-CN.js +++ b/languages/zh-CN.js @@ -154,7 +154,7 @@ function parseSkillDescription(skill) { } const mulName = ["HP", "攻击力", "回复力"]; //获取固定的三维成长的名称 - function getFixedHpAtkRcvString(values) { + function getFixedHpAtkRcvString(values, scale = true) { let mulArr = null; if (Array.isArray(values)) { mulArr = [ @@ -174,7 +174,7 @@ function parseSkillDescription(skill) { if (hasMul.length > 0) { const hasDiff = hasMul.filter(m => m != hasMul[0]).length > 0; //存在不一样的值 if (hasDiff) { - str += mulArr.map((m, i) => (m > 0 && m != 1) ? (mulName[i] + (m >= 1 ? `×${m}倍` : `变为${m*100}%`)) : null).filter(s => s != null).join(","); + str += mulArr.map((m, i) => (m > 0 && m != 1) ? (mulName[i] + (scale ? (m >= 1 ? `×${m}倍` : `变为${m*100}%`) : `增加${m*100}%`)) : null).filter(s => s != null).join(","); } else { let hasMulName = mulName.filter((n, i) => mulArr[i] != 1); if (hasMulName.length >= 3) { @@ -182,7 +182,7 @@ function parseSkillDescription(skill) { } else { str += hasMulName.join("和"); } - str += hasMul[0] >= 1 ? `×${hasMul[0]}倍` : `变为${hasMul[0]*100}%`; + str += scale ? (hasMul[0] >= 1 ? `×${hasMul[0]}倍` : `变为${hasMul[0]*100}%`) : `增加${hasMul[0]*100}%`; } } else { str += "能力值没有变化"; @@ -1452,6 +1452,9 @@ function parseSkillDescription(skill) { case 224: str = `${sk[0]}回合内,敌人全体变为${attrN(sk[1])}属性。(不受防护盾的影响)`; break; + case 229: + str = `队伍中每存在1个${getAttrTypeString(flags(sk[0]), flags(sk[1]))}时,${getFixedHpAtkRcvString({hp:sk[2],atk:sk[3],rcv:sk[4]}, false)}`; + break; default: str = `未知的技能类型${type}(No.${id})`; //开发部分 diff --git a/script-universal_function.js b/script-universal_function.js index 19ff3a79..1d59d761 100644 --- a/script-universal_function.js +++ b/script-universal_function.js @@ -707,6 +707,17 @@ function countTeamHp(memberArr, leader1id, leader2id, solo, noAwoken = false) { break; } break; + case 229:{ //队员中存在每个属性或Type都算一次 + let cardsArr = memberArr.filter(m => m.id > 0).map(m => Cards[m.id]); //所有的卡片 + let attrsArr = cardsArr.flatMap(card => card.attr); //所有卡片的属性 + let typesArr = cardsArr.flatMap(card => card.types); //所有卡片的类型 + let correspondingAttrs = flags(sk[0]); //符合的属性 + let correspondingTypes = flags(sk[1]); //符合的类型 + let correspondingTimes = attrsArr.filter(a=>correspondingAttrs.includes(a)).length + typesArr.filter(t=>correspondingTypes.includes(t)).length; //符合的次数 + scale = sk[2] * correspondingTimes / 100 + 1; + console.log('属性、类型个数动态倍率,当前队长HP倍率为 %s',scale); + break; + } case 138: //调用其他队长技 scale = sk.reduce((pmul, skid) => pmul * memberHpMul(card, Skills[skid], memberArr, solo), 1) break;