设置怪物属性不刷新

This commit is contained in:
ckcz123 2021-08-30 20:21:48 +08:00
parent 6291d1ea65
commit 55563c8a2b
3 changed files with 39 additions and 32 deletions

View File

@ -1255,19 +1255,20 @@ return code;
setEnemy_s setEnemy_s
: '设置怪物属性' ':' '怪物ID' IdString '的' EnemyId_List AssignOperator_List expression Newline : '设置怪物属性' ':' '怪物ID' IdString '的' EnemyId_List AssignOperator_List expression '不刷新显伤' Bool Newline
/* setEnemy_s /* setEnemy_s
tooltip : setEnemy设置某个怪物的属性 tooltip : setEnemy设置某个怪物的属性
helpUrl : /_docs/#/instruction helpUrl : /_docs/#/instruction
default : ["greenSlime", "atk", "="] default : ["greenSlime", "atk", "=", "", false]
allEnemys : ['IdString_0'] allEnemys : ['IdString_0']
colour : this.dataColor colour : this.dataColor
if (AssignOperator_List_0 && AssignOperator_List_0 != '=') { if (AssignOperator_List_0 && AssignOperator_List_0 != '=') {
AssignOperator_List_0 = ', "operator": "' + AssignOperator_List_0 + '"'; AssignOperator_List_0 = ', "operator": "' + AssignOperator_List_0 + '"';
} else AssignOperator_List_0 = ''; } else AssignOperator_List_0 = '';
var code = '{"type": "setEnemy", "id": "'+IdString_0+'", "name": "'+EnemyId_List_0+'"'+AssignOperator_List_0+', "value": "'+expression_0+'"},\n'; Bool_0 = Bool_0 ? ', "norefresh": true' : '';
var code = '{"type": "setEnemy", "id": "'+IdString_0+'", "name": "'+EnemyId_List_0+'"'+AssignOperator_List_0+', "value": "'+expression_0+'"'+Bool_0+'},\n';
return code; return code;
*/; */;
@ -1292,13 +1293,13 @@ return code;
setEnemyOnPoint_s setEnemyOnPoint_s
: '设置某点怪物属性' ':' 'x' EvalString? ',' 'y' EvalString? '楼层' IdString? '的' EnemyPoint_List AssignOperator_List expression Newline : '设置某点怪物属性' ':' 'x' EvalString? ',' 'y' EvalString? '楼层' IdString? '的' EnemyPoint_List AssignOperator_List expression '不刷新显伤' Bool Newline
/* setEnemyOnPoint_s /* setEnemyOnPoint_s
tooltip : setEnemyOnPoint设置某个点上怪物的属性 tooltip : setEnemyOnPoint设置某个点上怪物的属性
helpUrl : /_docs/#/instruction helpUrl : /_docs/#/instruction
default : ["", "", "", "atk", "="] default : ["", "", "", "atk", "=", "", false]
selectPoint : ["EvalString_0", "EvalString_1", "IdString_0"] selectPoint : ["EvalString_0", "EvalString_1", "IdString_0"]
allFloorIds : ['IdString_0'] allFloorIds : ['IdString_0']
colour : this.dataColor colour : this.dataColor
@ -1307,35 +1308,37 @@ if (AssignOperator_List_0 && AssignOperator_List_0 != '=') {
AssignOperator_List_0 = ', "operator": "' + AssignOperator_List_0 + '"'; AssignOperator_List_0 = ', "operator": "' + AssignOperator_List_0 + '"';
} else AssignOperator_List_0 = ''; } else AssignOperator_List_0 = '';
IdString_0 = IdString_0 && (', "floorId": "'+IdString_0+'"'); IdString_0 = IdString_0 && (', "floorId": "'+IdString_0+'"');
var code = '{"type": "setEnemyOnPoint"'+floorstr+IdString_0+', "name": "'+EnemyPoint_List_0+'"'+AssignOperator_List_0+', "value": "'+expression_0+'"},\n'; Bool_0 = Bool_0 ? ', "norefresh": true' : '';
var code = '{"type": "setEnemyOnPoint"'+floorstr+IdString_0+', "name": "'+EnemyPoint_List_0+'"'+AssignOperator_List_0+', "value": "'+expression_0+'"'+Bool_0+'},\n';
return code; return code;
*/; */;
resetEnemyOnPoint_s resetEnemyOnPoint_s
: '重置某点怪物属性' ':' 'x' EvalString? ',' 'y' EvalString? '楼层' IdString? Newline : '重置某点怪物属性' ':' 'x' EvalString? ',' 'y' EvalString? '楼层' IdString? '不刷新显伤' Bool Newline
/* resetEnemyOnPoint_s /* resetEnemyOnPoint_s
tooltip : resetEnemyOnPoint重置某个点上怪物的属性 tooltip : resetEnemyOnPoint重置某个点上怪物的属性
helpUrl : /_docs/#/instruction helpUrl : /_docs/#/instruction
default : ["", "", ""] default : ["", "", "", false]
selectPoint : ["EvalString_0", "EvalString_1", "IdString_0"] selectPoint : ["EvalString_0", "EvalString_1", "IdString_0"]
allFloorIds : ['IdString_0'] allFloorIds : ['IdString_0']
colour : this.dataColor colour : this.dataColor
var floorstr = MotaActionFunctions.processMultiLoc(EvalString_0, EvalString_1); var floorstr = MotaActionFunctions.processMultiLoc(EvalString_0, EvalString_1);
IdString_0 = IdString_0 && (', "floorId": "'+IdString_0+'"'); IdString_0 = IdString_0 && (', "floorId": "'+IdString_0+'"');
var code = '{"type": "resetEnemyOnPoint"'+floorstr+IdString_0+'},\n'; Bool_0 = Bool_0 ? ', "norefresh": true' : '';
var code = '{"type": "resetEnemyOnPoint"'+floorstr+IdString_0+Bool_0+'},\n';
return code; return code;
*/; */;
moveEnemyOnPoint_s moveEnemyOnPoint_s
: '移动某点怪物属性' ':' '起点' 'x' PosString? ',' 'y' PosString? '终点' 'x' PosString? 'y' PosString? '楼层' IdString? Newline : '移动某点怪物属性' ':' '起点' 'x' PosString? ',' 'y' PosString? '终点' 'x' PosString? 'y' PosString? '楼层' IdString? '不刷新显伤' Bool Newline
/* moveEnemyOnPoint_s /* moveEnemyOnPoint_s
tooltip : moveEnemyOnPoint移动某个点上怪物的属性到其他点 tooltip : moveEnemyOnPoint移动某个点上怪物的属性到其他点
helpUrl : /_docs/#/instruction helpUrl : /_docs/#/instruction
default : ["", "", "", "", ""] default : ["", "", "", "", "", false]
allFloorIds : ['IdString_0'] allFloorIds : ['IdString_0']
selectPoint : ["PosString_2", "PosString_3"] selectPoint : ["PosString_2", "PosString_3"]
menu : [['选择起点位置','editor_blockly.selectPoint(block,["PosString_0", "PosString_1"])']] menu : [['选择起点位置','editor_blockly.selectPoint(block,["PosString_0", "PosString_1"])']]
@ -1343,25 +1346,27 @@ colour : this.dataColor
IdString_0 = IdString_0 && (', "floorId": "'+IdString_0+'"'); IdString_0 = IdString_0 && (', "floorId": "'+IdString_0+'"');
var floorstr = PosString_0 && PosString_1 ? ', "from": ['+PosString_0+','+PosString_1+']' : ''; var floorstr = PosString_0 && PosString_1 ? ', "from": ['+PosString_0+','+PosString_1+']' : '';
if (PosString_2 && PosString_3) floorstr += ', "to": ['+PosString_2+','+PosString_3+']' if (PosString_2 && PosString_3) floorstr += ', "to": ['+PosString_2+','+PosString_3+']'
var code = '{"type": "moveEnemyOnPoint"'+floorstr+IdString_0+'},\n'; Bool_0 = Bool_0 ? ', "norefresh": true' : '';
var code = '{"type": "moveEnemyOnPoint"'+floorstr+IdString_0+Bool_0+'},\n';
return code; return code;
*/; */;
moveEnemyOnPoint_1_s moveEnemyOnPoint_1_s
: '移动某点怪物属性' ':' '起点' 'x' PosString? ',' 'y' PosString? '增量' 'dx' PosString? 'dy' PosString? '楼层' IdString? Newline : '移动某点怪物属性' ':' '起点' 'x' PosString? ',' 'y' PosString? '增量' 'dx' PosString? 'dy' PosString? '楼层' IdString? '不刷新显伤' Bool Newline
/* moveEnemyOnPoint_1_s /* moveEnemyOnPoint_1_s
tooltip : moveEnemyOnPoint移动某个点上怪物的属性到其他点 tooltip : moveEnemyOnPoint移动某个点上怪物的属性到其他点
helpUrl : /_docs/#/instruction helpUrl : /_docs/#/instruction
default : ["", "", "", "", ""] default : ["", "", "", "", "", false]
allFloorIds : ['IdString_0'] allFloorIds : ['IdString_0']
selectPoint : ["PosString_0", "PosString_1"] selectPoint : ["PosString_0", "PosString_1"]
colour : this.dataColor colour : this.dataColor
IdString_0 = IdString_0 && (', "floorId": "'+IdString_0+'"'); IdString_0 = IdString_0 && (', "floorId": "'+IdString_0+'"');
var floorstr = PosString_0 && PosString_1 ? ', "from": ['+PosString_0+','+PosString_1+']' : ''; var floorstr = PosString_0 && PosString_1 ? ', "from": ['+PosString_0+','+PosString_1+']' : '';
if (PosString_2 && PosString_3) floorstr += ', "dxy": ['+PosString_2+','+PosString_3+']' if (PosString_2 && PosString_3) floorstr += ', "dxy": ['+PosString_2+','+PosString_3+']'
var code = '{"type": "moveEnemyOnPoint"'+floorstr+IdString_0+'},\n'; Bool_0 = Bool_0 ? ', "norefresh": true' : '';
var code = '{"type": "moveEnemyOnPoint"'+floorstr+IdString_0+Bool_0+'},\n';
return code; return code;
*/; */;

View File

@ -750,7 +750,8 @@ ActionParser.prototype.parseAction = function() {
break; break;
case "setEnemy": case "setEnemy":
this.next = MotaActionBlocks['setEnemy_s'].xmlText([ this.next = MotaActionBlocks['setEnemy_s'].xmlText([
MotaActionFunctions.replaceToName_token(data.id), data.name, data["operator"]||'=', this.expandEvalBlock([data.value]), this.next]); MotaActionFunctions.replaceToName_token(data.id), data.name, data["operator"]||'=', this.expandEvalBlock([data.value]),
data.norefresh||false, this.next]);
break; break;
case "setEnemyOnPoint": case "setEnemyOnPoint":
data.loc=data.loc||[]; data.loc=data.loc||[];
@ -762,7 +763,8 @@ ActionParser.prototype.parseAction = function() {
y_str.push(t[1]); y_str.push(t[1]);
}) })
this.next = MotaActionBlocks['setEnemyOnPoint_s'].xmlText([ this.next = MotaActionBlocks['setEnemyOnPoint_s'].xmlText([
x_str.join(','),y_str.join(','),data.floorId||'',data.name, data["operator"]||'=', this.expandEvalBlock([data.value]), this.next]); x_str.join(','),y_str.join(','),data.floorId||'',data.name, data["operator"]||'=', this.expandEvalBlock([data.value]),
data.norefresh||false, this.next]);
break; break;
case "resetEnemyOnPoint": case "resetEnemyOnPoint":
data.loc=data.loc||[]; data.loc=data.loc||[];
@ -774,17 +776,17 @@ ActionParser.prototype.parseAction = function() {
y_str.push(t[1]); y_str.push(t[1]);
}) })
this.next = MotaActionBlocks['resetEnemyOnPoint_s'].xmlText([ this.next = MotaActionBlocks['resetEnemyOnPoint_s'].xmlText([
x_str.join(','),y_str.join(','), data.floorId||'',this.next]); x_str.join(','),y_str.join(','), data.floorId||'',data.norefresh||false,this.next]);
break; break;
case "moveEnemyOnPoint": case "moveEnemyOnPoint":
data.from=data.from||['',''] data.from=data.from||['','']
if (data.dxy) { if (data.dxy) {
this.next = MotaActionBlocks['moveEnemyOnPoint_1_s'].xmlText([ this.next = MotaActionBlocks['moveEnemyOnPoint_1_s'].xmlText([
data.from[0], data.from[1], data.dxy[0], data.dxy[1], data.floorId||'',this.next]); data.from[0], data.from[1], data.dxy[0], data.dxy[1], data.floorId||'',data.norefresh||false,this.next]);
} else { } else {
data.to=data.to||['',''] data.to=data.to||['','']
this.next = MotaActionBlocks['moveEnemyOnPoint_s'].xmlText([ this.next = MotaActionBlocks['moveEnemyOnPoint_s'].xmlText([
data.from[0], data.from[1], data.to[0], data.to[1], data.floorId||'',this.next]); data.from[0], data.from[1], data.to[0], data.to[1], data.floorId||'',data.norefresh||false,this.next]);
} }
break; break;
case "setEquip": case "setEquip":

View File

@ -1871,14 +1871,14 @@ events.prototype._action_addValue = function (data, x, y, prefix) {
} }
events.prototype._action_setEnemy = function (data, x, y, prefix) { events.prototype._action_setEnemy = function (data, x, y, prefix) {
this.setEnemy(data.id, data.name, data.value, data.operator, prefix); this.setEnemy(data.id, data.name, data.value, data.operator, prefix, data.norefresh);
core.doAction(); core.doAction();
} }
events.prototype._action_setEnemyOnPoint = function (data, x, y, prefix) { events.prototype._action_setEnemyOnPoint = function (data, x, y, prefix) {
var loc = this.__action_getLoc2D(data.loc, x, y, prefix); var loc = this.__action_getLoc2D(data.loc, x, y, prefix);
loc.forEach(function (one) { loc.forEach(function (one) {
core.setEnemyOnPoint(one[0], one[1], data.floorId, data.name, data.value, data.operator, prefix); core.setEnemyOnPoint(one[0], one[1], data.floorId, data.name, data.value, data.operator, prefix, data.norefresh);
}); });
core.doAction(); core.doAction();
} }
@ -1886,7 +1886,7 @@ events.prototype._action_setEnemyOnPoint = function (data, x, y, prefix) {
events.prototype._action_resetEnemyOnPoint = function (data, x, y, prefix) { events.prototype._action_resetEnemyOnPoint = function (data, x, y, prefix) {
var loc = this.__action_getLoc2D(data.loc, x, y, prefix); var loc = this.__action_getLoc2D(data.loc, x, y, prefix);
loc.forEach(function (one) { loc.forEach(function (one) {
core.resetEnemyOnPoint(one[0], one[1], data.floorId); core.resetEnemyOnPoint(one[0], one[1], data.floorId, data.norefresh);
}); });
core.doAction(); core.doAction();
} }
@ -1905,7 +1905,7 @@ events.prototype._action_moveEnemyOnPoint = function (data, x, y, prefix) {
} else { } else {
to = this.__action_getLoc(data.to, x, y, prefix); to = this.__action_getLoc(data.to, x, y, prefix);
} }
this.moveEnemyOnPoint(from[0], from[1], to[0], to[1], data.floorId); this.moveEnemyOnPoint(from[0], from[1], to[0], to[1], data.floorId, data.norefresh);
core.doAction(); core.doAction();
} }
@ -2986,7 +2986,7 @@ events.prototype._setValue_setGlobal = function (name, value) {
} }
////// 设置一个怪物属性 ////// ////// 设置一个怪物属性 //////
events.prototype.setEnemy = function (id, name, value, operator, prefix) { events.prototype.setEnemy = function (id, name, value, operator, prefix, norefresh) {
if (!core.hasFlag('enemyInfo')) { if (!core.hasFlag('enemyInfo')) {
core.setFlag('enemyInfo', {}); core.setFlag('enemyInfo', {});
} }
@ -2996,11 +2996,11 @@ events.prototype.setEnemy = function (id, name, value, operator, prefix) {
value = this._updateValueByOperator(core.calValue(value, prefix), (core.material.enemys[id]||{})[name], operator); value = this._updateValueByOperator(core.calValue(value, prefix), (core.material.enemys[id]||{})[name], operator);
enemyInfo[id][name] = value; enemyInfo[id][name] = value;
(core.material.enemys[id]||{})[name] = core.clone(value); (core.material.enemys[id]||{})[name] = core.clone(value);
core.updateStatusBar(); if (!norefresh) core.updateStatusBar();
} }
////// 设置某个点上的怪物属性 ////// ////// 设置某个点上的怪物属性 //////
events.prototype.setEnemyOnPoint = function (x, y, floorId, name, value, operator, prefix) { events.prototype.setEnemyOnPoint = function (x, y, floorId, name, value, operator, prefix, norefresh) {
floorId = floorId || core.status.floorId; floorId = floorId || core.status.floorId;
var block = core.getBlock(x, y, floorId); var block = core.getBlock(x, y, floorId);
if (block == null) return; if (block == null) return;
@ -3013,22 +3013,22 @@ events.prototype.setEnemyOnPoint = function (x, y, floorId, name, value, operato
flags.enemyOnPoint[floorId] = flags.enemyOnPoint[floorId] || {}; flags.enemyOnPoint[floorId] = flags.enemyOnPoint[floorId] || {};
flags.enemyOnPoint[floorId][x+","+y] = flags.enemyOnPoint[floorId][x+","+y] || {}; flags.enemyOnPoint[floorId][x+","+y] = flags.enemyOnPoint[floorId][x+","+y] || {};
flags.enemyOnPoint[floorId][x+","+y][name] = value; flags.enemyOnPoint[floorId][x+","+y][name] = value;
core.updateStatusBar(); if (!norefresh) core.updateStatusBar();
} }
////// 重置某个点上的怪物属性 ////// ////// 重置某个点上的怪物属性 //////
events.prototype.resetEnemyOnPoint = function (x, y, floorId) { events.prototype.resetEnemyOnPoint = function (x, y, floorId, norefresh) {
delete ((flags.enemyOnPoint||{})[floorId||core.status.floorId]||{})[x+","+y]; delete ((flags.enemyOnPoint||{})[floorId||core.status.floorId]||{})[x+","+y];
core.updateStatusBar(); if (!norefresh) core.updateStatusBar();
} }
////// 将某个点上已经设置的怪物属性移动到其他点 ////// ////// 将某个点上已经设置的怪物属性移动到其他点 //////
events.prototype.moveEnemyOnPoint = function (fromX, fromY, toX, toY, floorId) { events.prototype.moveEnemyOnPoint = function (fromX, fromY, toX, toY, floorId, norefresh) {
floorId = floorId || core.status.floorId; floorId = floorId || core.status.floorId;
if (((flags.enemyOnPoint||{})[floorId]||{})[fromX+","+fromY]) { if (((flags.enemyOnPoint||{})[floorId]||{})[fromX+","+fromY]) {
flags.enemyOnPoint[floorId][toX+","+toY] = flags.enemyOnPoint[floorId][fromX+","+fromY]; flags.enemyOnPoint[floorId][toX+","+toY] = flags.enemyOnPoint[floorId][fromX+","+fromY];
delete flags.enemyOnPoint[floorId][fromX+","+fromY]; delete flags.enemyOnPoint[floorId][fromX+","+fromY];
core.updateStatusBar(); if (!norefresh) core.updateStatusBar();
} }
} }