怪物的faceIds

This commit is contained in:
ckcz123 2021-07-31 11:30:17 +08:00
parent b8b9367da3
commit 59c1828e16
7 changed files with 64 additions and 14 deletions

View File

@ -617,7 +617,7 @@ return code;
faceIds_m faceIds_m
: '行走图朝向:' BGNL? Newline '向上ID' IdString? '向下ID' IdString? '向左ID' IdString? '向右ID' IdString? BEND : '行走图朝向:' BGNL? Newline '向下ID' IdString? '向左ID' IdString? '向右ID' IdString? '向上ID' IdString? BEND
/* faceIds_m /* faceIds_m
@ -626,10 +626,10 @@ default : ["","","",""]
allIds : ['IdString_0','IdString_1','IdString_2','IdString_3'] allIds : ['IdString_0','IdString_1','IdString_2','IdString_3']
helpUrl : /_docs/#/instruction helpUrl : /_docs/#/instruction
return '{' + [ return '{' + [
IdString_0 && ('"up": "' + IdString_0 +'"'), IdString_0 && ('"down": "' + IdString_0 +'"'),
IdString_1 && ('"down": "' + IdString_1 +'"'), IdString_1 && ('"left": "' + IdString_1 +'"'),
IdString_2 && ('"left": "' + IdString_2 +'"'), IdString_2 && ('"right": "' + IdString_2 +'"'),
IdString_3 && ('"right": "' + IdString_3 +'"'), IdString_3 && ('"up": "' + IdString_3 +'"'),
].filter(function (x) { return x; }).join(', ') + '}\n'; ].filter(function (x) { return x; }).join(', ') + '}\n';
*/; */;

View File

@ -115,7 +115,7 @@ ActionParser.prototype.parse = function (obj,type) {
case 'faceIds': case 'faceIds':
if(!obj) obj={}; if(!obj) obj={};
return MotaActionBlocks['faceIds_m'].xmlText([obj.up||"", obj.down||"", obj.left||"", obj.right||""]); return MotaActionBlocks['faceIds_m'].xmlText([obj.down||"", obj.left||"", obj.right||"", obj.up||""]);
case 'mainStyle': case 'mainStyle':
if(!obj) obj={}; if(!obj) obj={};

View File

@ -306,7 +306,8 @@ editor_file = function (editor, callback) {
callback('不能对自动元件进行自动注册!'); callback('不能对自动元件进行自动注册!');
return; return;
} }
if (image=='npc48' && confirm("你想绑定npc48的朝向么\n如果是则会将最后四个npc48的faceIds进行自动绑定。")) { if ((image=='npcs' || image=='npc48' || image == 'enemys' || image == 'enemy48')
&& confirm("你想绑定图块的朝向么?\n如果是则会将最后四个注册图块的faceIds进行自动绑定。")) {
bindFaceIds = true; bindFaceIds = true;
} }
var c=image.toUpperCase().charAt(0); var c=image.toUpperCase().charAt(0);
@ -353,10 +354,17 @@ editor_file = function (editor, callback) {
var i = faceIds.length - 4; var i = faceIds.length - 4;
var down = faceIds[i], left = faceIds[i+1], right = faceIds[i+2], up = faceIds[i+3]; var down = faceIds[i], left = faceIds[i+1], right = faceIds[i+2], up = faceIds[i+3];
var obj = {down: down.id, left: left.id, right: right.id, up: up.id}; var obj = {down: down.id, left: left.id, right: right.id, up: up.id};
mapActions.push(["add", "['" + down.idnum + "']['faceIds']", obj]); if (image.indexOf('enemy')==0) {
mapActions.push(["add", "['" + left.idnum + "']['faceIds']", obj]); templateActions.push(["add", "['" + down.id + "']['faceIds']", obj]);
mapActions.push(["add", "['" + right.idnum + "']['faceIds']", obj]); templateActions.push(["add", "['" + left.id + "']['faceIds']", obj]);
mapActions.push(["add", "['" + up.idnum + "']['faceIds']", obj]); templateActions.push(["add", "['" + right.id + "']['faceIds']", obj]);
templateActions.push(["add", "['" + up.id + "']['faceIds']", obj]);
} else {
mapActions.push(["add", "['" + down.idnum + "']['faceIds']", obj]);
mapActions.push(["add", "['" + left.idnum + "']['faceIds']", obj]);
mapActions.push(["add", "['" + right.idnum + "']['faceIds']", obj]);
mapActions.push(["add", "['" + up.idnum + "']['faceIds']", obj]);
}
} }
} }

View File

@ -135,6 +135,13 @@ var comment_c456ea59_6018_45ef_8bcc_211a24c627dc = {
"_docs": "手册ID", "_docs": "手册ID",
"_data": "在怪物手册中映射到的怪物ID。如果此项不为null则在怪物手册中将用目标ID来替换该怪物原本的ID。常被运用在同一个怪物的多朝向上。" "_data": "在怪物手册中映射到的怪物ID。如果此项不为null则在怪物手册中将用目标ID来替换该怪物原本的ID。常被运用在同一个怪物的多朝向上。"
}, },
"faceIds": {
"_leaf": true,
"_type": "event",
"_event": "faceIds",
"_docs": "行走图朝向",
"_data": "行走图朝向。在勇士撞上图块时,或图块在移动时,会自动选择最合适的朝向图块(如果存在定义)来进行绘制。"
},
"hp": { "hp": {
"_leaf": true, "_leaf": true,
"_type": "textarea", "_type": "textarea",
@ -374,7 +381,7 @@ var comment_c456ea59_6018_45ef_8bcc_211a24c627dc = {
"_type": "event", "_type": "event",
"_event": "faceIds", "_event": "faceIds",
"_docs": "行走图朝向", "_docs": "行走图朝向",
"_data": "行走图朝向仅对npc48有效。在勇士撞上NPC时或NPC在移动时,会自动选择最合适的朝向图块(如果存在定义)来进行绘制。" "_data": "行走图朝向。在勇士撞上图块时,或图块在移动时,会自动选择最合适的朝向图块(如果存在定义)来进行绘制。"
} }
} }
}, },

View File

@ -30,6 +30,16 @@ enemys.prototype.getEnemys = function () {
} }
} }
} }
// 将所有怪物的各项属性映射到朝下的
for (var id in enemys) {
if (enemys[id].faceIds) {
var downId = enemys[id].faceIds.down;
if (downId != null && downId != id && enemys[downId]) {
enemys[id] = core.clone(enemys[downId]);
enemys[id].id = id;
}
}
}
return enemys; return enemys;
} }
@ -365,8 +375,8 @@ enemys.prototype._getCurrentEnemys_getEnemy = function (enemyId) {
var enemy = core.material.enemys[enemyId]; var enemy = core.material.enemys[enemyId];
if (!enemy) return null; if (!enemy) return null;
// 检查displayIdInBook // 检查朝向;displayIdInBook
return core.material.enemys[enemy.displayIdInBook] || enemy; return core.material.enemys[(enemy.faceIds || {}).down] || core.material.enemys[enemy.displayIdInBook] || enemy;
} }
enemys.prototype._getCurrentEnemys_addEnemy = function (enemyId, enemys, used, x, y, floorId) { enemys.prototype._getCurrentEnemys_addEnemy = function (enemyId, enemys, used, x, y, floorId) {

View File

@ -419,6 +419,17 @@ events.prototype._trigger_ignoreChangeFloor = function (block) {
} }
events.prototype._sys_battle = function (data, callback) { events.prototype._sys_battle = function (data, callback) {
// 检查是否需要改变朝向
if (data.x == core.nextX() && data.y == core.nextY()) {
var dir = core.turnDirection(":back");
var id = data.event.id, toId = (data.event.faceIds || {})[dir];
if (toId && id != toId) {
var number = core.getNumberById(toId);
if (number > 0)
core.setBlock(number, data.x, data.y);
}
}
// 检查战前事件 // 检查战前事件
var beforeBattle = []; var beforeBattle = [];
core.push(beforeBattle, core.floors[core.status.floorId].beforeBattle[data.x + "," + data.y]); core.push(beforeBattle, core.floors[core.status.floorId].beforeBattle[data.x + "," + data.y]);

View File

@ -218,6 +218,14 @@ maps.prototype.initBlock = function (x, y, id, addInfo, eventFloor) {
} }
delete block.event.canPass; delete block.event.canPass;
// 增加怪物的faceIds
if (block.event.cls.indexOf("enemy") ==0 ) {
var enemy = core.material.enemys[block.event.id];
if (enemy && enemy.faceIds) {
block.event.faceIds = enemy.faceIds;
}
}
if (addInfo) this._addInfo(block); if (addInfo) this._addInfo(block);
if (eventFloor) { if (eventFloor) {
this._addEvent(block, x, y, (eventFloor.events || {})[x + "," + y]); this._addEvent(block, x, y, (eventFloor.events || {})[x + "," + y]);
@ -1883,6 +1891,12 @@ maps.prototype.searchBlockWithFilter = function (blockFilter, floorId, showDisab
return result; return result;
} }
////// 获得某个图块其行走图朝向朝下的图块ID //////
maps.prototype.getFaceDownId = function (block) {
if (block == null || !block.event) return null;
return (block.event.faceIds || {}).down || block.event.id;
}
// -------- 启用/禁用图块,楼层贴图 -------- // // -------- 启用/禁用图块,楼层贴图 -------- //
////// 将某个块从禁用变成启用状态 ////// ////// 将某个块从禁用变成启用状态 //////