setEnemy
This commit is contained in:
parent
755c998ab8
commit
257a14248e
@ -776,10 +776,6 @@ hero可为null或一个对象,具体将使用core.getRealStatusOrDefault(hero,
|
||||
从V2.5.5开始,该函数也允许直接返回一个数字,代表战斗伤害值,此时回合数将视为0。
|
||||
|
||||
|
||||
core.updateEnemys()
|
||||
更新怪物数据。该函数实际被转发到了脚本编辑中。详见文档-事件-更新怪物数据。
|
||||
|
||||
|
||||
core.getCurrentEnemys(floorId)
|
||||
获得某个楼层不重复的怪物信息,floorId不填默认为当前楼层。该函数会被怪物手册所调用。
|
||||
该函数将返回一个列表,每一项都是一个不同的怪物,按照伤害值从小到大排序。
|
||||
|
||||
@ -781,10 +781,6 @@ hero可为null或一个对象,具体将使用core.getRealStatusOrDefault(hero,
|
||||
从V2.5.5开始,该函数也允许直接返回一个数字,代表战斗伤害值,此时回合数将视为0。
|
||||
|
||||
|
||||
core.updateEnemys()
|
||||
更新怪物数据。该函数实际被转发到了脚本编辑中。详见文档-事件-更新怪物数据。
|
||||
|
||||
|
||||
core.getCurrentEnemys(floorId)
|
||||
获得某个楼层不重复的怪物信息,floorId不填默认为当前楼层。该函数会被怪物手册所调用。
|
||||
该函数将返回一个列表,每一项都是一个不同的怪物,按照伤害值从小到大排序。
|
||||
@ -1049,6 +1045,11 @@ core.doEffect(effect, need, times)
|
||||
执行一个effect操作。该函数目前仅被全局商店的status:xxx+=yyy所调用。
|
||||
|
||||
|
||||
core.setEnemy(id, name, value, prefix)
|
||||
设置一个怪物属性。id为怪物的ID,name为要设置的项,比如hp,atk,def等等。
|
||||
value可以是一个表达式,将调用core.calValue()计算。prefix为前缀,独立开关使用,脚本中一般忽略。
|
||||
|
||||
|
||||
core.setFloorInfo(name, values, floorId, prefix)
|
||||
设置某层楼的楼层属性,其中name为该楼层属性对应的条目,values为要设置的值,floorId为楼层id,prefix一般直接忽略。
|
||||
譬如core.setFloorInfo("name","4", "MT1")则为设置MT1显示在状态栏中的层数为4
|
||||
|
||||
@ -499,6 +499,27 @@ value是一个表达式,将通过这个表达式计算出的结果赋值给nam
|
||||
|
||||

|
||||
|
||||
|
||||
### setEnemy:设置怪物属性
|
||||
|
||||
使用`{"type":"setEnemy"}`可以设置某个怪物的某个属性
|
||||
|
||||
``` js
|
||||
[
|
||||
{"type": "setEnemy", "id": "greenSlime", "name": "hp", "value": "1000"}, // 设置绿色史莱姆生命1000
|
||||
{"type": "setEnemy", "id": "redSlime", "name": "special", "value": "[1,2]"}, // 设置红色史莱姆先攻魔攻
|
||||
{"type": "setEnemy", "id": "redSlime", "name": "name", "value": "'小史莱姆'"}, // 设置怪物名称
|
||||
]
|
||||
```
|
||||
|
||||

|
||||
|
||||
id为必填项,代表要修改的怪物ID。
|
||||
|
||||
name为必填项,代表要修改的项,例如`hp`, `atk`, `def`, `money`, `experience`, `point`, `special`, `name`。
|
||||
|
||||
value为必填项,代表要修改到的内容。对于修改名称的,必须加单引号。
|
||||
|
||||
### setFloor:设置楼层属性
|
||||
|
||||
使用`{"type":"setFloor"}`可以设置某层楼的楼层属性。
|
||||
@ -898,12 +919,6 @@ name是可选的,代表目标行走图的文件名。
|
||||
|
||||
使用`{"type": "showHero"}`会重新显示勇士。
|
||||
|
||||
### updateEnemys:更新怪物数据
|
||||
|
||||
使用 `{"type": "updateEnemys"}` 可以动态修改怪物数据。
|
||||
|
||||
详见[怪物数据的动态修改](#怪物数据的动态修改)。
|
||||
|
||||
### sleep:等待多少毫秒
|
||||
|
||||
等价于RMXP中的"等待x帧",不过是以毫秒来计算。
|
||||
@ -2646,43 +2661,6 @@ if (core.flags.enableAddPoint && point > 0) {
|
||||
}
|
||||
```
|
||||
|
||||
## 怪物数据的动态修改
|
||||
|
||||
有时候我们可能还需要在游戏过程中动态修改怪物数据,例如50层魔塔的封印魔王,或者根据难度分歧来调整最终Boss的属性数据。
|
||||
|
||||
而在我们的存档中,是不会对怪物数据进行存储的,只会存各个变量和Flag,因此我们需要在读档后根据变量或Flag来调整怪物数据。
|
||||
|
||||
我们可以在脚本编辑中的`updateEnemys`进行处理。
|
||||
|
||||
``` js
|
||||
"updateEnemys" : function () {
|
||||
// 更新怪物数据,可以在这里对怪物属性和数据进行动态更新,详见文档——事件——怪物数据的动态修改
|
||||
// 比如下面这个例子,如果flag:xxx为真,则将绿头怪的攻击设为100,红头怪的金币设为20
|
||||
// 推荐写变化后的具体数值,以免多次变化导致冲突
|
||||
/*
|
||||
// 如果flag:xxx为真;你也可以写其他判断语句比如core.hasItem(...)等等
|
||||
if (core.hasFlag('xxx')) {
|
||||
core.material.enemys.greenSlime.atk = 100;
|
||||
core.material.enemys.redSlime.money = 20;
|
||||
}
|
||||
*/
|
||||
// 别忘了在事件中调用“更新怪物数据”事件!
|
||||
}
|
||||
```
|
||||
|
||||
当我们获得一个道具(或者触发某个事件等)后,需要在事件中调用“更新怪物数据”事件。
|
||||
|
||||
``` js
|
||||
// 调用`updateEnemys`(更新怪物数据)事件就可以触发了
|
||||
[
|
||||
"将flag:xxx置为真,就可以让怪物数据发生改变!",
|
||||
{"type": "setValue", "name": "flag:xxx", "value": "true"}, // 将flag:xxx置为真
|
||||
{"type": "updateEnemys"} // 更新怪物数据;此时绿头怪攻击就会变成100了
|
||||
]
|
||||
```
|
||||
|
||||
事实上,除了动态修改怪物属性外,也可以在这里动态修改道具的类型、使用效果等等。都是一样的。
|
||||
|
||||
## 战前剧情
|
||||
|
||||
有时候光战后事件`afterBattle`是不够的,我们可能还需要战前剧情,例如Boss战之前和Boss进行一段对话。
|
||||
|
||||
BIN
_docs/img/events/15.png
Normal file
BIN
_docs/img/events/15.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 77 KiB |
@ -346,7 +346,6 @@ action
|
||||
| hideStatusBar_s
|
||||
| showHero_s
|
||||
| hideHero_s
|
||||
| updateEnemys_s
|
||||
| sleep_s
|
||||
| wait_s
|
||||
| waitAsync_s
|
||||
@ -1102,18 +1101,6 @@ var code = '{"type": "hideHero"},\n';
|
||||
return code;
|
||||
*/;
|
||||
|
||||
updateEnemys_s
|
||||
: '更新怪物数据' Newline
|
||||
|
||||
|
||||
/* updateEnemys_s
|
||||
tooltip : updateEnemys: 立刻更新怪物数据
|
||||
helpUrl : https://h5mota.com/games/template/_docs/#/event?id=updateEnemys%ef%bc%9a%e6%9b%b4%e6%96%b0%e6%80%aa%e7%89%a9%e6%95%b0%e6%8d%ae
|
||||
colour : this.dataColor
|
||||
var code = '{"type": "updateEnemys"},\n';
|
||||
return code;
|
||||
*/;
|
||||
|
||||
sleep_s
|
||||
: '等待' Int '毫秒' '不可被Ctrl跳过' Bool Newline
|
||||
|
||||
@ -3501,10 +3488,6 @@ ActionParser.prototype.parseAction = function() {
|
||||
this.next = MotaActionBlocks['hideHero_s'].xmlText([
|
||||
this.next]);
|
||||
break;
|
||||
case "updateEnemys":
|
||||
this.next = MotaActionBlocks['updateEnemys_s'].xmlText([
|
||||
this.next]);
|
||||
break;
|
||||
case "sleep": // 等待多少毫秒
|
||||
this.next = MotaActionBlocks['sleep_s'].xmlText([
|
||||
data.time||0,data.noSkip||false,this.next]);
|
||||
|
||||
@ -113,7 +113,6 @@ editor_blockly = function () {
|
||||
MotaActionBlocks['input_s'].xmlText(),
|
||||
MotaActionBlocks['input2_s'].xmlText(),
|
||||
MotaActionBlocks['update_s'].xmlText(),
|
||||
MotaActionBlocks['updateEnemys_s'].xmlText(),
|
||||
MotaActionBlocks['moveHero_s'].xmlText(),
|
||||
MotaActionBlocks['jumpHero_s'].xmlText(),
|
||||
MotaActionBlocks['changeFloor_s'].xmlText(),
|
||||
|
||||
@ -128,12 +128,6 @@ var functions_comment_c456ea59_6018_45ef_8bcc_211a24c627dc = {
|
||||
"_type": "textarea",
|
||||
"_lint": true,
|
||||
"_data": "获得战斗伤害信息"
|
||||
},
|
||||
"updateEnemys": {
|
||||
"_leaf": true,
|
||||
"_type": "textarea",
|
||||
"_lint": true,
|
||||
"_data": "更新怪物数据"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
@ -307,10 +307,8 @@ enemys.prototype._calDamage = function (enemy, hero, x, y, floorId) {
|
||||
return info.damage;
|
||||
}
|
||||
|
||||
////// 更新怪物数据 //////
|
||||
enemys.prototype.updateEnemys = function () {
|
||||
return this.enemydata.updateEnemys();
|
||||
}
|
||||
////// 更新怪物数据。已经不再使用,这里留空进行兼容。 //////
|
||||
enemys.prototype.updateEnemys = function () {}
|
||||
|
||||
////// 获得当前楼层的怪物列表 //////
|
||||
enemys.prototype.getCurrentEnemys = function (floorId) {
|
||||
|
||||
@ -1692,12 +1692,6 @@ events.prototype._action_hideHero = function (data, x, y, prefix) {
|
||||
core.doAction();
|
||||
}
|
||||
|
||||
events.prototype._action_updateEnemys = function (data, x, y, prefix) {
|
||||
core.enemys.updateEnemys();
|
||||
core.updateStatusBar();
|
||||
core.doAction();
|
||||
}
|
||||
|
||||
events.prototype._action_vibrate = function (data, x, y, prefix) {
|
||||
this.__action_doAsyncFunc(data.async, core.vibrate, data.time);
|
||||
}
|
||||
|
||||
@ -71,8 +71,6 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a =
|
||||
|
||||
// 设置已经到过的楼层
|
||||
core.setFlag("__visited__", {});
|
||||
|
||||
core.updateEnemys();
|
||||
},
|
||||
"win": function (reason, norank, noexit) {
|
||||
// 游戏获胜事件
|
||||
@ -774,18 +772,6 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a =
|
||||
"turn": Math.floor(turn),
|
||||
"damage": Math.floor(damage)
|
||||
};
|
||||
},
|
||||
"updateEnemys": function () {
|
||||
// 更新怪物数据,可以在这里对怪物属性和数据进行动态更新,详见文档——事件——怪物数据的动态修改
|
||||
// 此函数执行时间:重新开始游戏、读档后、通过事件调用“更新怪物数据”时
|
||||
|
||||
// 比如下面这个例子,如果flag:xxx为真,则将绿头怪的攻击设为100,金币设为20
|
||||
/*
|
||||
if (core.hasFlag('xxx')) {
|
||||
core.material.enemys.greenSlime.atk = 100;
|
||||
core.material.enemys.greenSlime.money = 20;
|
||||
}
|
||||
*/
|
||||
}
|
||||
},
|
||||
"actions": {
|
||||
@ -1012,8 +998,6 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a =
|
||||
core.material.icons.hero.width = core.material.images.images[icon].width / 4;
|
||||
core.material.icons.hero.height = core.material.images.images[icon].height / 4;
|
||||
}
|
||||
// 刷新怪物数据
|
||||
core.updateEnemys();
|
||||
|
||||
// TODO:增加自己的一些读档处理
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user