From fcbb8add3e8f6a06742a6d62632c8a250079cc70 Mon Sep 17 00:00:00 2001 From: itcfangye Date: Mon, 10 Feb 2025 20:56:37 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E6=88=98=E6=96=97=E5=87=BD=E6=95=B0?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- project/functions.js | 458 ++++++++++++++++++++++--------------------- 1 file changed, 233 insertions(+), 225 deletions(-) diff --git a/project/functions.js b/project/functions.js index 5e413e0..e3d5d56 100644 --- a/project/functions.js +++ b/project/functions.js @@ -524,222 +524,223 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a = }, "enemys": { "getSpecials": function () { - // 获得怪物的特殊属性,每一行定义一个特殊属性。 - // 分为五项,第一项为该特殊属性的数字,第二项为特殊属性的名字,第三项为特殊属性的描述 - // 第四项为该特殊属性的颜色,可以写十六进制 #RRGGBB 或者 [r,g,b,a] 四元数组 - // 第五项为该特殊属性的标记;目前 1 代表是地图类技能(需要进行遍历全图) - // 名字和描述可以直接写字符串,也可以写个function将怪物传进去 - return [ - [1, "先攻", "怪物首先攻击", "#ffcc33"], - [3, "坚固", "怪物防御不小于角色攻击-1", "#c0b088"], - [ - 6, - function (enemy) { - return (enemy.n || "") + "连击"; - }, - function (enemy) { - return "怪物每回合攻击" + (enemy.n || 4) + "次"; - }, - "#ffee77", - ], - [ - 7, - "破甲", - function (enemy) { - return ( - "战斗前,怪物附加角色防御的" + - Math.floor( - 100 * (enemy.breakArmor || core.values.breakArmor || 0) - ) + - "%作为伤害" - ); - }, - "#88c0ff", - ], - [ - 8, - "反击", - function (enemy) { - return ( - "战斗时,怪物每回合附加角色攻击的" + - Math.floor( - 100 * (enemy.counterAttack || core.values.counterAttack || 0) - ) + - "%作为伤害,无视角色防御" - ); - }, - "#ffaa44", - ], - [ - 9, - "净化", - function (enemy) { - return ( - "战斗前,怪物附加角色护盾的" + - (enemy.purify || core.values.purify) + - "倍作为伤害" - ); - }, - "#80eed6", - ], - [10, "模仿", "怪物的攻防和角色攻防相等", "#b0c0dd"], - [ - 11, - "吸血", - function (enemy) { - return ( - "战斗前,怪物首先吸取角色的" + - Math.floor(100 * enemy.vampire || 0) + - "%生命(约" + - Math.floor((enemy.vampire || 0) * core.getStatus("hp")) + - "点)作为伤害" + - (enemy.add ? ",并把伤害数值加到自身生命上" : "") - ); - }, - "#dd4448", - ], - [ - 12, - "中毒", - "战斗后,角色陷入中毒状态,每一步损失生命" + - core.values.poisonDamage + - "点", - "#99ee88", - ], - [ - 13, - "衰弱", - "战斗后,角色陷入衰弱状态,攻防暂时下降" + - (core.values.weakValue >= 1 - ? core.values.weakValue + "点" - : parseInt(core.values.weakValue * 100) + "%"), - "#f0bbcc", - ], - [ - 14, - "诅咒", - "战斗后,角色陷入诅咒状态,战斗无法获得金币和经验", - "#bbeef0", - ], - [ - 15, - "领域", - function (enemy) { - return ( - "经过怪物周围" + - (enemy.zoneSquare ? "九宫格" : "十字") + - "范围内" + - (enemy.range || 1) + - "格时自动减生命" + - (enemy.zone || 0) + - "点" - ); - }, - "#c677dd", - ], - [16, "夹击", "经过两只相同的怪物中间,角色生命值变成一半", "#bb99ee"], - [ - 17, - "仇恨", - "战斗前,怪物附加之前积累的仇恨值作为伤害;战斗后,释放一半的仇恨值。(每杀死一个怪物获得" + - (core.values.hatred || 0) + - "点仇恨值)", - "#b0b666", - ], - [ - 18, - "阻击", - function (enemy) { - return ( - "经过怪物周围" + - (enemy.zoneSquare ? "九宫格" : "十字") + - "时自动减生命" + - (enemy.repulse || 0) + - "点,同时怪物后退一格" - ); - }, - "#8888e6", - ], - [19, "自爆", "战斗后角色的生命值变成1", "#ff6666"], - [20, "无敌", "角色无法打败怪物,除非拥有十字架", "#aaaaaa"], - [ - 21, - "退化", - function (enemy) { - return ( - "战斗后角色永久下降" + - (enemy.atkValue || 0) + - "点攻击和" + - (enemy.defValue || 0) + - "点防御" - ); - }, - ], - [ - 22, - "固伤", - function (enemy) { - return ( - "战斗前,怪物对角色造成" + - (enemy.damage || 0) + - "点固定伤害,未开启负伤时无视角色护盾。" - ); - }, - "#ff9977", - ], - [23, "重生", "怪物被击败后,角色转换楼层则怪物将再次出现", "#a0e0ff"], - [ - 24, - "激光", - function (enemy) { - return "经过怪物同行或同列时自动减生命" + (enemy.laser || 0) + "点"; - }, - "#dda0dd", - ], - [ - 25, - "光环", - function (enemy) { - return ( - (enemy.range != null - ? (enemy.haloSquare ? "该怪物九宫格" : "该怪物十字") + - enemy.haloRange + - "格范围内" - : "同楼层所有") + - "怪物生命提升" + - (enemy.hpBuff || 0) + - "%,攻击提升" + - (enemy.atkBuff || 0) + - "%,防御提升" + - (enemy.defBuff || 0) + - "%," + - (enemy.haloAdd ? "可叠加" : "不可叠加") - ); - }, - "#e6e099", - 1, - ], - [ - 26, - "支援", - "当周围一圈的怪物受到攻击时将上前支援,并组成小队战斗。", - "#77c0b6", - 1, - ], - [ - 27, - "捕捉", - function (enemy) { - return ( - "当走到怪物周围" + - (enemy.zoneSquare ? "九宫格" : "十字") + - "时会强制进行战斗。" - ); - }, - "#c0ddbb", - ], - ]; - }, + // 获得怪物的特殊属性,每一行定义一个特殊属性。 + // 分为五项,第一项为该特殊属性的数字,第二项为特殊属性的名字,第三项为特殊属性的描述 + // 第四项为该特殊属性的颜色,可以写十六进制 #RRGGBB 或者 [r,g,b,a] 四元数组 + // 第五项为该特殊属性的标记;目前 1 代表是地图类技能(需要进行遍历全图) + // 名字和描述可以直接写字符串,也可以写个function将怪物传进去 + return [ + [1, "先攻", "怪物首先攻击", "#ffcc33"], + [2, "魔攻", "怪物无视角色的防御", "#bbb0ff"], + [3, "坚固", "怪物防御不小于角色攻击-1", "#c0b088"], + [ + 6, + function (enemy) { + return (enemy.n || "") + "连击"; + }, + function (enemy) { + return "怪物每回合攻击" + (enemy.n || 4) + "次"; + }, + "#ffee77", + ], + [ + 7, + "破甲", + function (enemy) { + return ( + "战斗前,怪物附加角色防御的" + + Math.floor( + 100 * (enemy.breakArmor || core.values.breakArmor || 0) + ) + + "%作为伤害" + ); + }, + "#88c0ff", + ], + [ + 8, + "反击", + function (enemy) { + return ( + "战斗时,怪物每回合附加角色攻击的" + + Math.floor( + 100 * (enemy.counterAttack || core.values.counterAttack || 0) + ) + + "%作为伤害,无视角色防御" + ); + }, + "#ffaa44", + ], + [ + 9, + "净化", + function (enemy) { + return ( + "战斗前,怪物附加角色护盾的" + + (enemy.purify || core.values.purify) + + "倍作为伤害" + ); + }, + "#80eed6", + ], + [10, "模仿", "怪物的攻防和角色攻防相等", "#b0c0dd"], + [ + 11, + "吸血", + function (enemy) { + return ( + "战斗前,怪物首先吸取角色的" + + Math.floor(100 * enemy.vampire || 0) + + "%生命(约" + + Math.floor((enemy.vampire || 0) * core.getStatus("hp")) + + "点)作为伤害" + + (enemy.add ? ",并把伤害数值加到自身生命上" : "") + ); + }, + "#dd4448", + ], + [ + 12, + "中毒", + "战斗后,角色陷入中毒状态,每一步损失生命" + + core.values.poisonDamage + + "点", + "#99ee88", + ], + [ + 13, + "衰弱", + "战斗后,角色陷入衰弱状态,攻防暂时下降" + + (core.values.weakValue >= 1 ? + core.values.weakValue + "点" : + parseInt(core.values.weakValue * 100) + "%"), + "#f0bbcc", + ], + [ + 14, + "诅咒", + "战斗后,角色陷入诅咒状态,战斗无法获得金币和经验", + "#bbeef0", + ], + [ + 15, + "领域", + function (enemy) { + return ( + "经过怪物周围" + + (enemy.zoneSquare ? "九宫格" : "十字") + + "范围内" + + (enemy.range || 1) + + "格时自动减生命" + + (enemy.zone || 0) + + "点" + ); + }, + "#c677dd", + ], + [16, "夹击", "经过两只相同的怪物中间,角色生命值变成一半", "#bb99ee"], + [ + 17, + "仇恨", + "战斗前,怪物附加之前积累的仇恨值作为伤害;战斗后,释放一半的仇恨值。(每杀死一个怪物获得" + + (core.values.hatred || 0) + + "点仇恨值)", + "#b0b666", + ], + [ + 18, + "阻击", + function (enemy) { + return ( + "经过怪物周围" + + (enemy.zoneSquare ? "九宫格" : "十字") + + "时自动减生命" + + (enemy.repulse || 0) + + "点,同时怪物后退一格" + ); + }, + "#8888e6", + ], + [19, "自爆", "战斗后角色的生命值变成1", "#ff6666"], + [20, "无敌", "角色无法打败怪物,除非拥有十字架", "#aaaaaa"], + [ + 21, + "退化", + function (enemy) { + return ( + "战斗后角色永久下降" + + (enemy.atkValue || 0) + + "点攻击和" + + (enemy.defValue || 0) + + "点防御" + ); + }, + ], + [ + 22, + "固伤", + function (enemy) { + return ( + "战斗前,怪物对角色造成" + + (enemy.damage || 0) + + "点固定伤害,未开启负伤时无视角色护盾。" + ); + }, + "#ff9977", + ], + [23, "重生", "怪物被击败后,角色转换楼层则怪物将再次出现", "#a0e0ff"], + [ + 24, + "激光", + function (enemy) { + return "经过怪物同行或同列时自动减生命" + (enemy.laser || 0) + "点"; + }, + "#dda0dd", + ], + [ + 25, + "光环", + function (enemy) { + return ( + (enemy.range != null ? + (enemy.haloSquare ? "该怪物九宫格" : "该怪物十字") + + enemy.haloRange + + "格范围内" : + "同楼层所有") + + "怪物生命提升" + + (enemy.hpBuff || 0) + + "%,攻击提升" + + (enemy.atkBuff || 0) + + "%,防御提升" + + (enemy.defBuff || 0) + + "%," + + (enemy.haloAdd ? "可叠加" : "不可叠加") + ); + }, + "#e6e099", + 1, + ], + [ + 26, + "支援", + "当周围一圈的怪物受到攻击时将上前支援,并组成小队战斗。", + "#77c0b6", + 1, + ], + [ + 27, + "捕捉", + function (enemy) { + return ( + "当走到怪物周围" + + (enemy.zoneSquare ? "九宫格" : "十字") + + "时会强制进行战斗。" + ); + }, + "#c0ddbb", + ], + ]; +}, "getEnemyInfo": function (enemy, hero, x, y, floorId) { // 获得某个怪物变化后的数据;该函数将被伤害计算和怪物手册使用 // 例如:坚固、模仿、仿攻等等 @@ -907,6 +908,7 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a = hero_def = core.getRealStatusOrDefault(hero, "def"), hero_matk = core.getRealStatusOrDefault(hero, "matk"), hero_mdef = core.getRealStatusOrDefault(hero, "mdef"), + hero_mhp = core.getRealStatusOrDefault(hero, "mhp"), hero_speed = core.getRealStatusOrDefault(hero, "speed"), hero_spell = core.getRealStatusOrDefault(hero, "spell"), origin_hero_hp = core.getStatusOrDefault(hero, "hp"), @@ -935,8 +937,11 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a = //勇士属性取整 hero_atk = Math.max(0, Math.floor(hero_atk)); hero_def = Math.max(0, Math.floor(hero_def)); - hero_mdef = Math.max(0, Math.floor(hero_mdef)); hero_speed = Math.max(0, Math.floor(hero_speed)); + hero_spell = Math.max(0, Math.floor(hero_spell)); + hero_matk = Math.min(100, Math.max(0, Math.floor(hero_matk))); + hero_mdef = Math.min(100, Math.max(0, Math.floor(hero_mdef))); + hero_mhp = Math.min(100, Math.max(0, Math.floor(hero_mhp))); // 如果是无敌属性,且勇士未持有十字架 if (core.hasSpecial(mon_special, 20) && !core.hasItem("cross")) @@ -964,12 +969,15 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a = //——第二部分:变量定义和初始赋值—— // 每回合怪物对勇士造成的战斗伤害 - let per_damage = Math.max(mon_atk - hero_def, 0); - //if (enemyInfo.magic) per_damage = Math.max(mon_atk - hero_mdef, 0); - + let per_damage = Math.max(mon_atk - hero_def, 0), + per_mdamage = 0; + if (core.hasSpecial(mon_special, 2)) { + per_mdamage = Math.floor(mon_atk * (100 - hero_mdef) / 100); + } // - let hero_per_damage = Math.max(hero_atk - mon_def, 0); - //if (hero_magic) hero_per_damage = Math.max(hero_atk - mon_mdef, 0); + let hero_per_damage = Math.max(hero_atk - mon_def, 0), + + hero_per_mdamage = Math.floor((hero_spell * hero_matk / 100) * (100 - mon_mdef) / 100); let damage = 0, hero_turn = 0, @@ -989,7 +997,7 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a = hero_time = 0; now_mon_hp > 0; ) { - //勇士和怪物的长度 + //勇士和怪物的长度。这里需要把if else改成轮次的if和math.min mon_time = mon_length / mon_speed; hero_time = hero_length / hero_speed; if ( @@ -1027,7 +1035,7 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a = } let hero_diff = {}, mon_diff = {}; - //这里插入汇总勇士和怪物在此回合结束时的情况数值,用以跑条动画读取 + //这里插入汇总勇士和怪物在此回合结束时的情况变化(hp, atk, def, speed, spell, damage, etc),用以跑条动画读取 heroDiffPerTurn.push(hero_diff); enemyDiffPerTurn.push(mon_diff); //将勇士和怪物此回合结束时的属性变动保存到heroPerInfo和enemyPerInfo中,用以跑条动画读取 } @@ -1059,7 +1067,7 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a = ); //上面这些还没修改 //勇士护盾计算 - let barrier = hero_mdef; + let barrier = Math.floor(hero_spell * hero_mhp / 100); // ------ 支援 ----- // From d9a5f79f7a324d6f6b466363ca75020eecf2756a Mon Sep 17 00:00:00 2001 From: itcfangye Date: Mon, 10 Feb 2025 22:36:57 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E6=88=98=E6=96=97?= =?UTF-8?q?=E5=87=BD=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- _server/table/comment.js | 5 +++ project/functions.js | 86 +++++++++++++++++++++------------------- 2 files changed, 50 insertions(+), 41 deletions(-) diff --git a/_server/table/comment.js b/_server/table/comment.js index d35742e..00a9486 100644 --- a/_server/table/comment.js +++ b/_server/table/comment.js @@ -196,6 +196,11 @@ var comment_c456ea59_6018_45ef_8bcc_211a24c627dc = { "_data": "百分数,如10为10%法抗,怪物受到勇士的法术伤害减免比例" }, + "spell": { + "_leaf": true, + "_type": "textarea", + "_data": "法强" + }, "speed": { "_leaf": true, "_type": "textarea", diff --git a/project/functions.js b/project/functions.js index e3d5d56..97c0782 100644 --- a/project/functions.js +++ b/project/functions.js @@ -335,7 +335,7 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a = // 获得金币 var money = guards.reduce(function (curr, g) { return curr + core.material.enemys[g[2]].money; - }, core.getEnemyValue(enemy, "money", x, y)); + }, core.getEnemyInfo(enemy, null, x, y).money); if (core.hasItem("coin")) money *= 2; // 幸运金币:双倍 if (core.hasFlag("curse")) money = 0; // 诅咒效果 core.status.hero.money += money; @@ -344,7 +344,7 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a = // 获得经验 var exp = guards.reduce(function (curr, g) { return curr + core.material.enemys[g[2]].exp; - }, core.getEnemyValue(enemy, "exp", x, y)); + }, core.getEnemyInfo(enemy, null, x, y).exp); if (core.hasFlag("curse")) exp = 0; core.status.hero.exp += exp; core.status.hero.statistics.exp += exp; @@ -530,9 +530,9 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a = // 第五项为该特殊属性的标记;目前 1 代表是地图类技能(需要进行遍历全图) // 名字和描述可以直接写字符串,也可以写个function将怪物传进去 return [ - [1, "先攻", "怪物首先攻击", "#ffcc33"], - [2, "魔攻", "怪物无视角色的防御", "#bbb0ff"], - [3, "坚固", "怪物防御不小于角色攻击-1", "#c0b088"], + [1, "先攻", "怪物首先攻击", "#ffcc33"], //√ + //[2, "魔攻", "怪物无视角色的防御", "#bbb0ff"], + [3, "坚固", "怪物防御不小于角色攻击-1", "#c0b088"], //√ [ 6, function (enemy) { @@ -542,21 +542,21 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a = return "怪物每回合攻击" + (enemy.n || 4) + "次"; }, "#ffee77", - ], + ], //想改成“以XX%、XX%攻击力各攻击一次” [ 7, "破甲", function (enemy) { return ( - "战斗前,怪物附加角色防御的" + + "怪物无视角色防御的" + Math.floor( 100 * (enemy.breakArmor || core.values.breakArmor || 0) ) + - "%作为伤害" + "%" ); }, "#88c0ff", - ], + ], //√ [ 8, "反击", @@ -761,15 +761,15 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a = var mon_hp = core.getEnemyValue(enemy, "hp", x, y, floorId), mon_atk = core.getEnemyValue(enemy, "atk", x, y, floorId), mon_def = core.getEnemyValue(enemy, "def", x, y, floorId), - mon_mdef = core.getEnemyValue(enemy, "mdef", x, y, floorId), - mon_speed = core.getEnemyValue(enemy, "speed", x, y, floorId), + mon_mdef = core.getEnemyValue(enemy, "mdef", x, y, floorId) || 0, + mon_spell = core.getEnemyValue(enemy, "spell", x, y, floorId) || 0, + mon_speed = core.getEnemyValue(enemy, "speed", x, y, floorId) || 1, mon_special = core.getEnemyValue(enemy, "special", x, y, floorId); var mon_money = core.getEnemyValue(enemy, "money", x, y, floorId), mon_exp = core.getEnemyValue(enemy, "exp", x, y, floorId), mon_point = core.getEnemyValue(enemy, "point", x, y, floorId); var mon_barrier = 0, - mon_absorb_damage = 0, - mon_magic = core.getEnemyValue(enemy, "magic", x, y, floorId); + mon_absorb_damage = 0; // 模仿 if (core.hasSpecial(mon_special, 10)) { mon_atk = hero_atk; @@ -881,6 +881,7 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a = atk: Math.floor(mon_atk), def: Math.floor(mon_def), mdef: Math.floor(mon_mdef), + spell: Math.floor(mon_spell), speed: Math.floor(mon_speed), barrier: Math.floor(mon_barrier), absorb: Math.floor(mon_absorb_damage), @@ -888,7 +889,6 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a = exp: Math.floor(mon_exp), point: Math.floor(mon_point), special: mon_special, - magic: mon_magic, guards: guards, // 返回支援情况 }; }, @@ -922,6 +922,7 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a = mon_atk = enemyInfo.atk, mon_def = enemyInfo.def, mon_mdef = enemyInfo.mdef, + mon_spell = enemyInfo.spell, mon_speed = enemyInfo.speed, mon_special = enemyInfo.special, mon_absorb_damage = enemyInfo.absorb, @@ -934,6 +935,13 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a = // 开启了技能1:二倍斩 hero_atk *= 2; // 计算时攻击力翻倍 } + + // 破甲 + if (core.hasSpecial(mon_special, 7)) + hero_def -= Math.floor( + (enemy.breakArmor || core.values.breakArmor) * hero_def + ); + //勇士属性取整 hero_atk = Math.max(0, Math.floor(hero_atk)); hero_def = Math.max(0, Math.floor(hero_def)); @@ -970,10 +978,7 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a = //——第二部分:变量定义和初始赋值—— // 每回合怪物对勇士造成的战斗伤害 let per_damage = Math.max(mon_atk - hero_def, 0), - per_mdamage = 0; - if (core.hasSpecial(mon_special, 2)) { - per_mdamage = Math.floor(mon_atk * (100 - hero_mdef) / 100); - } + per_mdamage = Math.floor(mon_spell * (100 - hero_mdef) / 100); // let hero_per_damage = Math.max(hero_atk - mon_def, 0), @@ -988,41 +993,48 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a = let heroDiffPerTurn = [], enemyDiffPerTurn = []; - for ( - let now_mon_hp = mon_hp, - last_mon_hp = mon_hp, - mon_length = length, - hero_length = length, - mon_time = 0, - hero_time = 0; now_mon_hp > 0; + let now_mon_hp = mon_hp, + last_mon_hp = mon_hp, + mon_length = length, + hero_length = 0, + mon_time = 0, + hero_time = 0; + //先攻,先攻为怪物和勇士同时出第一刀 + if (core.hasSpecial(mon_special, 1)) mon_length = 0; + while ( + now_mon_hp > 0 ) { - //勇士和怪物的长度。这里需要把if else改成轮次的if和math.min + //勇士和怪物的长度 mon_time = mon_length / mon_speed; hero_time = hero_length / hero_speed; + if ( - mon_time < hero_time || - ((mon_time == hero_time) && mon_speed > hero_speed) + mon_time == Math.min(mon_time, hero_time) ) { //怪物攻击的回合 //这里计算怪物攻击时发生的各种变化 //伤害与回合增加 - damage += per_damage; + + //N连击,待定,想做成“以x%、y%……攻击力各攻击一次”的形式 if (core.hasSpecial(mon_special, 6)) { + damage += per_damage * enemy.n; mon_turn += enemy.n; } else { + damage += per_damage; mon_turn += 1; } + damage += per_mdamage; //重新为长度赋值 mon_length = length; hero_length = hero_length - mon_time * hero_speed; - } else { + } else if (hero_time == Math.min(mon_time, hero_time)) { //勇士攻击的回合 // 这里计算勇士攻击时发生的各种变化 // 伤害与回合数增加 - now_mon_hp -= hero_per_damage; + now_mon_hp -= hero_per_damage + hero_per_mdamage; hero_turn += 1; //勇士回合+1,如果有勇士每回合多次攻击的情况,在这里写判断 // 无法战斗计算 if (hero_turn % 50 == 0) { @@ -1033,6 +1045,7 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a = hero_length = length; mon_length = mon_length - hero_time * mon_speed; } + let hero_diff = {}, mon_diff = {}; //这里插入汇总勇士和怪物在此回合结束时的情况变化(hp, atk, def, speed, spell, damage, etc),用以跑条动画读取 @@ -1041,8 +1054,6 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a = } //下面这些还没修改 - // 连击 - if (core.hasSpecial(mon_special, 6)) per_damage *= enemy.n || 2; // 每回合的反击伤害;反击是按照勇士的攻击次数来计算回合 let counterDamage = 0; @@ -1051,14 +1062,7 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a = (enemy.counterAttack || core.values.counterAttack) * hero_atk ); - // 先攻 - if (core.hasSpecial(mon_special, 1)) init_damage += per_damage; - // 破甲 - if (core.hasSpecial(mon_special, 7)) - init_damage += Math.floor( - (enemy.breakArmor || core.values.breakArmor) * hero_def - ); // 净化 if (core.hasSpecial(mon_special, 9)) @@ -1117,7 +1121,7 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a = } if (core.hasSpecial(mon_special, 22)) { // 固伤 - damage += enemy.damage || 0; + damage += enemy.damage2 || 0; } return {