战前剧情

This commit is contained in:
oc 2017-12-31 16:25:49 +08:00
parent 77c712a9df
commit 81727e1e71
2 changed files with 65 additions and 1 deletions

View File

@ -965,6 +965,54 @@ events.prototype.addPoint = function (enemy) {
当且仅当勇士第一次到达某层时,将会触发此事件。可以利用此事件来显示一些剧情,或再让它调用 `{"type": "trigger"}` 来继续调用其他的事件。
## 战前剧情
有时候光战后事件`afterBattle`是不够的我们可能还需要战前剧情例如Boss战之前和Boss进行一段对话。
要使用战前剧情,首先你需要覆盖该店的系统默认事件,改成你自己的自定义事件,然后在战前剧情后调用`{"type": "battle"}`强制战斗。
``` js
"x,y": { // (x,y)为该怪物坐标
"trigger": "action", // 覆盖该点本身默认事件,变成自定义事件
"data": [ // 该点的自定义事件列表
// ... 战前剧情
{"type": "battle", "id": "xxx"}, // 强制战斗
// ... 战后剧情;请注意上面的强制战斗不会使怪物消失,如有需要请调动{"type": "hide"}
]
}
```
这种方式可以实现战前剧情。
**值得注意的是,如果一个怪物本身的系统默认事件被覆盖,则地图上也不会有显伤!**
要想让被自定义事件覆盖的怪物也有显伤显示,则需要在`core.js`的`updateFg`函数中进行一些的修改:
``` js
// ... 上略
// 非系统默认的战斗事件(被覆盖):无显伤
if (mapBlocks[b].event.trigger != 'battle') {
var shouldDisplayDamage = false;
// 部分特殊的点(例如战前剧情)需要显伤的可类似在这里手动添加
/*
if (core.status.floorId='???' && x=? && y=?)
shouldDisplayDamage = true;
*/
if (!shouldDisplayDamage)
continue;
}
// ... 下略
```
即手动指定一下哪些层的哪些点上被覆盖的怪物也需要显伤。
!> 如果想让所有怪物都有显伤,也可以简单直接删除或注释这一段。
## 经验升级(进阶/境界塔)
本塔也支持经验升级,即用户杀怪获得经验后,可以到达某些数值自动进阶,全面提升属性。

View File

@ -2876,8 +2876,24 @@ core.prototype.updateFg = function () {
core.canvas.fg.textAlign = 'left';
for (var b = 0; b < mapBlocks.length; b++) {
var x = mapBlocks[b].x, y = mapBlocks[b].y;
if (core.isset(mapBlocks[b].event) && mapBlocks[b].event.cls == 'enemys' && mapBlocks[b].event.trigger == 'battle'
if (core.isset(mapBlocks[b].event) && mapBlocks[b].event.cls == 'enemys'
&& !(core.isset(mapBlocks[b].enable) && !mapBlocks[b].enable)) {
// 非系统默认的战斗事件(被覆盖):无显伤
if (mapBlocks[b].event.trigger != 'battle') {
var shouldDisplayDamage = false;
// 部分特殊的点(例如战前剧情)需要显伤的可类似在这里手动添加
/*
if (core.status.floorId='???' && x=? && y=?)
shouldDisplayDamage = true;
*/
if (!shouldDisplayDamage)
continue;
}
var id = mapBlocks[b].event.id;
var damage = core.enemys.getDamage(id);