51_AstralParty/project/floors/MAL49.js
2025-09-11 22:30:07 +08:00

594 lines
20 KiB
JavaScript

main.floors.MAL49=
{
"floorId": "MAL49",
"title": "魔法学院:49F",
"name": "主楼 49F",
"width": 13,
"height": 13,
"map": [
[148,148,148,148,148,148,148,148,148,148,148,148,148],
[148,148,148,148, 0, 0, 0, 0, 0,148,148,148,148],
[148,148,148, 0, 0,246,246,246, 0, 0,148,148,148],
[148,148, 0, 0, 0,246,245,246, 0, 0, 0,148,148],
[148, 0, 0, 0, 0,246,246,246, 0, 0, 0, 0,148],
[148, 0,148, 0, 0, 0, 0, 0, 0, 0,148, 0,148],
[148, 0,148, 0, 0, 0, 0, 0, 0, 0,148, 0,148],
[148, 0,148, 0,148,148, 85,148,148, 0,148, 0,148],
[148, 0,148, 0,148,228, 0,228,148, 0,148, 0,148],
[148, 0, 0, 0,148,148, 85,148,148, 0, 0, 0,148],
[148,148,148,148,148,220, 0,220,148,148,148,148,148],
[148, 88, 0, 83, 0, 0, 0, 0, 0, 0, 0, 0,148],
[148,148,148,148,148,148,148,148,148,148,148,148,148]
],
"canFlyTo": true,
"canFlyFrom": true,
"canUseQuickShop": true,
"images": [],
"ratio": 5,
"defaultGround": "magicground",
"bgm": "maps4L.mp3",
"firstArrive": [
{
"type": "function",
"function": "function(){\nfunction filter(block) {\n\treturn (block.event.cls.indexOf(\"enemy\") === 0)\n}\nif (flags.MapStatus?.Hard === \"疯狂\") {\n\tconst b = core.getEnemyValue(\"redKing\", \"hp\", 6, 3)\n\tconst c = core.getEnemyValue(\"redKing\", \"atk\", 6, 3)\n\tconst d = core.getEnemyValue(\"redKing\", \"def\", 6, 3)\n\tconst sp = [...core.getEnemyValue(\"redKing\", \"special\", 6, 3)]\n\tsp.push(31)\n\tcore.setEnemyOnPoint(6, 3, void 0, \"special\", sp, \"=\")\n\tconst MAR = [\"MAR41\", \"MAR42\", \"MAR43\", \"MAR44\", \"MAR45\", \"MAR46\", \"MAR47\", \"MAR48\", \"MAR49\"]\n\tconst enemys = core.maps.searchBlockWithFilter(filter, MAR)\n\tlet k = 0\n\tenemys.forEach(v => {\n\t\tconst c = core.getEnemyValue(void 0, \"special\", v.x, v.y, v.floorId)\n\t\tif (c.includes(32)) {\n\t\t\tk++\n\t\t\tcore.removeBlock(v.x, v.y, v.floorId)\n\t\t}\n\t})\n\tconst hp = Math.floor(b * (10 + k) / 10)\n\tconst atk = Math.floor(c * (10 + k) / 10)\n\tconst def = Math.floor(d * (10 + k) / 10)\n\tcore.setEnemyOnPoint(6, 3, void 0, \"hp\", hp, \"=\")\n\tcore.setEnemyOnPoint(6, 3, void 0, \"atk\", atk, \"=\")\n\tcore.setEnemyOnPoint(6, 3, void 0, \"def\", def, \"=\")\n}\n}"
}
],
"eachArrive": [],
"parallelDo": "",
"events": {
"6,6": [
{
"type": "if",
"condition": "(core.getBlockId(6,7)=='specialDoor')",
"true": [],
"false": [
{
"type": "closeDoor",
"id": "specialDoor",
"loc": [
6,
7
]
}
]
},
"\t[魔王,redKing]你终于来啦 我好想和你干一把 但是我的部下不同意",
{
"type": "playBgm",
"name": "battle.mp3"
},
{
"type": "hide",
"remove": true,
"time": 0
}
]
},
"changeFloor": {
"1,11": {
"floorId": ":before",
"stair": "upFloor"
}
},
"afterBattle": {
"5,10": [
{
"type": "function",
"function": "function(){\nvar bool = true;\nvar loc_arr = [\n\t[5, 10],\n\t[7, 10],\n]\nloc_arr.forEach(loc => {\n\tif (core.getBlockCls(loc[0], loc[1]) == \"enemys\") {\n\t\tbool = false;\n\t}\n});\ncore.setFlag(\"open_yes\", bool)\n}"
},
{
"type": "if",
"condition": "flag:open_yes",
"true": [
{
"type": "openDoor",
"loc": [
6,
9
]
},
{
"type": "hide",
"time": 0
}
]
}
],
"7,10": [
{
"type": "function",
"function": "function(){\nvar bool = true;\nvar loc_arr = [\n\t[5, 10],\n\t[7, 10],\n]\nloc_arr.forEach(loc => {\n\tif (core.getBlockCls(loc[0], loc[1]) == \"enemys\") {\n\t\tbool = false;\n\t}\n});\ncore.setFlag(\"open_yes\", bool)\n}"
},
{
"type": "if",
"condition": "flag:open_yes",
"true": [
{
"type": "openDoor",
"loc": [
6,
9
]
},
{
"type": "hide",
"time": 0
}
]
}
],
"7,8": [
{
"type": "function",
"function": "function(){\nvar bool = true;\nvar loc_arr = [\n\t[5, 8],\n\t[7, 8],\n]\nloc_arr.forEach(loc => {\n\tif (core.getBlockCls(loc[0], loc[1]) == \"enemys\") {\n\t\tbool = false;\n\t}\n});\ncore.setFlag(\"open_yes\", bool)\n}"
},
{
"type": "if",
"condition": "flag:open_yes",
"true": [
{
"type": "openDoor",
"loc": [
6,
7
]
},
{
"type": "hide",
"time": 0
}
]
}
],
"6,4": [
{
"type": "function",
"function": "function(){\nvar bool = true;\nvar loc_arr = [\n\t[6, 2],\n\t[6, 4],\n\t[5, 3],\n\t[7, 3],\n]\nloc_arr.forEach(loc => {\n\tif (core.getBlockCls(loc[0], loc[1]) == \"enemys\") {\n\t\tbool = false;\n\t}\n});\nvar loc_arr = [\n\t[5, 2],\n\t[7, 2],\n\t[5, 4],\n\t[7, 4],\n]\nloc_arr.forEach(loc => {\n\tif (core.getBlockCls(loc[0], loc[1]) != \"enemys\") {\n\t\tbool = false;\n\t}\n});\ncore.setFlag(\"open_yes\", bool)\n}"
},
{
"type": "if",
"condition": "flag:open_yes",
"true": [
{
"type": "setEnemyOnPoint",
"loc": [
[
6,
3
]
],
"name": "atk",
"operator": "/=",
"value": "10"
},
{
"type": "setEnemyOnPoint",
"loc": [
[
6,
3
]
],
"name": "def",
"operator": "/=",
"value": "10"
},
{
"type": "setEnemyOnPoint",
"loc": [
[
6,
3
]
],
"name": "hp",
"operator": "/=",
"value": "10"
},
{
"type": "update"
},
"\t[魔王,redKing]完蛋了 我被封印了 功力只剩一成"
]
}
],
"5,3": [
{
"type": "function",
"function": "function(){\nvar bool = true;\nvar loc_arr = [\n\t[6, 2],\n\t[6, 4],\n\t[5, 3],\n\t[7, 3],\n]\nloc_arr.forEach(loc => {\n\tif (core.getBlockCls(loc[0], loc[1]) == \"enemys\") {\n\t\tbool = false;\n\t}\n});\nvar loc_arr = [\n\t[5, 2],\n\t[7, 2],\n\t[5, 4],\n\t[7, 4],\n]\nloc_arr.forEach(loc => {\n\tif (core.getBlockCls(loc[0], loc[1]) != \"enemys\") {\n\t\tbool = false;\n\t}\n});\ncore.setFlag(\"open_yes\", bool)\n}"
},
{
"type": "if",
"condition": "flag:open_yes",
"true": [
{
"type": "setEnemyOnPoint",
"loc": [
[
6,
3
]
],
"name": "atk",
"operator": "/=",
"value": "10"
},
{
"type": "setEnemyOnPoint",
"loc": [
[
6,
3
]
],
"name": "def",
"operator": "/=",
"value": "10"
},
{
"type": "setEnemyOnPoint",
"loc": [
[
6,
3
]
],
"name": "hp",
"operator": "/=",
"value": "10"
},
{
"type": "update"
},
"\t[魔王,redKing]完蛋了 我被封印了 功力只剩一成"
]
}
],
"6,2": [
{
"type": "function",
"function": "function(){\nvar bool = true;\nvar loc_arr = [\n\t[6, 2],\n\t[6, 4],\n\t[5, 3],\n\t[7, 3],\n]\nloc_arr.forEach(loc => {\n\tif (core.getBlockCls(loc[0], loc[1]) == \"enemys\") {\n\t\tbool = false;\n\t}\n});\nvar loc_arr = [\n\t[5, 2],\n\t[7, 2],\n\t[5, 4],\n\t[7, 4],\n]\nloc_arr.forEach(loc => {\n\tif (core.getBlockCls(loc[0], loc[1]) != \"enemys\") {\n\t\tbool = false;\n\t}\n});\ncore.setFlag(\"open_yes\", bool)\n}"
},
{
"type": "if",
"condition": "flag:open_yes",
"true": [
{
"type": "setEnemyOnPoint",
"loc": [
[
6,
3
]
],
"name": "atk",
"operator": "/=",
"value": "10"
},
{
"type": "setEnemyOnPoint",
"loc": [
[
6,
3
]
],
"name": "def",
"operator": "/=",
"value": "10"
},
{
"type": "setEnemyOnPoint",
"loc": [
[
6,
3
]
],
"name": "hp",
"operator": "/=",
"value": "10"
},
{
"type": "update"
},
"\t[魔王,redKing]完蛋了 我被封印了 功力只剩一成"
]
}
],
"7,3": [
{
"type": "function",
"function": "function(){\nvar bool = true;\nvar loc_arr = [\n\t[6, 2],\n\t[6, 4],\n\t[5, 3],\n\t[7, 3],\n]\nloc_arr.forEach(loc => {\n\tif (core.getBlockCls(loc[0], loc[1]) == \"enemys\") {\n\t\tbool = false;\n\t}\n});\nvar loc_arr = [\n\t[5, 2],\n\t[7, 2],\n\t[5, 4],\n\t[7, 4],\n]\nloc_arr.forEach(loc => {\n\tif (core.getBlockCls(loc[0], loc[1]) != \"enemys\") {\n\t\tbool = false;\n\t}\n});\ncore.setFlag(\"open_yes\", bool)\n}"
},
{
"type": "if",
"condition": "flag:open_yes",
"true": [
{
"type": "setEnemyOnPoint",
"loc": [
[
6,
3
]
],
"name": "atk",
"operator": "/=",
"value": "10"
},
{
"type": "setEnemyOnPoint",
"loc": [
[
6,
3
]
],
"name": "def",
"operator": "/=",
"value": "10"
},
{
"type": "setEnemyOnPoint",
"loc": [
[
6,
3
]
],
"name": "hp",
"operator": "/=",
"value": "10"
},
{
"type": "update"
},
"\t[魔王,redKing]完蛋了 我被封印了 功力只剩一成"
]
}
],
"6,3": [
"\t[魔王,redKing]很好嘛 你通过了我的面试 你是个合格的玩家",
{
"type": "setBlock",
"number": "23",
"loc": [
[
5,
1
]
]
},
{
"type": "if",
"condition": "(flags.MapStatus?.Hard===\"普通\")",
"true": [
{
"type": "setBlock",
"number": "62",
"loc": [
[
7,
1
]
]
}
],
"false": [
{
"type": "setBlock",
"number": "421",
"loc": [
[
7,
1
]
]
}
]
},
{
"type": "setBlock",
"number": "404",
"loc": [
[
2,
4
]
]
},
{
"type": "setBlock",
"number": "404",
"loc": [
[
3,
4
]
]
},
{
"type": "setBlock",
"number": "404",
"loc": [
[
4,
4
]
]
},
{
"type": "setBlock",
"number": "414",
"loc": [
[
8,
4
]
]
},
{
"type": "setBlock",
"number": "414",
"loc": [
[
9,
4
]
]
},
{
"type": "setBlock",
"number": "414",
"loc": [
[
10,
4
]
]
},
{
"type": "setBlock",
"number": "32",
"loc": [
[
5,
5
]
]
},
{
"type": "setBlock",
"number": "32",
"loc": [
[
6,
5
]
]
},
{
"type": "setBlock",
"number": "32",
"loc": [
[
7,
5
]
]
},
{
"type": "setBlock",
"number": "0",
"loc": [
[
5,
2
],
[
6,
2
],
[
7,
2
],
[
7,
3
],
[
7,
4
],
[
6,
4
],
[
5,
4
],
[
5,
3
]
]
},
{
"type": "openDoor",
"loc": [
6,
7
]
}
],
"5,8": [
{
"type": "function",
"function": "function(){\nvar bool = true;\nvar loc_arr = [\n\t[5, 8],\n\t[7, 8],\n]\nloc_arr.forEach(loc => {\n\tif (core.getBlockCls(loc[0], loc[1]) == \"enemys\") {\n\t\tbool = false;\n\t}\n});\ncore.setFlag(\"open_yes\", bool)\n}"
},
{
"type": "if",
"condition": "flag:open_yes",
"true": [
{
"type": "openDoor",
"loc": [
6,
7
]
},
{
"type": "hide",
"time": 0
}
]
}
]
},
"afterGetItem": {},
"afterOpenDoor": {},
"cannotMove": {},
"bgmap": [
],
"fgmap": [
],
"downFloor": [
2,
11
],
"autoEvent": {
"6,3": {
"0": null,
"1": null
}
},
"beforeBattle": {
"6,3": [
{
"type": "if",
"condition": "(!flag:假魔王)",
"true": [
{
"type": "tip",
"text": "需要击败图书馆的假魔王后才能挑战"
},
{
"type": "tip",
"text": "你已卡关,少侠请重头再来"
},
{
"type": "exit"
}
]
}
]
},
"cannotMoveIn": {},
"bg2map": [],
"fg2map": []
}