From 20f2671206e6da8b319921f2d53af837a863fbf7 Mon Sep 17 00:00:00 2001 From: ckcz123 Date: Tue, 26 May 2020 14:40:04 +0800 Subject: [PATCH] =?UTF-8?q?=E6=80=AA=E7=89=A9=E8=AF=A6=E7=BB=86=E4=BF=A1?= =?UTF-8?q?=E6=81=AF=E5=85=89=E7=8E=AF=E9=94=99=E8=AF=AF;=E9=92=A5?= =?UTF-8?q?=E5=8C=99=E4=B8=8D=E6=B6=88=E8=80=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- _server/MotaAction.g4 | 10 ++++++---- _server/MotaActionParser.js | 4 +++- libs/events.js | 10 ++++++---- libs/ui.js | 10 +++++----- v2.x-final更新.txt | 4 ++-- 5 files changed, 22 insertions(+), 16 deletions(-) diff --git a/_server/MotaAction.g4 b/_server/MotaAction.g4 index 77f19381..17deeb44 100644 --- a/_server/MotaAction.g4 +++ b/_server/MotaAction.g4 @@ -507,25 +507,27 @@ doorKeyList doorKeyKnown - : Key_List ':' Int BEND + : Key_List ':' Int '需要但不消耗' Bool BEND /* doorKeyKnown tooltip : 需要钥匙 -default : ['yellowKey', 1] +default : ['yellowKey', 1, false] helpUrl : https://h5mota.com/games/template/_docs/#/event +if (Bool_0) Key_List_0 += ':o'; return '"'+Key_List_0+'": '+Int_0+', '; */; doorKeyUnknown - : IdString ':' Int BEND + : IdString ':' Int '需要但不消耗' Bool BEND /* doorKeyUnknown tooltip : 需要钥匙 -default : ['orangeKey', 1] +default : ['orangeKey', 1, false] helpUrl : https://h5mota.com/games/template/_docs/#/event allItems : ['IdString_0'] +if (Bool_0) IdString_0 += ':o'; return '"'+IdString_0+'": '+Int_0+', '; */; diff --git a/_server/MotaActionParser.js b/_server/MotaActionParser.js index 6086dd5e..9d012679 100644 --- a/_server/MotaActionParser.js +++ b/_server/MotaActionParser.js @@ -81,9 +81,11 @@ ActionParser.prototype.parse = function (obj,type) { var text_choices = null; var knownListKeys = MotaActionBlocks['Key_List'].options.map(function (one) {return one[1];}) Object.keys(obj).sort().forEach(function (key) { + var noNeed = key.endsWith(':o'); + if (noNeed) key = key.substring(0, key.length - 2); var one = knownListKeys.indexOf(key) >= 0 ? 'doorKeyKnown' : 'doorKeyUnknown'; text_choices = MotaActionBlocks[one].xmlText([ - one == 'doorKeyUnknown' ? MotaActionFunctions.replaceToName_token(key) : key, obj[key], text_choices + one == 'doorKeyUnknown' ? MotaActionFunctions.replaceToName_token(key) : key, obj[key], noNeed, text_choices ]); }) return text_choices; diff --git a/libs/events.js b/libs/events.js index 87385c7d..bfe8802b 100644 --- a/libs/events.js +++ b/libs/events.js @@ -471,20 +471,22 @@ events.prototype._openDoor_check = function (id, x, y, needKey) { var keyInfo = doorInfo.keys || {}; if (needKey) { for (var keyName in keyInfo) { + var keyValue = keyInfo[keyName]; + if (keyName.endsWith(':o')) keyName = keyName.substring(0, keyName.length - 2); + // --- 如果是一个不存在的道具,则直接认为无法开启 if (!core.material.items[keyName]) { core.drawTip("无法开启此门"); return clearAndReturn(); } - var keyValue = keyInfo[keyName]; if (core.itemCount(keyName) < keyValue) { - core.drawTip("你没有" + ((core.material.items[keyName] || {}).name || "钥匙"), null, true); + core.drawTip("你的" + ((core.material.items[keyName] || {}).name || "钥匙") + "不足!", null, true); return false; } } if (!core.status.event.id) core.autosave(true); - for (var keyName in keyInfo) { - core.removeItem(keyName, keyInfo[keyName]); + for (var keyName in keyInfo) { + if (!keyName.endsWith(':o')) core.removeItem(keyName, keyInfo[keyName]); } } core.playSound(doorInfo.openSound); diff --git a/libs/ui.js b/libs/ui.js index ad2d4215..bbea5943 100644 --- a/libs/ui.js +++ b/libs/ui.js @@ -2134,15 +2134,15 @@ ui.prototype._drawBookDetail_hatred = function (enemy, texts) { } ui.prototype._drawBookDetail_turnAndCriticals = function (enemy, floorId, texts) { - var damageInfo = core.getDamageInfo(enemy, null, null, null, floorId); + var damageInfo = core.getDamageInfo(enemy.id, null, null, null, floorId); texts.push("\r[#FF6A6A]\\d战斗回合数:\\d\r[]"+((damageInfo||{}).turn||0)); // 临界表 - var criticals = core.enemys.nextCriticals(enemy, 8, null, null, floorId).map(function (v) { + var criticals = core.enemys.nextCriticals(enemy.id, 8, null, null, floorId).map(function (v) { return core.formatBigNumber(v[0])+":"+core.formatBigNumber(v[1]); }); while (criticals[0]=='0:0') criticals.shift(); texts.push("\r[#FF6A6A]\\d临界表:\\d\r[]"+JSON.stringify(criticals)); - var prevInfo = core.getDamageInfo(enemy, {atk: core.status.hero.atk-1}, null, null, floorId); + var prevInfo = core.getDamageInfo(enemy.id, {atk: core.status.hero.atk-1}, null, null, floorId); if (prevInfo != null && damageInfo != null) { if (damageInfo.damage != null) damageInfo = damageInfo.damage; if (prevInfo.damage != null) prevInfo = prevInfo.damage; @@ -2548,8 +2548,8 @@ ui.prototype._drawEquipbox_drawStatusChanged = function (info, y, equip, equipTy if (typeof core.status.hero[name] != 'number') continue; var nowValue = core.getRealStatus(name); // 查询新值 - var newValue = (core.getStatus(name) + (compare.value[name] || 0)) - * ((core.getBuff(name) * 100 + (compare.percentage[name] || 0)) / 100); + var newValue = Math.floor((core.getStatus(name) + (compare.value[name] || 0)) + * (core.getBuff(name) * 100 + (compare.percentage[name] || 0)) / 100); if (nowValue == newValue) continue; var text = this._drawEquipbox_getStatusName(name); this._drawEquipbox_drawStatusChanged_draw(text + " ", '#CCCCCC', obj); diff --git a/v2.x-final更新.txt b/v2.x-final更新.txt index a06712e0..91323cee 100644 --- a/v2.x-final更新.txt +++ b/v2.x-final更新.txt @@ -70,9 +70,9 @@ (已完成!) \t[this], 勇士朝下,flag:arg清理,瞬移扣血 (OK) 同步存档合并;(OK) 失去焦点右键;(OK) 竖屏标题界面背景;(OK)商店录像bug (OK) 右键反复弹出;(OK) 上下楼梯绑定楼传;(OK) 属性框出现0问题;(OK) 上下楼点选点 -(OK) 地图编辑框无效;(OK) jumpHero和帧动画冲突;bookDetails重复计算buff;(OK) 怪物属性多选 +(OK) 地图编辑框无效;(OK) jumpHero和帧动画冲突;(OK) bookDetails重复计算buff;(OK) 怪物属性多选 (OK) 图片化文本翻转;(OK) 绘制矩形(边框)旋转; -特殊属性&光环检查;钥匙不消耗;录像接档问题 +特殊属性&光环检查;(OK) 钥匙不消耗;录像接档问题 -------------