setVolume & useLoop

This commit is contained in:
ckcz123 2018-12-16 13:24:54 +08:00
parent eeab671f4e
commit 430c7650ce
7 changed files with 28 additions and 8 deletions

View File

@ -557,6 +557,12 @@ var data_comment_c456ea59_6018_45ef_8bcc_211a24c627dc =
"_bool": "bool", "_bool": "bool",
"_data": "是否循环计算临界如果此项为true则使用循环法而不是回合数计算法来算临界" "_data": "是否循环计算临界如果此项为true则使用循环法而不是回合数计算法来算临界"
}, },
"loopStep": {
"_leaf": true,
"_type": "textbox",
"_range": "thiseval==null || thiseval>0",
"_data": "循环计算临界时,每次攻击增加量为原始攻击的多少分之一。\n例如5000就代表循环中每次攻击增加量是原始攻击的1/5000向上取整。\n默认值5000。"
},
"startUsingCanvas": { "startUsingCanvas": {
"_leaf": true, "_leaf": true,
"_type": "checkbox", "_type": "checkbox",

View File

@ -275,6 +275,9 @@ control.prototype.showStartAnimate = function (noAnimate, callback) {
core.clearMap('all'); core.clearMap('all');
core.clearMap('curtain'); core.clearMap('curtain');
// 重置音量
core.events.setVolume(1, 0);
if (core.flags.startUsingCanvas) { if (core.flags.startUsingCanvas) {
core.dom.startTop.style.display = 'none'; core.dom.startTop.style.display = 'none';
core.dom.startButtonGroup.style.display = 'block'; core.dom.startButtonGroup.style.display = 'block';
@ -2535,6 +2538,9 @@ control.prototype.loadData = function (data, callback) {
core.control.updateGlobalAttribute(Object.keys(toAttribute)); core.control.updateGlobalAttribute(Object.keys(toAttribute));
} }
// 重置音量
core.events.setVolume(core.getFlag("__volume__", 1), 0);
// load icons // load icons
var icon = core.getFlag("heroIcon", "hero.png"); var icon = core.getFlag("heroIcon", "hero.png");
if (core.isset(core.material.images.images[icon])) { if (core.isset(core.material.images.images[icon])) {

View File

@ -179,7 +179,7 @@ enemys.prototype.nextCriticals = function (enemy, number, x, y, floorId) {
} }
else { // 暴力for循环法 else { // 暴力for循环法
pre = info.damage; 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; if (per_add<0) per_add = 1;
for (var atk=hero_atk+per_add;atk<=mon_hp+mon_def;atk+=per_add) { 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); var nextInfo = this.getDamageInfo(enemy, core.status.hero.hp, atk, core.status.hero.def, core.status.hero.mdef, x, y, floorId);

View File

@ -884,15 +884,14 @@ events.prototype.doAction = function() {
this.doAction(); this.doAction();
break break
case "setVolume": case "setVolume":
data.value = parseInt(data.value||0); data.value = core.clamp(parseInt(data.value)/100, 0, 1);
if (data.value<0) data.value=0; core.setFlag("__volume__", data.value);
if (data.value>100) data.value=100;
if (data.async) { if (data.async) {
this.setVolume(data.value/100, data.time); this.setVolume(data.value, data.time);
this.doAction(); this.doAction();
} }
else { else {
this.setVolume(data.value/100, data.time, function() { this.setVolume(data.value, data.time, function() {
core.events.doAction(); core.events.doAction();
}); });
} }

View File

@ -324,6 +324,9 @@ maps.prototype.canMoveDirectly = function (destX,destY) {
// 检查该楼层是否不可瞬间移动 // 检查该楼层是否不可瞬间移动
if (core.status.thisMap.cannotMoveDirectly) return -1; if (core.status.thisMap.cannotMoveDirectly) return -1;
// flag:cannotMoveDirectly为true不能
if (core.hasFlag('cannotMoveDirectly')) return -1;
// 中毒状态:不能 // 中毒状态:不能
if (core.hasFlag('poison')) return -1; if (core.hasFlag('poison')) return -1;

View File

@ -368,6 +368,7 @@ var data_a1e2fb4a_e986_4524_b0da_9b7ba7c0874d =
"hatredDecrease": true, "hatredDecrease": true,
"betweenAttackCeil": false, "betweenAttackCeil": false,
"useLoop": false, "useLoop": false,
"loopStep": 5000,
"startUsingCanvas": false, "startUsingCanvas": false,
"startDirectly": false, "startDirectly": false,
"statusCanvas": false, "statusCanvas": false,

View File

@ -429,7 +429,11 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a =
mon_def = hero_atk - 1; mon_def = hero_atk - 1;
} }
// 光环效果 // V2.5.3备注:
// 这一部分是检查光环代码的,需要对整个地图上的图块进行遍历,可能会造成不必要的性能的损耗,尤其是循环计算临界会变得非常慢。
// 因此默认注释掉此段代码以加快游戏运行速度。
// 如果游戏中有光环怪物存在取消注释或按需根据floorId加判定即可。
/*
// 检查当前楼层所有光环怪物数字25 // 检查当前楼层所有光环怪物数字25
var hp_delta = 0, atk_delta = 0, def_delta = 0, cnt = 0; 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_hp *= (1+hp_delta/100);
mon_atk *= (1+atk_delta/100); mon_atk *= (1+atk_delta/100);
mon_def *= (1+def_delta/100); mon_def *= (1+def_delta/100);
*/
// TODO可以在这里新增其他的怪物数据变化 // TODO可以在这里新增其他的怪物数据变化
// 比如仿攻(怪物攻击不低于勇士攻击): // 比如仿攻(怪物攻击不低于勇士攻击):