229技能的解析
This commit is contained in:
parent
7fbe1e9769
commit
16f5c2d2ca
|
@ -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})`;
|
||||
//开发部分
|
||||
|
|
|
@ -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;
|
||||
|
|
Loading…
Reference in New Issue