setEnemy
This commit is contained in:
parent
755c998ab8
commit
257a14248e
@ -776,10 +776,6 @@ hero可为null或一个对象,具体将使用core.getRealStatusOrDefault(hero,
|
|||||||
从V2.5.5开始,该函数也允许直接返回一个数字,代表战斗伤害值,此时回合数将视为0。
|
从V2.5.5开始,该函数也允许直接返回一个数字,代表战斗伤害值,此时回合数将视为0。
|
||||||
|
|
||||||
|
|
||||||
core.updateEnemys()
|
|
||||||
更新怪物数据。该函数实际被转发到了脚本编辑中。详见文档-事件-更新怪物数据。
|
|
||||||
|
|
||||||
|
|
||||||
core.getCurrentEnemys(floorId)
|
core.getCurrentEnemys(floorId)
|
||||||
获得某个楼层不重复的怪物信息,floorId不填默认为当前楼层。该函数会被怪物手册所调用。
|
获得某个楼层不重复的怪物信息,floorId不填默认为当前楼层。该函数会被怪物手册所调用。
|
||||||
该函数将返回一个列表,每一项都是一个不同的怪物,按照伤害值从小到大排序。
|
该函数将返回一个列表,每一项都是一个不同的怪物,按照伤害值从小到大排序。
|
||||||
|
|||||||
@ -781,10 +781,6 @@ hero可为null或一个对象,具体将使用core.getRealStatusOrDefault(hero,
|
|||||||
从V2.5.5开始,该函数也允许直接返回一个数字,代表战斗伤害值,此时回合数将视为0。
|
从V2.5.5开始,该函数也允许直接返回一个数字,代表战斗伤害值,此时回合数将视为0。
|
||||||
|
|
||||||
|
|
||||||
core.updateEnemys()
|
|
||||||
更新怪物数据。该函数实际被转发到了脚本编辑中。详见文档-事件-更新怪物数据。
|
|
||||||
|
|
||||||
|
|
||||||
core.getCurrentEnemys(floorId)
|
core.getCurrentEnemys(floorId)
|
||||||
获得某个楼层不重复的怪物信息,floorId不填默认为当前楼层。该函数会被怪物手册所调用。
|
获得某个楼层不重复的怪物信息,floorId不填默认为当前楼层。该函数会被怪物手册所调用。
|
||||||
该函数将返回一个列表,每一项都是一个不同的怪物,按照伤害值从小到大排序。
|
该函数将返回一个列表,每一项都是一个不同的怪物,按照伤害值从小到大排序。
|
||||||
@ -1049,6 +1045,11 @@ core.doEffect(effect, need, times)
|
|||||||
执行一个effect操作。该函数目前仅被全局商店的status:xxx+=yyy所调用。
|
执行一个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)
|
core.setFloorInfo(name, values, floorId, prefix)
|
||||||
设置某层楼的楼层属性,其中name为该楼层属性对应的条目,values为要设置的值,floorId为楼层id,prefix一般直接忽略。
|
设置某层楼的楼层属性,其中name为该楼层属性对应的条目,values为要设置的值,floorId为楼层id,prefix一般直接忽略。
|
||||||
譬如core.setFloorInfo("name","4", "MT1")则为设置MT1显示在状态栏中的层数为4
|
譬如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:设置楼层属性
|
### setFloor:设置楼层属性
|
||||||
|
|
||||||
使用`{"type":"setFloor"}`可以设置某层楼的楼层属性。
|
使用`{"type":"setFloor"}`可以设置某层楼的楼层属性。
|
||||||
@ -898,12 +919,6 @@ name是可选的,代表目标行走图的文件名。
|
|||||||
|
|
||||||
使用`{"type": "showHero"}`会重新显示勇士。
|
使用`{"type": "showHero"}`会重新显示勇士。
|
||||||
|
|
||||||
### updateEnemys:更新怪物数据
|
|
||||||
|
|
||||||
使用 `{"type": "updateEnemys"}` 可以动态修改怪物数据。
|
|
||||||
|
|
||||||
详见[怪物数据的动态修改](#怪物数据的动态修改)。
|
|
||||||
|
|
||||||
### sleep:等待多少毫秒
|
### sleep:等待多少毫秒
|
||||||
|
|
||||||
等价于RMXP中的"等待x帧",不过是以毫秒来计算。
|
等价于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进行一段对话。
|
有时候光战后事件`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
|
| hideStatusBar_s
|
||||||
| showHero_s
|
| showHero_s
|
||||||
| hideHero_s
|
| hideHero_s
|
||||||
| updateEnemys_s
|
|
||||||
| sleep_s
|
| sleep_s
|
||||||
| wait_s
|
| wait_s
|
||||||
| waitAsync_s
|
| waitAsync_s
|
||||||
@ -1102,18 +1101,6 @@ var code = '{"type": "hideHero"},\n';
|
|||||||
return code;
|
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
|
sleep_s
|
||||||
: '等待' Int '毫秒' '不可被Ctrl跳过' Bool Newline
|
: '等待' Int '毫秒' '不可被Ctrl跳过' Bool Newline
|
||||||
|
|
||||||
@ -3501,10 +3488,6 @@ ActionParser.prototype.parseAction = function() {
|
|||||||
this.next = MotaActionBlocks['hideHero_s'].xmlText([
|
this.next = MotaActionBlocks['hideHero_s'].xmlText([
|
||||||
this.next]);
|
this.next]);
|
||||||
break;
|
break;
|
||||||
case "updateEnemys":
|
|
||||||
this.next = MotaActionBlocks['updateEnemys_s'].xmlText([
|
|
||||||
this.next]);
|
|
||||||
break;
|
|
||||||
case "sleep": // 等待多少毫秒
|
case "sleep": // 等待多少毫秒
|
||||||
this.next = MotaActionBlocks['sleep_s'].xmlText([
|
this.next = MotaActionBlocks['sleep_s'].xmlText([
|
||||||
data.time||0,data.noSkip||false,this.next]);
|
data.time||0,data.noSkip||false,this.next]);
|
||||||
|
|||||||
@ -113,7 +113,6 @@ editor_blockly = function () {
|
|||||||
MotaActionBlocks['input_s'].xmlText(),
|
MotaActionBlocks['input_s'].xmlText(),
|
||||||
MotaActionBlocks['input2_s'].xmlText(),
|
MotaActionBlocks['input2_s'].xmlText(),
|
||||||
MotaActionBlocks['update_s'].xmlText(),
|
MotaActionBlocks['update_s'].xmlText(),
|
||||||
MotaActionBlocks['updateEnemys_s'].xmlText(),
|
|
||||||
MotaActionBlocks['moveHero_s'].xmlText(),
|
MotaActionBlocks['moveHero_s'].xmlText(),
|
||||||
MotaActionBlocks['jumpHero_s'].xmlText(),
|
MotaActionBlocks['jumpHero_s'].xmlText(),
|
||||||
MotaActionBlocks['changeFloor_s'].xmlText(),
|
MotaActionBlocks['changeFloor_s'].xmlText(),
|
||||||
|
|||||||
@ -128,12 +128,6 @@ var functions_comment_c456ea59_6018_45ef_8bcc_211a24c627dc = {
|
|||||||
"_type": "textarea",
|
"_type": "textarea",
|
||||||
"_lint": true,
|
"_lint": true,
|
||||||
"_data": "获得战斗伤害信息"
|
"_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;
|
return info.damage;
|
||||||
}
|
}
|
||||||
|
|
||||||
////// 更新怪物数据 //////
|
////// 更新怪物数据。已经不再使用,这里留空进行兼容。 //////
|
||||||
enemys.prototype.updateEnemys = function () {
|
enemys.prototype.updateEnemys = function () {}
|
||||||
return this.enemydata.updateEnemys();
|
|
||||||
}
|
|
||||||
|
|
||||||
////// 获得当前楼层的怪物列表 //////
|
////// 获得当前楼层的怪物列表 //////
|
||||||
enemys.prototype.getCurrentEnemys = function (floorId) {
|
enemys.prototype.getCurrentEnemys = function (floorId) {
|
||||||
|
|||||||
@ -1692,12 +1692,6 @@ events.prototype._action_hideHero = function (data, x, y, prefix) {
|
|||||||
core.doAction();
|
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) {
|
events.prototype._action_vibrate = function (data, x, y, prefix) {
|
||||||
this.__action_doAsyncFunc(data.async, core.vibrate, data.time);
|
this.__action_doAsyncFunc(data.async, core.vibrate, data.time);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -71,8 +71,6 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a =
|
|||||||
|
|
||||||
// 设置已经到过的楼层
|
// 设置已经到过的楼层
|
||||||
core.setFlag("__visited__", {});
|
core.setFlag("__visited__", {});
|
||||||
|
|
||||||
core.updateEnemys();
|
|
||||||
},
|
},
|
||||||
"win": function (reason, norank, noexit) {
|
"win": function (reason, norank, noexit) {
|
||||||
// 游戏获胜事件
|
// 游戏获胜事件
|
||||||
@ -774,18 +772,6 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a =
|
|||||||
"turn": Math.floor(turn),
|
"turn": Math.floor(turn),
|
||||||
"damage": Math.floor(damage)
|
"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": {
|
"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.width = core.material.images.images[icon].width / 4;
|
||||||
core.material.icons.hero.height = core.material.images.images[icon].height / 4;
|
core.material.icons.hero.height = core.material.images.images[icon].height / 4;
|
||||||
}
|
}
|
||||||
// 刷新怪物数据
|
|
||||||
core.updateEnemys();
|
|
||||||
|
|
||||||
// TODO:增加自己的一些读档处理
|
// TODO:增加自己的一些读档处理
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user