diff --git a/_server/MotaAction.g4 b/_server/MotaAction.g4 index a29585c8..1a9ed2a5 100644 --- a/_server/MotaAction.g4 +++ b/_server/MotaAction.g4 @@ -418,7 +418,7 @@ return code; // equip 事件编辑器入口之一 equip_m - : '装备' '类型' EvalString '装备动画(第一个装备格有效)' IdString? BGNL? '数值提升项' equipList+ '百分比提升项' equipList+ BEND + : '装备' '类型' EvalString '装备动画(第一个装备格有效)' IdString? BGNL? '数值提升项' equipList+ '百分比提升项' equipList+ '此道具cls须为equips并设置canUseItemEffect' BEND /* equip_m @@ -441,25 +441,27 @@ equipList equipKnown - : Equip_List ':' Number BEND + : Equip_List ':' EvalString BEND /* equipKnown tooltip : 装备项 default : ['atk', 10] helpUrl : /_docs/#/instruction -return '"'+Equip_List_0+'": '+Number_0+', '; +if (!/^[+-]?\d+(\.\d+)?$/.test(EvalString_0)) EvalString_0 = '"' + EvalString_0 + '"'; +return '"'+Equip_List_0+'": '+EvalString_0+', '; */; equipUnknown - : EvalString ':' Number BEND + : EvalString ':' EvalString BEND /* equipUnknown tooltip : 装备项 default : ['speed', 10] helpUrl : /_docs/#/instruction -return '"'+EvalString_0+'": '+Number_0+', '; +if (!/^[+-]?\d+(\.\d+)?$/.test(EvalString_1)) EvalString_1 = '"' + EvalString_1 + '"'; +return '"'+EvalString_0+'": '+EvalString_1+', '; */; diff --git a/_server/table/comment.js b/_server/table/comment.js index 1e56adfe..bc2ae5ee 100644 --- a/_server/table/comment.js +++ b/_server/table/comment.js @@ -97,16 +97,8 @@ var comment_c456ea59_6018_45ef_8bcc_211a24c627dc = { "_type": "textarea", "_string": true, "_lint": true, - "_docs": "能否使用", - "_data": "当前能否使用该道具,仅对cls为tools或constants有效。" - }, - "equipCondition": { - "_leaf": true, - "_type": "textarea", - "_string": true, - "_lint": true, - "_docs": "能否装备", - "_data": "能装备某个装备的条件,仅对cls为equips有效。\n与canUseItemEffect不同,这里null代表可以装备。" + "_docs": "能否使用或装备", + "_data": "当前能否使用或装备该道具,仅对cls不为items有效。null表示始终不可使用但可装备" } } }, diff --git a/libs/items.js b/libs/items.js index 33a0841b..dba4d97d 100644 --- a/libs/items.js +++ b/libs/items.js @@ -244,10 +244,10 @@ items.prototype.canEquip = function (equipId, hint) { } // 可装备条件 - var equipCondition = core.material.items[equipId].equipCondition; - if (equipCondition) { + var canUseItemEffect = core.material.items[equipId].canUseItemEffect; + if (canUseItemEffect) { try { - if (!eval(equipCondition)) { + if (!eval(canUseItemEffect)) { if (hint) core.drawTip("当前不可换上" + equip.name); return false; } diff --git a/libs/utils.js b/libs/utils.js index 60981d8c..3c9f5450 100644 --- a/libs/utils.js +++ b/libs/utils.js @@ -421,7 +421,7 @@ utils.prototype.formatSize = function (size) { utils.prototype.formatBigNumber = function (x, onMap) { x = Math.floor(parseFloat(x)); - if (!core.isset(x)) return '???'; + if (!core.isset(x) || !Number.isFinite(x)) return '???'; if (x > 1e24 || x < -1e24) return x.toExponential(2); var c = x < 0 ? "-" : ""; diff --git a/migration.html b/migration.html index c50d916b..7ed14fe6 100644 --- a/migration.html +++ b/migration.html @@ -323,7 +323,7 @@ function action_items(callback) { } // Step 1: 合并内容 var items = items_296f5d02_12fd_4166_a7c1_b5e830c9ee3a.items; - ["itemEffect", "itemEffectTip", "useItemEvent", "useItemEffect", "canUseItemEffect", "equipCondition"].forEach(function(one) { + ["itemEffect", "itemEffectTip", "useItemEvent", "useItemEffect", "canUseItemEffect"].forEach(function(one) { var data = items_296f5d02_12fd_4166_a7c1_b5e830c9ee3a[one]; if (!data) return; for (var id in data) { diff --git a/mota-js10月和273issue.txt b/mota-js10月和273issue.txt index 654634cf..727e7fde 100644 --- a/mota-js10月和273issue.txt +++ b/mota-js10月和273issue.txt @@ -1,11 +1,15 @@ 2.7.2改版和多语言版中做出的功能性改进: -1. terrains.png中追加了14种薄墙图块(不可出入方向一致,画在非事件层可使勇士和阻击怪无法穿过)和仿rm柜台,但没有向下延伸绘制的效果。 -2. 怪物追加了批量战后事件(比照了道具的useItemEvent和其他图块的script),此事件对同种任何怪物生效,移动/跳跃后依然生效。炸弹只炸面前的情况增加了触发两种战后事件,以方便作者。 -3. 怪物追加了攻击勇士的动画,该动画存在时会作为勇士攻击怪物动画的回调,天降强制战斗时则覆盖勇士攻击怪物的动画。 -4. 插件编写init中追加了两个API用来将project\enemys.js转换成csv格式或转换回来,以方便作者读写(希望此思路也用于其他文件如project\maps.js来方便通行性等属性的读写)。其中批量战后事件的存储方式参考了自定义录像项的要求,即JSON.stringify再core.encodeBase64 +(√)1. terrains.png中追加了14种薄墙图块(不可出入方向一致,画在非事件层可使勇士和阻击怪无法穿过)和仿rm柜台,但没有向下延伸绘制的效果。 +2. 怪物追加了批量战后事件(比照了道具的useItemEvent和其他图块的script),此事件对同种任何怪物生效,移动/跳跃后依然生效。 +(?)2.1 炸弹只炸面前的情况增加了触发两种战后事件,以方便作者。 +(x)3. 怪物追加了攻击勇士的动画,该动画存在时会作为勇士攻击怪物动画的回调,天降强制战斗时则覆盖勇士攻击怪物的动画。 +(x)4. 插件编写init中追加了两个API用来将project\enemys.js转换成csv格式或转换回来,以方便作者读写(希望此思路也用于其他文件如project\maps.js来方便通行性等属性的读写)。其中批量战后事件的存储方式参考了自定义录像项的要求,即JSON.stringify再core.encodeBase64 5. core.stairExists()改为了始终允许87到94号图块,毕竟“不想允许这些图块的作者只需要换别的素材”,而“想允许这些图块的作者则不得不魔改/复写函数或者开启平面模式,但该作者未必需求玩家飞回上次离开的位置”。 -6. 道具属性移除了equipCondition,与canUseItemEffect合并,null依然表示不可使用但可装备。装备属性的事件编辑器中提示作者修改cls和设置穿戴条件。 -7. 无参的入口方块全部统一,比如战后、开门后、两个arrive和公共事件,以方便复制粘贴,不然老提示入口方块类型不符。doorInfo的开关门时间分成了两个数,有些门开关速度作者可能需要不一致。无视地形移动/跳跃勇士挪到了地图处理类,因为经常和图块的移动跳跃一起用于演出且都没有碰撞效果。UI绘制的颜色改成了注释的浅紫色,各种子场合块的颜色改成了入口方块的深紫色,以和地图处理类的浅蓝色相区分。 +(√)6. 道具属性移除了equipCondition,与canUseItemEffect合并,null依然表示不可使用但可装备。装备属性的事件编辑器中提示作者修改cls和设置穿戴条件。 +7. 无参的入口方块全部统一,比如战后、开门后、两个arrive和公共事件,以方便复制粘贴,不然老提示入口方块类型不符。 +7.1 doorInfo的开关门时间分成了两个数,有些门开关速度作者可能需要不一致。 +7.2 无视地形移动/跳跃勇士挪到了地图处理类,因为经常和图块的移动跳跃一起用于演出且都没有碰撞效果。 +7.3 UI绘制的颜色改成了注释的浅紫色,各种子场合块的颜色改成了入口方块的深紫色,以和地图处理类的浅蓝色相区分。 8. 修复了Math一元运算值块转换为json时的语法错误,追加了部分函数。drawTip事件追加了第几帧的参数。 9. 玩家设置中追加了左撇子模式,开启后wsad起方向键的作用,ijkl起原wsad的SL作用,以方便键鼠并用。 10. 移除了部分引用极少的函数,如仇恨怪详情、claerTip和tryUseItem改成了直接inline,从道具栏使用道具失败时不再closePanel,以方便玩家继续选择其他道具(破炸冰这三个先斩后奏的就没办法了)。 @@ -19,12 +23,13 @@ 18. 楼层属性canFlyTo拆成了两项,即canFlyTo和canFlyFrom,以方便作者个性化。 19. getSpecials由yzm优化了配色,优化了固伤属性的描述(可被负伤抵消)。 20. 难度单词为空字符串时显示“竖屏数字键”,以提示竖屏玩家。另外希望修复读档等场合红一下的bug -21. getToolboxItems提供了一个修改排序方式的例子作为注释并说明了用法。 -22. project\icons.js中给勇士追加了midFoot表示第三帧并用于两种行走动画(暂不包括F7)的绘制(此功能建议要么merge要么作为系统开关让作者取舍,毕竟复写起来要改的函数还挺多而且需要厘清一些逻辑关系),其他图块移动时的帧切换频率改为了全局帧动画的三倍以优化观感。 +(√)21. getToolboxItems提供了一个修改排序方式的例子作为注释并说明了用法。 +(x)22. project\icons.js中给勇士追加了midFoot表示第三帧并用于两种行走动画(暂不包括F7)的绘制(此功能建议要么merge要么作为系统开关让作者取舍,毕竟复写起来要改的函数还挺多而且需要厘清一些逻辑关系),其他图块移动时的帧切换频率改为了全局帧动画的三倍以优化观感。 23. 事件编辑器中图块id自动补全追加了图标,感谢ad,更新了atkValue、defValue、range和n等的表格注释。 -24. 修改了formatBigNumber对±∞的处理方式,现在它们也会变成???了。另外建议把onMap参数细化为有效数字的位数,以供作者更灵活地使用。 -25. P键和通关url的&num=10改成了&num=1,以方便玩家翻阅到评论区。移除了equip.mp3,穿脱装备改为播放centerFly.mp3 -26. 追加了公共事件版全局商店“快捷换装”以方便手机端,该事件的对话框可以再更透明一点来方便玩家边换装边观察地图显伤。 +(√)24. 修改了formatBigNumber对±∞的处理方式,现在它们也会变成???了。 +(x)24.1 另外建议把onMap参数细化为有效数字的位数,以供作者更灵活地使用。 +(x)25. P键和通关url的&num=10改成了&num=1,以方便玩家翻阅到评论区。移除了equip.mp3,穿脱装备改为播放centerFly.mp3 +(x)26. 追加了公共事件版全局商店“快捷换装”以方便手机端,该事件的对话框可以再更透明一点来方便玩家边换装边观察地图显伤。 其他issues: 0.(1008)加入一个flag来控制当前是否允许存档,因为天气色调bgm进存档的情况下会屏蔽楼层切换,不进存档的话玩家原地SL又不保留。录像播放中加一个百分比(二次录制长度/原录像长度)显示,并且允许在已播放的任意节点之间快退快进。 diff --git a/project/functions.js b/project/functions.js index 5a833ad9..aa358157 100644 --- a/project/functions.js +++ b/project/functions.js @@ -1496,10 +1496,11 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a = // 获得道具栏中当前某类型道具的显示项和显示顺序 // cls为道具类型,只可能是 tools, constants 和 equips // 返回一个数组,代表当前某类型道具的显示内容和顺序 + // 默认按id升序排列,您可以取消下面的注释改为按名称排列 return Object.keys(core.status.hero.items[cls] || {}) .filter(function (id) { return !core.material.items[id].hideInToolbox; }) - .sort(); + .sort( /*function (id1, id2) { return core.material.items[id1].name <= core.material.items[id2].name ? -1 : 1 }*/ ); }, "drawStatusBar": function () { // 自定义绘制状态栏,需要开启状态栏canvas化