From 8818bb153784a7dd5211bc30cb817f3fb2776f8d 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, 10 Sep 2021 21:32:04 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E221=E6=8A=80=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- script-skill-parser.js | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/script-skill-parser.js b/script-skill-parser.js index b5ce34d5..36d2a3c7 100644 --- a/script-skill-parser.js +++ b/script-skill-parser.js @@ -431,9 +431,9 @@ function skillParser(skillId) if (target?.value.bonusAtk != undefined && source?.value.bonusAtk != undefined) target.value.bonusAtk += source.value.bonusAtk; if (target?.value.bonusRcv != undefined && source?.value.bonusRcv != undefined) target.value.bonusRcv += source.value.bonusRcv; - if (target?.value.atk != undefined && source?.value.atk != undefined) target.value.atk += source.value.atk; - if (target?.value.hp != undefined && source?.value.hp != undefined) target.value.hp += source.value.hp; - if (target?.value.rcv != undefined && source?.value.rcv != undefined) target.value.rcv += source.value.rcv; + if (target?.value.atk != undefined && source?.value.atk != undefined) target.value.atk *= source.value.atk; + if (target?.value.hp != undefined && source?.value.hp != undefined) target.value.hp *= source.value.hp; + if (target?.value.rcv != undefined && source?.value.rcv != undefined) target.value.rcv *= source.value.rcv; } //十字 @@ -623,13 +623,11 @@ function skillParser(skillId) } const skill = Skills[skillId]; if (!skill) return []; - if (!parsers[skill.type]) { - return [{ kind: SkillKinds.Unknown }]; - } //此处用apply将这个parser传递到后面解析函数的this里,用于递归解析 - const result = parsers[skill.type].apply({ parser: skillParser }, skill.params); + const result = parsers?.[skill.type]?.apply({ parser: skillParser }, skill.params) + ?? { kind: SkillKinds.Unknown }; let skills = (Array.isArray(result) ? result : [result]) - .filter(s => Boolean(s)) + .filter(Boolean) .map(s => ({ id: skillId, type: skill.type, params: skill.params, ...s })); function splitProvisoSkill(skills) @@ -1363,6 +1361,9 @@ const parsers = { [220](attrs, combo) { return powerUp(null, null, p.mul([100,100]), c.LShape(flags(attrs)), null, [addCombo(combo)]); }, + [221](attrs, damage) { + return powerUp(null, null, p.mul([100,100]), c.LShape(flags(attrs)), null, [followAttackFixed(damage)]); + }, [223](combo, damage) { return powerUp(null, null, p.scaleCombos(combo, combo, [100, 100], [0, 0]), null, null, [followAttackFixed(damage)]); @@ -1425,6 +1426,7 @@ Array.prototype.nodeJoin = function(separator) //按住Ctrl点击技能在控制台输出技能的对象 function showParsedSkill(event) { if (event.ctrlKey) { + //const skillId = parseInt(this.getAttribute("data-skill-id")); console.log(this.skill); } } @@ -1437,6 +1439,7 @@ function renderSkillEntry(skills) const li = ul.appendChild(document.createElement("li")); li.className = skill.kind; li.appendChild(renderSkill(skill)); + //li.setAttribute("data-skill-id", skill.id); li.skill = skill; li.addEventListener("click", showParsedSkill); });