From 03e5576c16f0dfbb84bd94a5ecd55acab320619f Mon Sep 17 00:00:00 2001 From: strawberry42271 <2806566736@qq.com> Date: Sat, 8 Mar 2025 11:22:56 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8B=AF=E6=95=91=E8=A2=AB=E5=90=AF=E5=8A=A8?= =?UTF-8?q?=E6=9C=8D=E5=8A=A1=E6=B1=A1=E6=9F=93=E7=9A=84=E6=8F=92=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- project/data.js | 4 ++-- project/functions.js | 46 ++++++++++++++++++++++++++++++-------------- project/plugins.js | 2 -- 3 files changed, 34 insertions(+), 18 deletions(-) diff --git a/project/data.js b/project/data.js index 9d14712..f8a11c5 100644 --- a/project/data.js +++ b/project/data.js @@ -1555,9 +1555,9 @@ var data_a1e2fb4a_e986_4524_b0da_9b7ba7c0874d = "followers": [], "steps": 0, "matk": 0, - "spell": 0, + "spell": 100, "spelldef": 0, - "mhp": 0 + "mhp": 42 }, "startCanvas": [ { diff --git a/project/functions.js b/project/functions.js index afd7785..fc5b908 100644 --- a/project/functions.js +++ b/project/functions.js @@ -1062,7 +1062,7 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a = let per_damage = Math.max(enemyinfo.atk - heroinfo.def, 0), per_mdamage = Math.floor(enemyinfo.spell * (100 - heroinfo.mdef) / 100); - //这里记录伤害触发后的属性变化和动画,同时计入diff、damage + //这里记录伤害触发后的属性变化和动画,同时计入diff、damage(不要在此直接修改heroinfo和enemyinfo) if (core.hasSpecial(mon_special, 6)) { hero_damage += per_damage * enemy.n + per_mdamage * enemy.n } else { @@ -1071,12 +1071,14 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a = let animate = core.plugin.enemyanimate[enemy.id] ?? "sword" //这里可通过if更改默认的怪物攻击特效 hero_animate.push(animate) //勇士身上绘制sword动画 - if (heroinfo.mhp - hero_damage >= 0) { - heroinfo.mhp = heroinfo.mhp - hero_damage + if (heroinfo.mhp + (hero_diff.mhp ?? 0) - hero_damage >= 0) { + hero_diff.mhp = (hero_diff.mhp ?? 0) - hero_damage hero_damage = 0 + hero_diff.hp = (hero_diff.hp ?? 0) - hero_damage } else { - hero_damage -= heroinfo.mhp - heroinfo.hp -= hero_damage + hero_damage -= heroinfo.mhp + (hero_diff.mhp ?? 0) + hero_diff.mhp = (hero_diff.mhp ?? 0) - heroinfo.mhp - (hero_diff.mhp ?? 0) + hero_diff.hp = (hero_diff.hp ?? 0) - hero_damage } @@ -1089,7 +1091,7 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a = if (v.onAttack) { let mon_damage = 0 let hero_damage = 0 - //这里写生效装备的技能效果,同时对双方属性的修改计入diff + //这里写生效装备的技能效果,同时对双方属性的修改计入diff(不要在此直接修改heroinfo和enemyinfo) let animate = core.plugin.equipanimate[v.id] ?? "sword" //这里可通过if更改默认的道具特效 enemy_animate.push(animate) //勇士身上绘制动画 @@ -1104,6 +1106,13 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a = enemyDiffList.push(enemy_diff) heroanimateList.push(hero_animate) enemyanimateList.push(enemy_animate) + //处理属性变化 + for (let v in hero_diff) { + heroinfo[v] += hero_diff[v] + } + for (let v in enemy_diff) { + enemyinfo[v] += enemy_diff[v] + } continue //进入下一循环 } heroinfo.now += heroinfo.speed @@ -1124,12 +1133,12 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a = let per_damage = Math.max(heroinfo.atk - enemyinfo.def, 0) let per_mdamage = Math.max(Math.floor(heroinfo.matk * (100 - enemyinfo.mdef) / 100), 0) mon_damage = per_damage + per_mdamage - //这里记录伤害触发后的属性变化和动画,同时计入diff + //这里记录伤害触发后的属性变化和动画,同时计入diff(不要在此直接修改heroinfo和enemyinfo) let animate = core.plugin.heroanimate[equip0] ?? "sword" //这里可通过if更改默认的武器攻击特效 enemy_animate.push(animate) - enemyinfo.hp -= mon_damage + enemy_diff.hp = (enemy_diff.hp ?? 0) - mon_damage heroinfo.now -= oneTurn hero_turn++ @@ -1145,7 +1154,7 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a = let per_damage = Math.max(enemyinfo.atk - heroinfo.def, 0), per_mdamage = Math.floor(enemyinfo.spell * (100 - heroinfo.mdef) / 100); - //这里记录伤害触发后的属性变化和动画,同时计入diff、damage + //这里记录伤害触发后的属性变化和动画,同时计入diff、damage(不要在此直接修改heroinfo和enemyinfo) if (core.hasSpecial(mon_special, 6)) { hero_damage += per_damage * enemy.n + per_mdamage * enemy.n } else { @@ -1154,12 +1163,14 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a = let animate = core.plugin.enemyanimate[enemy.id] ?? "sword" //这里可通过if更改默认的怪物攻击特效 hero_animate.push(animate) //勇士身上绘制sword动画 - if (heroinfo.mhp - hero_damage >= 0) { - heroinfo.mhp = heroinfo.mhp - hero_damage + if (heroinfo.mhp + (hero_diff.mhp ?? 0) - hero_damage >= 0) { + hero_diff.mhp = (hero_diff.mhp ?? 0) - hero_damage hero_damage = 0 + hero_diff.hp = (hero_diff.hp ?? 0) - hero_damage } else { - hero_damage -= heroinfo.mhp - heroinfo.hp -= hero_damage + hero_damage -= heroinfo.mhp + (hero_diff.mhp ?? 0) + hero_diff.mhp = (hero_diff.mhp ?? 0) - heroinfo.mhp - (hero_diff.mhp ?? 0) + hero_diff.hp = (hero_diff.hp ?? 0) - hero_damage } @@ -1172,7 +1183,7 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a = if (v.now >= oneTurn) { let mon_damage = 0 let hero_damage = 0 - //这里写生效装备的技能效果,同时对双方属性的修改计入diff + //这里写生效装备的技能效果,同时对双方属性的修改计入diff(不要在此直接修改heroinfo和enemyinfo) let animate = core.plugin.equipanimate[v.id] ?? "sword" //这里可通过if更改默认的道具特效 enemy_animate.push(animate) //怪物身上绘制动画 @@ -1188,6 +1199,13 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a = enemyDiffList.push(enemy_diff) heroanimateList.push(hero_animate) enemyanimateList.push(enemy_animate) + //处理属性变化 + for (let v in hero_diff) { + heroinfo[v] += hero_diff[v] + } + for (let v in enemy_diff) { + enemyinfo[v] += enemy_diff[v] + } let a = hero_turn % 50 //出手50回合怪物生命未降低直接判负,避免死循环 if (a === 0) { if (enemyinfo.hp >= beforehp) { diff --git a/project/plugins.js b/project/plugins.js index 52a7c11..287dff0 100644 --- a/project/plugins.js +++ b/project/plugins.js @@ -304,8 +304,6 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 = ctx.fillRect(0, 0, ctx.canvas.width, ctx.canvas.height); lightDec = core.clamp(lightDec, 0, 1); - - // 绘制每个灯光效果 ctx.globalCompositeOperation = "destination-out"; lights.forEach(function (light) { // 坐标,半径,中心不透明度