From 430c7650ce100676b2efd2a7de38d485143b9e07 Mon Sep 17 00:00:00 2001 From: ckcz123 Date: Sun, 16 Dec 2018 13:24:54 +0800 Subject: [PATCH] setVolume & useLoop --- _server/data.comment.js | 6 ++++++ libs/control.js | 6 ++++++ libs/enemys.js | 2 +- libs/events.js | 9 ++++----- libs/maps.js | 3 +++ project/data.js | 1 + project/functions.js | 9 +++++++-- 7 files changed, 28 insertions(+), 8 deletions(-) diff --git a/_server/data.comment.js b/_server/data.comment.js index ec0d4f11..4ec5c34d 100644 --- a/_server/data.comment.js +++ b/_server/data.comment.js @@ -557,6 +557,12 @@ var data_comment_c456ea59_6018_45ef_8bcc_211a24c627dc = "_bool": "bool", "_data": "是否循环计算临界;如果此项为true则使用循环法(而不是回合数计算法)来算临界" }, + "loopStep": { + "_leaf": true, + "_type": "textbox", + "_range": "thiseval==null || thiseval>0", + "_data": "循环计算临界时,每次攻击增加量为原始攻击的多少分之一。\n例如,5000就代表循环中每次攻击增加量是原始攻击的1/5000(向上取整)。\n默认值5000。" + }, "startUsingCanvas": { "_leaf": true, "_type": "checkbox", diff --git a/libs/control.js b/libs/control.js index beaeb8cc..bb0f3fc7 100644 --- a/libs/control.js +++ b/libs/control.js @@ -275,6 +275,9 @@ control.prototype.showStartAnimate = function (noAnimate, callback) { core.clearMap('all'); core.clearMap('curtain'); + // 重置音量 + core.events.setVolume(1, 0); + if (core.flags.startUsingCanvas) { core.dom.startTop.style.display = 'none'; core.dom.startButtonGroup.style.display = 'block'; @@ -2535,6 +2538,9 @@ control.prototype.loadData = function (data, callback) { core.control.updateGlobalAttribute(Object.keys(toAttribute)); } + // 重置音量 + core.events.setVolume(core.getFlag("__volume__", 1), 0); + // load icons var icon = core.getFlag("heroIcon", "hero.png"); if (core.isset(core.material.images.images[icon])) { diff --git a/libs/enemys.js b/libs/enemys.js index bc1563b5..4724ed0a 100644 --- a/libs/enemys.js +++ b/libs/enemys.js @@ -179,7 +179,7 @@ enemys.prototype.nextCriticals = function (enemy, number, x, y, floorId) { } else { // 暴力for循环法 pre = info.damage; - var per_add = Math.ceil(hero_atk / 5000); + var per_add = Math.ceil(hero_atk / (core.flags.loopStep||5000)); if (per_add<0) per_add = 1; for (var atk=hero_atk+per_add;atk<=mon_hp+mon_def;atk+=per_add) { var nextInfo = this.getDamageInfo(enemy, core.status.hero.hp, atk, core.status.hero.def, core.status.hero.mdef, x, y, floorId); diff --git a/libs/events.js b/libs/events.js index 9998e01f..28e68bf6 100644 --- a/libs/events.js +++ b/libs/events.js @@ -884,15 +884,14 @@ events.prototype.doAction = function() { this.doAction(); break case "setVolume": - data.value = parseInt(data.value||0); - if (data.value<0) data.value=0; - if (data.value>100) data.value=100; + data.value = core.clamp(parseInt(data.value)/100, 0, 1); + core.setFlag("__volume__", data.value); if (data.async) { - this.setVolume(data.value/100, data.time); + this.setVolume(data.value, data.time); this.doAction(); } else { - this.setVolume(data.value/100, data.time, function() { + this.setVolume(data.value, data.time, function() { core.events.doAction(); }); } diff --git a/libs/maps.js b/libs/maps.js index 958dcaf7..00849c2e 100644 --- a/libs/maps.js +++ b/libs/maps.js @@ -324,6 +324,9 @@ maps.prototype.canMoveDirectly = function (destX,destY) { // 检查该楼层是否不可瞬间移动 if (core.status.thisMap.cannotMoveDirectly) return -1; + // flag:cannotMoveDirectly为true:不能 + if (core.hasFlag('cannotMoveDirectly')) return -1; + // 中毒状态:不能 if (core.hasFlag('poison')) return -1; diff --git a/project/data.js b/project/data.js index 592286c9..497b81c6 100644 --- a/project/data.js +++ b/project/data.js @@ -368,6 +368,7 @@ var data_a1e2fb4a_e986_4524_b0da_9b7ba7c0874d = "hatredDecrease": true, "betweenAttackCeil": false, "useLoop": false, + "loopStep": 5000, "startUsingCanvas": false, "startDirectly": false, "statusCanvas": false, diff --git a/project/functions.js b/project/functions.js index 9e06e527..b280be05 100644 --- a/project/functions.js +++ b/project/functions.js @@ -428,8 +428,12 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a = if (this.hasSpecial(mon_special, 3) && mon_def < hero_atk - 1) { mon_def = hero_atk - 1; } - - // 光环效果 + + // V2.5.3备注: + // 这一部分是检查光环代码的,需要对整个地图上的图块进行遍历,可能会造成不必要的性能的损耗,尤其是循环计算临界会变得非常慢。 + // 因此默认注释掉此段代码以加快游戏运行速度。 + // 如果游戏中有光环怪物存在,取消注释(或按需根据floorId加判定)即可。 + /* // 检查当前楼层所有光环怪物(数字25) var hp_delta = 0, atk_delta = 0, def_delta = 0, cnt = 0; // 遍历每个图块 @@ -453,6 +457,7 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a = mon_hp *= (1+hp_delta/100); mon_atk *= (1+atk_delta/100); mon_def *= (1+def_delta/100); + */ // TODO:可以在这里新增其他的怪物数据变化 // 比如仿攻(怪物攻击不低于勇士攻击):