diff --git a/public/project/floors/MT0.js b/public/project/floors/MT0.js index caf0d22..26398f7 100644 --- a/public/project/floors/MT0.js +++ b/public/project/floors/MT0.js @@ -46,7 +46,7 @@ main.floors.MT0= "\r[red]注意!!!\r[]该塔新增了很多新的功能,同时对样板的ui进行了大幅度的改动,操作也有改变,由于内容过多,这里不再一一描述,具体请在道具栏查看百科全书!!百科全书是在你面前的几个道具中的其中一个", { "type": "function", - "function": "function(){\nMota.require('var', 'fixedUi').open('chapter', { chapter: '序章 起源' });\n}" + "function": "function(){\nif (!core.isReplaying()) Mota.require('var', 'fixedUi').open('chapter', { chapter: '序章 起源' });\n}" } ], "parallelDo": "", diff --git a/public/project/floors/MT6.js b/public/project/floors/MT6.js index 716afd6..e5c4c6e 100644 --- a/public/project/floors/MT6.js +++ b/public/project/floors/MT6.js @@ -63,7 +63,7 @@ main.floors.MT6= "\t[原始人]\b[down,hero]感觉好像可以学习一些简单的东西了。", { "type": "function", - "function": "function(){\nMota.require('var', 'fixedUi').open('chapter', { chapter: '第一章 勇气' });\n}" + "function": "function(){\nif (!core.isReplaying()) Mota.require('var', 'fixedUi').open('chapter', { chapter: '第一章 勇气' });\n}" }, { "type": "setValue", diff --git a/public/project/functions.js b/public/project/functions.js index a9eb14f..b974ecc 100644 --- a/public/project/functions.js +++ b/public/project/functions.js @@ -78,7 +78,15 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a = { }); } - Mota.require('class', 'CustomToolbar').setDefaultTool(false); + Mota.r(() => { + Mota.require('class', 'CustomToolbar').setDefaultTool(false); + }); + const { NightSpecial, HeroSkill } = Mota.require( + 'module', + 'Mechanism' + ); + NightSpecial.clearNight(core.floorIds); + HeroSkill.clearSkill(); }, win: function (reason, norank, noexit) { // 游戏获胜事件 diff --git a/src/core/main/setting.ts b/src/core/main/setting.ts index 93cdb3a..d78b6ca 100644 --- a/src/core/main/setting.ts +++ b/src/core/main/setting.ts @@ -530,14 +530,6 @@ loading.once('coreInit', () => { }); }); -const { hook } = Mota.requireAll('var'); -hook.on('reset', () => { - const HeroSkill = Mota.require('module', 'Mechanism').HeroSkill; - mainSetting.reset({ - 'action.autoSkill': HeroSkill.getAutoSkill() - }); -}); - interface SettingTextData { [x: string]: string[] | SettingTextData; } diff --git a/src/game/mechanism/misc.ts b/src/game/mechanism/misc.ts index 4e52c50..0ba815a 100644 --- a/src/game/mechanism/misc.ts +++ b/src/game/mechanism/misc.ts @@ -91,6 +91,10 @@ export namespace HeroSkill { learned.delete(skill); } + export function clearSkill() { + learned.clear(); + } + export function saveSkill(): SkillSave { return { autoSkill, learned: [...learned] }; } diff --git a/src/plugin/game/fallback.ts b/src/plugin/game/fallback.ts index c266574..de67c55 100644 --- a/src/plugin/game/fallback.ts +++ b/src/plugin/game/fallback.ts @@ -204,13 +204,18 @@ export function init() { control.prototype.waitHeroToStop = function (callback?: () => void) { core.stopAutomaticRoute(); core.clearContinueAutomaticRoute(); - - if (heroMover.controller) { - heroMover.controller.stop().then(() => { - callback?.(); - }); - } else { - callback?.(); + heroMover.controller?.stop(); + if (callback) { + core.status.replay.animate = true; + core.lockControl(); + core.status.automaticRoute.moveDirectly = false; + setTimeout( + function () { + core.status.replay.animate = false; + callback(); + }, + core.status.replay.speed === 24 ? 1 : 30 + ); } }; @@ -653,29 +658,24 @@ export function init() { }); const moveAction = new Set(['up', 'down', 'left', 'right']); - let controller: IMoveController | null = null; // 复写录像的移动 core.registerReplayAction('move', action => { if (moveAction.has(action)) { - const next = core.status.replay.toReplay[1]; if (!heroMover.moving) { - controller = heroMover.startMove(); + heroMover.startMove(); } - if (!controller) { + if (!heroMover.controller) { return false; } - controller.push({ + heroMover.controller.push({ type: 'dir', value: action as Dir }); - if (moveAction.has(next)) { + + heroMover.controller.onEnd.then(() => { core.replay(); - } else { - controller.onEnd.then(() => { - core.replay(); - controller = null; - }); - } + }); + return true; } else { return false; diff --git a/src/plugin/game/replay.ts b/src/plugin/game/replay.ts index 8df0af0..b7d0440 100644 --- a/src/plugin/game/replay.ts +++ b/src/plugin/game/replay.ts @@ -20,6 +20,7 @@ export function clip(...replace: string[]) { } export function init() { + const { HeroSkill } = Mota.require('module', 'Mechanism'); // 注册修改设置的录像操作 core.registerReplayAction('settings', name => { if (!name.startsWith('set:')) return false; @@ -27,7 +28,11 @@ export function init() { const v = eval(value); if (typeof v !== 'boolean') return false; if (!replayableSettings.includes(setting)) return false; - flags[setting] = v; + switch (setting) { + case 'autoSkill': + HeroSkill.setAutoSkill(v); + break; + } core.status.route.push(name); core.replay(); return true; diff --git a/src/plugin/game/ui.ts b/src/plugin/game/ui.ts index cb1d35f..574fbee 100644 --- a/src/plugin/game/ui.ts +++ b/src/plugin/game/ui.ts @@ -1,6 +1,7 @@ // @ts-nocheck export function init() { + if (main.mode === 'editor') return; const { mainUi, fixedUi, mainSetting } = Mota.requireAll('var'); const CustomToolbar = Mota.require('class', 'CustomToolbar'); diff --git a/src/types/control.d.ts b/src/types/control.d.ts index b17836f..f32644b 100644 --- a/src/types/control.d.ts +++ b/src/types/control.d.ts @@ -348,7 +348,7 @@ interface Control { * @example core.waitHeroToStop(core.vibrate); // 等待勇士停下,然后视野左右抖动1秒 * @param callback 勇士停止后的回调函数 */ - waitHeroToStop(callback?: () => void): void; + waitHeroToStop(callback?: () => void, waitOnly?: boolean): void; /** * @deprecated diff --git a/src/ui/statusBar.vue b/src/ui/statusBar.vue index 76a5595..7a5d4d5 100644 --- a/src/ui/statusBar.vue +++ b/src/ui/statusBar.vue @@ -206,7 +206,7 @@ function update() { skillOpened.value = core.getFlag('chapter', 0) > 0; jumpCnt.value = - HeroSkill.learnedSkill(HeroSkill.Jump) && + !HeroSkill.learnedSkill(HeroSkill.Jump) || Mota.Plugin.require('skill_g').jumpIgnoreFloor.has(core.status.floorId) ? -1 : 3 - (flags[`jump_${core.status.floorId}`] ?? 0);