战前剧情
This commit is contained in:
parent
77c712a9df
commit
81727e1e71
@ -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;
|
||||
}
|
||||
|
||||
// ... 下略
|
||||
```
|
||||
|
||||
即手动指定一下哪些层的哪些点上被覆盖的怪物也需要显伤。
|
||||
|
||||
!> 如果想让所有怪物都有显伤,也可以简单直接删除或注释这一段。
|
||||
|
||||
## 经验升级(进阶/境界塔)
|
||||
|
||||
本塔也支持经验升级,即用户杀怪获得经验后,可以到达某些数值自动进阶,全面提升属性。
|
||||
|
||||
18
libs/core.js
18
libs/core.js
@ -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);
|
||||
|
||||
Loading…
Reference in New Issue
Block a user