229技能的解析

This commit is contained in:
枫谷剑仙 2021-06-25 19:08:42 +08:00
parent 7fbe1e9769
commit 16f5c2d2ca
2 changed files with 17 additions and 3 deletions

View File

@ -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})`;
//开发部分

View File

@ -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;