diff --git a/_server/MotaAction.g4 b/_server/MotaAction.g4 index 5e39e7c6..280f7d96 100644 --- a/_server/MotaAction.g4 +++ b/_server/MotaAction.g4 @@ -336,7 +336,6 @@ action | trigger_s | insert_1_s | insert_2_s - | revisit_s | exit_s | setBlock_s | showFloorImg_s @@ -780,18 +779,6 @@ var code = '{"type": "insert", "loc": ['+PosString_0+','+PosString_1+']'+Event_L return code; */; -revisit_s - : '重启当前事件' Newline - - -/* revisit_s -tooltip : revisit: 立即重启当前事件 -helpUrl : https://h5mota.com/games/template/_docs/#/event?id=revisit%EF%BC%9A%E7%AB%8B%E5%8D%B3%E9%87%8D%E5%90%AF%E5%BD%93%E5%89%8D%E4%BA%8B%E4%BB%B6 -colour : this.eventColor -var code = '{"type": "revisit"},\n'; -return code; -*/; - exit_s : '立刻结束当前事件' Newline @@ -3509,10 +3496,6 @@ ActionParser.prototype.parseAction = function() { this.next = MotaActionBlocks['waitAsync_s'].xmlText([ this.next]); break; - case "revisit": // 立刻重新执行该事件 - this.next = MotaActionBlocks['revisit_s'].xmlText([ - this.next]); - break; case "callBook": // 呼出怪物手册 this.next = MotaActionBlocks['callBook_s'].xmlText([ this.next]); diff --git a/_server/editor_blockly.js b/_server/editor_blockly.js index 8fe686aa..5008914e 100644 --- a/_server/editor_blockly.js +++ b/_server/editor_blockly.js @@ -149,7 +149,6 @@ editor_blockly = function () { MotaActionBlocks['dowhile_s'].xmlText(), MotaActionBlocks['break_s'].xmlText(), MotaActionBlocks['continue_s'].xmlText(), - MotaActionBlocks['revisit_s'].xmlText(), MotaActionBlocks['exit_s'].xmlText(), MotaActionBlocks['trigger_s'].xmlText(), MotaActionBlocks['insert_1_s'].xmlText(), @@ -242,30 +241,30 @@ editor_blockly = function () { }), '', MotaActionFunctions.actionParser.parse([ - {"type": "choices", "text": "\\t[老人,man]少年,你需要钥匙吗?\\n我这里有大把的!", - "choices": [ - {"text": "黄钥匙(\\\${9+flag:shop_times}金币)", "color": [255,255,0,1], "action": [ - {"type": "if", "condition": "status:money>=9+flag:shop_times", - "true": [ - {"type": "setValue", "name": "status:money", "operator": "-=", "value": "9+flag:shop_times"}, - {"type": "setValue", "name": "item:yellowKey", "operator": "+=", "value": "1"}, - ], - "false": [ - "\\t[老人,man]你的金钱不足!", - {"type": "revisit"} - ] - } - ]}, - {"text": "蓝钥匙(\\\${18+2*flag:shop_times}金币)", "color": [0,0,255,1], "action": [ - ]}, - {"text": "离开", "action": [ - {"type": "exit"} - ]} - ] - }, - {"type": "setValue", "name": "flag:shop_times", "operator": "+=", "value": "1"}, - {"type": "revisit"} - ], 'event'), + {"type": "while", "condition": "true", "data": [ + {"type": "choices", "text": "\\t[老人,man]少年,你需要钥匙吗?\\n我这里有大把的!", + "choices": [ + {"text": "黄钥匙(\\\${9+flag:shop_times}金币)", "color": [255,255,0,1], "action": [ + {"type": "if", "condition": "status:money>=9+flag:shop_times", + "true": [ + {"type": "setValue", "name": "status:money", "operator": "-=", "value": "9+flag:shop_times"}, + {"type": "setValue", "name": "item:yellowKey", "operator": "+=", "value": "1"}, + ], + "false": [ + "\\t[老人,man]你的金钱不足!", + {"type": "continue"} + ] + } + ]}, + {"text": "蓝钥匙(\\\${18+2*flag:shop_times}金币)", "color": [0,0,255,1], "action": [ + ]}, + {"text": "离开", "action": [ + {"type": "break"} + ]} + ] + }, + {"type": "setValue", "name": "flag:shop_times", "operator": "+=", "value": "1"} + ]}], 'event'), '', MotaActionFunctions.actionParser.parse({ "trigger": "action", @@ -750,12 +749,12 @@ function omitedcheckUpdateFunction(event) { 'hide_s', 'setValue_s', 'if_s', + 'while_s', 'battle_s', 'openDoor_s', 'choices_s', 'setText_s', 'exit_s', - 'revisit_s', 'sleep_s', 'setBlock_s', 'insert_1_s' diff --git a/libs/events.js b/libs/events.js index e20f3388..64cc9402 100644 --- a/libs/events.js +++ b/libs/events.js @@ -2063,13 +2063,6 @@ events.prototype._action_waitAsync = function (data, x, y, prefix) { }, 50); } -events.prototype._action_revisit = function (data, x, y, prefix) { - var block = core.getBlock(x, y); - if (block != null && block.block.event.trigger == 'action') - this.setEvents(block.block.event.data); - core.doAction(); -} - events.prototype._action_callBook = function (data, x, y, prefix) { if (core.isReplaying() || !core.hasItem('book')) { core.doAction(); diff --git a/project/floors/MT0.js b/project/floors/MT0.js index afcc0832..8e98ca33 100644 --- a/project/floors/MT0.js +++ b/project/floors/MT0.js @@ -1,15 +1,15 @@ main.floors.MT0= { -"floorId": "MT0", -"title": "主塔 0 层", -"name": "0", -"canFlyTo": true, -"canUseQuickShop": true, -"cannotViewMap": false, -"defaultGround": "ground", -"images": [], -"item_ratio": 1, -"map": [ + "floorId": "MT0", + "title": "主塔 0 层", + "name": "0", + "canFlyTo": true, + "canUseQuickShop": true, + "cannotViewMap": false, + "defaultGround": "ground", + "images": [], + "item_ratio": 1, + "map": [ [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], @@ -24,18 +24,21 @@ main.floors.MT0= [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] ], -"firstArrive": [], -"parallelDo": "", -"events": {}, -"changeFloor": {}, -"afterBattle": {}, -"afterGetItem": {}, -"afterOpenDoor": {}, -"cannotMove": {}, -"bgmap": [ + "firstArrive": [], + "parallelDo": "", + "events": {}, + "changeFloor": {}, + "afterBattle": {}, + "afterGetItem": {}, + "afterOpenDoor": {}, + "cannotMove": {}, + "bgmap": [ ], -"fgmap": [ + "fgmap": [ ], + "width": 13, + "height": 13, + "autoEvent": {} } \ No newline at end of file diff --git a/project/floors/sample0.js b/project/floors/sample0.js index 8ed705e3..4af03e43 100644 --- a/project/floors/sample0.js +++ b/project/floors/sample0.js @@ -1,15 +1,15 @@ main.floors.sample0= { -"floorId": "sample0", -"title": "样板 0 层", -"name": "0", -"canFlyTo": true, -"canUseQuickShop": true, -"defaultGround": "ground", -"images": [], -"bgm": "bgm.mp3", -"item_ratio": 1, -"map": [ + "floorId": "sample0", + "title": "样板 0 层", + "name": "0", + "canFlyTo": true, + "canUseQuickShop": true, + "defaultGround": "ground", + "images": [], + "bgm": "bgm.mp3", + "item_ratio": 1, + "map": [ [ 0, 0,220, 0, 0, 20, 87, 3, 65, 64, 44, 43, 42], [ 0,246, 0,246, 0, 20, 0, 3, 58, 59, 60, 61, 41], [219, 0, 0, 0,219, 20, 0, 3, 57, 26, 62, 63, 40], @@ -24,199 +24,202 @@ main.floors.sample0= [ 87, 11, 12, 13, 14, 4, 4, 2, 2, 2,122, 2, 2], [ 88, 89, 90, 91, 92, 93, 94, 2, 81, 82, 83, 84, 86] ], -"firstArrive": [ - { - "type": "setText", - "background": "winskin.png", - "time": 0 - }, - "\t[样板提示]首次到达某层可以触发 firstArrive 事件,该事件可类似于RMXP中的“自动执行脚本”。\n\n本事件支持一切的事件类型,常常用来触发对话,例如:", - "\t[hero]\b[up,hero]我是谁?我从哪来?我又要到哪去?", - "\t[仙子,fairy]你问我...?我也不知道啊...", - "本层主要对道具、门、怪物等进行介绍,有关事件的各种信息在下一层会有更为详细的说明。" -], -"events": { - "10,9": [ - "\t[老人,man]这些是本样板支持的所有的道具。\n\n道具分为四类:items, constants, tools,equips。\nitems 为即捡即用类道具,例如宝石、血瓶、剑盾等。\nconstants 为永久道具,例如怪物手册、楼层传送器、幸运金币等。\ntools 为消耗类道具,例如破墙镐、炸弹、中心对称飞行器等。\nequips 为装备,例如剑盾等。", - "\t[老人,man]\b[up]有关道具效果,定义在items.js中。\n目前大多数道具已有默认行为,如有自定义的需求则需在items.js中修改代码。", - "\t[老人,man]\b[up]拾取道具结束后可触发 afterGetItem 事件。\n\n有关事件的各种信息在下一层会有更为详细的说明。", + "firstArrive": [ { - "type": "hide", - "time": 500 - } + "type": "setText", + "background": "winskin.png", + "time": 0 + }, + "\t[样板提示]首次到达某层可以触发 firstArrive 事件,该事件可类似于RMXP中的“自动执行脚本”。\n\n本事件支持一切的事件类型,常常用来触发对话,例如:", + "\t[hero]\b[up,hero]我是谁?我从哪来?我又要到哪去?", + "\t[仙子,fairy]你问我...?我也不知道啊...", + "本层主要对道具、门、怪物等进行介绍,有关事件的各种信息在下一层会有更为详细的说明。" ], - "10,11": [ - "\t[老人,woman]这些是门,需要对应的钥匙打开。\n机关门必须使用特殊的开法。", - "\t[老人,woman]开门后可触发 afterOpenDoor 事件。\n\n有关事件的各种信息在下一层会有更为详细的说明。", - { - "type": "hide", - "time": 500 - } - ], - "2,10": [ - "\t[少女,npc0]这些是路障、楼梯、传送门。", - "\t[少女,npc0]血网的伤害数值、中毒后每步伤害数值、衰弱时攻防下降的数值,都在 data.js 内定义。\n\n路障同样会尽量被自动寻路绕过。", - "\t[少女,npc0]楼梯和传送门需要在changeFloor中定义目标楼层和位置,可参见样板里已有的的写法。", - { - "type": "hide", - "time": 500 - } - ], - "2,8": [ - "\t[老人,magician]这些都是各种各样的怪物,所有怪物的数据都在enemys.js中设置。", - "\t[老人,magician]这批怪物分别为:普通、先攻、魔攻、坚固、2连击、3连击、4连击、破甲、反击、净化。", - "\t[老人,magician]打败怪物后可触发 afterBattle 事件。\n\n有关事件的各种信息在下一层会有更为详细的说明。", - { - "type": "hide", - "time": 500 - } - ], - "2,5": [ - "\t[老人,magician]模仿、吸血、中毒、衰弱、诅咒。\n\n请注意吸血怪需要设置value为吸血数值,可参见样板中黑暗大法师的写法。", - { - "type": "hide", - "time": 500 - } - ], - "2,3": [ - "\t[老人,magician]领域、夹击。\n请注意领域怪需要设置value为伤害数值,可参见样板中初级巫师的写法。", - "\t[老人,magician]夹击和领域同时发生时先计算领域,再夹击。\n自动寻路同样会尽量绕过你设置的这些点。", - { - "type": "hide", - "time": 500 - } - ], - "12,10": { - "enable": false, - "data": [ - "\t[仙子,fairy]只有楼上启用事件后,才能看到我并可以和我对话来触发事件。", + "events": { + "10,9": [ + "\t[老人,man]这些是本样板支持的所有的道具。\n\n道具分为四类:items, constants, tools,equips。\nitems 为即捡即用类道具,例如宝石、血瓶、剑盾等。\nconstants 为永久道具,例如怪物手册、楼层传送器、幸运金币等。\ntools 为消耗类道具,例如破墙镐、炸弹、中心对称飞行器等。\nequips 为装备,例如剑盾等。", + "\t[老人,man]\b[up]有关道具效果,定义在items.js中。\n目前大多数道具已有默认行为,如有自定义的需求则需在items.js中修改代码。", + "\t[老人,man]\b[up]拾取道具结束后可触发 afterGetItem 事件。\n\n有关事件的各种信息在下一层会有更为详细的说明。", { "type": "hide", "time": 500 } - ] - } -}, -"changeFloor": { - "6,0": { - "floorId": "sample1", - "stair": "downFloor" + ], + "10,11": [ + "\t[老人,woman]这些是门,需要对应的钥匙打开。\n机关门必须使用特殊的开法。", + "\t[老人,woman]开门后可触发 afterOpenDoor 事件。\n\n有关事件的各种信息在下一层会有更为详细的说明。", + { + "type": "hide", + "time": 500 + } + ], + "2,10": [ + "\t[少女,npc0]这些是路障、楼梯、传送门。", + "\t[少女,npc0]血网的伤害数值、中毒后每步伤害数值、衰弱时攻防下降的数值,都在 data.js 内定义。\n\n路障同样会尽量被自动寻路绕过。", + "\t[少女,npc0]楼梯和传送门需要在changeFloor中定义目标楼层和位置,可参见样板里已有的的写法。", + { + "type": "hide", + "time": 500 + } + ], + "2,8": [ + "\t[老人,magician]这些都是各种各样的怪物,所有怪物的数据都在enemys.js中设置。", + "\t[老人,magician]这批怪物分别为:普通、先攻、魔攻、坚固、2连击、3连击、4连击、破甲、反击、净化。", + "\t[老人,magician]打败怪物后可触发 afterBattle 事件。\n\n有关事件的各种信息在下一层会有更为详细的说明。", + { + "type": "hide", + "time": 500 + } + ], + "2,5": [ + "\t[老人,magician]模仿、吸血、中毒、衰弱、诅咒。\n\n请注意吸血怪需要设置value为吸血数值,可参见样板中黑暗大法师的写法。", + { + "type": "hide", + "time": 500 + } + ], + "2,3": [ + "\t[老人,magician]领域、夹击。\n请注意领域怪需要设置value为伤害数值,可参见样板中初级巫师的写法。", + "\t[老人,magician]夹击和领域同时发生时先计算领域,再夹击。\n自动寻路同样会尽量绕过你设置的这些点。", + { + "type": "hide", + "time": 500 + } + ], + "12,10": { + "enable": false, + "data": [ + "\t[仙子,fairy]只有楼上启用事件后,才能看到我并可以和我对话来触发事件。", + { + "type": "hide", + "time": 500 + } + ] + } }, - "0,11": { - "floorId": "sample0", - "loc": [ - 0, - 12 + "changeFloor": { + "6,0": { + "floorId": "sample1", + "stair": "downFloor" + }, + "0,11": { + "floorId": "sample0", + "loc": [ + 0, + 12 + ] + }, + "0,12": { + "floorId": "sample0", + "stair": "upFloor" + }, + "1,12": { + "floorId": "sample0", + "loc": [ + 1, + 12 + ] + }, + "2,12": { + "floorId": "sample0", + "loc": [ + 2, + 12 + ] + }, + "3,12": { + "floorId": "sample0", + "loc": [ + 6, + 1 + ], + "direction": "up" + }, + "4,12": { + "floorId": "sample0", + "loc": [ + 0, + 9 + ], + "direction": "left", + "time": 1000 + }, + "5,12": { + "floorId": "sample0", + "loc": [ + 6, + 10 + ], + "time": 0, + "portalWithoutTrigger": false + }, + "6,12": { + "floorId": "sample0", + "loc": [ + 10, + 10 + ], + "direction": "left", + "time": 1000 + } + }, + "afterBattle": { + "2,6": [ + "\t[ghostSkeleton]不可能,你怎么可能打败我!\n(一个打败怪物触发的事件)" ] }, - "0,12": { - "floorId": "sample0", - "stair": "upFloor" - }, - "1,12": { - "floorId": "sample0", - "loc": [ - 1, - 12 + "afterGetItem": { + "11,8": [ + "由于状态栏放不下,绿钥匙和铁门钥匙均视为tools,放入工具栏中。\n碰到绿门和铁门仍然会自动使用开门。" + ], + "8,6": [ + "由于吸血和夹击等的存在,血瓶默认自动被绕路。\n你可以修改data.js中的系统Flag来设置这一项。" + ], + "8,7": [ + "如需修改消耗品的效果,请前往 data.js ,找到并修改values内对应的具体数值即可。\n如果有更高级的需求(如每个区域宝石数值变化),详见doc文档内的做法说明。" + ], + "9,5": [ + "每层楼的 canFlyTo 决定了该楼层能否被飞到。\n\n不能被飞到的楼层也无法使用楼层传送器。", + "飞行的楼层顺序由 main.js 中 floorIds 加载顺序所决定。\n\n是否必须在楼梯边使用楼传器由 data.js 中的系统Flag所决定。" + ], + "10,5": [ + "破墙镐是破面前的墙壁还是四个方向的墙壁,由data.js中的系统Flag所决定。" + ], + "8,4": [ + "炸弹是只能炸面前的怪物还是四个方向的怪物,由data.js中的系统Flag所决定。\n如只能炸前方怪物则和上面的圣锤等价。\n不能被炸的怪物在enemys中可以定义,可参见样板里黑衣魔王和黑暗大法师的写法。" + ], + "10,4": [ + "“上楼”和“下楼”的目标层由 main.js 的 floorIds顺序所决定。" + ], + "9,2": [ + "该道具默认是大黄门钥匙,如需改为钥匙盒直接修改 data.js 中的系统Flag即可。" + ], + "10,2": [ + "屠龙匕首目前未被定义,可能需要自行实现功能。\n有关如何实现一个道具功能参见doc文档。" + ], + "12,7": [ + "在 data.js 的系统Flag中设置是否启用装备栏。\n如果不启用则装备会直接增加属性。" + ], + "12,6": [ + "在 data.js 的系统Flag中设置是否启用装备栏按钮。\n如果启用则装备栏按钮会替代楼传按钮。" + ], + "12,5": [ + "装备的种类由全塔属性中的equipName决定,type的值就是该类型在equipName中的位次,例如默认情况下equiptype为0代表武器,同时只有type为0的装备的animate属性生效" ] }, - "2,12": { - "floorId": "sample0", - "loc": [ - 2, - 12 + "afterOpenDoor": { + "11,12": [ + "你开了一个绿门,触发了一个afterOpenDoor事件" ] }, - "3,12": { - "floorId": "sample0", - "loc": [ - 6, - 1 - ], - "direction": "up" - }, - "4,12": { - "floorId": "sample0", - "loc": [ - 0, - 9 - ], - "direction": "left", - "time": 1000 - }, - "5,12": { - "floorId": "sample0", - "loc": [ - 6, - 10 - ], - "time": 0, - "portalWithoutTrigger": false - }, - "6,12": { - "floorId": "sample0", - "loc": [ - 10, - 10 - ], - "direction": "left", - "time": 1000 - } -}, -"afterBattle": { - "2,6": [ - "\t[ghostSkeleton]不可能,你怎么可能打败我!\n(一个打败怪物触发的事件)" - ] -}, -"afterGetItem": { - "11,8": [ - "由于状态栏放不下,绿钥匙和铁门钥匙均视为tools,放入工具栏中。\n碰到绿门和铁门仍然会自动使用开门。" - ], - "8,6": [ - "由于吸血和夹击等的存在,血瓶默认自动被绕路。\n你可以修改data.js中的系统Flag来设置这一项。" - ], - "8,7": [ - "如需修改消耗品的效果,请前往 data.js ,找到并修改values内对应的具体数值即可。\n如果有更高级的需求(如每个区域宝石数值变化),详见doc文档内的做法说明。" - ], - "9,5": [ - "每层楼的 canFlyTo 决定了该楼层能否被飞到。\n\n不能被飞到的楼层也无法使用楼层传送器。", - "飞行的楼层顺序由 main.js 中 floorIds 加载顺序所决定。\n\n是否必须在楼梯边使用楼传器由 data.js 中的系统Flag所决定。" - ], - "10,5": [ - "破墙镐是破面前的墙壁还是四个方向的墙壁,由data.js中的系统Flag所决定。" - ], - "8,4": [ - "炸弹是只能炸面前的怪物还是四个方向的怪物,由data.js中的系统Flag所决定。\n如只能炸前方怪物则和上面的圣锤等价。\n不能被炸的怪物在enemys中可以定义,可参见样板里黑衣魔王和黑暗大法师的写法。" - ], - "10,4": [ - "“上楼”和“下楼”的目标层由 main.js 的 floorIds顺序所决定。" - ], - "9,2": [ - "该道具默认是大黄门钥匙,如需改为钥匙盒直接修改 data.js 中的系统Flag即可。" - ], - "10,2": [ - "屠龙匕首目前未被定义,可能需要自行实现功能。\n有关如何实现一个道具功能参见doc文档。" - ], - "12,7": [ - "在 data.js 的系统Flag中设置是否启用装备栏。\n如果不启用则装备会直接增加属性。" - ], - "12,6": [ - "在 data.js 的系统Flag中设置是否启用装备栏按钮。\n如果启用则装备栏按钮会替代楼传按钮。" - ], - "12,5": [ - "装备的种类由全塔属性中的equipName决定,type的值就是该类型在equipName中的位次,例如默认情况下equiptype为0代表武器,同时只有type为0的装备的animate属性生效" - ] -}, -"afterOpenDoor": { - "11,12": [ - "你开了一个绿门,触发了一个afterOpenDoor事件" - ] -}, -"cannotMove": {}, -"bgmap": [ + "cannotMove": {}, + "bgmap": [ ], -"fgmap": [ + "fgmap": [ ], + "width": 13, + "height": 13, + "autoEvent": {} } \ No newline at end of file diff --git a/project/floors/sample1.js b/project/floors/sample1.js index 7260bac0..9c769745 100644 --- a/project/floors/sample1.js +++ b/project/floors/sample1.js @@ -1,25 +1,25 @@ main.floors.sample1= { -"floorId": "sample1", -"title": "样板 1 层", -"name": "1", -"canFlyTo": true, -"canUseQuickShop": true, -"defaultGround": "grass", -"images": [ - [ - 0, - 0, - "bg.jpg", - 0 - ] -], -"weather": [ - "snow", - 6 -], -"item_ratio": 1, -"map": [ + "floorId": "sample1", + "title": "样板 1 层", + "name": "1", + "canFlyTo": true, + "canUseQuickShop": true, + "defaultGround": "grass", + "images": [ + [ + 0, + 0, + "bg.jpg", + 0 + ] + ], + "weather": [ + "snow", + 6 + ], + "item_ratio": 1, + "map": [ [ 7,131, 8,152, 9,130, 10,152,166,165,132,165,166], [ 0, 0, 0, 0, 0, 0, 0,152,165,164, 0,162,165], [152,152,152,152,121,152,152,152, 0, 0,229, 0, 0], @@ -34,611 +34,617 @@ main.floors.sample1= [ 1, 0,123, 1, 0, 20,124, 0,121, 0,122, 0,126], [ 1, 0, 0, 1, 88, 20, 86, 0, 0, 0, 0, 0, 0] ], -"firstArrive": [], -"events": { - "4,10": [ - "\t[样板提示]本层楼将会对各类事件进行介绍。", - "左边是一个仿50层的陷阱做法,上方是商店、快捷商店的使用方法,右上是一个典型的杀怪开门的例子,右下是各类可能的NPC事件。", - "本样板目前支持的事件列表大致有:\ntext: 显示一段文字(比如你现在正在看到的)\ntip: 左上角显示提示\nshow: 使一个事件有效(可见、可被交互)\nhide: 使一个事件失效(不可见、不可被交互)\ntrigger: 触发另一个地点的事件\nanimate: 显示动画\nbattle: 强制和某怪物战斗\nopenDoor: 无需钥匙开门(例如机关门、暗墙)", - "openShop: 打开一个全局商店\ndisableShop: 禁用一个全局商店\nchangeFloor: 传送勇士到某层某位置\nchangePos: 传送勇士到当层某位置;转向\nshowImage: 显示图片\nsetFg: 更改画面色调\nsetWeather: 更改天气\nmove: 移动事件效果\nmoveHero: 移动勇士效果\nplayBgm: 播放某个背景音乐\npauseBgm: 暂停背景音乐\nresumeBgm: 恢复背景音乐的播放\nplaySound: 播放某个音频", - "if: 条件判断\nchoices: 提供选项\nsetValue: 设置勇士属性道具,或某个变量/flag\nupdate: 更新状态栏和地图显伤\nwin: 获得胜利(游戏通关)\nlose: 游戏失败\nsleep: 等待多少毫秒\nexit: 立刻结束当前事件\nrevisit: 立刻结束事件并重新触发\nfunction: 自定义JS脚本\n\n更多支持的事件还在编写中,欢迎您宝贵的意见。", - "有关各事件的样例,可参见本层一些NPC的写法。\n所有事件样例本层都有介绍。\n\n一个自定义事件处理完后,需要调用{\"type\": \"hide\"}该事件才不会再次出现。", - { - "type": "hide" - } - ], - "1,5": { - "enable": false, - "data": [] - }, - "1,6": { - "enable": false, - "data": [] - }, - "0,7": { - "enable": false, - "data": [] - }, - "2,7": { - "enable": false, - "data": [] - }, - "1,8": { - "enable": false, - "data": [] - }, - "1,7": [ - { - "type": "show", - "loc": [ - 1, - 5 - ], - "time": 1500 + "firstArrive": [], + "events": { + "4,10": [ + "\t[样板提示]本层楼将会对各类事件进行介绍。", + "左边是一个仿50层的陷阱做法,上方是商店、快捷商店的使用方法,右上是一个典型的杀怪开门的例子,右下是各类可能的NPC事件。", + "本样板目前支持的事件列表大致有:\ntext: 显示一段文字(比如你现在正在看到的)\ntip: 左上角显示提示\nshow: 使一个事件有效(可见、可被交互)\nhide: 使一个事件失效(不可见、不可被交互)\ntrigger: 触发另一个地点的事件\nanimate: 显示动画\nbattle: 强制和某怪物战斗\nopenDoor: 无需钥匙开门(例如机关门、暗墙)", + "openShop: 打开一个全局商店\ndisableShop: 禁用一个全局商店\nchangeFloor: 传送勇士到某层某位置\nchangePos: 传送勇士到当层某位置;转向\nshowImage: 显示图片\nsetFg: 更改画面色调\nsetWeather: 更改天气\nmove: 移动事件效果\nmoveHero: 移动勇士效果\nplayBgm: 播放某个背景音乐\npauseBgm: 暂停背景音乐\nresumeBgm: 恢复背景音乐的播放\nplaySound: 播放某个音频", + "if: 条件判断\nchoices: 提供选项\nsetValue: 设置勇士属性道具,或某个变量/flag\nupdate: 更新状态栏和地图显伤\nwin: 获得胜利(游戏通关)\nlose: 游戏失败\nsleep: 等待多少毫秒\nexit: 立刻结束当前事件\nfunction: 自定义JS脚本\n\n更多支持的事件还在编写中,欢迎您宝贵的意见。", + "有关各事件的样例,可参见本层一些NPC的写法。\n所有事件样例本层都有介绍。\n\n一个自定义事件处理完后,需要调用{\"type\": \"hide\"}该事件才不会再次出现。", + { + "type": "hide" + } + ], + "1,5": { + "enable": false, + "data": [] }, - { - "type": "sleep", - "time": 500 + "1,6": { + "enable": false, + "data": [] }, - "\t[redKing]欢迎来到魔塔,你是第一百位挑战者。\n若你能打败我所有的手下,我就与你一对一的决斗。\n现在你必须接受我的安排。", - { - "type": "show", - "loc": [ - [ + "0,7": { + "enable": false, + "data": [] + }, + "2,7": { + "enable": false, + "data": [] + }, + "1,8": { + "enable": false, + "data": [] + }, + "1,7": [ + { + "type": "show", + "loc": [ 1, - 6 + 5 ], - [ - 0, - 7 - ], - [ - 1, - 8 - ], - [ - 2, - 7 - ] - ], - "time": 500 - }, - "\t[hero]什么?", - { - "type": "playSound", - "name": "attack.mp3" - }, - { - "type": "setValue", - "name": "status:atk", - "operator": "/=", - "value": "10" - }, - { - "type": "setValue", - "name": "status:def", - "operator": "/=", - "value": "10" - }, - { - "type": "hide", - "loc": [ - [ - 1, - 6 - ], - [ - 0, - 7 - ], - [ - 2, - 7 - ], - [ - 1, - 8 - ] - ] - }, - { - "type": "hide", - "loc": [ - 1, - 5 - ], - "time": 500 - }, - { - "type": "hide" - }, - { - "type": "setCurtain", - "color": [ - 0, - 0, - 0 - ], - "time": 1250 - }, - { - "type": "sleep", - "time": 700 - }, - { - "type": "changeFloor", - "floorId": "sample1", - "loc": [ - 1, - 11 - ], - "direction": "right", - "time": 1000 - }, - { - "type": "trigger", - "loc": [ - 2, - 11 - ] - } - ], - "2,11": [ - "\t[杰克,thief]喂!醒醒!快醒醒!", - { - "type": "setCurtain", - "time": 1500 - }, - "\t[hero]额,我这是在什么地方?", - "\t[杰克,thief]你被魔王抓了起来扔进了监狱,和我关在了一起,但是幸运的是我在昨天刚刚挖好一条越狱的暗道!", - { - "type": "openDoor", - "loc": [ - 3, - 11 - ] - }, - { - "type": "sleep", - "time": 300 - }, - "\t[杰克,thief]我先走了,祝你好运!", - { - "type": "move", - "time": 750, - "steps": [ - "right", - "right", - "down" - ] - }, - "上面是个move事件,可以对NPC等进行移动。\n详见样板中小偷事件的写法。", - "\t[hero]怎么跑的这么快..." - ], - "4,2": [ - "\t[老人,man]本塔的商店有两类,全局商店和非全局商店。\n\n所谓非全局商店,就类似于右下角那个卖钥匙的老人一样,一定要碰到才能触发事件。\n\n而全局商店,则能在快捷商店中直接使用。", - "\t[老人,man]要注册一个全局商店,你需要在 data.js 中,找到 shops,并在内添加你的商店信息。", - "\t[老人,man]商店信息添加后,可以在需要的事件处调用{\"type\": \"openShop\"}来打开你添加的全局商店。", - "\t[老人,man]在上面的例子里,左边是一个仿50层的金币商店,右边是一个仿24层的经验商店。\n\n商店被访问后即可在快捷商店中进行使用。", - "\t[老人,man]如果你需要在某层暂时禁用快捷商店,可以在data.js中设置cannotUseQuickShop。\n如果需要永久禁用商店,请使用{\"type\":\"disableShop\"}", - { - "type": "hide", - "time": 500 - } - ], - "1,0": [ - { - "type": "openShop", - "id": "shop1", - "open": true - } - ], - "5,0": [ - { - "type": "openShop", - "id": "shop2", - "open": true - } - ], - "7,7": [ - "\t[老人,man]这是一个典型的杀怪开门、强制战斗事件。", - { - "type": "hide" - } - ], - "8,7": { - "enable": false, - "data": [] - }, - "9,7": [ - { - "type": "show", - "loc": [ - 8, - 7 - ] - }, - { - "type": "hide" - } - ], - "10,4": [ - "\t[blackKing]你终于还是来了。", - "\t[hero]放开我们的公主!", - "\t[blackKing]如果我不愿意呢?", - "\t[hero]无需多说,拔剑吧!", - { - "type": "battle", - "id": "blackKing" - }, - { - "type": "hide", - "loc": [ - 10, - 2 - ] - }, - { - "type": "openDoor", - "loc": [ - 8, - 7 - ] - }, - "\t[blackKing]没想到你已经变得这么强大了... 算你厉害。\n公主就交给你了,请好好对她。", - { - "type": "hide" - } - ], - "10,0": [ - "\t[hero]公主,我来救你了~", - "\t[公主,princess]快救我出去!我受够这里了!", - "\t[hero]公主别怕,我们走吧~", - { - "type": "win", - "reason": "救出公主" - } - ], - "6,12": { - "enable": false, - "data": [] - }, - "6,11": [ - "\t[仙子,fairy]通过调用 {\"type\": \"show\"} 可以使隐藏的事件显示出来。\n比如我下面这个机关门。", - { - "type": "show", - "loc": [ - 6, - 12 - ] - }, - "\t[仙子,fairy]通过调用 {\"type\": \"openDoor\"} 可以无需钥匙打开一扇门或暗墙。", - { - "type": "openDoor", - "loc": [ - 6, - 12 - ] - }, - "\t[仙子,fairy]同时,也可以对其它层进行操作,比如楼下的机关门,现在已经为你打开了。", - { - "type": "openDoor", - "loc": [ - 11, - 10 - ], - "floorId": "sample0" - }, - "\t[仙子,fairy]如果 show 或 hide 指定了 time 参数,则以动画效果显示,指定的参数作为消失时间(毫秒)来计算。", - "\t[仙子,fairy]现在到楼下来找我吧~", - { - "type": "show", - "loc": [ - 12, - 10 - ], - "floorId": "sample0" - }, - { - "type": "hide", - "time": 500 - } - ], - "8,11": [ - { - "type": "setValue", - "name": "flag:man_times", - "operator": "+=", - "value": "1" - }, - "\t[老人,man]在文字中使用$+{}可以计算并显示一个表达式的结果。\n", - "\t[老人,man]例如:\n你的当前攻击力是${status:atk},防御力是${status:def}。\n攻防和的十倍是${10*(status:atk+status:def)},攻防之积是${status:atk*status:def}。\n你有${item:yellowKey}把黄钥匙,${item:blueKey}把蓝钥匙,${item:redKey}把红钥匙。\n你有${item:pickaxe}个破,${item:bomb}个炸,${item:centerFly}个飞。\n这是你第${flag:man_times}次和我对话。", - "\t[老人,man]同时,你也可以通过{\"type\": \"setValue\"}来设置一个勇士的属性、道具,或某个Flag。", - "\t[老人,man]例如:\n现在我将让你的攻防提升50%,再将攻防和的十倍加到生命值上。", - { - "type": "setValue", - "name": "status:atk", - "operator": "*=", - "value": "1.5" - }, - { - "type": "setValue", - "name": "status:def", - "operator": "*=", - "value": "1.5" - }, - { - "type": "setValue", - "name": "status:hp", - "operator": "+=", - "value": "10*(status:atk+status:def)" - }, - "\t[老人,man]再送你500金币,1000经验,1破2炸3飞!", - { - "type": "setValue", - "name": "status:money", - "operator": "+=", - "value": "500" - }, - { - "type": "setValue", - "name": "status:exp", - "operator": "+=", - "value": "1000" - }, - { - "type": "setValue", - "name": "item:pickaxe", - "operator": "+=", - "value": "1" - }, - { - "type": "setValue", - "name": "item:bomb", - "operator": "+=", - "value": "2" - }, - { - "type": "setValue", - "name": "item:centerFly", - "operator": "+=", - "value": "3" - }, - "\t[老人,man]status:xxx 代表勇士的某个属性。\n其中xxx可取hp, atk, def, mdef, money,exp这几项。\n\nitem:xxx 代表勇士的某个道具的个数。\nxxx为道具ID,具体可参见items.js中的定义。\n\nflag:xxx 代表某个自定义Flag或变量。\nxxx为Flag/变量名,可以自行定义,由字母、数字和下划线组成。\n未定义过而直接取用的Flag默认值为false。", - "\t[老人,man]你现在可以重新和我进行对话,进一步看到属性值的改变。" - ], - "10,11": [ - { - "type": "if", - "condition": "flag:woman_times==0", - "true": [ - "\t[老人,woman]这是个很复杂的例子,它将教会你如何使用if 语句进行条件判断,以及 choices 提供选项来供用户进行选择。", - "\t[老人,woman]第一次访问我将显示这段文字;从第二次开始将会向你出售钥匙。\n钥匙价格将随着访问次数递增。\n当合计出售了七把钥匙后,将送你一把大黄门钥匙,并消失不再出现。", - "\t[老人,woman]这部分的逻辑比较长,请细心看样板的写法,是很容易看懂并理解的。" - ], - "false": [ - { - "type": "if", - "condition": "flag:woman_times==8", - "true": [ - "\t[老人,woman]你购买的钥匙已经够多了,再继续卖给你的话我会有危险的。", - "\t[老人,woman]看在你贡献给我这么多钱的份上,送你一把大黄门钥匙吧,希望你能好好用它。", - { - "type": "setValue", - "name": "item:bigKey", - "operator": "+=", - "value": "1" - }, - "\t[老人,woman]我先走了,拜拜~", - { - "type": "hide", - "time": 500 - }, - { - "type": "exit" - } + "time": 1500 + }, + { + "type": "sleep", + "time": 500 + }, + "\t[redKing]欢迎来到魔塔,你是第一百位挑战者。\n若你能打败我所有的手下,我就与你一对一的决斗。\n现在你必须接受我的安排。", + { + "type": "show", + "loc": [ + [ + 1, + 6 ], - "false": [ - { - "type": "choices", - "text": "\t[老人,woman]少年,你需要钥匙吗?\n我这里有大把的!", - "choices": [ - { - "text": "黄钥匙(${9+flag:woman_times}金币)", - "action": [ - { - "type": "if", - "condition": "status:money>=9+flag:woman_times", - "true": [ - { - "type": "setValue", - "name": "status:money", - "operator": "-=", - "value": "9+flag:woman_times" - }, - { - "type": "setValue", - "name": "item:yellowKey", - "operator": "+=", - "value": "1" - } - ], - "false": [ - "\t[老人,woman]你的金钱不足!", - { - "type": "revisit" - } - ] - } - ] - }, - { - "text": "蓝钥匙(${18+2*flag:woman_times}金币)", - "action": [ - { - "type": "if", - "condition": "status:money>=18+2*flag:woman_times", - "true": [ - { - "type": "setValue", - "name": "status:money", - "operator": "-=", - "value": "18+2*flag:woman_times" - }, - { - "type": "setValue", - "name": "item:blueKey", - "operator": "+=", - "value": "1" - } - ], - "false": [ - "\t[老人,woman]你的金钱不足!", - { - "type": "revisit" - } - ] - } - ] - }, - { - "text": "红钥匙(${36+4*flag:woman_times}金币)", - "action": [ - { - "type": "if", - "condition": "status:money>=36+4*flag:woman_times", - "true": [ - { - "type": "setValue", - "name": "status:money", - "operator": "-=", - "value": "36+4*flag:woman_times" - }, - { - "type": "setValue", - "name": "item:redKey", - "operator": "+=", - "value": "1" - } - ], - "false": [ - "\t[老人,woman]你的金钱不足!", - { - "type": "revisit" - } - ] - } - ] - }, - { - "text": "离开", - "action": [ - { - "type": "exit" - } - ] - } - ] - } + [ + 0, + 7 + ], + [ + 1, + 8 + ], + [ + 2, + 7 ] - } - ] + ], + "time": 500 + }, + "\t[hero]什么?", + { + "type": "playSound", + "name": "attack.mp3" + }, + { + "type": "setValue", + "name": "status:atk", + "operator": "/=", + "value": "10" + }, + { + "type": "setValue", + "name": "status:def", + "operator": "/=", + "value": "10" + }, + { + "type": "hide", + "loc": [ + [ + 1, + 6 + ], + [ + 0, + 7 + ], + [ + 2, + 7 + ], + [ + 1, + 8 + ] + ] + }, + { + "type": "hide", + "loc": [ + 1, + 5 + ], + "time": 500 + }, + { + "type": "hide" + }, + { + "type": "setCurtain", + "color": [ + 0, + 0, + 0 + ], + "time": 1250 + }, + { + "type": "sleep", + "time": 700 + }, + { + "type": "changeFloor", + "floorId": "sample1", + "loc": [ + 1, + 11 + ], + "direction": "right", + "time": 1000 + }, + { + "type": "trigger", + "loc": [ + 2, + 11 + ] + } + ], + "2,11": [ + "\t[杰克,thief]喂!醒醒!快醒醒!", + { + "type": "setCurtain", + "time": 1500 + }, + "\t[hero]额,我这是在什么地方?", + "\t[杰克,thief]你被魔王抓了起来扔进了监狱,和我关在了一起,但是幸运的是我在昨天刚刚挖好一条越狱的暗道!", + { + "type": "openDoor", + "loc": [ + 3, + 11 + ] + }, + { + "type": "sleep", + "time": 300 + }, + "\t[杰克,thief]我先走了,祝你好运!", + { + "type": "move", + "time": 750, + "steps": [ + "right", + "right", + "down" + ] + }, + "上面是个move事件,可以对NPC等进行移动。\n详见样板中小偷事件的写法。", + "\t[hero]怎么跑的这么快..." + ], + "4,2": [ + "\t[老人,man]本塔的商店有两类,全局商店和非全局商店。\n\n所谓非全局商店,就类似于右下角那个卖钥匙的老人一样,一定要碰到才能触发事件。\n\n而全局商店,则能在快捷商店中直接使用。", + "\t[老人,man]要注册一个全局商店,你需要在 data.js 中,找到 shops,并在内添加你的商店信息。", + "\t[老人,man]商店信息添加后,可以在需要的事件处调用{\"type\": \"openShop\"}来打开你添加的全局商店。", + "\t[老人,man]在上面的例子里,左边是一个仿50层的金币商店,右边是一个仿24层的经验商店。\n\n商店被访问后即可在快捷商店中进行使用。", + "\t[老人,man]如果你需要在某层暂时禁用快捷商店,可以在data.js中设置cannotUseQuickShop。\n如果需要永久禁用商店,请使用{\"type\":\"disableShop\"}", + { + "type": "hide", + "time": 500 + } + ], + "1,0": [ + { + "type": "openShop", + "id": "shop1", + "open": true + } + ], + "5,0": [ + { + "type": "openShop", + "id": "shop2", + "open": true + } + ], + "7,7": [ + "\t[老人,man]这是一个典型的杀怪开门、强制战斗事件。", + { + "type": "hide" + } + ], + "8,7": { + "enable": false, + "data": [] }, - { - "type": "setValue", - "name": "flag:woman_times", - "operator": "+=", - "value": "1" + "9,7": [ + { + "type": "show", + "loc": [ + 8, + 7 + ] + }, + { + "type": "hide" + } + ], + "10,4": [ + "\t[blackKing]你终于还是来了。", + "\t[hero]放开我们的公主!", + "\t[blackKing]如果我不愿意呢?", + "\t[hero]无需多说,拔剑吧!", + { + "type": "battle", + "id": "blackKing" + }, + { + "type": "hide", + "loc": [ + 10, + 2 + ] + }, + { + "type": "openDoor", + "loc": [ + 8, + 7 + ] + }, + "\t[blackKing]没想到你已经变得这么强大了... 算你厉害。\n公主就交给你了,请好好对她。", + { + "type": "hide" + } + ], + "10,0": [ + "\t[hero]公主,我来救你了~", + "\t[公主,princess]快救我出去!我受够这里了!", + "\t[hero]公主别怕,我们走吧~", + { + "type": "win", + "reason": "救出公主" + } + ], + "6,12": { + "enable": false, + "data": [] }, - { - "type": "revisit" - } - ], - "12,11": [ - "\t[老人,womanMagician]使用 {\"type\":\"function\"} 可以写自定义的JS脚本。\n本塔支持的所有主要API会在doc文档内给出。", - "\t[老人,womanMagician]例如这个例子:即将弹出一个输入窗口,然后会将你的输入结果直接加到你的攻击力上。", - { - "type": "input", - "text": "请输入你要加攻击力的数值:" - }, - { - "type": "if", - "condition": "flag:input>0", - "true": [ - { - "type": "setValue", - "name": "status:atk", - "operator": "+=", - "value": "flag:input" - }, - { - "type": "tip", - "text": "操作成功,攻击+${flag:input}" - }, - "操作成功,攻击+${flag:input}" - ], - "false": [] - }, - "\t[老人,womanMagician]具体可参见样板中本事件的写法。" - ], -}, -"changeFloor": { - "4,12": { - "floorId": "sample0", - "loc": [ - 6, - 0 + "6,11": [ + "\t[仙子,fairy]通过调用 {\"type\": \"show\"} 可以使隐藏的事件显示出来。\n比如我下面这个机关门。", + { + "type": "show", + "loc": [ + 6, + 12 + ] + }, + "\t[仙子,fairy]通过调用 {\"type\": \"openDoor\"} 可以无需钥匙打开一扇门或暗墙。", + { + "type": "openDoor", + "loc": [ + 6, + 12 + ] + }, + "\t[仙子,fairy]同时,也可以对其它层进行操作,比如楼下的机关门,现在已经为你打开了。", + { + "type": "openDoor", + "loc": [ + 11, + 10 + ], + "floorId": "sample0" + }, + "\t[仙子,fairy]如果 show 或 hide 指定了 time 参数,则以动画效果显示,指定的参数作为消失时间(毫秒)来计算。", + "\t[仙子,fairy]现在到楼下来找我吧~", + { + "type": "show", + "loc": [ + 12, + 10 + ], + "floorId": "sample0" + }, + { + "type": "hide", + "time": 500 + } + ], + "8,11": [ + { + "type": "setValue", + "name": "flag:man_times", + "operator": "+=", + "value": "1" + }, + "\t[老人,man]在文字中使用$+{}可以计算并显示一个表达式的结果。\n", + "\t[老人,man]例如:\n你的当前攻击力是${status:atk},防御力是${status:def}。\n攻防和的十倍是${10*(status:atk+status:def)},攻防之积是${status:atk*status:def}。\n你有${item:yellowKey}把黄钥匙,${item:blueKey}把蓝钥匙,${item:redKey}把红钥匙。\n你有${item:pickaxe}个破,${item:bomb}个炸,${item:centerFly}个飞。\n这是你第${flag:man_times}次和我对话。", + "\t[老人,man]同时,你也可以通过{\"type\": \"setValue\"}来设置一个勇士的属性、道具,或某个Flag。", + "\t[老人,man]例如:\n现在我将让你的攻防提升50%,再将攻防和的十倍加到生命值上。", + { + "type": "setValue", + "name": "status:atk", + "operator": "*=", + "value": "1.5" + }, + { + "type": "setValue", + "name": "status:def", + "operator": "*=", + "value": "1.5" + }, + { + "type": "setValue", + "name": "status:hp", + "operator": "+=", + "value": "10*(status:atk+status:def)" + }, + "\t[老人,man]再送你500金币,1000经验,1破2炸3飞!", + { + "type": "setValue", + "name": "status:money", + "operator": "+=", + "value": "500" + }, + { + "type": "setValue", + "name": "status:exp", + "operator": "+=", + "value": "1000" + }, + { + "type": "setValue", + "name": "item:pickaxe", + "operator": "+=", + "value": "1" + }, + { + "type": "setValue", + "name": "item:bomb", + "operator": "+=", + "value": "2" + }, + { + "type": "setValue", + "name": "item:centerFly", + "operator": "+=", + "value": "3" + }, + "\t[老人,man]status:xxx 代表勇士的某个属性。\n其中xxx可取hp, atk, def, mdef, money,exp这几项。\n\nitem:xxx 代表勇士的某个道具的个数。\nxxx为道具ID,具体可参见items.js中的定义。\n\nflag:xxx 代表某个自定义Flag或变量。\nxxx为Flag/变量名,可以自行定义,由字母、数字和下划线组成。\n未定义过而直接取用的Flag默认值为false。", + "\t[老人,man]你现在可以重新和我进行对话,进一步看到属性值的改变。" + ], + "10,11": [ + { + "type": "while", + "condition": "true", + "data": [ + { + "type": "switch", + "condition": "flag:woman_times", + "caseList": [ + { + "case": "0", + "action": [ + "\t[老人,woman]这是个很复杂的例子,它将教会你如何使用if 语句进行条件判断,以及 choices 提供选项来供用户进行选择。", + "\t[老人,woman]第一次访问我将显示这段文字;从第二次开始将会向你出售钥匙。\n钥匙价格将随着访问次数递增。\n当合计出售了七把钥匙后,将送你一把大黄门钥匙,并消失不再出现。", + "\t[老人,woman]这部分的逻辑比较长,请细心看样板的写法,是很容易看懂并理解的。" + ] + }, + { + "case": "8", + "action": [ + "\t[老人,woman]你购买的钥匙已经够多了,再继续卖给你的话我会有危险的。", + "\t[老人,woman]看在你贡献给我这么多钱的份上,送你一把大黄门钥匙吧,希望你能好好用它。", + { + "type": "setValue", + "name": "item:bigKey", + "operator": "+=", + "value": "1" + }, + "\t[老人,woman]我先走了,拜拜~", + { + "type": "hide", + "time": 500 + }, + { + "type": "exit" + } + ] + }, + { + "case": "default", + "action": [ + { + "type": "choices", + "text": "\t[老人,woman]少年,你需要钥匙吗?\n我这里有大把的!", + "choices": [ + { + "text": "黄钥匙(${9+flag:woman_times}金币)", + "action": [ + { + "type": "if", + "condition": "status:money>=9+flag:woman_times", + "true": [ + { + "type": "setValue", + "name": "status:money", + "operator": "-=", + "value": "9+flag:woman_times" + }, + { + "type": "setValue", + "name": "item:yellowKey", + "operator": "+=", + "value": "1" + } + ], + "false": [ + "\t[老人,woman]你的金钱不足!" + ] + } + ] + }, + { + "text": "蓝钥匙(${18+2*flag:woman_times}金币)", + "action": [ + { + "type": "if", + "condition": "status:money>=18+2*flag:woman_times", + "true": [ + { + "type": "setValue", + "name": "status:money", + "operator": "-=", + "value": "18+2*flag:woman_times" + }, + { + "type": "setValue", + "name": "item:blueKey", + "operator": "+=", + "value": "1" + }, + { + "type": "continue" + } + ], + "false": [ + "\t[老人,woman]你的金钱不足!" + ] + } + ] + }, + { + "text": "红钥匙(${36+4*flag:woman_times}金币)", + "action": [ + { + "type": "if", + "condition": "status:money>=36+4*flag:woman_times", + "true": [ + { + "type": "setValue", + "name": "status:money", + "operator": "-=", + "value": "36+4*flag:woman_times" + }, + { + "type": "setValue", + "name": "item:redKey", + "operator": "+=", + "value": "1" + } + ], + "false": [ + "\t[老人,woman]你的金钱不足!", + { + "type": "continue" + } + ] + } + ] + }, + { + "text": "离开", + "action": [ + { + "type": "exit" + } + ] + } + ] + } + ] + } + ] + }, + { + "type": "setValue", + "name": "flag:woman_times", + "operator": "+=", + "value": "1" + } + ] + } + ], + "12,11": [ + "\t[老人,womanMagician]使用 {\"type\":\"function\"} 可以写自定义的JS脚本。\n本塔支持的所有主要API会在doc文档内给出。", + "\t[老人,womanMagician]例如这个例子:即将弹出一个输入窗口,然后会将你的输入结果直接加到你的攻击力上。", + { + "type": "input", + "text": "请输入你要加攻击力的数值:" + }, + { + "type": "if", + "condition": "flag:input>0", + "true": [ + { + "type": "setValue", + "name": "status:atk", + "operator": "+=", + "value": "flag:input" + }, + { + "type": "tip", + "text": "操作成功,攻击+${flag:input}" + }, + "操作成功,攻击+${flag:input}" + ], + "false": [] + }, + "\t[老人,womanMagician]具体可参见样板中本事件的写法。" ] }, - "5,5": { - "floorId": "sample2", - "stair": "downFloor", - "direction": "up" - }, - "10,12": null -}, -"afterBattle": { - "9,6": [ - { - "type": "setValue", - "name": "flag:door", - "operator": "+=", - "value": "1" - } - ], - "11,6": [ - { - "type": "setValue", - "name": "flag:door", - "operator": "+=", - "value": "1" - } - ] -}, -"afterGetItem": {}, -"afterOpenDoor": {}, -"cannotMove": {}, -"bgmap": [ - -], -"fgmap": [ - -], -"autoEvent": { - "10,5": { - "0": { - "condition": "flag:door==2", - "currentFloor": true, - "priority": 0, - "delayExecute": false, - "multiExecute": false, - "data": [ - { - "type": "openDoor" - } - + "changeFloor": { + "4,12": { + "floorId": "sample0", + "loc": [ + 6, + 0 ] + }, + "5,5": { + "floorId": "sample2", + "stair": "downFloor", + "direction": "up" + }, + "10,12": null + }, + "afterBattle": { + "9,6": [ + { + "type": "setValue", + "name": "flag:door", + "operator": "+=", + "value": "1" + } + ], + "11,6": [ + { + "type": "setValue", + "name": "flag:door", + "operator": "+=", + "value": "1" + } + ] + }, + "afterGetItem": {}, + "afterOpenDoor": {}, + "cannotMove": {}, + "bgmap": [ + +], + "fgmap": [ + +], + "autoEvent": { + "10,5": { + "0": { + "condition": "flag:door==2", + "currentFloor": true, + "priority": 0, + "delayExecute": false, + "multiExecute": false, + "data": [ + { + "type": "openDoor" + } + ] + } } - } -} + }, + "width": 13, + "height": 13 } \ No newline at end of file diff --git a/project/floors/sample2.js b/project/floors/sample2.js index 7ae07530..a118ee6d 100644 --- a/project/floors/sample2.js +++ b/project/floors/sample2.js @@ -1,15 +1,15 @@ main.floors.sample2= { -"floorId": "sample2", -"title": "样板 2 层", -"name": "2", -"canFlyTo": true, -"canUseQuickShop": true, -"cannotViewMap": false, -"defaultGround": "ground", -"images": [], -"item_ratio": 1, -"map": [ + "floorId": "sample2", + "title": "样板 2 层", + "name": "2", + "canFlyTo": true, + "canUseQuickShop": true, + "cannotViewMap": false, + "defaultGround": "ground", + "images": [], + "item_ratio": 1, + "map": [ [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [ 0, 0, 1,121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], @@ -37,36 +37,37 @@ main.floors.sample2= [ 0, 0, 0, 0, 0,202, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,202, 0, 0, 0, 0, 0, 0, 0], [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] ], -"width": 26, -"height": 26, -"firstArrive": [], -"events": { - "3,2": [ - "123" - ], - "12,12": [ - "234" - ] -}, -"changeFloor": { - "6,10": { - "floorId": "sample1", - "stair": "upFloor" + "width": 26, + "height": 26, + "firstArrive": [], + "events": { + "3,2": [ + "123" + ], + "12,12": [ + "234" + ] }, - "7,12": { - "floorId": "sample3", - "stair": "downFloor" - } -}, -"afterBattle": {}, -"afterGetItem": {}, -"afterOpenDoor": {}, -"cannotMove": {}, -"upFloor": null, -"bgmap": [ + "changeFloor": { + "6,10": { + "floorId": "sample1", + "stair": "upFloor" + }, + "7,12": { + "floorId": "sample3", + "stair": "downFloor" + } + }, + "afterBattle": {}, + "afterGetItem": {}, + "afterOpenDoor": {}, + "cannotMove": {}, + "upFloor": null, + "bgmap": [ ], -"fgmap": [ + "fgmap": [ ], + "autoEvent": {} } \ No newline at end of file diff --git a/project/floors/sample3.js b/project/floors/sample3.js index e115ba5f..e0c28451 100644 --- a/project/floors/sample3.js +++ b/project/floors/sample3.js @@ -1,25 +1,25 @@ main.floors.sample3= { -"floorId": "sample3", -"title": "主塔 40 层", -"name": "40", -"canFlyTo": false, -"canUseQuickShop": true, -"defaultGround": "snowGround", -"images": [], -"color": [ - 255, - 0, - 0, - 0.3 -], -"weather": [ - "rain", - 10 -], -"bgm": "bgm.mp3", -"item_ratio": 1, -"map": [ + "floorId": "sample3", + "title": "主塔 40 层", + "name": "40", + "canFlyTo": false, + "canUseQuickShop": true, + "defaultGround": "snowGround", + "images": [], + "color": [ + 255, + 0, + 0, + 0.3 + ], + "weather": [ + "rain", + 10 + ], + "bgm": "bgm.mp3", + "item_ratio": 1, + "map": [ [ 5, 5, 5, 5, 5, 5, 87, 5, 5, 5, 5, 5, 5], [ 5, 4, 4, 4, 4, 1, 0, 1, 4, 4, 4, 4, 5], [ 5, 4, 4, 4, 4, 1, 85, 1, 4, 4, 4, 4, 5], @@ -34,972 +34,975 @@ main.floors.sample3= [ 5, 4, 4, 4, 4, 4, 85, 4, 4, 4, 4, 4, 5], [ 5, 5, 5, 5, 5, 5, 88, 5, 5, 5, 5, 5, 5] ], -"firstArrive": [ - "\t[实战!]本楼将尝试复刻《宿命的旋律》40F剧情。" -], -"events": { - "6,11": { - "enable": false, - "data": [] - }, - "6,10": [ - { - "type": "playSound", - "name": "door.mp3" - }, - { - "type": "show", - "loc": [ - 6, - 11 - ] - }, - { - "type": "hide" - }, - { - "type": "trigger", - "loc": [ - 6, - 7 - ] - } + "firstArrive": [ + "\t[实战!]本楼将尝试复刻《宿命的旋律》40F剧情。" ], - "6,7": [ - { - "type": "playSound", - "name": "item.mp3" + "events": { + "6,11": { + "enable": false, + "data": [] }, - "\t[hero]杰克,你究竟是什么人?", - { - "type": "playSound", - "name": "item.mp3" - }, - "\t[杰克,thief]……", - { - "type": "playSound", - "name": "item.mp3" - }, - "\t[hero]我们……是朋友对吧?\n是朋友就应该相互信任对吧?", - { - "type": "playSound", - "name": "item.mp3" - }, - "\t[杰克,thief]……事到如今也没有什么好隐瞒的了。", - { - "type": "playSound", - "name": "item.mp3" - }, - "\t[杰克,thief]没错,我就是这一切的背后主谋。", - { - "type": "move", - "steps": [ - { - "direction": "up", - "value": 3 - } - ], - "time": 1000 - }, - { - "type": "show", - "loc": [ - 6, - 4 - ], - "time": 1000 - }, - { - "type": "sleep", - "time": 500 - }, - { - "type": "playSound", - "name": "item.mp3" - }, - "\t[blackMagician]我的真名为——黑暗大法师,第四区域的头目。", - { - "type": "playSound", - "name": "item.mp3" - }, - "\t[hero]呵呵,不知道为什么,我竟然对事情走到现在这一步毫不感觉意外。", - { - "type": "playSound", - "name": "item.mp3" - }, - "\t[blackMagician]以杰克的名义利用了你这么久,真是抱歉啊。", - { - "type": "playSound", - "name": "item.mp3" - }, - "\t[hero]真正的杰克现在在哪里?", - { - "type": "playSound", - "name": "item.mp3" - }, - "\t[blackMagician]盗贼杰克这个人类从未存在过,他只是我用来接近你的一副皮囊而已。", - { - "type": "playSound", - "name": "item.mp3" - }, - "\t[hero]……这样啊,呵呵。", - { - "type": "playSound", - "name": "item.mp3" - }, - "\t[blackMagician]为什么你看上去丝毫不生气?", - { - "type": "playSound", - "name": "item.mp3" - }, - "\t[hero]多亏了鬼帝,我现在的脾气好得连我自己都害怕。", - { - "type": "playSound", - "name": "item.mp3" - }, - "\t[hero]说起来我还得好好感谢你呢,如果没有杰克……你的帮助,我早就死在第一区域了。", - { - "type": "playSound", - "name": "item.mp3" - }, - "\t[hero]不论你的目的如何,你的所作所为都是对我有利的。不是吗?", - { - "type": "playSound", - "name": "item.mp3" - }, - "\t[blackMagician]能够如此淡定的面对背叛,看来跟五年前相比,你确实成长了很多啊。", - { - "type": "playSound", - "name": "item.mp3" - }, - "\t[hero]五年前?……黑暗大法师,在这之前,我们好像素未谋面吧?", - { - "type": "playSound", - "name": "item.mp3" - }, - "\t[blackMagician]五年前那场屠城你应该这一生都不会忘记吧。", - { - "type": "playSound", - "name": "item.mp3" - }, - "\t[blackMagician]很不巧,那场屠城的主谋,也是我。", - { - "type": "playSound", - "name": "item.mp3" - }, - "\t[hero]……", - { - "type": "playSound", - "name": "item.mp3" - }, - "\t[hero]这么说,击中我双亲的那道紫色闪电,也就是你释放的吧……", - { - "type": "playSound", - "name": "item.mp3" - }, - "\t[blackMagician]你的双亲?这种事情我怎么可能会记得?\n你难道在踩死蚂蚁的时候还会一只只记下他们的样子吗?", - { - "type": "playSound", - "name": "item.mp3" - }, - "\t[hero]老 子 要 你 的 命", - { - "type": "playSound", - "name": "item.mp3" - }, - "\t[blackMagician]你应该对我心怀感激才对,如果不是那时的我看出了你隐藏的稀有勇者体质,你绝对不可能活到今天。", - { - "type": "playSound", - "name": "item.mp3" - }, - "\t[blackMagician]在暗中动手脚让你通过勇者选拔的人也是我,我一直一直在暗中引导你走到今天这一步。", - { - "type": "playSound", - "name": "item.mp3" - }, - "\t[blackMagician]是我救赎了一无是处的你。", - { - "type": "playSound", - "name": "item.mp3" - }, - "\t[hero]为什么只有我一个人活了下来!!!!", - { - "type": "playSound", - "name": "item.mp3" - }, - "\t[hero]为什么偏偏是我!!!!", - { - "type": "playSound", - "name": "item.mp3" - }, - "\t[blackMagician]我刚才不是说过了吗?因为我看出了你有稀有勇者体质啊。", - { - "type": "playSound", - "name": "item.mp3" - }, - "\t[blackMagician]你刚刚跟鬼帝交过手,应该已经很清楚这稀有勇者体质意味着什么了吧?", - { - "type": "playSound", - "name": "item.mp3" - }, - "\t[hero]……就因为我有这种体质,就不得不背负如此残酷的宿命吗?", - { - "type": "playSound", - "name": "item.mp3" - }, - "\t[blackMagician]愚蠢!这意味着只要我对你加以引导跟培养,你就能成为这世间实力最强的存在!", - { - "type": "playSound", - "name": "item.mp3" - }, - "\t[hero]……所以,你究竟想利用我干什么?", - { - "type": "playSound", - "name": "item.mp3" - }, - "\t[blackMagician]我利用你干的事情,你不是已经完成了吗?", - { - "type": "playSound", - "name": "item.mp3" - }, - "\t[hero]……你说什么?", - { - "type": "playSound", - "name": "item.mp3" - }, - "\t[blackMagician]不知不觉间,你已经在我的指引下跟鬼帝正面交手并且杀掉了他啊。", - { - "type": "playSound", - "name": "item.mp3" - }, - "\t[hero]就连我跟鬼帝的对决……也是被你安排好了的?", - { - "type": "playSound", - "name": "item.mp3" - }, - "\t[blackMagician]你们两个一个是人类勇者,一个是魔物勇者,迟早会有交手的一天。", - { - "type": "playSound", - "name": "item.mp3" - }, - "\t[blackMagician]我只不过是操纵了一系列的连锁事件让这一天提早了数十年到来而已。", - { - "type": "playSound", - "name": "item.mp3" - }, - "\t[hero]……你这样做对谁有好处?他可是你们魔物世界的救世主啊。", - { - "type": "playSound", - "name": "item.mp3" - }, - "\t[blackMagician]一个惧怕征战,爱好和平的懦夫,也配叫救世主?", - { - "type": "playSound", - "name": "item.mp3" - }, - "\t[blackMagician]获得了力量,却只会被动挨打而不主动向人类世界出击,龟缩在第二区域惶惶度日,他根本就不配拥有稀有勇者体质。", - { - "type": "playSound", - "name": "item.mp3" - }, - "\t[blackMagician]为了不让这种人霸占着积累多年的庞大灵魂能量无作为,我设计让你杀掉了他。", - { - "type": "playSound", - "name": "item.mp3" - }, - "\t[blackMagician]你没有辜负我的期待,成功战胜了那个废物,现在你体内累积的灵魂能量……也就是魔力,已经达到了能跟魔王匹敌的地步。", - { - "type": "playSound", - "name": "item.mp3" - }, - "\t[hero]……是吗?现在的我能与魔王匹敌?", - { - "type": "playSound", - "name": "item.mp3" - }, - "\t[blackMagician]不止如此,你现在的力量之强就算是统治世界也是绰绰有余!", - { - "type": "playSound", - "name": "item.mp3" - }, - "\t[blackMagician]怎么样?要不要加入我的麾下,跟随我去征战人类世界?", - { - "type": "playSound", - "name": "item.mp3" - }, - "\t[hero]能与魔王匹敌的话,也就是说。", - { - "type": "playSound", - "name": "item.mp3" - }, - "\t[hero]我 现 在 对 付 你 这 种 杂 碎 也 绰 绰 有 余 吧 ?", - { - "type": "playSound", - "name": "item.mp3" - }, - "\t[blackMagician]……什么?!", - { - "type": "playSound", - "name": "item.mp3" - }, - "\t[blackMagician]等一下!别冲动!你先等我把这利害关系理一理——", - { - "type": "playSound", - "name": "item.mp3" - }, - "\t[hero]你给老子闭嘴。", - { - "type": "playSound", - "name": "item.mp3" - }, - "\t[hero]老子什么都不想听。", - { - "type": "playSound", - "name": "item.mp3" - }, - "\t[hero]老子现在想做的事情只有一件——", - { - "type": "playSound", - "name": "item.mp3" - }, - "\t[hero]剁掉你的头,把它放回我双亲的墓前。", - { - "type": "update" - } - ], - "6,4": { - "enable": false, - "data": [] - }, - "5,4": { - "enable": false, - "data": [] - }, - "7,4": { - "enable": false, - "data": [] - }, - "5,5": { - "enable": false, - "data": [] - }, - "7,5": { - "enable": false, - "data": [] - }, - "6,3": { - "trigger": "action", - "enable": false, - "data": [ - "\t[blackMagician]听不进去人话的蠢货,就要用疼痛来管教!", - { - "type": "changePos", - "direction": "up" - }, + "6,10": [ { "type": "playSound", - "name": "item.mp3" + "name": "door.mp3" }, - "\t[blackMagician]出来吧!禁忌——紫电凶杀阵!", - { - "type": "show", - "loc": [ - [ - 4, - 3 - ], - [ - 4, - 6 - ], - [ - 8, - 6 - ], - [ - 8, - 3 - ] - ], - "time": 500 - }, - { - "type": "sleep", - "time": 500 - }, - "\t[blackMagician]感受绝望吧!冥顽不化的蠢货!", - { - "type": "animate", - "name": "yongchang", - "loc": [ - 4, - 3 - ] - }, - { - "type": "animate", - "name": "yongchang", - "loc": [ - 4, - 6 - ] - }, - { - "type": "animate", - "name": "yongchang", - "loc": [ - 8, - 6 - ] - }, - { - "type": "animate", - "name": "yongchang", - "loc": [ - 8, - 3 - ] - }, - { - "type": "sleep", - "time": 200 - }, - { - "type": "playSound", - "name": "attack.mp3" - }, - { - "type": "animate", - "name": "thunder", - "loc": "hero" - }, - { - "type": "sleep", - "time": 200 - }, - "\t[hero]唔……!!(吐血)", - { - "type": "playSound", - "name": "item.mp3" - }, - "\t[blackMagician]我的魔力可是充足的很啊!我会一直折磨到你屈服于我为止!", - { - "type": "playSound", - "name": "item.mp3" - }, - "\t[blackMagician]人类!好好感受吧!当初你们施加于我的痛苦!如今我要百倍奉还!", { "type": "show", "loc": [ 6, - 6 - ], - "time": 1000 + 11 + ] }, { - "type": "sleep", - "time": 700 + "type": "hide" }, { "type": "trigger", "loc": [ 6, - 6 + 7 ] } - ] - }, - "4,3": { - "trigger": "action", - "displayDamage": false, - "enable": false, - "data": [] - }, - "8,3": { - "trigger": "action", - "displayDamage": false, - "enable": false, - "data": [] - }, - "4,6": { - "trigger": "action", - "displayDamage": false, - "enable": false, - "data": [] - }, - "8,6": { - "trigger": "action", - "displayDamage": false, - "enable": false, - "data": [] - }, - "6,6": { - "enable": false, - "data": [ + ], + "6,7": [ { "type": "playSound", "name": "item.mp3" }, - "\t[hero]…妖精…小姐……是你吗?", + "\t[hero]杰克,你究竟是什么人?", { "type": "playSound", "name": "item.mp3" }, - "\t[小妖精,fairy]不要绝望,也不要悲伤。", + "\t[杰克,thief]……", { "type": "playSound", "name": "item.mp3" }, - "\t[小妖精,fairy]你从来都不是独自一人在前进。", + "\t[hero]我们……是朋友对吧?\n是朋友就应该相互信任对吧?", { "type": "playSound", "name": "item.mp3" }, - "\t[小妖精,fairy]咱一直,一直都在注视着你。", + "\t[杰克,thief]……事到如今也没有什么好隐瞒的了。", { "type": "playSound", "name": "item.mp3" }, - "\t[小妖精,fairy]耍小聪明的你、笨笨的你呆呆的你、胆小的你、勇敢的你帅气的你……全部全部都是你。", - { - "type": "playSound", - "name": "item.mp3" - }, - "\t[小妖精,fairy]所以放心吧,无论发生什么,咱都会陪伴在你身边的。", - { - "type": "playSound", - "name": "item.mp3" - }, - "\t[小妖精,fairy]因为你要是离开我的话,立刻就会死掉吧?", - { - "type": "playSound", - "name": "item.mp3" - }, - "\t[hero]…妖精…小姐……其实一直以来,我都非常感激你……", - { - "type": "playSound", - "name": "item.mp3" - }, - "\t[小妖精,fairy]笨蛋!都这种时候了就不要作出像是临终遗言的发言了啊!!", - { - "type": "playSound", - "name": "item.mp3" - }, - "\t[小妖精,fairy]喂!那边穿衣品味差到极点的黑暗大法师,别左顾右盼说的就是你!你应该知道咱的身份吧?\n还不速速退下!", - { - "type": "playSound", - "name": "item.mp3" - }, - "\t[blackMagician]可恶…多管闲事的妖精族…明明只要再让他承受一点疼痛来瓦解他的意志力,我的计划就成功了!", - { - "type": "playSound", - "name": "item.mp3" - }, - "\t[小妖精,fairy]哼哼哼~抱歉哦,这个笨蛋的意志力可不像你想象的那么薄弱哦!", - { - "type": "playSound", - "name": "item.mp3" - }, - "\t[blackMagician]不甘心!我不甘心!妖精公主又如何!\n只要是阻挡我的,不管是谁我都要铲除!", - { - "type": "playSound", - "name": "item.mp3" - }, - "\t[小妖精,fairy]终于露出狐狸尾巴了,其实咱早就看出你有谋反的念头。你的计划就是拉拢这家伙入伙然后推翻魔王对魔塔的统治对吧?", - { - "type": "playSound", - "name": "item.mp3" - }, - "\t[blackMagician]呵呵呵……那个昏庸的魔王,掌握着那么庞大的魔物军队却只知道固守魔塔,而不主动侵略人类世界扩张领土!", - { - "type": "playSound", - "name": "item.mp3" - }, - "\t[blackMagician]我实在是看不过眼,所以我才决定把这个具备稀有勇者体质的家伙培养成新一任魔王!\n来让这个世界的势力重新洗牌!", - { - "type": "playSound", - "name": "item.mp3" - }, - "\t[小妖精,fairy]你觉得一个满脑子想着回家种田的废柴勇者会成为改变世界的魔王?你晃晃脑袋试试,是不是能听到大海的声音?", - { - "type": "playSound", - "name": "item.mp3" - }, - "\t[blackMagician]恼人至极的妖精族!呵呵呵……我干脆一不做二不休,连你也一块收拾了吧!", - { - "type": "playSound", - "name": "item.mp3" - }, - "\t[小妖精,fairy]别小瞧咱!咱好歹也是妖精族里实力数一数二的存在!", - { - "type": "playSound", - "name": "item.mp3" - }, - "\t[blackMagician]只会耍嘴皮子的恼人苍蝇!我倒要看看一块焦炭会不会说话!\n——招雷弹!!", - { - "type": "animate", - "name": "yongchang", - "loc": [ - 4, - 3 - ] - }, - { - "type": "animate", - "name": "yongchang", - "loc": [ - 4, - 6 - ] - }, - { - "type": "animate", - "name": "yongchang", - "loc": [ - 8, - 6 - ] - }, - { - "type": "animate", - "name": "yongchang", - "loc": [ - 8, - 3 - ] - }, - { - "type": "playSound", - "name": "attack.mp3" - }, - { - "type": "animate", - "name": "thunder", - "loc": [ - 6, - 6 - ] - }, - { - "type": "sleep", - "time": 500 - }, - "\t[小妖精,fairy]切,这点伤痛跟他刚才经历的身心地狱相比根本就不算什么。", - { - "type": "playSound", - "name": "item.mp3" - }, - "\t[blackMagician]哼!翅膀都被烧焦了还要嘴硬?你难不成真以为我不会对你动真格?", - { - "type": "playSound", - "name": "item.mp3" - }, - "\t[hero]……你这混蛋!给我离她远点!!", - { - "type": "playSound", - "name": "item.mp3" - }, - "\t[小妖精,fairy]!…你现在受了很严重的致命伤,乱动什么?\n乖。别怕,这里有咱顶着!", - { - "type": "playSound", - "name": "item.mp3" - }, - "\t[小妖精,fairy]对了,咱再问你一遍,你是很珍惜自己性命的对吧?", - { - "type": "playSound", - "name": "item.mp3" - }, - "\t[hero]!…等等…妖精小姐,你不会是……?", - { - "type": "playSound", - "name": "item.mp3" - }, - "\t[小妖精,fairy]喂,黑暗大法师,你作为魔塔里最博学多识的蠢货,应该对咱妖精族的特殊能力再清楚不过吧?", - { - "type": "playSound", - "name": "item.mp3" - }, - "\t[blackMagician]什么?!难不成你是想!!不可能……\n就为了一个渺小的人类,不可理喻!!", - { - "type": "playSound", - "name": "item.mp3" - }, - "\t[小妖精,fairy]哼哼哼!你害怕的表情可真美味!", - { - "type": "playSound", - "name": "item.mp3" - }, - "\t[小妖精,fairy]不过比起这个,咱更期待你吃到“妖精自灭冲击”之后的死状哦!~", - { - "type": "playSound", - "name": "item.mp3" - }, - "\t[blackMagician]不!!不应该是这样的!我完美的计划竟然会被一只小小的妖精破坏!", - { - "type": "playSound", - "name": "item.mp3" - }, - "\t[hero]不要!……千万不要!……为了我这种人……唔!", - { - "type": "playSound", - "name": "item.mp3" - }, - "\t[小妖精,fairy]笨蛋,动都动不了了就不要强撑着站起来了啊。", - { - "type": "playSound", - "name": "item.mp3" - }, - "\t[小妖精,fairy]真是的,都到最后一刻了,你这家伙好歹也让咱省点心吧。", - { - "type": "playSound", - "name": "item.mp3" - }, - "\t[小妖精,fairy]那么,再见了……我的勇者大人。", + "\t[杰克,thief]没错,我就是这一切的背后主谋。", { "type": "move", - "time": 700, "steps": [ { "direction": "up", "value": 3 } - ] - }, - { - "type": "playSound", - "name": "attack.mp3" - }, - { - "type": "sleep", - "time": 200 - }, - "\t[blackMagician]不可能!!!!!", - { - "type": "hide", - "loc": [ - 6, - 3 - ] - }, - { - "type": "hide", - "loc": [ - 4, - 3 - ] - }, - { - "type": "hide", - "loc": [ - 4, - 6 - ] - }, - { - "type": "hide", - "loc": [ - 8, - 6 - ] - }, - { - "type": "hide", - "loc": [ - 8, - 3 - ] - }, - { - "type": "changeFloor", - "floorId": "sample3", - "loc": [ - 6, - 6 ], - "direction": "up", "time": 1000 }, { "type": "show", "loc": [ 6, - 5 - ] + 4 + ], + "time": 1000 }, { "type": "sleep", - "time": 200 + "time": 500 }, { "type": "playSound", "name": "item.mp3" }, - { - "type": "sleep", - "time": 200 - }, - "\t[hero]…妖精…小姐……", + "\t[blackMagician]我的真名为——黑暗大法师,第四区域的头目。", { "type": "playSound", "name": "item.mp3" }, - "\t[hero]……妖精小姐!", + "\t[hero]呵呵,不知道为什么,我竟然对事情走到现在这一步毫不感觉意外。", { "type": "playSound", "name": "item.mp3" }, - "\t[hero]是梦吗?……不对,为什么我在流泪?", + "\t[blackMagician]以杰克的名义利用了你这么久,真是抱歉啊。", { "type": "playSound", "name": "item.mp3" }, - "\t[hero]这颗漂亮的宝石是……?", + "\t[hero]真正的杰克现在在哪里?", { "type": "playSound", "name": "item.mp3" }, - "\t[hero]我全都想起来了……妖精小姐为了我……\n牺牲了自己的性命。", + "\t[blackMagician]盗贼杰克这个人类从未存在过,他只是我用来接近你的一副皮囊而已。", { "type": "playSound", "name": "item.mp3" }, - "\t[hero]在这颗宝石上,我能感受到你的温度……\n熟悉而又令人安心,这就是你最后留给我的东西吗……", + "\t[hero]……这样啊,呵呵。", { "type": "playSound", "name": "item.mp3" }, - "\t[hero]好温暖……", + "\t[blackMagician]为什么你看上去丝毫不生气?", { - "type": "setValue", - "name": "item:yellowJewel", - "value": "1" + "type": "playSound", + "name": "item.mp3" }, + "\t[hero]多亏了鬼帝,我现在的脾气好得连我自己都害怕。", { - "type": "hide", - "loc": [ - 6, - 5 - ] + "type": "playSound", + "name": "item.mp3" }, + "\t[hero]说起来我还得好好感谢你呢,如果没有杰克……你的帮助,我早就死在第一区域了。", + { + "type": "playSound", + "name": "item.mp3" + }, + "\t[hero]不论你的目的如何,你的所作所为都是对我有利的。不是吗?", + { + "type": "playSound", + "name": "item.mp3" + }, + "\t[blackMagician]能够如此淡定的面对背叛,看来跟五年前相比,你确实成长了很多啊。", + { + "type": "playSound", + "name": "item.mp3" + }, + "\t[hero]五年前?……黑暗大法师,在这之前,我们好像素未谋面吧?", + { + "type": "playSound", + "name": "item.mp3" + }, + "\t[blackMagician]五年前那场屠城你应该这一生都不会忘记吧。", + { + "type": "playSound", + "name": "item.mp3" + }, + "\t[blackMagician]很不巧,那场屠城的主谋,也是我。", { "type": "playSound", "name": "item.mp3" }, "\t[hero]……", { - "type": "openDoor", + "type": "playSound", + "name": "item.mp3" + }, + "\t[hero]这么说,击中我双亲的那道紫色闪电,也就是你释放的吧……", + { + "type": "playSound", + "name": "item.mp3" + }, + "\t[blackMagician]你的双亲?这种事情我怎么可能会记得?\n你难道在踩死蚂蚁的时候还会一只只记下他们的样子吗?", + { + "type": "playSound", + "name": "item.mp3" + }, + "\t[hero]老 子 要 你 的 命", + { + "type": "playSound", + "name": "item.mp3" + }, + "\t[blackMagician]你应该对我心怀感激才对,如果不是那时的我看出了你隐藏的稀有勇者体质,你绝对不可能活到今天。", + { + "type": "playSound", + "name": "item.mp3" + }, + "\t[blackMagician]在暗中动手脚让你通过勇者选拔的人也是我,我一直一直在暗中引导你走到今天这一步。", + { + "type": "playSound", + "name": "item.mp3" + }, + "\t[blackMagician]是我救赎了一无是处的你。", + { + "type": "playSound", + "name": "item.mp3" + }, + "\t[hero]为什么只有我一个人活了下来!!!!", + { + "type": "playSound", + "name": "item.mp3" + }, + "\t[hero]为什么偏偏是我!!!!", + { + "type": "playSound", + "name": "item.mp3" + }, + "\t[blackMagician]我刚才不是说过了吗?因为我看出了你有稀有勇者体质啊。", + { + "type": "playSound", + "name": "item.mp3" + }, + "\t[blackMagician]你刚刚跟鬼帝交过手,应该已经很清楚这稀有勇者体质意味着什么了吧?", + { + "type": "playSound", + "name": "item.mp3" + }, + "\t[hero]……就因为我有这种体质,就不得不背负如此残酷的宿命吗?", + { + "type": "playSound", + "name": "item.mp3" + }, + "\t[blackMagician]愚蠢!这意味着只要我对你加以引导跟培养,你就能成为这世间实力最强的存在!", + { + "type": "playSound", + "name": "item.mp3" + }, + "\t[hero]……所以,你究竟想利用我干什么?", + { + "type": "playSound", + "name": "item.mp3" + }, + "\t[blackMagician]我利用你干的事情,你不是已经完成了吗?", + { + "type": "playSound", + "name": "item.mp3" + }, + "\t[hero]……你说什么?", + { + "type": "playSound", + "name": "item.mp3" + }, + "\t[blackMagician]不知不觉间,你已经在我的指引下跟鬼帝正面交手并且杀掉了他啊。", + { + "type": "playSound", + "name": "item.mp3" + }, + "\t[hero]就连我跟鬼帝的对决……也是被你安排好了的?", + { + "type": "playSound", + "name": "item.mp3" + }, + "\t[blackMagician]你们两个一个是人类勇者,一个是魔物勇者,迟早会有交手的一天。", + { + "type": "playSound", + "name": "item.mp3" + }, + "\t[blackMagician]我只不过是操纵了一系列的连锁事件让这一天提早了数十年到来而已。", + { + "type": "playSound", + "name": "item.mp3" + }, + "\t[hero]……你这样做对谁有好处?他可是你们魔物世界的救世主啊。", + { + "type": "playSound", + "name": "item.mp3" + }, + "\t[blackMagician]一个惧怕征战,爱好和平的懦夫,也配叫救世主?", + { + "type": "playSound", + "name": "item.mp3" + }, + "\t[blackMagician]获得了力量,却只会被动挨打而不主动向人类世界出击,龟缩在第二区域惶惶度日,他根本就不配拥有稀有勇者体质。", + { + "type": "playSound", + "name": "item.mp3" + }, + "\t[blackMagician]为了不让这种人霸占着积累多年的庞大灵魂能量无作为,我设计让你杀掉了他。", + { + "type": "playSound", + "name": "item.mp3" + }, + "\t[blackMagician]你没有辜负我的期待,成功战胜了那个废物,现在你体内累积的灵魂能量……也就是魔力,已经达到了能跟魔王匹敌的地步。", + { + "type": "playSound", + "name": "item.mp3" + }, + "\t[hero]……是吗?现在的我能与魔王匹敌?", + { + "type": "playSound", + "name": "item.mp3" + }, + "\t[blackMagician]不止如此,你现在的力量之强就算是统治世界也是绰绰有余!", + { + "type": "playSound", + "name": "item.mp3" + }, + "\t[blackMagician]怎么样?要不要加入我的麾下,跟随我去征战人类世界?", + { + "type": "playSound", + "name": "item.mp3" + }, + "\t[hero]能与魔王匹敌的话,也就是说。", + { + "type": "playSound", + "name": "item.mp3" + }, + "\t[hero]我 现 在 对 付 你 这 种 杂 碎 也 绰 绰 有 余 吧 ?", + { + "type": "playSound", + "name": "item.mp3" + }, + "\t[blackMagician]……什么?!", + { + "type": "playSound", + "name": "item.mp3" + }, + "\t[blackMagician]等一下!别冲动!你先等我把这利害关系理一理——", + { + "type": "playSound", + "name": "item.mp3" + }, + "\t[hero]你给老子闭嘴。", + { + "type": "playSound", + "name": "item.mp3" + }, + "\t[hero]老子什么都不想听。", + { + "type": "playSound", + "name": "item.mp3" + }, + "\t[hero]老子现在想做的事情只有一件——", + { + "type": "playSound", + "name": "item.mp3" + }, + "\t[hero]剁掉你的头,把它放回我双亲的墓前。", + { + "type": "update" + } + ], + "6,4": { + "enable": false, + "data": [] + }, + "5,4": { + "enable": false, + "data": [] + }, + "7,4": { + "enable": false, + "data": [] + }, + "5,5": { + "enable": false, + "data": [] + }, + "7,5": { + "enable": false, + "data": [] + }, + "6,3": { + "trigger": "action", + "enable": false, + "data": [ + "\t[blackMagician]听不进去人话的蠢货,就要用疼痛来管教!", + { + "type": "changePos", + "direction": "up" + }, + { + "type": "playSound", + "name": "item.mp3" + }, + "\t[blackMagician]出来吧!禁忌——紫电凶杀阵!", + { + "type": "show", + "loc": [ + [ + 4, + 3 + ], + [ + 4, + 6 + ], + [ + 8, + 6 + ], + [ + 8, + 3 + ] + ], + "time": 500 + }, + { + "type": "sleep", + "time": 500 + }, + "\t[blackMagician]感受绝望吧!冥顽不化的蠢货!", + { + "type": "animate", + "name": "yongchang", + "loc": [ + 4, + 3 + ] + }, + { + "type": "animate", + "name": "yongchang", + "loc": [ + 4, + 6 + ] + }, + { + "type": "animate", + "name": "yongchang", + "loc": [ + 8, + 6 + ] + }, + { + "type": "animate", + "name": "yongchang", + "loc": [ + 8, + 3 + ] + }, + { + "type": "sleep", + "time": 200 + }, + { + "type": "playSound", + "name": "attack.mp3" + }, + { + "type": "animate", + "name": "thunder", + "loc": "hero" + }, + { + "type": "sleep", + "time": 200 + }, + "\t[hero]唔……!!(吐血)", + { + "type": "playSound", + "name": "item.mp3" + }, + "\t[blackMagician]我的魔力可是充足的很啊!我会一直折磨到你屈服于我为止!", + { + "type": "playSound", + "name": "item.mp3" + }, + "\t[blackMagician]人类!好好感受吧!当初你们施加于我的痛苦!如今我要百倍奉还!", + { + "type": "show", + "loc": [ + 6, + 6 + ], + "time": 1000 + }, + { + "type": "sleep", + "time": 700 + }, + { + "type": "trigger", + "loc": [ + 6, + 6 + ] + } + ] + }, + "4,3": { + "trigger": "action", + "displayDamage": false, + "enable": false, + "data": [] + }, + "8,3": { + "trigger": "action", + "displayDamage": false, + "enable": false, + "data": [] + }, + "4,6": { + "trigger": "action", + "displayDamage": false, + "enable": false, + "data": [] + }, + "8,6": { + "trigger": "action", + "displayDamage": false, + "enable": false, + "data": [] + }, + "6,6": { + "enable": false, + "data": [ + { + "type": "playSound", + "name": "item.mp3" + }, + "\t[hero]…妖精…小姐……是你吗?", + { + "type": "playSound", + "name": "item.mp3" + }, + "\t[小妖精,fairy]不要绝望,也不要悲伤。", + { + "type": "playSound", + "name": "item.mp3" + }, + "\t[小妖精,fairy]你从来都不是独自一人在前进。", + { + "type": "playSound", + "name": "item.mp3" + }, + "\t[小妖精,fairy]咱一直,一直都在注视着你。", + { + "type": "playSound", + "name": "item.mp3" + }, + "\t[小妖精,fairy]耍小聪明的你、笨笨的你呆呆的你、胆小的你、勇敢的你帅气的你……全部全部都是你。", + { + "type": "playSound", + "name": "item.mp3" + }, + "\t[小妖精,fairy]所以放心吧,无论发生什么,咱都会陪伴在你身边的。", + { + "type": "playSound", + "name": "item.mp3" + }, + "\t[小妖精,fairy]因为你要是离开我的话,立刻就会死掉吧?", + { + "type": "playSound", + "name": "item.mp3" + }, + "\t[hero]…妖精…小姐……其实一直以来,我都非常感激你……", + { + "type": "playSound", + "name": "item.mp3" + }, + "\t[小妖精,fairy]笨蛋!都这种时候了就不要作出像是临终遗言的发言了啊!!", + { + "type": "playSound", + "name": "item.mp3" + }, + "\t[小妖精,fairy]喂!那边穿衣品味差到极点的黑暗大法师,别左顾右盼说的就是你!你应该知道咱的身份吧?\n还不速速退下!", + { + "type": "playSound", + "name": "item.mp3" + }, + "\t[blackMagician]可恶…多管闲事的妖精族…明明只要再让他承受一点疼痛来瓦解他的意志力,我的计划就成功了!", + { + "type": "playSound", + "name": "item.mp3" + }, + "\t[小妖精,fairy]哼哼哼~抱歉哦,这个笨蛋的意志力可不像你想象的那么薄弱哦!", + { + "type": "playSound", + "name": "item.mp3" + }, + "\t[blackMagician]不甘心!我不甘心!妖精公主又如何!\n只要是阻挡我的,不管是谁我都要铲除!", + { + "type": "playSound", + "name": "item.mp3" + }, + "\t[小妖精,fairy]终于露出狐狸尾巴了,其实咱早就看出你有谋反的念头。你的计划就是拉拢这家伙入伙然后推翻魔王对魔塔的统治对吧?", + { + "type": "playSound", + "name": "item.mp3" + }, + "\t[blackMagician]呵呵呵……那个昏庸的魔王,掌握着那么庞大的魔物军队却只知道固守魔塔,而不主动侵略人类世界扩张领土!", + { + "type": "playSound", + "name": "item.mp3" + }, + "\t[blackMagician]我实在是看不过眼,所以我才决定把这个具备稀有勇者体质的家伙培养成新一任魔王!\n来让这个世界的势力重新洗牌!", + { + "type": "playSound", + "name": "item.mp3" + }, + "\t[小妖精,fairy]你觉得一个满脑子想着回家种田的废柴勇者会成为改变世界的魔王?你晃晃脑袋试试,是不是能听到大海的声音?", + { + "type": "playSound", + "name": "item.mp3" + }, + "\t[blackMagician]恼人至极的妖精族!呵呵呵……我干脆一不做二不休,连你也一块收拾了吧!", + { + "type": "playSound", + "name": "item.mp3" + }, + "\t[小妖精,fairy]别小瞧咱!咱好歹也是妖精族里实力数一数二的存在!", + { + "type": "playSound", + "name": "item.mp3" + }, + "\t[blackMagician]只会耍嘴皮子的恼人苍蝇!我倒要看看一块焦炭会不会说话!\n——招雷弹!!", + { + "type": "animate", + "name": "yongchang", + "loc": [ + 4, + 3 + ] + }, + { + "type": "animate", + "name": "yongchang", + "loc": [ + 4, + 6 + ] + }, + { + "type": "animate", + "name": "yongchang", + "loc": [ + 8, + 6 + ] + }, + { + "type": "animate", + "name": "yongchang", + "loc": [ + 8, + 3 + ] + }, + { + "type": "playSound", + "name": "attack.mp3" + }, + { + "type": "animate", + "name": "thunder", + "loc": [ + 6, + 6 + ] + }, + { + "type": "sleep", + "time": 500 + }, + "\t[小妖精,fairy]切,这点伤痛跟他刚才经历的身心地狱相比根本就不算什么。", + { + "type": "playSound", + "name": "item.mp3" + }, + "\t[blackMagician]哼!翅膀都被烧焦了还要嘴硬?你难不成真以为我不会对你动真格?", + { + "type": "playSound", + "name": "item.mp3" + }, + "\t[hero]……你这混蛋!给我离她远点!!", + { + "type": "playSound", + "name": "item.mp3" + }, + "\t[小妖精,fairy]!…你现在受了很严重的致命伤,乱动什么?\n乖。别怕,这里有咱顶着!", + { + "type": "playSound", + "name": "item.mp3" + }, + "\t[小妖精,fairy]对了,咱再问你一遍,你是很珍惜自己性命的对吧?", + { + "type": "playSound", + "name": "item.mp3" + }, + "\t[hero]!…等等…妖精小姐,你不会是……?", + { + "type": "playSound", + "name": "item.mp3" + }, + "\t[小妖精,fairy]喂,黑暗大法师,你作为魔塔里最博学多识的蠢货,应该对咱妖精族的特殊能力再清楚不过吧?", + { + "type": "playSound", + "name": "item.mp3" + }, + "\t[blackMagician]什么?!难不成你是想!!不可能……\n就为了一个渺小的人类,不可理喻!!", + { + "type": "playSound", + "name": "item.mp3" + }, + "\t[小妖精,fairy]哼哼哼!你害怕的表情可真美味!", + { + "type": "playSound", + "name": "item.mp3" + }, + "\t[小妖精,fairy]不过比起这个,咱更期待你吃到“妖精自灭冲击”之后的死状哦!~", + { + "type": "playSound", + "name": "item.mp3" + }, + "\t[blackMagician]不!!不应该是这样的!我完美的计划竟然会被一只小小的妖精破坏!", + { + "type": "playSound", + "name": "item.mp3" + }, + "\t[hero]不要!……千万不要!……为了我这种人……唔!", + { + "type": "playSound", + "name": "item.mp3" + }, + "\t[小妖精,fairy]笨蛋,动都动不了了就不要强撑着站起来了啊。", + { + "type": "playSound", + "name": "item.mp3" + }, + "\t[小妖精,fairy]真是的,都到最后一刻了,你这家伙好歹也让咱省点心吧。", + { + "type": "playSound", + "name": "item.mp3" + }, + "\t[小妖精,fairy]那么,再见了……我的勇者大人。", + { + "type": "move", + "time": 700, + "steps": [ + { + "direction": "up", + "value": 3 + } + ] + }, + { + "type": "playSound", + "name": "attack.mp3" + }, + { + "type": "sleep", + "time": 200 + }, + "\t[blackMagician]不可能!!!!!", + { + "type": "hide", + "loc": [ + 6, + 3 + ] + }, + { + "type": "hide", + "loc": [ + 4, + 3 + ] + }, + { + "type": "hide", + "loc": [ + 4, + 6 + ] + }, + { + "type": "hide", + "loc": [ + 8, + 6 + ] + }, + { + "type": "hide", + "loc": [ + 8, + 3 + ] + }, + { + "type": "changeFloor", + "floorId": "sample3", + "loc": [ + 6, + 6 + ], + "direction": "up", + "time": 1000 + }, + { + "type": "show", + "loc": [ + 6, + 5 + ] + }, + { + "type": "sleep", + "time": 200 + }, + { + "type": "playSound", + "name": "item.mp3" + }, + { + "type": "sleep", + "time": 200 + }, + "\t[hero]…妖精…小姐……", + { + "type": "playSound", + "name": "item.mp3" + }, + "\t[hero]……妖精小姐!", + { + "type": "playSound", + "name": "item.mp3" + }, + "\t[hero]是梦吗?……不对,为什么我在流泪?", + { + "type": "playSound", + "name": "item.mp3" + }, + "\t[hero]这颗漂亮的宝石是……?", + { + "type": "playSound", + "name": "item.mp3" + }, + "\t[hero]我全都想起来了……妖精小姐为了我……\n牺牲了自己的性命。", + { + "type": "playSound", + "name": "item.mp3" + }, + "\t[hero]在这颗宝石上,我能感受到你的温度……\n熟悉而又令人安心,这就是你最后留给我的东西吗……", + { + "type": "playSound", + "name": "item.mp3" + }, + "\t[hero]好温暖……", + { + "type": "setValue", + "name": "item:yellowJewel", + "value": "1" + }, + { + "type": "hide", + "loc": [ + 6, + 5 + ] + }, + { + "type": "playSound", + "name": "item.mp3" + }, + "\t[hero]……", + { + "type": "openDoor", + "loc": [ + 6, + 2 + ] + }, + { + "type": "openDoor", + "loc": [ + 6, + 11 + ] + } + ] + }, + "6,5": { + "enable": false, + "data": [] + } + }, + "changeFloor": { + "6,0": { + "floorId": "sample3", + "stair": "upFloor" + }, + "6,12": { + "floorId": "sample2", + "stair": "upFloor" + } + }, + "afterBattle": { + "6,4": [ + "\t[blackMagician]天真!你以为这样就能战胜我吗?", + { + "type": "show", "loc": [ - 6, - 2 - ] + 7, + 5 + ], + "time": 500 }, { - "type": "openDoor", + "type": "update" + } + ], + "7,5": [ + "\t[blackMagician]你打败的不过是我众多分身中的其中一个而已。", + { + "type": "show", + "loc": [ + 5, + 4 + ], + "time": 500 + }, + { + "type": "update" + } + ], + "5,4": [ + "\t[blackMagician]你的身体已经伤痕累累了,可我还留有着九成多的魔力。", + { + "type": "show", + "loc": [ + 5, + 5 + ], + "time": 500 + }, + { + "type": "update" + } + ], + "5,5": [ + "\t[blackMagician]顽固的家伙!放弃抵抗吧!", + { + "type": "show", + "loc": [ + 7, + 4 + ], + "time": 500 + }, + { + "type": "update" + } + ], + "7,4": [ + "\t[blackMagician]哈哈哈哈!我的灵魂远比你想象的强大!\n我即是永恒!", + { + "type": "show", "loc": [ 6, - 11 + 3 + ], + "time": 500 + }, + { + "type": "trigger", + "loc": [ + 6, + 3 ] } ] }, - "6,5": { - "enable": false, - "data": [] - } -}, -"changeFloor": { - "6,0": { - "floorId": "sample3", - "stair": "upFloor" - }, - "6,12": { - "floorId": "sample2", - "stair": "upFloor" - } -}, -"afterBattle": { - "6,4": [ - "\t[blackMagician]天真!你以为这样就能战胜我吗?", - { - "type": "show", - "loc": [ - 7, - 5 - ], - "time": 500 - }, - { - "type": "update" - } - ], - "7,5": [ - "\t[blackMagician]你打败的不过是我众多分身中的其中一个而已。", - { - "type": "show", - "loc": [ - 5, - 4 - ], - "time": 500 - }, - { - "type": "update" - } - ], - "5,4": [ - "\t[blackMagician]你的身体已经伤痕累累了,可我还留有着九成多的魔力。", - { - "type": "show", - "loc": [ - 5, - 5 - ], - "time": 500 - }, - { - "type": "update" - } - ], - "5,5": [ - "\t[blackMagician]顽固的家伙!放弃抵抗吧!", - { - "type": "show", - "loc": [ - 7, - 4 - ], - "time": 500 - }, - { - "type": "update" - } - ], - "7,4": [ - "\t[blackMagician]哈哈哈哈!我的灵魂远比你想象的强大!\n我即是永恒!", - { - "type": "show", - "loc": [ - 6, - 3 - ], - "time": 500 - }, - { - "type": "trigger", - "loc": [ - 6, - 3 - ] - } - ] -}, -"afterGetItem": {}, -"afterOpenDoor": {}, -"cannotMove": {}, -"bgmap": [ + "afterGetItem": {}, + "afterOpenDoor": {}, + "cannotMove": {}, + "bgmap": [ ], -"fgmap": [ + "fgmap": [ ], + "width": 13, + "height": 13, + "autoEvent": {} } \ No newline at end of file