diff --git a/README.md b/README.md index aef141e7..be85c94f 100644 --- a/README.md +++ b/README.md @@ -67,6 +67,7 @@ HTML5 canvas制作的魔塔样板,支持全平台游戏! * [x] 地图数据统计 * [x] 衰弱可以减少攻防的比例 * [x] 便捷PS工具可以批量导入素材 +* [x] 楼层转换可以直接指定“上一楼”和“下一楼” * [x] 除Autotile外均可自动注册 * [x] 支持status:x获得当前坐标 * [x] core.debug()改成调试模式,可以Ctrl穿墙 diff --git a/_server/blockly/MotaAction.g4 b/_server/blockly/MotaAction.g4 index 48e52cfa..7b72897d 100644 --- a/_server/blockly/MotaAction.g4 +++ b/_server/blockly/MotaAction.g4 @@ -158,19 +158,21 @@ return code; //changeFloor 事件编辑器入口之一 changeFloor_m - : '楼梯, 传送门' BGNL? Newline '目标楼层' IdString Stair_List 'x' Number ',' 'y' Number '朝向' DirectionEx_List '动画时间' Int? '允许穿透' Bool BEND + : '楼梯, 传送门' BGNL? Newline Floor_List IdString? Stair_List 'x' Number ',' 'y' Number '朝向' DirectionEx_List '动画时间' Int? '允许穿透' Bool BEND /* changeFloor_m tooltip : 楼梯, 传送门, 如果目标楼层有多个楼梯, 写upFloor或downFloor可能会导致到达的楼梯不确定, 这时候请使用loc方式来指定具体的点位置 helpUrl : https://ckcz123.github.io/mota-js/#/element?id=%e8%b7%af%e9%9a%9c%ef%bc%8c%e6%a5%bc%e6%a2%af%ef%bc%8c%e4%bc%a0%e9%80%81%e9%97%a8 -default : ["MT1",null,0,0,null,500,null] +default : [null,"MT1",null,0,0,null,500,null] +var toFloorId = IdString_0; +if (Floor_List_0!='floorId') toFloorId = Floor_List_0; var loc = ', "loc": ['+Number_0+', '+Number_1+']'; if (Stair_List_0!=='loc')loc = ', "stair": "'+Stair_List_0+'"'; DirectionEx_List_0 = DirectionEx_List_0 && (', "direction": "'+DirectionEx_List_0+'"'); Int_0 = Int_0 ?(', "time": '+Int_0):''; Bool_0 = Bool_0 ?'':(', "portalWithoutTrigger": false'); -var code = '{"floorId": "'+IdString_0+'"'+loc+DirectionEx_List_0+Int_0+Bool_0+' }\n'; +var code = '{"floorId": "'+toFloorId+'"'+loc+DirectionEx_List_0+Int_0+Bool_0+' }\n'; return code; */; @@ -531,7 +533,7 @@ return code; */; changeFloor_s - : '楼层切换' IdString 'x' PosString ',' 'y' PosString '朝向' DirectionEx_List '动画时间' Int? Newline + : '楼层切换' IdString? 'x' PosString ',' 'y' PosString '朝向' DirectionEx_List '动画时间' Int? Newline /* changeFloor_s @@ -1135,6 +1137,10 @@ PosString : 'sdeirughvuiyasbde'+ //为了被识别为复杂词法规则 ; +Floor_List + : '楼层ID'|'前一楼'|'后一楼' + /*Floor_List ['floorId',':before',':next']*/; + Stair_List : '坐标'|'上楼'|'下楼' /*Stair_List ['loc','upFloor','downFloor']*/; @@ -1278,8 +1284,12 @@ ActionParser.prototype.parse = function (obj,type) { case 'changeFloor': if(!obj)obj={}; if(!this.isset(obj.loc))obj.loc=[0,0]; + if (obj.floorId==':before'||obj.floorId==':next') { + obj.floorType=obj.floorId; + delete obj.floorId; + } return MotaActionBlocks['changeFloor_m'].xmlText([ - obj.floorId,obj.stair||'loc',obj.loc[0],obj.loc[1],obj.direction,obj.time||0,!this.isset(obj.portalWithoutTrigger) + obj.floorType||'floorId',obj.floorId,obj.stair||'loc',obj.loc[0],obj.loc[1],obj.direction,obj.time||0,!this.isset(obj.portalWithoutTrigger) ]); case 'point': diff --git a/_server/data.comment.js b/_server/data.comment.js index d431715b..ca4084c6 100644 --- a/_server/data.comment.js +++ b/_server/data.comment.js @@ -445,6 +445,12 @@ data_comment_c456ea59_6018_45ef_8bcc_211a24c627dc = "_bool": "bool", "_data": "使用炸弹是否四个方向都会炸;如果false则只炸面前的怪物(即和圣锤等价)" }, + "snowFourDirections": { + "_leaf": true, + "_type": "checkbox", + "_bool": "bool", + "_data": "使用冰冻徽章是否四个方向都会消除熔岩;如果false则只消除面前的熔岩" + }, "bigKeyIsBox": { "_leaf": true, "_type": "checkbox", diff --git a/docs/element.md b/docs/element.md index 731e72b8..1a9bbf28 100644 --- a/docs/element.md +++ b/docs/element.md @@ -164,6 +164,8 @@ N连击怪物的special是6,且我们可以为它定义n代表实际连击数 floorId指定的是目标楼层的唯一标识符(ID)。 +也可以写`"floorId": ":before"`和`"floorId": ":next"`表示上一楼和下一楼。 + 后面可以写stair到upFloor或downFloor,表示将前往目标楼层的上楼梯/下楼梯位置。你也可以写loc然后指定目标点的坐标。 请注意的是,如果目标楼层有多个楼梯,写stair可能会导致到达的楼梯不确定,这时候请使用loc方式来指定具体的点位置。 diff --git a/libs/enemys.js b/libs/enemys.js index 6548babc..72a66545 100644 --- a/libs/enemys.js +++ b/libs/enemys.js @@ -20,6 +20,8 @@ enemys.prototype.getEnemys = function (enemyId) { ////// 判断是否含有某特殊属性 ////// enemys.prototype.hasSpecial = function (special, test) { + if (!core.isset(special)) return false; + if (special instanceof Array) { return special.indexOf(test)>=0; } @@ -28,6 +30,14 @@ enemys.prototype.hasSpecial = function (special, test) { return special!=0 && (special%100==test||this.hasSpecial(parseInt(special/100), test)); } + if (typeof special == 'string') { + return this.hasSpecial(core.material.enemys[special], test); + } + + if (core.isset(special.special)) { + return this.hasSpecial(special.special, test); + } + return false; } @@ -300,7 +310,7 @@ enemys.prototype.getDamageInfo = function(monster, hero_hp, hero_atk, hero_def, enemys.prototype.calDamage = function (monster, hero_hp, hero_atk, hero_def, hero_mdef) { if (typeof monster == 'string') { - monster = core.material.enemys[monsterId]; + monster = core.material.enemys[monster]; } var info = this.getDamageInfo(monster, hero_hp, hero_atk, hero_def, hero_mdef); diff --git a/libs/events.js b/libs/events.js index d65e3497..5d3879a5 100644 --- a/libs/events.js +++ b/libs/events.js @@ -986,6 +986,19 @@ events.prototype.trigger = function (x, y) { ////// 楼层切换 ////// events.prototype.changeFloor = function (floorId, stair, heroLoc, time, callback, fromLoad) { + if (!core.isset(floorId)) floorId = core.status.floorId; + + if (floorId == ':before') { + var index=core.floorIds.indexOf(core.status.floorId); + if (index>0) floorId = core.floorIds[index-1]; + else floorId=core.status.floorId; + } + else if (floorId == ':next') { + var index=core.floorIds.indexOf(core.status.floorId); + if (index0) {\n\tvar toId = core.floorIds[index-1], toX = core.getHeroLoc('x'), toY = core.getHeroLoc('y');\n\tif (core.getBlock(toX, toY, toId)==null) {\n\t\tcore.status.event.data = {'id': toId, 'x': toX, 'y': toY};\n\t\table=true;\n\t}\n}\nable", - "snow": "var able=false;\nvar ids = [];\nfor (var i in core.status.thisMap.blocks) {\n var block = core.status.thisMap.blocks[i];\n if (core.isset(block.event) && !(core.isset(block.enable) && !block.enable) && block.event.id == 'lava' && Math.abs(block.x-core.status.hero.loc.x)+Math.abs(block.y-core.status.hero.loc.y)<=1) {\n ids.push(i);\n }\n}\nif (ids.length>0) {\n core.status.event.data = ids;\n able=true;\n}\nable", + "snow": "var able=false;\nvar ids = [];\nfor (var i in core.status.thisMap.blocks) {\n var block = core.status.thisMap.blocks[i];\n if (core.isset(block.event) && !(core.isset(block.enable) && !block.enable) && block.event.id == 'lava') {\n\t\tif (core.flags.snowFourDirections) {\n if (Math.abs(block.x-core.status.hero.loc.x)+Math.abs(block.y-core.status.hero.loc.y)<=1) {\n ids.push(i);\n }\n }\n else {\n if (block.x == core.nextX() && block.y == core.nextY()) {\n ids.push(i);\n }\n }\n }\n}\nif (ids.length>0) {\n core.status.event.data = ids;\n able=true;\n}\nable", "bigKey": "var able=false;\nvar ids = [];\nfor (var i in core.status.thisMap.blocks) {\n var block = core.status.thisMap.blocks[i];\n if (core.isset(block.event) && !(core.isset(block.enable) && !block.enable) && block.event.id == 'yellowDoor') {\n ids.push(i);\n }\n}\nif (ids.length>0) {\n core.status.event.data = ids;\n able=true;\n}\nable", "poisonWine": "core.hasFlag('poison')", "weakWine": "core.hasFlag('weak')", diff --git a/启动服务(mac版).app/Contents/Info.plist b/启动服务(mac版).app/Contents/Info.plist deleted file mode 100644 index b4d206e5..00000000 --- a/启动服务(mac版).app/Contents/Info.plist +++ /dev/null @@ -1,50 +0,0 @@ - - - - - BuildMachineOSBuild - 17E202 - CFBundleDevelopmentRegion - en - CFBundleExecutable - MTBuilder - CFBundleIdentifier - com.xiongdianpku.MTBuilder - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - MTBuilder - CFBundlePackageType - APPL - CFBundleShortVersionString - 1.0 - CFBundleSupportedPlatforms - - MacOSX - - CFBundleVersion - 1 - DTCompiler - com.apple.compilers.llvm.clang.1_0 - DTPlatformBuild - 9E501 - DTPlatformVersion - GM - DTSDKBuild - 17E189 - DTSDKName - macosx10.13 - DTXcode - 0931 - DTXcodeBuild - 9E501 - LSMinimumSystemVersion - 10.10 - NSHumanReadableCopyright - Copyright © 2018年 熊典. All rights reserved. - NSMainStoryboardFile - Main - NSPrincipalClass - NSApplication - - diff --git a/启动服务(mac版).app/Contents/MacOS/MTBuilder b/启动服务(mac版).app/Contents/MacOS/MTBuilder deleted file mode 100644 index e1450352..00000000 Binary files a/启动服务(mac版).app/Contents/MacOS/MTBuilder and /dev/null differ diff --git a/启动服务(mac版).app/Contents/PkgInfo b/启动服务(mac版).app/Contents/PkgInfo deleted file mode 100644 index bd04210f..00000000 --- a/启动服务(mac版).app/Contents/PkgInfo +++ /dev/null @@ -1 +0,0 @@ -APPL???? \ No newline at end of file diff --git a/启动服务(mac版).app/Contents/Resources/Assets.car b/启动服务(mac版).app/Contents/Resources/Assets.car deleted file mode 100644 index 86f979d4..00000000 Binary files a/启动服务(mac版).app/Contents/Resources/Assets.car and /dev/null differ diff --git a/启动服务(mac版).app/Contents/Resources/Base.lproj/Main.storyboardc/3Jh-0i-2oC-view-FlG-D0-fB4.nib b/启动服务(mac版).app/Contents/Resources/Base.lproj/Main.storyboardc/3Jh-0i-2oC-view-FlG-D0-fB4.nib deleted file mode 100644 index 44914f1c..00000000 Binary files a/启动服务(mac版).app/Contents/Resources/Base.lproj/Main.storyboardc/3Jh-0i-2oC-view-FlG-D0-fB4.nib and /dev/null differ diff --git a/启动服务(mac版).app/Contents/Resources/Base.lproj/Main.storyboardc/8cO-Uq-prt-view-GPE-0I-haQ.nib b/启动服务(mac版).app/Contents/Resources/Base.lproj/Main.storyboardc/8cO-Uq-prt-view-GPE-0I-haQ.nib deleted file mode 100644 index c1318db7..00000000 Binary files a/启动服务(mac版).app/Contents/Resources/Base.lproj/Main.storyboardc/8cO-Uq-prt-view-GPE-0I-haQ.nib and /dev/null differ diff --git a/启动服务(mac版).app/Contents/Resources/Base.lproj/Main.storyboardc/Info.plist b/启动服务(mac版).app/Contents/Resources/Base.lproj/Main.storyboardc/Info.plist deleted file mode 100644 index c77a88d5..00000000 Binary files a/启动服务(mac版).app/Contents/Resources/Base.lproj/Main.storyboardc/Info.plist and /dev/null differ diff --git a/启动服务(mac版).app/Contents/Resources/Base.lproj/Main.storyboardc/MainMenu.nib b/启动服务(mac版).app/Contents/Resources/Base.lproj/Main.storyboardc/MainMenu.nib deleted file mode 100644 index df58a14a..00000000 Binary files a/启动服务(mac版).app/Contents/Resources/Base.lproj/Main.storyboardc/MainMenu.nib and /dev/null differ diff --git a/启动服务(mac版).app/Contents/Resources/Base.lproj/Main.storyboardc/NSViewController-3Jh-0i-2oC.nib b/启动服务(mac版).app/Contents/Resources/Base.lproj/Main.storyboardc/NSViewController-3Jh-0i-2oC.nib deleted file mode 100644 index 41c972f5..00000000 Binary files a/启动服务(mac版).app/Contents/Resources/Base.lproj/Main.storyboardc/NSViewController-3Jh-0i-2oC.nib and /dev/null differ diff --git a/启动服务(mac版).app/Contents/Resources/Base.lproj/Main.storyboardc/NSWindowController-B8D-0N-5wS.nib b/启动服务(mac版).app/Contents/Resources/Base.lproj/Main.storyboardc/NSWindowController-B8D-0N-5wS.nib deleted file mode 100644 index d32450b1..00000000 Binary files a/启动服务(mac版).app/Contents/Resources/Base.lproj/Main.storyboardc/NSWindowController-B8D-0N-5wS.nib and /dev/null differ diff --git a/启动服务(mac版).app/Contents/Resources/Base.lproj/Main.storyboardc/NSWindowController-QqD-oc-2tR.nib b/启动服务(mac版).app/Contents/Resources/Base.lproj/Main.storyboardc/NSWindowController-QqD-oc-2tR.nib deleted file mode 100644 index 469ed9ac..00000000 Binary files a/启动服务(mac版).app/Contents/Resources/Base.lproj/Main.storyboardc/NSWindowController-QqD-oc-2tR.nib and /dev/null differ diff --git a/启动服务(mac版).app/Contents/Resources/Base.lproj/Main.storyboardc/XfG-lQ-9wD-view-m2S-Jp-Qdl.nib b/启动服务(mac版).app/Contents/Resources/Base.lproj/Main.storyboardc/XfG-lQ-9wD-view-m2S-Jp-Qdl.nib deleted file mode 100644 index 843e49ec..00000000 Binary files a/启动服务(mac版).app/Contents/Resources/Base.lproj/Main.storyboardc/XfG-lQ-9wD-view-m2S-Jp-Qdl.nib and /dev/null differ diff --git a/启动服务(mac版).app/Contents/_CodeSignature/CodeResources b/启动服务(mac版).app/Contents/_CodeSignature/CodeResources deleted file mode 100644 index 2a1e8d3a..00000000 --- a/启动服务(mac版).app/Contents/_CodeSignature/CodeResources +++ /dev/null @@ -1,252 +0,0 @@ - - - - - files - - Resources/Assets.car - - Y8vFWeV9aMFK2k/Fmvn1VKDb4G4= - - Resources/Base.lproj/Main.storyboardc/3Jh-0i-2oC-view-FlG-D0-fB4.nib - - EN/jmkBY5XqitaaV2kWybEgMtTE= - - Resources/Base.lproj/Main.storyboardc/8cO-Uq-prt-view-GPE-0I-haQ.nib - - vZO5vWZuRi0vaSFqKPCW1qksfDE= - - Resources/Base.lproj/Main.storyboardc/Info.plist - - 71E/nyD1JC6i4rw6+kjjVgE/fZA= - - Resources/Base.lproj/Main.storyboardc/MainMenu.nib - - lC9mNWqzXYAYynusmnCrDuM3hvI= - - Resources/Base.lproj/Main.storyboardc/NSViewController-3Jh-0i-2oC.nib - - jBRfznhMbiKUnUxlCD1QLUegGsc= - - Resources/Base.lproj/Main.storyboardc/NSWindowController-B8D-0N-5wS.nib - - S9xl+rRRrH6aWKPTrX11XmKhYtA= - - Resources/Base.lproj/Main.storyboardc/NSWindowController-QqD-oc-2tR.nib - - a5hup3BYBUycbe+iJd/nx+VQ/rA= - - Resources/Base.lproj/Main.storyboardc/XfG-lQ-9wD-view-m2S-Jp-Qdl.nib - - 7osH7f7CY2aFRWbCLAy1odTex/M= - - - files2 - - Resources/Assets.car - - hash - - Y8vFWeV9aMFK2k/Fmvn1VKDb4G4= - - hash2 - - R6hkb6fWvTpPEJXUWnyv4rhwHuVVIqsihlgRCdNNoz4= - - - Resources/Base.lproj/Main.storyboardc/3Jh-0i-2oC-view-FlG-D0-fB4.nib - - hash - - EN/jmkBY5XqitaaV2kWybEgMtTE= - - hash2 - - 8KgZX7l1DB4wlq8OlL6h9gk2PUditNbKqqR7qnoHCoc= - - - Resources/Base.lproj/Main.storyboardc/8cO-Uq-prt-view-GPE-0I-haQ.nib - - hash - - vZO5vWZuRi0vaSFqKPCW1qksfDE= - - hash2 - - aK2kvZcgmqywotLHVkXGbEh1LkOnXWQEX6RKwgp3f7s= - - - Resources/Base.lproj/Main.storyboardc/Info.plist - - hash - - 71E/nyD1JC6i4rw6+kjjVgE/fZA= - - hash2 - - d1R62G7VThDKTjMMGGoUR6TC9bR0hjwLNqAggKJwsS0= - - - Resources/Base.lproj/Main.storyboardc/MainMenu.nib - - hash - - lC9mNWqzXYAYynusmnCrDuM3hvI= - - hash2 - - ZBTMovff3XB5dFKWqxpFhQsHN7/F4Zfp45tuh4OSDB0= - - - Resources/Base.lproj/Main.storyboardc/NSViewController-3Jh-0i-2oC.nib - - hash - - jBRfznhMbiKUnUxlCD1QLUegGsc= - - hash2 - - niqIc11tpbnFJIeMHBNiCcjwUkpkJvJJoAKTguRNp/s= - - - Resources/Base.lproj/Main.storyboardc/NSWindowController-B8D-0N-5wS.nib - - hash - - S9xl+rRRrH6aWKPTrX11XmKhYtA= - - hash2 - - unrn3sgw+6nM2WDwyTjK8g/wIOAogLhFXRotyPK6xIw= - - - Resources/Base.lproj/Main.storyboardc/NSWindowController-QqD-oc-2tR.nib - - hash - - a5hup3BYBUycbe+iJd/nx+VQ/rA= - - hash2 - - P/jSqX6j8bzFQoaQzsZl49a9zRuMnaO4/Gq+iECoDu4= - - - Resources/Base.lproj/Main.storyboardc/XfG-lQ-9wD-view-m2S-Jp-Qdl.nib - - hash - - 7osH7f7CY2aFRWbCLAy1odTex/M= - - hash2 - - aNkXpHLXtb/zTBJ/LsXFPlcRqVfZh4L5qRk4kUZx2NE= - - - - rules - - ^Resources/ - - ^Resources/.*\.lproj/ - - optional - - weight - 1000 - - ^Resources/.*\.lproj/locversion.plist$ - - omit - - weight - 1100 - - ^Resources/Base\.lproj/ - - weight - 1010 - - ^version.plist$ - - - rules2 - - .*\.dSYM($|/) - - weight - 11 - - ^(.*/)?\.DS_Store$ - - omit - - weight - 2000 - - ^(Frameworks|SharedFrameworks|PlugIns|Plug-ins|XPCServices|Helpers|MacOS|Library/(Automator|Spotlight|LoginItems))/ - - nested - - weight - 10 - - ^.* - - ^Info\.plist$ - - omit - - weight - 20 - - ^PkgInfo$ - - omit - - weight - 20 - - ^Resources/ - - weight - 20 - - ^Resources/.*\.lproj/ - - optional - - weight - 1000 - - ^Resources/.*\.lproj/locversion.plist$ - - omit - - weight - 1100 - - ^Resources/Base\.lproj/ - - weight - 1010 - - ^[^/]+$ - - nested - - weight - 10 - - ^embedded\.provisionprofile$ - - weight - 20 - - ^version\.plist$ - - weight - 20 - - - - diff --git a/更新说明.txt b/更新说明.txt index df2f23f8..958a11a3 100644 --- a/更新说明.txt +++ b/更新说明.txt @@ -7,6 +7,7 @@ 地图数据统计 衰弱可以减少攻防的比例 便捷PS工具可以批量导入素材 +楼层转换可以直接指定“上一楼”和“下一楼” 除Autotile外均可自动注册 支持status:x获得当前坐标 core.debug()改成调试模式,可以Ctrl穿墙