Update tiny fixes
This commit is contained in:
parent
bcec8b5fd5
commit
92314dd1d7
@ -201,8 +201,13 @@ editor_multi = function () {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
var ctrlRelease = new Date();
|
||||||
codeEditor.on("keyup", function (cm, event) {
|
codeEditor.on("keyup", function (cm, event) {
|
||||||
if (codeEditor.getOption("autocomplete") && !event.ctrlKey && (
|
var date = new Date();
|
||||||
|
if (event.keyCode == 17 || event.keyCode == 91) { // ctrl, cmd
|
||||||
|
ctrlRelease = date;
|
||||||
|
}
|
||||||
|
else if (codeEditor.getOption("autocomplete") && !event.ctrlKey && date - ctrlRelease >= 1000 && (
|
||||||
(event.keyCode >= 65 && event.keyCode <= 90) ||
|
(event.keyCode >= 65 && event.keyCode <= 90) ||
|
||||||
(!event.shiftKey && event.keyCode == 190) || (event.shiftKey && event.keyCode == 189))) {
|
(!event.shiftKey && event.keyCode == 190) || (event.shiftKey && event.keyCode == 189))) {
|
||||||
try {
|
try {
|
||||||
|
|||||||
@ -64,7 +64,7 @@ icons.prototype.getTilesetOffset = function (id) {
|
|||||||
for (var i in core.tilesets) {
|
for (var i in core.tilesets) {
|
||||||
var imgName = core.tilesets[i];
|
var imgName = core.tilesets[i];
|
||||||
var img = core.material.images.tilesets[imgName];
|
var img = core.material.images.tilesets[imgName];
|
||||||
var width = Math.floor(img.width / 32), height = Math.floor(img.height / 32);
|
var width = Math.floor(parseInt(img.getAttribute('_width')) / 32), height = Math.floor(parseInt(img.getAttribute('_height')) / 32);
|
||||||
if (id >= startOffset && id < startOffset + width * height) {
|
if (id >= startOffset && id < startOffset + width * height) {
|
||||||
var x = (id - startOffset) % width, y = parseInt((id - startOffset) / width);
|
var x = (id - startOffset) % width, y = parseInt((id - startOffset) / width);
|
||||||
return {"image": imgName, "x": x, "y": y};
|
return {"image": imgName, "x": x, "y": y};
|
||||||
|
|||||||
@ -251,6 +251,8 @@ loader.prototype.loadImage = function (dir, imgName, callback) {
|
|||||||
name = name + ".png";
|
name = name + ".png";
|
||||||
var image = new Image();
|
var image = new Image();
|
||||||
image.onload = function () {
|
image.onload = function () {
|
||||||
|
image.setAttribute('_width', image.width);
|
||||||
|
image.setAttribute('_height', image.height);
|
||||||
callback(imgName, image);
|
callback(imgName, image);
|
||||||
}
|
}
|
||||||
image.onerror = function () {
|
image.onerror = function () {
|
||||||
|
|||||||
@ -253,53 +253,64 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a =
|
|||||||
// 战斗结束后触发的事件
|
// 战斗结束后触发的事件
|
||||||
|
|
||||||
var enemy = core.material.enemys[enemyId];
|
var enemy = core.material.enemys[enemyId];
|
||||||
|
var special = enemy.special;
|
||||||
|
|
||||||
// 播放战斗音效和动画
|
// 播放战斗音效和动画
|
||||||
var equipAnimate = 'hand',
|
// 默认播放的动画;你也可以使用
|
||||||
equipId = (core.status.hero.equipment || [])[0];
|
var animate = 'hand'; // 默认动画
|
||||||
|
// 检查当前装备是否存在攻击动画
|
||||||
|
var equipId = core.getEquip(0);
|
||||||
if (equipId && (core.material.items[equipId].equip || {}).animate)
|
if (equipId && (core.material.items[equipId].equip || {}).animate)
|
||||||
equipAnimate = core.material.items[equipId].equip.animate;
|
animate = core.material.items[equipId].equip.animate;
|
||||||
// 检查equipAnimate是否存在SE,如果不存在则使用默认音效
|
// 你也可以在这里根据自己的需要,比如enemyId或special或flag来修改播放的动画效果
|
||||||
if (!(core.material.animates[equipAnimate] || {}).se)
|
// if (enemyId == '...') animate = '...';
|
||||||
|
|
||||||
|
// 检查该动画是否存在SE,如果不存在则使用默认音效
|
||||||
|
if (!(core.material.animates[animate] || {}).se)
|
||||||
core.playSound('attack.mp3');
|
core.playSound('attack.mp3');
|
||||||
// 强制战斗的战斗动画
|
|
||||||
|
// 播放动画;如果不存在坐标(强制战斗)则播放到勇士自身
|
||||||
if (x != null && y != null)
|
if (x != null && y != null)
|
||||||
core.drawAnimate(equipAnimate, x, y);
|
core.drawAnimate(animate, x, y);
|
||||||
else
|
else
|
||||||
core.drawHeroAnimate(equipAnimate);
|
core.drawHeroAnimate(animate);
|
||||||
|
|
||||||
var damage = core.enemys.getDamage(enemyId, x, y);
|
// 获得战斗伤害信息
|
||||||
if (damage == null) damage = core.status.hero.hp + 1;
|
var damageInfo = core.getDamageInfo(enemyId, null, x, y) || {};
|
||||||
|
// 战斗伤害
|
||||||
// 扣减体力值
|
var damage = damageInfo.damage;
|
||||||
core.status.hero.hp -= damage;
|
// 当前战斗回合数,可用于战后所需的判定
|
||||||
|
var turn = damageInfo.turn;
|
||||||
// 记录
|
// 判定是否致死
|
||||||
core.status.hero.statistics.battleDamage += damage;
|
if (damage == null || damage >= core.status.hero.hp) {
|
||||||
core.status.hero.statistics.battle++;
|
|
||||||
|
|
||||||
if (core.status.hero.hp <= 0) {
|
|
||||||
core.status.hero.hp = 0;
|
core.status.hero.hp = 0;
|
||||||
core.updateStatusBar();
|
core.updateStatusBar();
|
||||||
core.events.lose('战斗失败');
|
core.events.lose('战斗失败');
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
var guards = []; // 支援
|
// 扣减体力值并记录统计数据
|
||||||
|
core.status.hero.hp -= damage;
|
||||||
|
core.status.hero.statistics.battleDamage += damage;
|
||||||
|
core.status.hero.statistics.battle++;
|
||||||
|
|
||||||
|
// 计算当前怪物的支援怪物
|
||||||
|
var guards = [];
|
||||||
if (x != null && y != null) {
|
if (x != null && y != null) {
|
||||||
guards = core.getFlag("__guards__" + x + "_" + y, []);
|
guards = core.getFlag("__guards__" + x + "_" + y, []);
|
||||||
core.removeFlag("__guards__" + x + "_" + y);
|
core.removeFlag("__guards__" + x + "_" + y);
|
||||||
}
|
}
|
||||||
|
|
||||||
// 获得金币和经验
|
// 获得金币
|
||||||
var money = guards.reduce(function (curr, g) {
|
var money = guards.reduce(function (curr, g) {
|
||||||
return curr + core.material.enemys[g[2]].money;
|
return curr + core.material.enemys[g[2]].money;
|
||||||
}, enemy.money);
|
}, enemy.money);
|
||||||
if (core.hasItem('coin')) money *= 2;
|
if (core.hasItem('coin')) money *= 2; // 幸运金币:双倍
|
||||||
if (core.hasFlag('curse')) money = 0;
|
if (core.hasFlag('curse')) money = 0; // 诅咒效果
|
||||||
core.status.hero.money += money;
|
core.status.hero.money += money;
|
||||||
core.status.hero.statistics.money += money;
|
core.status.hero.statistics.money += money;
|
||||||
|
|
||||||
|
// 获得经验
|
||||||
var exp = guards.reduce(function (curr, g) {
|
var exp = guards.reduce(function (curr, g) {
|
||||||
return curr + core.material.enemys[g[2]].exp;
|
return curr + core.material.enemys[g[2]].exp;
|
||||||
}, enemy.exp);
|
}, enemy.exp);
|
||||||
@ -312,10 +323,6 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a =
|
|||||||
if (core.flags.statusBarItems.indexOf('enableExp') >= 0) hint += ",经验+" + exp;
|
if (core.flags.statusBarItems.indexOf('enableExp') >= 0) hint += ",经验+" + exp;
|
||||||
core.drawTip(hint, enemy.id);
|
core.drawTip(hint, enemy.id);
|
||||||
|
|
||||||
// 事件的处理
|
|
||||||
var todo = [];
|
|
||||||
|
|
||||||
var special = enemy.special;
|
|
||||||
// 中毒
|
// 中毒
|
||||||
if (core.enemys.hasSpecial(special, 12)) {
|
if (core.enemys.hasSpecial(special, 12)) {
|
||||||
core.triggerDebuff('get', 'poison');
|
core.triggerDebuff('get', 'poison');
|
||||||
@ -328,7 +335,7 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a =
|
|||||||
if (core.enemys.hasSpecial(special, 14)) {
|
if (core.enemys.hasSpecial(special, 14)) {
|
||||||
core.triggerDebuff('get', 'curse');
|
core.triggerDebuff('get', 'curse');
|
||||||
}
|
}
|
||||||
// 仇恨属性
|
// 仇恨怪物将仇恨值减半
|
||||||
if (core.enemys.hasSpecial(special, 17)) {
|
if (core.enemys.hasSpecial(special, 17)) {
|
||||||
core.setFlag('hatred', Math.floor(core.getFlag('hatred', 0) / 2));
|
core.setFlag('hatred', Math.floor(core.getFlag('hatred', 0) / 2));
|
||||||
}
|
}
|
||||||
@ -359,7 +366,11 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a =
|
|||||||
core.setFlag('skillName', '无');
|
core.setFlag('skillName', '无');
|
||||||
}
|
}
|
||||||
|
|
||||||
// 如果有加点
|
|
||||||
|
// 事件的处理
|
||||||
|
var todo = [];
|
||||||
|
|
||||||
|
// 加点事件
|
||||||
var point = guards.reduce(function (curr, g) {
|
var point = guards.reduce(function (curr, g) {
|
||||||
return curr + core.material.enemys[g[2]].point;
|
return curr + core.material.enemys[g[2]].point;
|
||||||
}, enemy.point) || 0;
|
}, enemy.point) || 0;
|
||||||
@ -367,7 +378,7 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a =
|
|||||||
core.push(todo, [{ "type": "insert", "name": "加点事件", "args": [point] }]);
|
core.push(todo, [{ "type": "insert", "name": "加点事件", "args": [point] }]);
|
||||||
}
|
}
|
||||||
|
|
||||||
// 如果该点存在事件 -- V2.5.4 以后阻击怪也可以有战后事件了
|
// 战后事件
|
||||||
if (core.status.floorId != null) {
|
if (core.status.floorId != null) {
|
||||||
core.push(todo, core.floors[core.status.floorId].afterBattle[x + "," + y]);
|
core.push(todo, core.floors[core.status.floorId].afterBattle[x + "," + y]);
|
||||||
}
|
}
|
||||||
@ -383,8 +394,8 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a =
|
|||||||
|
|
||||||
// 如果事件不为空,将其插入
|
// 如果事件不为空,将其插入
|
||||||
if (todo.length > 0) core.insertAction(todo, x, y);
|
if (todo.length > 0) core.insertAction(todo, x, y);
|
||||||
|
|
||||||
// 因为removeBlock和hideBlock都会刷新状态栏,因此移动到这里并保证刷新只执行一次,以提升效率
|
// 因为removeBlock和hideBlock都会刷新状态栏,因此将删除部分移动到这里并保证刷新只执行一次,以提升效率
|
||||||
if (core.getBlock(x, y) != null) {
|
if (core.getBlock(x, y) != null) {
|
||||||
// 检查是否是重生怪物;如果是则仅隐藏不删除
|
// 检查是否是重生怪物;如果是则仅隐藏不删除
|
||||||
if (core.hasSpecial(enemy.special, 23)) {
|
if (core.hasSpecial(enemy.special, 23)) {
|
||||||
@ -528,8 +539,9 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a =
|
|||||||
// 从V2.5.4开始,对光环效果增加缓存,以解决多次重复计算的问题,从而大幅提升运行效率。
|
// 从V2.5.4开始,对光环效果增加缓存,以解决多次重复计算的问题,从而大幅提升运行效率。
|
||||||
var hp_buff = 0,
|
var hp_buff = 0,
|
||||||
atk_buff = 0,
|
atk_buff = 0,
|
||||||
def_buff = 0,
|
def_buff = 0;
|
||||||
cnt = 0;
|
// 已经计算过的光环怪ID列表,用于判定叠加
|
||||||
|
var usedEnemyIds = {};
|
||||||
// 检查光环和支援的缓存
|
// 检查光环和支援的缓存
|
||||||
var index = x != null && y != null ? (x + "," + y) : "floor";
|
var index = x != null && y != null ? (x + "," + y) : "floor";
|
||||||
if (!core.status.checkBlock.cache) core.status.checkBlock.cache = {};
|
if (!core.status.checkBlock.cache) core.status.checkBlock.cache = {};
|
||||||
@ -554,13 +566,12 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a =
|
|||||||
if (enemy.zoneSquare && dx <= enemy.range && dy <= enemy.range) inRange = true;
|
if (enemy.zoneSquare && dx <= enemy.range && dy <= enemy.range) inRange = true;
|
||||||
}
|
}
|
||||||
// 检查是否可叠加
|
// 检查是否可叠加
|
||||||
if (inRange && (enemy.add || cnt == 0)) {
|
if (inRange && (enemy.add || !usedEnemyIds[enemy.id])) {
|
||||||
hp_buff += enemy.value || 0;
|
hp_buff += enemy.value || 0;
|
||||||
atk_buff += enemy.atkValue || 0;
|
atk_buff += enemy.atkValue || 0;
|
||||||
def_buff += enemy.defValue || 0;
|
def_buff += enemy.defValue || 0;
|
||||||
cnt++;
|
usedEnemyIds[enemy.id] = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
// 检查【支援】技能,数字26
|
// 检查【支援】技能,数字26
|
||||||
if (enemy && core.hasSpecial(enemy.special, 26) &&
|
if (enemy && core.hasSpecial(enemy.special, 26) &&
|
||||||
@ -596,7 +607,7 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a =
|
|||||||
// if (core.hasSpecial(mon_special, 27) && mon_atk < hero_atk) {
|
// if (core.hasSpecial(mon_special, 27) && mon_atk < hero_atk) {
|
||||||
// mon_atk = hero_atk;
|
// mon_atk = hero_atk;
|
||||||
// }
|
// }
|
||||||
// 也可以按需增加各种自定义内容(比如幻塔的魔杖效果等)
|
// 也可以按需增加各种自定义内容
|
||||||
|
|
||||||
return {
|
return {
|
||||||
"hp": Math.floor(mon_hp),
|
"hp": Math.floor(mon_hp),
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user